OSDN Git Service

Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
[pf3gnuchains/gcc-fork.git] / gcc / cp / parse.c
index d42efe2..97e001a 100644 (file)
 #define        RETURN  280
 #define        GOTO    281
 #define        ASM_KEYWORD     282
-#define        GCC_ASM_KEYWORD 283
-#define        TYPEOF  284
-#define        ALIGNOF 285
-#define        SIGOF   286
-#define        ATTRIBUTE       287
-#define        EXTENSION       288
-#define        LABEL   289
-#define        REALPART        290
-#define        IMAGPART        291
-#define        AGGR    292
-#define        VISSPEC 293
-#define        DELETE  294
-#define        NEW     295
-#define        THIS    296
-#define        OPERATOR        297
-#define        CXX_TRUE        298
-#define        CXX_FALSE       299
-#define        NAMESPACE       300
-#define        TYPENAME_KEYWORD        301
-#define        USING   302
-#define        LEFT_RIGHT      303
-#define        TEMPLATE        304
-#define        TYPEID  305
-#define        DYNAMIC_CAST    306
-#define        STATIC_CAST     307
-#define        REINTERPRET_CAST        308
-#define        CONST_CAST      309
-#define        SCOPE   310
-#define        EMPTY   311
-#define        PTYPENAME       312
-#define        NSNAME  313
-#define        THROW   314
-#define        ASSIGN  315
-#define        OROR    316
-#define        ANDAND  317
-#define        MIN_MAX 318
-#define        EQCOMPARE       319
-#define        ARITHCOMPARE    320
-#define        LSHIFT  321
-#define        RSHIFT  322
-#define        POINTSAT_STAR   323
-#define        DOT_STAR        324
-#define        UNARY   325
-#define        PLUSPLUS        326
-#define        MINUSMINUS      327
-#define        HYPERUNARY      328
-#define        PAREN_STAR_PAREN        329
-#define        POINTSAT        330
-#define        TRY     331
-#define        CATCH   332
-#define        TYPENAME_ELLIPSIS       333
-#define        PRE_PARSED_FUNCTION_DECL        334
-#define        EXTERN_LANG_STRING      335
-#define        ALL     336
-#define        PRE_PARSED_CLASS_DECL   337
-#define        DEFARG  338
-#define        DEFARG_MARKER   339
-#define        TYPENAME_DEFN   340
-#define        IDENTIFIER_DEFN 341
-#define        PTYPENAME_DEFN  342
-#define        END_OF_LINE     343
-#define        END_OF_SAVED_INPUT      344
+#define        TYPEOF  283
+#define        ALIGNOF 284
+#define        SIGOF   285
+#define        ATTRIBUTE       286
+#define        EXTENSION       287
+#define        LABEL   288
+#define        REALPART        289
+#define        IMAGPART        290
+#define        AGGR    291
+#define        VISSPEC 292
+#define        DELETE  293
+#define        NEW     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        PRE_PARSED_FUNCTION_DECL        332
+#define        EXTERN_LANG_STRING      333
+#define        ALL     334
+#define        PRE_PARSED_CLASS_DECL   335
+#define        DEFARG  336
+#define        DEFARG_MARKER   337
+#define        TYPENAME_DEFN   338
+#define        IDENTIFIER_DEFN 339
+#define        PTYPENAME_DEFN  340
+#define        END_OF_LINE     341
+#define        END_OF_SAVED_INPUT      342
 
 #line 29 "parse.y"
 
 
 #include "config.h"
 
-#include <stdio.h>
-#include <errno.h>
+#include "system.h"
 
 #include "tree.h"
 #include "input.h"
 #include "cp-tree.h"
 #include "output.h"
 #include "except.h"
+#include "toplev.h"
 
 /* Since parsers are distinct for each language, put the language string
    definition here.  (fnf) */
@@ -118,12 +116,7 @@ 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;
 
 /* Like YYERROR but do call yyerror.  */
 #define YYERROR1 { yyerror ("syntax error"); YYERROR; }
@@ -159,22 +152,27 @@ empty_parms ()
 }
 
 
-#line 97 "parse.y"
+#line 92 "parse.y"
 typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
-#line 286 "parse.y"
+#line 284 "parse.y"
 
 /* List of types and structure classes of the current declaration.  */
-static tree current_declspecs = NULL_TREE;
+static tree current_declspecs;
+
 /* List of prefix attributes in effect.
    Prefix attributes are parsed by the reserved_declspecs and declmods
    rules.  They create a list that contains *both* declspecs and attrs.  */
 /* ??? It is not clear yet that all cases where an attribute can now appear in
    a declspec list have been updated.  */
-static tree prefix_attributes = NULL_TREE;
+static tree prefix_attributes;
 
-/* When defining an aggregate, this is the most recent one being defined.  */
+/* When defining an aggregate, this is the kind of the most recent one
+   being defined.  (For example, this might be class_type_node.)  */
 static tree current_aggr;
 
+/* When defining an enumeration, this is the type of the enumeration.  */
+static tree current_enum_type;
+
 /* Tell yyparse how to print a token's value, if yydebug is set.  */
 
 #define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
@@ -203,8 +201,8 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
       used_extern_spec = 1;
     }
   sm = suspend_momentary ();
-  *decl = start_decl (declarator, current_declspecs, initialized);
-  cplus_decl_attributes (*decl, attributes, prefix_attributes);
+  *decl = start_decl (declarator, current_declspecs, initialized,
+                     attributes, prefix_attributes);
   return sm;
 }
 #include <stdio.h>
@@ -217,26 +215,26 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
 
 
 
-#define        YYFINAL         1549
+#define        YYFINAL         1630
 #define        YYFLAG          -32768
-#define        YYNTBASE        114
+#define        YYNTBASE        112
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 344 ? yytranslate[x] : 386)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 400)
 
 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,   112,     2,     2,     2,    83,    71,     2,    94,
-   110,    81,    79,    60,    80,    93,    82,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    63,    61,    75,
-    65,    76,    66,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,   110,     2,     2,     2,    82,    70,     2,    93,
+   108,    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,
-    95,     2,   113,    70,     2,     2,     2,     2,     2,     2,
+    94,     2,   111,    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,    59,    69,   111,    89,     2,     2,     2,     2,
+     2,     2,    58,    68,   109,    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,
@@ -255,466 +253,484 @@ static const char yytranslate[] = {     0,
     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,    58,    62,    64,    67,    68,    72,    73,    74,
-    77,    78,    84,    85,    86,    87,    88,    90,    91,    92,
+    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,   107,   108,   109
+   106,   107
 };
 
 #if YYDEBUG != 0
 static const short yyprhs[] = {     0,
      0,     1,     3,     4,     7,    10,    12,    13,    14,    15,
-    17,    19,    21,    22,    25,    28,    30,    32,    38,    43,
-    49,    54,    55,    62,    63,    69,    75,    78,    83,    86,
-    89,    93,    97,    99,   101,   104,   107,   109,   112,   113,
-   119,   123,   125,   129,   131,   132,   135,   138,   142,   144,
-   148,   150,   154,   156,   160,   163,   166,   169,   173,   177,
-   180,   183,   186,   189,   192,   194,   196,   198,   199,   201,
-   204,   205,   207,   212,   216,   220,   221,   230,   236,   237,
-   247,   254,   255,   264,   270,   271,   281,   288,   291,   294,
-   296,   299,   301,   308,   313,   320,   325,   328,   330,   333,
-   336,   338,   341,   343,   346,   349,   354,   357,   361,   362,
-   363,   365,   369,   372,   376,   378,   383,   386,   391,   394,
-   399,   402,   404,   406,   408,   410,   412,   414,   416,   418,
-   420,   422,   424,   425,   432,   433,   440,   441,   447,   448,
-   454,   455,   463,   464,   472,   473,   480,   481,   488,   489,
-   490,   495,   500,   502,   507,   509,   511,   512,   514,   516,
-   520,   522,   524,   526,   528,   530,   532,   534,   536,   538,
-   540,   544,   546,   550,   551,   553,   555,   556,   564,   566,
-   568,   572,   577,   581,   582,   586,   588,   592,   596,   600,
-   604,   606,   608,   610,   613,   616,   619,   622,   625,   628,
-   631,   636,   639,   644,   647,   651,   655,   660,   665,   671,
-   677,   684,   687,   692,   698,   701,   704,   708,   712,   716,
-   718,   722,   725,   729,   734,   736,   739,   745,   747,   751,
-   755,   759,   763,   767,   771,   775,   779,   783,   787,   791,
-   795,   799,   803,   807,   811,   815,   819,   823,   829,   833,
-   837,   839,   842,   846,   848,   850,   852,   854,   856,   857,
-   863,   869,   875,   881,   887,   889,   891,   893,   895,   898,
-   901,   905,   910,   915,   917,   919,   921,   925,   927,   929,
-   931,   933,   937,   941,   945,   946,   951,   956,   959,   964,
-   967,   970,   972,   977,   979,   987,   995,  1003,  1011,  1016,
-  1021,  1024,  1027,  1029,  1034,  1037,  1040,  1046,  1050,  1053,
-  1056,  1062,  1066,  1072,  1076,  1081,  1088,  1091,  1093,  1096,
-  1098,  1101,  1103,  1105,  1107,  1110,  1111,  1114,  1117,  1121,
-  1125,  1129,  1132,  1135,  1138,  1140,  1142,  1144,  1147,  1150,
-  1153,  1156,  1158,  1160,  1162,  1164,  1167,  1170,  1174,  1178,
-  1182,  1187,  1189,  1192,  1195,  1198,  1200,  1202,  1204,  1207,
-  1210,  1213,  1215,  1217,  1220,  1223,  1227,  1229,  1232,  1234,
-  1236,  1238,  1243,  1248,  1253,  1258,  1260,  1262,  1264,  1266,
-  1270,  1272,  1276,  1278,  1282,  1283,  1288,  1289,  1296,  1300,
-  1301,  1306,  1308,  1312,  1316,  1317,  1322,  1326,  1327,  1329,
-  1331,  1334,  1341,  1343,  1347,  1348,  1350,  1355,  1362,  1367,
-  1369,  1371,  1373,  1375,  1377,  1381,  1382,  1385,  1387,  1390,
-  1394,  1399,  1401,  1403,  1407,  1412,  1416,  1422,  1424,  1429,
-  1433,  1437,  1438,  1442,  1446,  1450,  1451,  1454,  1457,  1458,
-  1466,  1471,  1472,  1479,  1483,  1486,  1489,  1492,  1493,  1494,
-  1504,  1506,  1507,  1509,  1510,  1512,  1514,  1517,  1520,  1523,
-  1526,  1529,  1532,  1536,  1541,  1545,  1548,  1552,  1553,  1555,
-  1559,  1562,  1565,  1567,  1569,  1570,  1573,  1577,  1579,  1584,
-  1586,  1590,  1592,  1594,  1599,  1604,  1607,  1610,  1614,  1618,
-  1620,  1621,  1623,  1626,  1631,  1635,  1637,  1640,  1643,  1646,
-  1649,  1652,  1655,  1658,  1660,  1663,  1666,  1670,  1673,  1676,
-  1681,  1686,  1689,  1691,  1697,  1702,  1704,  1705,  1707,  1711,
-  1712,  1714,  1718,  1720,  1722,  1724,  1726,  1731,  1736,  1741,
-  1746,  1751,  1755,  1760,  1765,  1770,  1775,  1779,  1781,  1785,
-  1787,  1791,  1794,  1796,  1803,  1804,  1807,  1809,  1812,  1813,
-  1816,  1821,  1826,  1829,  1834,  1838,  1842,  1845,  1848,  1852,
-  1854,  1856,  1859,  1861,  1863,  1866,  1869,  1874,  1879,  1883,
-  1887,  1890,  1892,  1896,  1900,  1903,  1906,  1910,  1912,  1916,
-  1920,  1923,  1926,  1930,  1932,  1937,  1941,  1946,  1950,  1952,
-  1955,  1958,  1961,  1964,  1967,  1969,  1972,  1977,  1982,  1985,
-  1987,  1989,  1991,  1993,  1996,  2001,  2004,  2007,  2010,  2013,
-  2015,  2018,  2021,  2024,  2027,  2031,  2033,  2036,  2040,  2045,
-  2048,  2051,  2054,  2057,  2060,  2063,  2068,  2071,  2073,  2076,
-  2079,  2083,  2085,  2089,  2092,  2096,  2099,  2102,  2106,  2108,
-  2112,  2117,  2121,  2124,  2127,  2129,  2133,  2136,  2139,  2141,
-  2144,  2148,  2150,  2154,  2156,  2163,  2168,  2173,  2177,  2183,
-  2187,  2191,  2195,  2198,  2200,  2202,  2205,  2208,  2211,  2212,
-  2214,  2216,  2219,  2223,  2225,  2228,  2229,  2233,  2234,  2235,
-  2241,  2243,  2244,  2247,  2249,  2251,  2253,  2256,  2257,  2262,
-  2264,  2265,  2266,  2272,  2273,  2274,  2282,  2283,  2284,  2285,
-  2286,  2299,  2300,  2301,  2309,  2310,  2316,  2317,  2325,  2326,
-  2331,  2334,  2337,  2340,  2344,  2351,  2360,  2371,  2384,  2389,
-  2393,  2396,  2399,  2401,  2403,  2404,  2405,  2412,  2413,  2414,
-  2420,  2422,  2425,  2426,  2427,  2433,  2435,  2437,  2441,  2445,
-  2448,  2451,  2454,  2457,  2460,  2462,  2465,  2466,  2468,  2469,
-  2471,  2473,  2474,  2476,  2478,  2482,  2487,  2489,  2493,  2494,
-  2496,  2498,  2500,  2503,  2506,  2509,  2511,  2513,  2516,  2519,
-  2522,  2525,  2526,  2530,  2532,  2534,  2536,  2539,  2542,  2545,
-  2550,  2553,  2556,  2559,  2562,  2565,  2568,  2570,  2573,  2575,
-  2578,  2580,  2582,  2583,  2584,  2586,  2587,  2592,  2595,  2597,
-  2599,  2603,  2604,  2608,  2612,  2616,  2618,  2621,  2624,  2627,
-  2630,  2633,  2636,  2639,  2642,  2645,  2648,  2651,  2654,  2657,
-  2660,  2663,  2666,  2669,  2672,  2675,  2678,  2681,  2684,  2687,
-  2691,  2694,  2697,  2700,  2703,  2707,  2710,  2713,  2718,  2723,
-  2727
+    17,    19,    20,    23,    26,    28,    30,    36,    41,    47,
+    52,    53,    60,    61,    67,    69,    72,    74,    77,    78,
+    85,    88,    92,    96,   100,   104,   109,   110,   116,   119,
+   123,   125,   127,   130,   133,   135,   138,   139,   145,   149,
+   151,   155,   157,   158,   161,   164,   168,   170,   174,   176,
+   180,   182,   186,   189,   192,   195,   197,   199,   205,   210,
+   213,   216,   220,   224,   227,   230,   234,   238,   241,   244,
+   247,   250,   253,   255,   257,   259,   260,   262,   265,   266,
+   268,   273,   277,   281,   282,   291,   297,   298,   308,   315,
+   316,   325,   331,   332,   342,   349,   352,   355,   357,   360,
+   362,   369,   374,   381,   386,   389,   391,   394,   397,   399,
+   402,   404,   407,   410,   415,   418,   422,   423,   424,   426,
+   430,   433,   437,   439,   444,   447,   452,   455,   460,   463,
+   465,   467,   469,   471,   473,   475,   477,   479,   481,   483,
+   485,   486,   493,   494,   501,   502,   508,   509,   515,   516,
+   524,   525,   533,   534,   541,   542,   549,   550,   551,   557,
+   563,   565,   567,   573,   579,   580,   582,   584,   585,   587,
+   589,   593,   595,   597,   599,   601,   603,   605,   607,   609,
+   611,   613,   615,   619,   621,   625,   626,   628,   630,   631,
+   639,   641,   643,   647,   652,   656,   657,   661,   663,   667,
+   671,   675,   679,   681,   683,   685,   688,   691,   694,   697,
+   700,   703,   706,   711,   714,   719,   722,   726,   730,   735,
+   741,   748,   755,   763,   766,   771,   777,   780,   783,   785,
+   786,   791,   796,   800,   802,   806,   809,   813,   818,   820,
+   823,   829,   831,   835,   839,   843,   847,   851,   855,   859,
+   863,   867,   871,   875,   879,   883,   887,   891,   895,   899,
+   903,   907,   913,   917,   921,   923,   926,   930,   934,   936,
+   938,   940,   942,   944,   945,   951,   957,   963,   969,   975,
+   977,   979,   981,   983,   986,   988,   991,   994,   998,  1003,
+  1008,  1010,  1012,  1014,  1018,  1020,  1022,  1024,  1026,  1030,
+  1034,  1038,  1039,  1044,  1049,  1052,  1057,  1060,  1065,  1068,
+  1071,  1073,  1078,  1080,  1088,  1096,  1104,  1112,  1117,  1122,
+  1125,  1128,  1131,  1133,  1138,  1141,  1144,  1150,  1154,  1157,
+  1160,  1166,  1170,  1176,  1180,  1185,  1192,  1195,  1197,  1200,
+  1202,  1205,  1207,  1209,  1211,  1214,  1215,  1218,  1221,  1225,
+  1229,  1233,  1236,  1239,  1242,  1244,  1246,  1248,  1251,  1254,
+  1257,  1260,  1262,  1264,  1266,  1268,  1271,  1274,  1278,  1282,
+  1286,  1291,  1293,  1296,  1299,  1302,  1304,  1306,  1308,  1311,
+  1314,  1317,  1319,  1321,  1324,  1327,  1331,  1333,  1336,  1338,
+  1340,  1342,  1347,  1352,  1357,  1362,  1364,  1366,  1368,  1370,
+  1374,  1376,  1380,  1382,  1386,  1387,  1392,  1393,  1400,  1404,
+  1405,  1410,  1412,  1416,  1420,  1421,  1426,  1430,  1431,  1433,
+  1435,  1438,  1445,  1447,  1451,  1452,  1454,  1459,  1466,  1471,
+  1473,  1475,  1477,  1479,  1481,  1485,  1486,  1489,  1491,  1494,
+  1498,  1503,  1505,  1507,  1511,  1516,  1520,  1526,  1528,  1533,
+  1537,  1541,  1542,  1546,  1550,  1554,  1555,  1558,  1561,  1562,
+  1570,  1575,  1576,  1583,  1587,  1590,  1593,  1596,  1597,  1598,
+  1608,  1610,  1611,  1613,  1614,  1616,  1618,  1621,  1624,  1627,
+  1630,  1633,  1636,  1639,  1642,  1645,  1649,  1654,  1658,  1661,
+  1665,  1667,  1668,  1672,  1673,  1677,  1680,  1682,  1684,  1685,
+  1688,  1692,  1694,  1699,  1701,  1705,  1707,  1709,  1714,  1719,
+  1722,  1725,  1729,  1733,  1735,  1736,  1738,  1741,  1745,  1748,
+  1751,  1753,  1756,  1759,  1762,  1765,  1768,  1771,  1774,  1776,
+  1779,  1782,  1786,  1789,  1792,  1797,  1802,  1805,  1807,  1813,
+  1818,  1820,  1821,  1823,  1827,  1828,  1830,  1834,  1836,  1838,
+  1840,  1842,  1847,  1852,  1857,  1862,  1867,  1871,  1876,  1881,
+  1886,  1891,  1895,  1897,  1901,  1903,  1907,  1910,  1912,  1920,
+  1921,  1924,  1926,  1929,  1930,  1933,  1938,  1943,  1946,  1951,
+  1955,  1959,  1962,  1965,  1969,  1971,  1973,  1976,  1978,  1980,
+  1983,  1986,  1991,  1996,  2000,  2004,  2007,  2009,  2011,  2014,
+  2018,  2022,  2025,  2028,  2032,  2034,  2038,  2042,  2045,  2048,
+  2052,  2054,  2059,  2063,  2068,  2072,  2074,  2077,  2080,  2083,
+  2086,  2089,  2091,  2094,  2099,  2104,  2107,  2109,  2111,  2113,
+  2115,  2118,  2123,  2126,  2129,  2132,  2135,  2137,  2140,  2143,
+  2146,  2149,  2153,  2155,  2158,  2162,  2167,  2170,  2173,  2176,
+  2179,  2182,  2185,  2190,  2193,  2195,  2198,  2201,  2205,  2207,
+  2211,  2214,  2218,  2221,  2224,  2228,  2230,  2234,  2239,  2243,
+  2246,  2249,  2251,  2255,  2258,  2261,  2263,  2266,  2270,  2272,
+  2276,  2278,  2285,  2290,  2295,  2299,  2305,  2309,  2313,  2317,
+  2320,  2322,  2324,  2327,  2330,  2333,  2334,  2336,  2338,  2341,
+  2345,  2347,  2350,  2351,  2355,  2356,  2357,  2363,  2365,  2366,
+  2369,  2371,  2373,  2375,  2378,  2379,  2384,  2386,  2387,  2388,
+  2394,  2395,  2396,  2404,  2405,  2406,  2407,  2408,  2421,  2422,
+  2423,  2431,  2432,  2438,  2439,  2447,  2448,  2453,  2456,  2459,
+  2462,  2466,  2473,  2482,  2493,  2506,  2511,  2515,  2518,  2521,
+  2523,  2525,  2527,  2529,  2531,  2532,  2533,  2540,  2541,  2542,
+  2548,  2550,  2553,  2554,  2555,  2561,  2563,  2565,  2569,  2573,
+  2576,  2579,  2582,  2585,  2588,  2590,  2593,  2594,  2596,  2597,
+  2599,  2601,  2602,  2604,  2606,  2610,  2615,  2617,  2621,  2622,
+  2624,  2626,  2628,  2631,  2634,  2637,  2639,  2642,  2645,  2646,
+  2650,  2652,  2654,  2656,  2659,  2662,  2665,  2670,  2673,  2676,
+  2679,  2682,  2685,  2688,  2690,  2693,  2695,  2698,  2700,  2702,
+  2703,  2704,  2706,  2707,  2712,  2715,  2717,  2719,  2723,  2724,
+  2728,  2732,  2736,  2738,  2741,  2744,  2747,  2750,  2753,  2756,
+  2759,  2762,  2765,  2768,  2771,  2774,  2777,  2780,  2783,  2786,
+  2789,  2792,  2795,  2798,  2801,  2804,  2807,  2811,  2814,  2817,
+  2820,  2823,  2827,  2830,  2833,  2838,  2843,  2847
 };
 
 static const short yyrhs[] = {    -1,
-   115,     0,     0,   116,   122,     0,   115,   122,     0,   115,
-     0,     0,     0,     0,    33,     0,    27,     0,    28,     0,
-     0,   123,   124,     0,   142,   141,     0,   138,     0,   137,
-     0,   121,    94,   208,   110,    61,     0,   129,    59,   117,
-   111,     0,   129,   118,   142,   119,   141,     0,   129,   118,
-   138,   119,     0,     0,    45,   157,    59,   125,   117,   111,
-     0,     0,    45,    59,   126,   117,   111,     0,    45,   157,
-    65,   128,    61,     0,   127,    61,     0,    47,    45,   128,
-    61,     0,   120,   124,     0,    47,   300,     0,    47,   314,
-   300,     0,    47,   314,   199,     0,   199,     0,   300,     0,
-   314,   300,     0,   314,   199,     0,   100,     0,   129,   100,
-     0,     0,    49,    75,   131,   132,    76,     0,    49,    75,
-    76,     0,   136,     0,   132,    60,   136,     0,   157,     0,
-     0,   257,   133,     0,    46,   133,     0,   130,   257,   133,
-     0,   134,     0,   134,    65,   214,     0,   377,     0,   377,
-    65,   194,     0,   135,     0,   135,    65,   176,     0,   130,
-   124,     0,   130,     1,     0,   225,    61,     0,   218,   224,
-    61,     0,   215,   223,    61,     0,   218,    61,     0,   160,
-    61,     0,   215,    61,     0,     1,    61,     0,     1,   111,
-     0,    61,     0,   209,     0,   153,     0,     0,   152,     0,
-   152,    61,     0,     0,   109,     0,   148,   140,   139,   324,
-     0,   148,   140,   348,     0,   148,   140,     1,     0,     0,
-   305,     5,    94,   144,   368,   110,   287,   380,     0,   305,
-     5,    48,   287,   380,     0,     0,   314,   305,     5,    94,
-   145,   368,   110,   287,   380,     0,   314,   305,     5,    48,
-   287,   380,     0,     0,   305,   172,    94,   146,   368,   110,
-   287,   380,     0,   305,   172,    48,   287,   380,     0,     0,
-   314,   305,   172,    94,   147,   368,   110,   287,   380,     0,
-   314,   305,   172,    48,   287,   380,     0,   215,   212,     0,
-   218,   297,     0,   297,     0,   218,   143,     0,   143,     0,
-     5,    94,   368,   110,   287,   380,     0,     5,    48,   287,
-   380,     0,   172,    94,   368,   110,   287,   380,     0,   172,
-    48,   287,   380,     0,   218,   149,     0,   149,     0,   215,
-   212,     0,   218,   297,     0,   297,     0,   218,   143,     0,
-   143,     0,    25,     3,     0,   151,   242,     0,   151,    94,
-   188,   110,     0,   151,    48,     0,    63,   154,   155,     0,
-     0,     0,   156,     0,   155,    60,   156,     0,   155,     1,
-     0,    94,   188,   110,     0,    48,     0,   158,    94,   188,
-   110,     0,   158,    48,     0,   293,    94,   188,   110,     0,
-   293,    48,     0,   307,    94,   188,   110,     0,   307,    48,
-     0,     3,     0,     4,     0,     5,     0,    57,     0,    58,
-     0,     3,     0,    57,     0,    58,     0,   106,     0,   105,
-     0,   107,     0,     0,    49,   169,   221,    61,   161,   170,
-     0,     0,    49,   169,   215,   212,   162,   170,     0,     0,
-    49,   169,   297,   163,   170,     0,     0,    49,   169,   143,
-   164,   170,     0,     0,     7,    49,   169,   221,    61,   165,
-   170,     0,     0,     7,    49,   169,   215,   212,   166,   170,
-     0,     0,     7,    49,   169,   297,   167,   170,     0,     0,
-     7,    49,   169,   143,   168,   170,     0,     0,     0,    57,
-    75,   174,   173,     0,     4,    75,   174,   173,     0,   172,
-     0,     5,    75,   174,   173,     0,    76,     0,    78,     0,
-     0,   175,     0,   176,     0,   175,    60,   176,     0,   214,
-     0,   194,     0,    80,     0,    79,     0,    87,     0,    88,
-     0,   112,     0,   187,     0,   194,     0,    48,     0,    94,
-   178,   110,     0,    48,     0,    94,   182,   110,     0,     0,
-   182,     0,     1,     0,     0,   358,   212,   226,   235,    65,
-   183,   243,     0,   178,     0,   111,     0,   321,   319,   111,
-     0,   321,   319,     1,   111,     0,   321,     1,   111,     0,
-     0,    59,   186,   184,     0,   333,     0,   194,    60,   194,
-     0,   194,    60,     1,     0,   187,    60,   194,     0,   187,
-    60,     1,     0,   194,     0,   187,     0,   203,     0,   120,
-   193,     0,    81,   193,     0,    71,   193,     0,    89,   193,
-     0,   177,   193,     0,    68,   157,     0,    13,   189,     0,
-    13,    94,   214,   110,     0,    30,   189,     0,    30,    94,
-   214,   110,     0,   205,   286,     0,   205,   286,   191,     0,
-   205,   190,   286,     0,   205,   190,   286,   191,     0,   205,
-    94,   214,   110,     0,   205,    94,   214,   110,   191,     0,
-   205,   190,    94,   214,   110,     0,   205,   190,    94,   214,
-   110,   191,     0,   206,   193,     0,   206,    95,   113,   193,
-     0,   206,    95,   178,   113,   193,     0,    35,   193,     0,
-    36,   193,     0,    94,   188,   110,     0,    59,   188,   111,
-     0,    94,   188,   110,     0,    48,     0,    94,   221,   110,
-     0,    65,   243,     0,    94,   214,   110,     0,   192,    94,
-   214,   110,     0,   189,     0,   192,   189,     0,   192,    59,
-   244,   255,   111,     0,   193,     0,   194,    84,   194,     0,
-   194,    85,   194,     0,   194,    79,   194,     0,   194,    80,
-   194,     0,   194,    81,   194,     0,   194,    82,   194,     0,
-   194,    83,   194,     0,   194,    77,   194,     0,   194,    78,
-   194,     0,   194,    74,   194,     0,   194,    75,   194,     0,
-   194,    76,   194,     0,   194,    73,   194,     0,   194,    72,
-   194,     0,   194,    71,   194,     0,   194,    69,   194,     0,
-   194,    70,   194,     0,   194,    68,   194,     0,   194,    67,
-   194,     0,   194,    66,   363,    63,   194,     0,   194,    65,
-   194,     0,   194,    64,   194,     0,    62,     0,    62,   194,
-     0,    89,   378,   157,     0,   197,     0,   385,     0,     3,
-     0,    57,     0,    58,     0,     0,     6,    75,   196,   174,
-   173,     0,   385,    75,   196,   174,   173,     0,    49,   157,
-    75,   174,   173,     0,    49,     6,    75,   174,   173,     0,
-    49,   385,    75,   174,   173,     0,   195,     0,     4,     0,
-     5,     0,   195,     0,    81,   200,     0,    71,   200,     0,
-    94,   200,   110,     0,     3,    75,   174,   173,     0,    58,
-    75,   175,   173,     0,   299,     0,   195,     0,   201,     0,
-    94,   200,   110,     0,   195,     0,    10,     0,   207,     0,
-   208,     0,    94,   178,   110,     0,    94,   200,   110,     0,
-    94,     1,   110,     0,     0,    94,   204,   325,   110,     0,
-   203,    94,   188,   110,     0,   203,    48,     0,   203,    95,
-   178,   113,     0,   203,    87,     0,   203,    88,     0,    41,
-     0,     9,    94,   188,   110,     0,   303,     0,    51,    75,
-   214,    76,    94,   178,   110,     0,    52,    75,   214,    76,
-    94,   178,   110,     0,    53,    75,   214,    76,    94,   178,
-   110,     0,    54,    75,   214,    76,    94,   178,   110,     0,
-    50,    94,   178,   110,     0,    50,    94,   214,   110,     0,
-   314,     3,     0,   314,   385,     0,   302,     0,   302,    94,
-   188,   110,     0,   302,    48,     0,   210,   198,     0,   210,
-   198,    94,   188,   110,     0,   210,   198,    48,     0,   210,
-   199,     0,   210,   302,     0,   210,   199,    94,   188,   110,
-     0,   210,   199,    48,     0,   210,   302,    94,   188,   110,
-     0,   210,   302,    48,     0,   210,    89,     8,    48,     0,
-   210,     8,    55,    89,     8,    48,     0,   210,     1,     0,
-    40,     0,   314,    40,     0,    39,     0,   314,   206,     0,
-    43,     0,    44,     0,    11,     0,   208,    11,     0,     0,
-   203,    93,     0,   203,    92,     0,   221,   223,    61,     0,
-   215,   223,    61,     0,   218,   224,    61,     0,   215,    61,
-     0,   218,    61,     0,   120,   211,     0,   292,     0,   297,
-     0,    48,     0,   213,    48,     0,   219,   317,     0,   288,
-   317,     0,   221,   317,     0,   219,     0,   288,     0,   219,
-     0,   216,     0,   218,   221,     0,   221,   217,     0,   221,
-   220,   217,     0,   218,   221,   217,     0,   218,   221,   220,
-     0,   218,   221,   220,   217,     0,     7,     0,   217,   222,
-     0,   217,     7,     0,   217,   236,     0,   236,     0,   288,
-     0,     7,     0,   218,     9,     0,   218,     7,     0,   218,
-   236,     0,   236,     0,   221,     0,   288,   221,     0,   221,
-   220,     0,   288,   221,   220,     0,   222,     0,   220,   222,
-     0,   250,     0,     8,     0,   294,     0,    29,    94,   178,
-   110,     0,    29,    94,   214,   110,     0,    31,    94,   178,
-   110,     0,    31,    94,   214,   110,     0,     8,     0,     9,
-     0,   250,     0,   231,     0,   223,    60,   227,     0,   232,
-     0,   224,    60,   227,     0,   233,     0,   225,    60,   227,
-     0,     0,   121,    94,   208,   110,     0,     0,   212,   226,
-   235,    65,   228,   243,     0,   212,   226,   235,     0,     0,
-   235,    65,   230,   243,     0,   235,     0,   212,   226,   229,
-     0,   297,   226,   229,     0,     0,   297,   226,   234,   229,
-     0,   143,   226,   235,     0,     0,   236,     0,   237,     0,
-   236,   237,     0,    32,    94,    94,   238,   110,   110,     0,
-   239,     0,   238,    60,   239,     0,     0,   240,     0,   240,
-    94,     3,   110,     0,   240,    94,     3,    60,   188,   110,
-     0,   240,    94,   188,   110,     0,   157,     0,     7,     0,
-     8,     0,     9,     0,   157,     0,   241,    60,   157,     0,
-     0,    65,   243,     0,   194,     0,    59,   111,     0,    59,
-   244,   111,     0,    59,   244,    60,   111,     0,     1,     0,
-   243,     0,   244,    60,   243,     0,    95,   194,   113,   243,
-     0,   157,    63,   243,     0,   244,    60,   157,    63,   243,
-     0,    99,     0,   245,   140,   139,   324,     0,   245,   140,
-   348,     0,   245,   140,     1,     0,     0,   247,   246,   141,
-     0,   104,   194,   109,     0,   104,     1,   109,     0,     0,
-   249,   248,     0,   249,     1,     0,     0,    14,   157,    59,
-   251,   284,   256,   111,     0,    14,   157,    59,   111,     0,
-     0,    14,    59,   252,   284,   256,   111,     0,    14,    59,
-   111,     0,    14,   157,     0,    14,   312,     0,    46,   307,
-     0,     0,     0,   264,   270,   272,   111,   235,   253,   249,
-   254,   247,     0,   264,     0,     0,    60,     0,     0,    60,
-     0,    37,     0,   257,     7,     0,   257,     8,     0,   257,
-     9,     0,   257,    37,     0,   257,   157,     0,   257,   159,
-     0,   257,   305,   157,     0,   257,   314,   305,   157,     0,
-   257,   314,   157,     0,   257,   171,     0,   257,   305,   171,
-     0,     0,   258,     0,   259,   261,   265,     0,   260,   265,
-     0,   257,    59,     0,   263,     0,   262,     0,     0,    63,
-   378,     0,    63,   378,   266,     0,   267,     0,   266,    60,
-   378,   267,     0,   268,     0,   269,   378,   268,     0,   307,
-     0,   293,     0,    31,    94,   178,   110,     0,    31,    94,
-   214,   110,     0,    38,   378,     0,     7,   378,     0,   269,
-    38,   378,     0,   269,     7,   378,     0,    59,     0,     0,
-   271,     0,   271,   273,     0,   272,    38,    63,   273,     0,
-   272,    38,    63,     0,   274,     0,   273,   274,     0,   275,
-    61,     0,   275,   111,     0,   150,    63,     0,   150,    96,
-     0,   150,    25,     0,   150,    59,     0,    61,     0,   120,
-   274,     0,   130,   274,     0,   130,   215,    61,     0,   215,
-   276,     0,   218,   277,     0,   297,   226,   235,   242,     0,
-   143,   226,   235,   242,     0,    63,   194,     0,     1,     0,
-   218,   149,   226,   235,   242,     0,   149,   226,   235,   242,
-     0,   127,     0,     0,   278,     0,   276,    60,   279,     0,
-     0,   281,     0,   277,    60,   283,     0,   280,     0,   281,
-     0,   282,     0,   283,     0,   292,   226,   235,   242,     0,
-     4,    63,   194,   235,     0,   297,   226,   235,   242,     0,
-   143,   226,   235,   242,     0,     3,    63,   194,   235,     0,
-    63,   194,   235,     0,   292,   226,   235,   242,     0,     4,
-    63,   194,   235,     0,   297,   226,   235,   242,     0,     3,
-    63,   194,   235,     0,    63,   194,   235,     0,   285,     0,
-   284,    60,   285,     0,   157,     0,   157,    65,   194,     0,
-   358,   315,     0,   358,     0,    94,   214,   110,    95,   178,
-   113,     0,     0,   287,     9,     0,     9,     0,   288,     9,
-     0,     0,   289,   178,     0,   289,    94,   188,   110,     0,
-   289,    94,   368,   110,     0,   289,    48,     0,   289,    94,
-     1,   110,     0,    81,   288,   292,     0,    71,   288,   292,
-     0,    81,   292,     0,    71,   292,     0,   313,   287,   292,
-     0,   296,     0,   304,     0,   314,   304,     0,   293,     0,
-   295,     0,   314,   295,     0,   305,   304,     0,   296,   291,
-   287,   380,     0,   296,    95,   290,   113,     0,   296,    95,
-   113,     0,    94,   292,   110,     0,   305,   304,     0,   304,
-     0,    81,   288,   297,     0,    71,   288,   297,     0,    81,
-   297,     0,    71,   297,     0,   313,   287,   297,     0,   202,
-     0,    81,   288,   297,     0,    71,   288,   297,     0,    81,
-   298,     0,    71,   298,     0,   313,   287,   297,     0,   299,
-     0,   202,   291,   287,   380,     0,    94,   298,   110,     0,
-   202,    95,   290,   113,     0,   202,    95,   113,     0,   301,
-     0,   305,   201,     0,   305,   199,     0,   305,   198,     0,
-   305,   195,     0,   305,   198,     0,   301,     0,   314,   301,
-     0,   221,    94,   188,   110,     0,   221,    94,   200,   110,
-     0,   221,   213,     0,     4,     0,     5,     0,   171,     0,
-   306,     0,   305,   306,     0,   305,    49,   311,    55,     0,
-     4,    55,     0,     5,    55,     0,    58,    55,     0,   171,
-    55,     0,   308,     0,   314,   308,     0,   309,   157,     0,
-   309,   171,     0,   309,   311,     0,   309,    49,   311,     0,
-   310,     0,   309,   310,     0,   309,   311,    55,     0,   309,
-    49,   311,    55,     0,     4,    55,     0,     5,    55,     0,
-   171,    55,     0,    57,    55,     0,     3,    55,     0,    58,
-    55,     0,   157,    75,   174,   173,     0,   314,   304,     0,
-   295,     0,   314,   295,     0,   305,    81,     0,   314,   305,
-    81,     0,    55,     0,    81,   287,   315,     0,    81,   287,
-     0,    71,   287,   315,     0,    71,   287,     0,   313,   287,
-     0,   313,   287,   315,     0,   316,     0,    95,   178,   113,
-     0,   316,    95,   290,   113,     0,    81,   288,   317,     0,
-    81,   317,     0,    81,   288,     0,    81,     0,    71,   288,
-   317,     0,    71,   317,     0,    71,   288,     0,    71,     0,
-   313,   287,     0,   313,   287,   317,     0,   318,     0,    94,
-   317,   110,     0,    91,     0,   318,    94,   368,   110,   287,
-   380,     0,   318,    48,   287,   380,     0,   318,    95,   290,
-   113,     0,   318,    95,   113,     0,    94,   369,   110,   287,
-   380,     0,   192,   287,   380,     0,   213,   287,   380,     0,
-    95,   290,   113,     0,    95,   113,     0,   332,     0,   320,
-     0,   319,   332,     0,   319,   320,     0,     1,    61,     0,
-     0,   322,     0,   323,     0,   322,   323,     0,    34,   241,
-    61,     0,   325,     0,     1,   325,     0,     0,    59,   326,
-   184,     0,     0,     0,    15,   328,   180,   329,   330,     0,
-   325,     0,     0,   331,   333,     0,   325,     0,   333,     0,
-   211,     0,   178,    61,     0,     0,   327,    16,   334,   330,
-     0,   327,     0,     0,     0,    17,   335,   180,   336,   185,
-     0,     0,     0,    18,   337,   330,    17,   338,   179,    61,
-     0,     0,     0,     0,     0,    19,   339,    94,   361,   340,
-   181,    61,   341,   363,   110,   342,   185,     0,     0,     0,
-    20,   343,    94,   182,   110,   344,   330,     0,     0,    21,
-   194,    63,   345,   332,     0,     0,    21,   194,    12,   194,
-    63,   346,   332,     0,     0,    22,    63,   347,   332,     0,
-    23,    61,     0,    24,    61,     0,    25,    61,     0,    25,
-   178,    61,     0,   121,   362,    94,   208,   110,    61,     0,
-   121,   362,    94,   208,    63,   364,   110,    61,     0,   121,
-   362,    94,   208,    63,   364,    63,   364,   110,    61,     0,
-   121,   362,    94,   208,    63,   364,    63,   364,    63,   367,
-   110,    61,     0,    26,    81,   178,    61,     0,    26,   157,
-    61,     0,   360,   332,     0,   360,   111,     0,    61,     0,
-   351,     0,     0,     0,    96,   349,   139,   325,   350,   354,
-     0,     0,     0,    96,   352,   325,   353,   354,     0,   355,
-     0,   354,   355,     0,     0,     0,    97,   356,   359,   357,
-   325,     0,   219,     0,   288,     0,    94,    12,   110,     0,
-    94,   377,   110,     0,     3,    63,     0,    57,    63,     0,
-     4,    63,     0,     5,    63,     0,   363,    61,     0,   211,
-     0,    59,   184,     0,     0,     9,     0,     0,   178,     0,
-     1,     0,     0,   365,     0,   366,     0,   365,    60,   366,
-     0,    11,    94,   178,   110,     0,    11,     0,   367,    60,
-    11,     0,     0,   369,     0,   214,     0,   373,     0,   374,
-    12,     0,   373,    12,     0,   214,    12,     0,    12,     0,
-    98,     0,   373,    98,     0,   214,    98,     0,   373,    63,
-     0,   214,    63,     0,     0,    65,   371,   372,     0,   103,
-     0,   243,     0,   375,     0,   377,   370,     0,   374,   376,
-     0,   374,   379,     0,   374,   379,    65,   243,     0,   373,
-    60,     0,   214,    60,     0,   216,   212,     0,   219,   212,
-     0,   221,   212,     0,   216,   317,     0,   216,     0,   218,
-   297,     0,   377,     0,   377,   370,     0,   375,     0,   214,
-     0,     0,     0,   297,     0,     0,    62,    94,   382,   110,
-     0,    62,    48,     0,   214,     0,   381,     0,   382,    60,
-   381,     0,     0,    81,   287,   383,     0,    71,   287,   383,
-     0,   313,   287,   383,     0,    42,     0,   384,    81,     0,
-   384,    82,     0,   384,    83,     0,   384,    79,     0,   384,
-    80,     0,   384,    71,     0,   384,    69,     0,   384,    70,
-     0,   384,    89,     0,   384,    60,     0,   384,    74,     0,
-   384,    75,     0,   384,    76,     0,   384,    73,     0,   384,
-    64,     0,   384,    65,     0,   384,    77,     0,   384,    78,
-     0,   384,    87,     0,   384,    88,     0,   384,    68,     0,
-   384,    67,     0,   384,   112,     0,   384,    66,    63,     0,
-   384,    72,     0,   384,    92,     0,   384,    84,     0,   384,
-    48,     0,   384,    95,   113,     0,   384,    40,     0,   384,
-    39,     0,   384,    40,    95,   113,     0,   384,    39,    95,
-   113,     0,   384,   358,   383,     0,   384,     1,     0
+   113,     0,     0,   114,   120,     0,   113,   120,     0,   113,
+     0,     0,     0,     0,    32,     0,    27,     0,     0,   121,
+   122,     0,   148,   147,     0,   144,     0,   141,     0,   119,
+    93,   219,   108,    60,     0,   133,    58,   115,   109,     0,
+   133,   116,   148,   117,   147,     0,   133,   116,   144,   117,
+     0,     0,    44,   163,    58,   123,   115,   109,     0,     0,
+    44,    58,   124,   115,   109,     0,   125,     0,   127,    60,
+     0,   129,     0,   118,   122,     0,     0,    44,   163,    64,
+   126,   132,    60,     0,    46,   314,     0,    46,   328,   314,
+     0,    46,   328,   209,     0,    46,   131,   163,     0,    46,
+   328,   163,     0,    46,   328,   131,   163,     0,     0,    46,
+    44,   130,   132,    60,     0,    57,    54,     0,   131,    57,
+    54,     0,   209,     0,   314,     0,   328,   314,     0,   328,
+   209,     0,    98,     0,   133,    98,     0,     0,    48,    74,
+   135,   136,    75,     0,    48,    74,    75,     0,   140,     0,
+   136,    59,   140,     0,   163,     0,     0,   268,   137,     0,
+    45,   137,     0,   134,   268,   137,     0,   138,     0,   138,
+    64,   225,     0,   391,     0,   391,    64,   204,     0,   139,
+     0,   139,    64,   184,     0,   134,   142,     0,   134,     1,
+     0,   148,   147,     0,   143,     0,   141,     0,   133,   116,
+   148,   117,   147,     0,   133,   116,   143,   117,     0,   118,
+   142,     0,   236,    60,     0,   229,   235,    60,     0,   226,
+   234,    60,     0,   261,    60,     0,   236,    60,     0,   229,
+   235,    60,     0,   226,   234,    60,     0,   229,    60,     0,
+   166,    60,     0,   226,    60,     0,     1,    60,     0,     1,
+   109,     0,    60,     0,   220,     0,   159,     0,     0,   158,
+     0,   158,    60,     0,     0,   107,     0,   154,   146,   145,
+   338,     0,   154,   146,   362,     0,   154,   146,     1,     0,
+     0,   319,     5,    93,   150,   382,   108,   300,   394,     0,
+   319,     5,    47,   300,   394,     0,     0,   328,   319,     5,
+    93,   151,   382,   108,   300,   394,     0,   328,   319,     5,
+    47,   300,   394,     0,     0,   319,   179,    93,   152,   382,
+   108,   300,   394,     0,   319,   179,    47,   300,   394,     0,
+     0,   328,   319,   179,    93,   153,   382,   108,   300,   394,
+     0,   328,   319,   179,    47,   300,   394,     0,   226,   223,
+     0,   229,   311,     0,   311,     0,   229,   149,     0,   149,
+     0,     5,    93,   382,   108,   300,   394,     0,     5,    47,
+   300,   394,     0,   179,    93,   382,   108,   300,   394,     0,
+   179,    47,   300,   394,     0,   229,   155,     0,   155,     0,
+   226,   223,     0,   229,   311,     0,   311,     0,   229,   149,
+     0,   149,     0,    25,     3,     0,   157,   253,     0,   157,
+    93,   196,   108,     0,   157,    47,     0,    62,   160,   161,
+     0,     0,     0,   162,     0,   161,    59,   162,     0,   161,
+     1,     0,    93,   196,   108,     0,    47,     0,   164,    93,
+   196,   108,     0,   164,    47,     0,   306,    93,   196,   108,
+     0,   306,    47,     0,   321,    93,   196,   108,     0,   321,
+    47,     0,     3,     0,     4,     0,     5,     0,    56,     0,
+    57,     0,     3,     0,    56,     0,    57,     0,   104,     0,
+   103,     0,   105,     0,     0,    48,   175,   232,    60,   167,
+   176,     0,     0,    48,   175,   226,   223,   168,   176,     0,
+     0,    48,   175,   311,   169,   176,     0,     0,    48,   175,
+   149,   170,   176,     0,     0,     7,    48,   175,   232,    60,
+   171,   176,     0,     0,     7,    48,   175,   226,   223,   172,
+   176,     0,     0,     7,    48,   175,   311,   173,   176,     0,
+     0,     7,    48,   175,   149,   174,   176,     0,     0,     0,
+    56,    74,   182,   181,   180,     0,     4,    74,   182,   181,
+   180,     0,   179,     0,   177,     0,   163,    74,   182,    75,
+   180,     0,     5,    74,   182,   181,   180,     0,     0,    75,
+     0,    77,     0,     0,   183,     0,   184,     0,   183,    59,
+   184,     0,   225,     0,    56,     0,   204,     0,    79,     0,
+    78,     0,    86,     0,    87,     0,   110,     0,   195,     0,
+   204,     0,    47,     0,    93,   186,   108,     0,    47,     0,
+    93,   190,   108,     0,     0,   190,     0,     1,     0,     0,
+   372,   223,   237,   246,    64,   191,   254,     0,   186,     0,
+   109,     0,   335,   333,   109,     0,   335,   333,     1,   109,
+     0,   335,     1,   109,     0,     0,    58,   194,   192,     0,
+   347,     0,   204,    59,   204,     0,   204,    59,     1,     0,
+   195,    59,   204,     0,   195,    59,     1,     0,   204,     0,
+   195,     0,   214,     0,   118,   203,     0,    80,   203,     0,
+    70,   203,     0,    88,   203,     0,   185,   203,     0,    67,
+   163,     0,    13,   197,     0,    13,    93,   225,   108,     0,
+    29,   197,     0,    29,    93,   225,   108,     0,   216,   299,
+     0,   216,   299,   201,     0,   216,   200,   299,     0,   216,
+   200,   299,   201,     0,   216,    93,   199,   225,   198,     0,
+   216,    93,   199,   225,   198,   201,     0,   216,   200,    93,
+   199,   225,   198,     0,   216,   200,    93,   199,   225,   198,
+   201,     0,   217,   203,     0,   217,    94,   111,   203,     0,
+   217,    94,   186,   111,   203,     0,    34,   203,     0,    35,
+   203,     0,   108,     0,     0,    93,   199,   196,   108,     0,
+    58,   199,   196,   109,     0,    93,   196,   108,     0,    47,
+     0,    93,   232,   108,     0,    64,   254,     0,    93,   225,
+   108,     0,   202,    93,   225,   108,     0,   197,     0,   202,
+   197,     0,   202,    58,   255,   266,   109,     0,   203,     0,
+   204,    83,   204,     0,   204,    84,   204,     0,   204,    78,
+   204,     0,   204,    79,   204,     0,   204,    80,   204,     0,
+   204,    81,   204,     0,   204,    82,   204,     0,   204,    76,
+   204,     0,   204,    77,   204,     0,   204,    73,   204,     0,
+   204,    74,   204,     0,   204,    75,   204,     0,   204,    72,
+   204,     0,   204,    71,   204,     0,   204,    70,   204,     0,
+   204,    68,   204,     0,   204,    69,   204,     0,   204,    67,
+   204,     0,   204,    66,   204,     0,   204,    65,   377,    62,
+   204,     0,   204,    64,   204,     0,   204,    63,   204,     0,
+    61,     0,    61,   204,     0,    88,   392,   163,     0,    88,
+   392,   177,     0,   207,     0,   399,     0,     3,     0,    56,
+     0,    57,     0,     0,     6,    74,   206,   182,   181,     0,
+   399,    74,   206,   182,   181,     0,    48,   163,    74,   182,
+   181,     0,    48,     6,    74,   182,   181,     0,    48,   399,
+    74,   182,   181,     0,   205,     0,     4,     0,     5,     0,
+   211,     0,   247,   211,     0,   205,     0,    80,   210,     0,
+    70,   210,     0,    93,   210,   108,     0,     3,    74,   182,
+   181,     0,    57,    74,   183,   181,     0,   313,     0,   205,
+     0,   212,     0,    93,   210,   108,     0,   205,     0,    10,
+     0,   218,     0,   219,     0,    93,   186,   108,     0,    93,
+   210,   108,     0,    93,     1,   108,     0,     0,    93,   215,
+   339,   108,     0,   205,    93,   196,   108,     0,   205,    47,
+     0,   214,    93,   196,   108,     0,   214,    47,     0,   214,
+    94,   186,   111,     0,   214,    86,     0,   214,    87,     0,
+    40,     0,     9,    93,   196,   108,     0,   317,     0,    50,
+    74,   225,    75,    93,   186,   108,     0,    51,    74,   225,
+    75,    93,   186,   108,     0,    52,    74,   225,    75,    93,
+   186,   108,     0,    53,    74,   225,    75,    93,   186,   108,
+     0,    49,    93,   186,   108,     0,    49,    93,   225,   108,
+     0,   328,     3,     0,   328,   207,     0,   328,   399,     0,
+   316,     0,   316,    93,   196,   108,     0,   316,    47,     0,
+   221,   208,     0,   221,   208,    93,   196,   108,     0,   221,
+   208,    47,     0,   221,   209,     0,   221,   316,     0,   221,
+   209,    93,   196,   108,     0,   221,   209,    47,     0,   221,
+   316,    93,   196,   108,     0,   221,   316,    47,     0,   221,
+    88,     8,    47,     0,   221,     8,    54,    88,     8,    47,
+     0,   221,     1,     0,    39,     0,   328,    39,     0,    38,
+     0,   328,   217,     0,    42,     0,    43,     0,    11,     0,
+   219,    11,     0,     0,   214,    92,     0,   214,    91,     0,
+   232,   234,    60,     0,   226,   234,    60,     0,   229,   235,
+    60,     0,   226,    60,     0,   229,    60,     0,   118,   222,
+     0,   305,     0,   311,     0,    47,     0,   224,    47,     0,
+   230,   331,     0,   301,   331,     0,   232,   331,     0,   230,
+     0,   301,     0,   230,     0,   227,     0,   229,   232,     0,
+   232,   228,     0,   232,   231,   228,     0,   229,   232,   228,
+     0,   229,   232,   231,     0,   229,   232,   231,   228,     0,
+     7,     0,   228,   233,     0,   228,     7,     0,   228,   247,
+     0,   247,     0,   301,     0,     7,     0,   229,     9,     0,
+   229,     7,     0,   229,   247,     0,   247,     0,   232,     0,
+   301,   232,     0,   232,   231,     0,   301,   232,   231,     0,
+   233,     0,   231,   233,     0,   261,     0,     8,     0,   307,
+     0,    28,    93,   186,   108,     0,    28,    93,   225,   108,
+     0,    30,    93,   186,   108,     0,    30,    93,   225,   108,
+     0,     8,     0,     9,     0,   261,     0,   242,     0,   234,
+    59,   238,     0,   243,     0,   235,    59,   238,     0,   244,
+     0,   236,    59,   238,     0,     0,   119,    93,   219,   108,
+     0,     0,   223,   237,   246,    64,   239,   254,     0,   223,
+   237,   246,     0,     0,   246,    64,   241,   254,     0,   246,
+     0,   223,   237,   240,     0,   311,   237,   240,     0,     0,
+   311,   237,   245,   240,     0,   149,   237,   246,     0,     0,
+   247,     0,   248,     0,   247,   248,     0,    31,    93,    93,
+   249,   108,   108,     0,   250,     0,   249,    59,   250,     0,
+     0,   251,     0,   251,    93,     3,   108,     0,   251,    93,
+     3,    59,   196,   108,     0,   251,    93,   196,   108,     0,
+   163,     0,     7,     0,     8,     0,     9,     0,   163,     0,
+   252,    59,   163,     0,     0,    64,   254,     0,   204,     0,
+    58,   109,     0,    58,   255,   109,     0,    58,   255,    59,
+   109,     0,     1,     0,   254,     0,   255,    59,   254,     0,
+    94,   204,   111,   254,     0,   163,    62,   254,     0,   255,
+    59,   163,    62,   254,     0,    97,     0,   256,   146,   145,
+   338,     0,   256,   146,   362,     0,   256,   146,     1,     0,
+     0,   258,   257,   147,     0,   102,   204,   107,     0,   102,
+     1,   107,     0,     0,   260,   259,     0,   260,     1,     0,
+     0,    14,   163,    58,   262,   297,   267,   109,     0,    14,
+   163,    58,   109,     0,     0,    14,    58,   263,   297,   267,
+   109,     0,    14,    58,   109,     0,    14,   163,     0,    14,
+   326,     0,    45,   321,     0,     0,     0,   276,   282,   284,
+   109,   246,   264,   260,   265,   258,     0,   276,     0,     0,
+    59,     0,     0,    59,     0,    36,     0,   268,     7,     0,
+   268,     8,     0,   268,     9,     0,   268,    36,     0,   268,
+   247,     0,   268,   163,     0,   268,   165,     0,   269,    58,
+     0,   269,    62,     0,   268,   319,   163,     0,   268,   328,
+   319,   163,     0,   268,   328,   163,     0,   268,   178,     0,
+   268,   319,   178,     0,   269,     0,     0,   270,   273,   277,
+     0,     0,   271,   274,   277,     0,   268,    58,     0,   275,
+     0,   272,     0,     0,    62,   392,     0,    62,   392,   278,
+     0,   279,     0,   278,    59,   392,   279,     0,   280,     0,
+   281,   392,   280,     0,   321,     0,   306,     0,    30,    93,
+   186,   108,     0,    30,    93,   225,   108,     0,    37,   392,
+     0,     7,   392,     0,   281,    37,   392,     0,   281,     7,
+   392,     0,    58,     0,     0,   283,     0,   283,   286,     0,
+   284,   285,   286,     0,   284,   285,     0,    37,    62,     0,
+   287,     0,   286,   287,     0,   288,    60,     0,   288,   109,
+     0,   156,    62,     0,   156,    95,     0,   156,    25,     0,
+   156,    58,     0,    60,     0,   118,   287,     0,   134,   287,
+     0,   134,   226,    60,     0,   226,   289,     0,   229,   290,
+     0,   311,   237,   246,   253,     0,   149,   237,   246,   253,
+     0,    62,   204,     0,     1,     0,   229,   155,   237,   246,
+   253,     0,   155,   237,   246,   253,     0,   127,     0,     0,
+   291,     0,   289,    59,   292,     0,     0,   294,     0,   290,
+    59,   296,     0,   293,     0,   294,     0,   295,     0,   296,
+     0,   305,   237,   246,   253,     0,     4,    62,   204,   246,
+     0,   311,   237,   246,   253,     0,   149,   237,   246,   253,
+     0,     3,    62,   204,   246,     0,    62,   204,   246,     0,
+   305,   237,   246,   253,     0,     4,    62,   204,   246,     0,
+   311,   237,   246,   253,     0,     3,    62,   204,   246,     0,
+    62,   204,   246,     0,   298,     0,   297,    59,   298,     0,
+   163,     0,   163,    64,   204,     0,   372,   329,     0,   372,
+     0,    93,   199,   225,   198,    94,   186,   111,     0,     0,
+   300,     9,     0,     9,     0,   301,     9,     0,     0,   302,
+   186,     0,   302,    93,   196,   108,     0,   302,    93,   382,
+   108,     0,   302,    47,     0,   302,    93,     1,   108,     0,
+    80,   301,   305,     0,    70,   301,   305,     0,    80,   305,
+     0,    70,   305,     0,   327,   300,   305,     0,   309,     0,
+   318,     0,   328,   318,     0,   306,     0,   308,     0,   328,
+   308,     0,   319,   318,     0,   309,   304,   300,   394,     0,
+   309,    94,   303,   111,     0,   309,    94,   111,     0,    93,
+   305,   108,     0,   319,   318,     0,   318,     0,   311,     0,
+   247,   311,     0,    80,   301,   310,     0,    70,   301,   310,
+     0,    80,   310,     0,    70,   310,     0,   327,   300,   310,
+     0,   213,     0,    80,   301,   310,     0,    70,   301,   310,
+     0,    80,   312,     0,    70,   312,     0,   327,   300,   310,
+     0,   313,     0,   213,   304,   300,   394,     0,    93,   312,
+   108,     0,   213,    94,   303,   111,     0,   213,    94,   111,
+     0,   315,     0,   319,   212,     0,   319,   209,     0,   319,
+   208,     0,   319,   205,     0,   319,   208,     0,   315,     0,
+   328,   315,     0,   232,    93,   196,   108,     0,   232,    93,
+   210,   108,     0,   232,   224,     0,     4,     0,     5,     0,
+   177,     0,   320,     0,   319,   320,     0,   319,    48,   325,
+    54,     0,     4,    54,     0,     5,    54,     0,    57,    54,
+     0,   177,    54,     0,   322,     0,   328,   322,     0,   323,
+   163,     0,   323,   177,     0,   323,   325,     0,   323,    48,
+   325,     0,   324,     0,   323,   324,     0,   323,   325,    54,
+     0,   323,    48,   325,    54,     0,     4,    54,     0,     5,
+    54,     0,   177,    54,     0,    56,    54,     0,     3,    54,
+     0,    57,    54,     0,   163,    74,   182,   181,     0,   328,
+   318,     0,   308,     0,   328,   308,     0,   319,    80,     0,
+   328,   319,    80,     0,    54,     0,    80,   300,   329,     0,
+    80,   300,     0,    70,   300,   329,     0,    70,   300,     0,
+   327,   300,     0,   327,   300,   329,     0,   330,     0,    94,
+   186,   111,     0,   330,    94,   303,   111,     0,    80,   301,
+   331,     0,    80,   331,     0,    80,   301,     0,    80,     0,
+    70,   301,   331,     0,    70,   331,     0,    70,   301,     0,
+    70,     0,   327,   300,     0,   327,   300,   331,     0,   332,
+     0,    93,   331,   108,     0,    90,     0,   332,    93,   382,
+   108,   300,   394,     0,   332,    47,   300,   394,     0,   332,
+    94,   303,   111,     0,   332,    94,   111,     0,    93,   383,
+   108,   300,   394,     0,   202,   300,   394,     0,   224,   300,
+   394,     0,    94,   303,   111,     0,    94,   111,     0,   346,
+     0,   334,     0,   333,   346,     0,   333,   334,     0,     1,
+    60,     0,     0,   336,     0,   337,     0,   336,   337,     0,
+    33,   252,    60,     0,   339,     0,     1,   339,     0,     0,
+    58,   340,   192,     0,     0,     0,    15,   342,   188,   343,
+   344,     0,   339,     0,     0,   345,   347,     0,   339,     0,
+   347,     0,   222,     0,   186,    60,     0,     0,   341,    16,
+   348,   344,     0,   341,     0,     0,     0,    17,   349,   188,
+   350,   193,     0,     0,     0,    18,   351,   344,    17,   352,
+   187,    60,     0,     0,     0,     0,     0,    19,   353,    93,
+   375,   354,   189,    60,   355,   377,   108,   356,   193,     0,
+     0,     0,    20,   357,    93,   190,   108,   358,   344,     0,
+     0,    21,   204,    62,   359,   346,     0,     0,    21,   204,
+    12,   204,    62,   360,   346,     0,     0,    22,    62,   361,
+   346,     0,    23,    60,     0,    24,    60,     0,    25,    60,
+     0,    25,   186,    60,     0,   119,   376,    93,   219,   108,
+    60,     0,   119,   376,    93,   219,    62,   378,   108,    60,
+     0,   119,   376,    93,   219,    62,   378,    62,   378,   108,
+    60,     0,   119,   376,    93,   219,    62,   378,    62,   378,
+    62,   381,   108,    60,     0,    26,    80,   186,    60,     0,
+    26,   163,    60,     0,   374,   346,     0,   374,   109,     0,
+    60,     0,   365,     0,   129,     0,   128,     0,   125,     0,
+     0,     0,    95,   363,   145,   339,   364,   368,     0,     0,
+     0,    95,   366,   339,   367,   368,     0,   369,     0,   368,
+   369,     0,     0,     0,    96,   370,   373,   371,   339,     0,
+   230,     0,   301,     0,    93,    12,   108,     0,    93,   391,
+   108,     0,     3,    62,     0,    56,    62,     0,     4,    62,
+     0,     5,    62,     0,   377,    60,     0,   222,     0,    58,
+   192,     0,     0,     9,     0,     0,   186,     0,     1,     0,
+     0,   379,     0,   380,     0,   379,    59,   380,     0,    11,
+    93,   186,   108,     0,    11,     0,   381,    59,    11,     0,
+     0,   383,     0,   225,     0,   387,     0,   388,    12,     0,
+   387,    12,     0,   225,    12,     0,    12,     0,   387,    62,
+     0,   225,    62,     0,     0,    64,   385,   386,     0,   101,
+     0,   254,     0,   389,     0,   391,   384,     0,   388,   390,
+     0,   388,   393,     0,   388,   393,    64,   254,     0,   387,
+    59,     0,   225,    59,     0,   227,   223,     0,   230,   223,
+     0,   232,   223,     0,   227,   331,     0,   227,     0,   229,
+   311,     0,   391,     0,   391,   384,     0,   389,     0,   225,
+     0,     0,     0,   311,     0,     0,    61,    93,   396,   108,
+     0,    61,    47,     0,   225,     0,   395,     0,   396,    59,
+   395,     0,     0,    80,   300,   397,     0,    70,   300,   397,
+     0,   327,   300,   397,     0,    41,     0,   398,    80,     0,
+   398,    81,     0,   398,    82,     0,   398,    78,     0,   398,
+    79,     0,   398,    70,     0,   398,    68,     0,   398,    69,
+     0,   398,    88,     0,   398,    59,     0,   398,    73,     0,
+   398,    74,     0,   398,    75,     0,   398,    72,     0,   398,
+    63,     0,   398,    64,     0,   398,    76,     0,   398,    77,
+     0,   398,    86,     0,   398,    87,     0,   398,    67,     0,
+   398,    66,     0,   398,   110,     0,   398,    65,    62,     0,
+   398,    71,     0,   398,    91,     0,   398,    83,     0,   398,
+    47,     0,   398,    94,   111,     0,   398,    39,     0,   398,
+    38,     0,   398,    39,    94,   111,     0,   398,    38,    94,
+   111,     0,   398,   372,   397,     0,   398,     1,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   334,   336,   350,   353,   354,   358,   360,   363,   368,   372,
-   378,   380,   383,   386,   390,   393,   395,   397,   400,   402,
-   405,   408,   410,   412,   414,   416,   418,   420,   426,   430,
-   433,   435,   439,   441,   442,   444,   448,   451,   457,   460,
-   462,   467,   470,   474,   477,   480,   492,   496,   514,   524,
-   526,   528,   530,   532,   545,   554,   564,   566,   568,   572,
-   574,   575,   582,   583,   584,   587,   590,   594,   596,   597,
-   600,   602,   605,   608,   610,   614,   624,   626,   636,   645,
-   647,   657,   666,   668,   678,   687,   689,   701,   709,   716,
-   721,   728,   735,   738,   740,   742,   748,   758,   760,   763,
-   766,   768,   771,   775,   784,   787,   789,   793,   806,   826,
-   829,   831,   832,   835,   842,   848,   850,   852,   854,   856,
-   859,   864,   866,   867,   868,   869,   872,   874,   875,   878,
-   880,   881,   884,   889,   889,   893,   893,   896,   896,   899,
-   899,   903,   903,   908,   908,   911,   911,   914,   916,   919,
-   926,   933,   939,   942,   951,   953,   961,   964,   967,   970,
-   974,   977,   980,   983,   985,   987,   989,   993,   996,   999,
-  1004,  1008,  1013,  1017,  1020,  1022,  1026,  1046,  1053,  1056,
-  1058,  1059,  1060,  1063,  1067,  1068,  1072,  1076,  1079,  1081,
-  1085,  1088,  1091,  1095,  1098,  1100,  1102,  1104,  1111,  1124,
-  1126,  1128,  1130,  1136,  1139,  1142,  1145,  1148,  1152,  1155,
-  1158,  1162,  1164,  1168,  1172,  1174,  1178,  1181,  1188,  1191,
-  1193,  1201,  1214,  1220,  1227,  1229,  1231,  1244,  1247,  1249,
-  1251,  1253,  1255,  1257,  1259,  1261,  1263,  1265,  1267,  1269,
-  1271,  1273,  1275,  1277,  1279,  1281,  1283,  1285,  1287,  1291,
-  1293,  1295,  1312,  1315,  1316,  1317,  1318,  1319,  1322,  1325,
-  1328,  1332,  1335,  1337,  1342,  1344,  1345,  1348,  1350,  1352,
-  1354,  1358,  1361,  1365,  1367,  1368,  1369,  1373,  1381,  1382,
-  1383,  1391,  1399,  1407,  1409,  1421,  1451,  1458,  1465,  1467,
-  1476,  1481,  1504,  1548,  1549,  1553,  1557,  1561,  1565,  1567,
-  1571,  1573,  1581,  1583,  1588,  1594,  1598,  1603,  1608,  1610,
-  1615,  1630,  1645,  1656,  1668,  1676,  1685,  1729,  1732,  1736,
-  1739,  1743,  1746,  1751,  1753,  1757,  1770,  1773,  1780,  1787,
-  1792,  1794,  1799,  1801,  1808,  1810,  1814,  1818,  1824,  1828,
-  1831,  1834,  1837,  1847,  1849,  1852,  1856,  1859,  1862,  1865,
-  1868,  1874,  1880,  1882,  1887,  1889,  1898,  1901,  1903,  1906,
-  1912,  1914,  1924,  1928,  1931,  1934,  1939,  1942,  1950,  1952,
-  1954,  1956,  1959,  1962,  1977,  1996,  1999,  2001,  2004,  2006,
-  2009,  2011,  2014,  2016,  2019,  2022,  2026,  2032,  2033,  2045,
-  2052,  2055,  2061,  2065,  2070,  2076,  2077,  2085,  2088,  2092,
-  2095,  2099,  2104,  2107,  2111,  2114,  2116,  2118,  2120,  2127,
-  2129,  2130,  2131,  2135,  2138,  2142,  2145,  2151,  2153,  2156,
-  2159,  2162,  2168,  2171,  2174,  2176,  2178,  2182,  2188,  2196,
-  2198,  2202,  2204,  2209,  2212,  2215,  2217,  2219,  2223,  2227,
-  2232,  2236,  2239,  2244,  2248,  2251,  2254,  2258,  2293,  2299,
-  2308,  2328,  2330,  2333,  2335,  2340,  2342,  2344,  2346,  2348,
-  2352,  2357,  2362,  2368,  2373,  2378,  2380,  2384,  2389,  2392,
-  2399,  2427,  2433,  2435,  2438,  2441,  2443,  2447,  2449,  2453,
-  2479,  2508,  2511,  2512,  2533,  2556,  2558,  2562,  2573,  2587,
-  2676,  2683,  2686,  2694,  2705,  2714,  2718,  2733,  2736,  2741,
-  2743,  2745,  2747,  2749,  2751,  2754,  2756,  2764,  2770,  2772,
-  2775,  2778,  2780,  2791,  2796,  2799,  2804,  2807,  2808,  2819,
-  2822,  2823,  2834,  2836,  2839,  2841,  2844,  2851,  2859,  2866,
-  2872,  2878,  2886,  2890,  2895,  2899,  2902,  2911,  2913,  2917,
-  2920,  2925,  2929,  2934,  2944,  2947,  2951,  2955,  2963,  2968,
-  2974,  2977,  2979,  2981,  2987,  2990,  2992,  2994,  2996,  3000,
-  3003,  3021,  3031,  3033,  3034,  3038,  3043,  3046,  3048,  3050,
-  3052,  3056,  3062,  3065,  3067,  3069,  3071,  3075,  3078,  3081,
-  3083,  3085,  3087,  3091,  3094,  3097,  3099,  3101,  3103,  3110,
-  3121,  3125,  3130,  3134,  3139,  3141,  3145,  3148,  3150,  3154,
-  3156,  3157,  3160,  3162,  3164,  3170,  3185,  3191,  3197,  3211,
-  3213,  3217,  3231,  3233,  3235,  3239,  3245,  3258,  3260,  3264,
-  3275,  3281,  3283,  3284,  3285,  3293,  3298,  3307,  3308,  3312,
-  3315,  3321,  3327,  3330,  3332,  3334,  3336,  3340,  3344,  3348,
-  3351,  3356,  3359,  3361,  3363,  3365,  3367,  3369,  3371,  3373,
-  3377,  3381,  3385,  3389,  3390,  3392,  3394,  3396,  3398,  3400,
-  3402,  3404,  3406,  3414,  3416,  3417,  3418,  3421,  3427,  3429,
-  3434,  3436,  3439,  3453,  3456,  3459,  3463,  3466,  3473,  3475,
-  3478,  3480,  3482,  3485,  3488,  3491,  3494,  3496,  3499,  3503,
-  3505,  3511,  3513,  3514,  3516,  3521,  3523,  3525,  3527,  3529,
-  3532,  3533,  3535,  3538,  3539,  3542,  3542,  3545,  3545,  3548,
-  3548,  3550,  3552,  3554,  3556,  3562,  3568,  3571,  3574,  3580,
-  3582,  3584,  3588,  3590,  3593,  3600,  3603,  3611,  3615,  3617,
-  3620,  3622,  3625,  3629,  3631,  3634,  3636,  3639,  3656,  3662,
-  3670,  3672,  3674,  3678,  3681,  3682,  3690,  3694,  3698,  3701,
-  3702,  3708,  3711,  3714,  3716,  3720,  3725,  3728,  3738,  3743,
-  3744,  3752,  3758,  3763,  3767,  3772,  3776,  3780,  3784,  3789,
-  3800,  3814,  3818,  3821,  3823,  3827,  3831,  3834,  3837,  3839,
-  3843,  3845,  3852,  3859,  3862,  3865,  3869,  3873,  3879,  3883,
-  3888,  3890,  3893,  3898,  3904,  3915,  3918,  3920,  3924,  3929,
-  3931,  3938,  3941,  3943,  3945,  3951,  3956,  3959,  3961,  3963,
-  3965,  3967,  3969,  3971,  3973,  3975,  3977,  3979,  3981,  3983,
-  3985,  3987,  3989,  3991,  3993,  3995,  3997,  3999,  4001,  4003,
-  4005,  4007,  4009,  4011,  4013,  4015,  4017,  4019,  4021,  4024,
-  4026
+   337,   339,   347,   350,   351,   355,   357,   360,   365,   369,
+   375,   379,   382,   386,   389,   391,   393,   396,   398,   401,
+   404,   406,   408,   410,   412,   413,   415,   416,   420,   423,
+   432,   435,   437,   441,   444,   446,   450,   453,   465,   472,
+   480,   482,   483,   485,   489,   492,   498,   501,   503,   508,
+   511,   515,   518,   521,   524,   528,   533,   543,   545,   547,
+   549,   551,   564,   567,   571,   574,   576,   578,   581,   584,
+   588,   590,   592,   594,   599,   601,   603,   605,   607,   608,
+   615,   616,   617,   620,   623,   627,   629,   630,   633,   635,
+   638,   641,   647,   651,   654,   656,   660,   662,   664,   668,
+   670,   672,   676,   678,   680,   686,   690,   693,   696,   699,
+   704,   707,   709,   711,   717,   729,   732,   737,   742,   745,
+   750,   755,   764,   767,   769,   773,   786,   806,   809,   811,
+   812,   815,   822,   828,   830,   832,   834,   836,   839,   844,
+   846,   847,   848,   849,   852,   854,   855,   858,   860,   861,
+   864,   869,   869,   873,   873,   876,   876,   879,   879,   883,
+   883,   888,   888,   891,   891,   894,   896,   899,   906,   910,
+   913,   916,   918,   922,   928,   937,   939,   947,   950,   953,
+   956,   960,   963,   965,   968,   971,   973,   975,   977,   981,
+   984,   987,   992,   996,  1001,  1005,  1008,  1009,  1013,  1032,
+  1039,  1042,  1044,  1045,  1046,  1049,  1053,  1054,  1058,  1062,
+  1065,  1067,  1071,  1074,  1077,  1081,  1084,  1086,  1088,  1090,
+  1093,  1097,  1099,  1102,  1104,  1110,  1113,  1116,  1119,  1131,
+  1136,  1140,  1144,  1149,  1151,  1155,  1159,  1161,  1170,  1174,
+  1177,  1180,  1185,  1188,  1190,  1198,  1211,  1216,  1222,  1224,
+  1226,  1239,  1242,  1244,  1246,  1248,  1250,  1252,  1254,  1256,
+  1258,  1260,  1262,  1264,  1266,  1268,  1270,  1272,  1274,  1276,
+  1278,  1280,  1282,  1286,  1288,  1290,  1307,  1310,  1312,  1313,
+  1314,  1315,  1316,  1319,  1331,  1334,  1338,  1341,  1343,  1348,
+  1350,  1351,  1354,  1356,  1364,  1366,  1368,  1370,  1374,  1377,
+  1381,  1385,  1386,  1387,  1391,  1399,  1400,  1401,  1415,  1417,
+  1420,  1422,  1433,  1438,  1440,  1442,  1444,  1446,  1448,  1450,
+  1453,  1455,  1472,  1473,  1477,  1481,  1485,  1489,  1491,  1495,
+  1497,  1499,  1507,  1509,  1511,  1513,  1517,  1519,  1521,  1523,
+  1528,  1530,  1532,  1534,  1537,  1539,  1541,  1585,  1588,  1592,
+  1595,  1599,  1602,  1607,  1609,  1613,  1626,  1629,  1636,  1643,
+  1648,  1650,  1655,  1657,  1664,  1666,  1670,  1674,  1680,  1684,
+  1687,  1690,  1693,  1703,  1705,  1708,  1712,  1715,  1718,  1721,
+  1724,  1730,  1736,  1738,  1743,  1745,  1754,  1757,  1759,  1762,
+  1768,  1770,  1780,  1784,  1787,  1790,  1795,  1798,  1806,  1808,
+  1810,  1812,  1815,  1818,  1833,  1852,  1855,  1857,  1860,  1862,
+  1866,  1868,  1872,  1874,  1878,  1881,  1885,  1891,  1892,  1904,
+  1911,  1914,  1920,  1924,  1929,  1935,  1936,  1944,  1947,  1951,
+  1954,  1958,  1963,  1966,  1970,  1973,  1975,  1977,  1979,  1986,
+  1988,  1989,  1990,  1994,  1997,  2001,  2004,  2010,  2012,  2015,
+  2018,  2021,  2027,  2030,  2033,  2035,  2037,  2041,  2047,  2055,
+  2062,  2066,  2068,  2073,  2076,  2079,  2081,  2083,  2087,  2092,
+  2099,  2103,  2107,  2114,  2118,  2121,  2124,  2130,  2142,  2144,
+  2147,  2167,  2169,  2172,  2174,  2179,  2181,  2183,  2185,  2187,
+  2189,  2193,  2201,  2204,  2206,  2210,  2216,  2221,  2226,  2228,
+  2232,  2235,  2239,  2245,  2248,  2270,  2276,  2278,  2281,  2284,
+  2286,  2290,  2292,  2296,  2301,  2307,  2310,  2311,  2332,  2355,
+  2357,  2361,  2372,  2386,  2391,  2398,  2400,  2401,  2402,  2405,
+  2420,  2425,  2431,  2433,  2438,  2440,  2442,  2444,  2446,  2448,
+  2451,  2461,  2468,  2493,  2499,  2502,  2505,  2507,  2518,  2523,
+  2526,  2531,  2534,  2541,  2551,  2554,  2561,  2571,  2573,  2576,
+  2578,  2581,  2588,  2596,  2603,  2609,  2615,  2623,  2627,  2632,
+  2636,  2639,  2648,  2650,  2654,  2657,  2662,  2666,  2672,  2683,
+  2686,  2690,  2694,  2702,  2707,  2713,  2716,  2718,  2720,  2726,
+  2729,  2731,  2733,  2735,  2739,  2742,  2760,  2770,  2772,  2773,
+  2777,  2782,  2785,  2787,  2789,  2791,  2795,  2801,  2803,  2811,
+  2814,  2816,  2818,  2820,  2824,  2827,  2830,  2832,  2834,  2836,
+  2840,  2843,  2846,  2848,  2850,  2852,  2854,  2861,  2865,  2870,
+  2874,  2879,  2881,  2885,  2888,  2890,  2893,  2895,  2896,  2899,
+  2901,  2903,  2909,  2924,  2930,  2936,  2950,  2952,  2956,  2970,
+  2972,  2974,  2978,  2984,  2997,  2999,  3003,  3016,  3022,  3024,
+  3025,  3026,  3034,  3039,  3048,  3049,  3053,  3056,  3062,  3068,
+  3071,  3073,  3075,  3077,  3081,  3085,  3089,  3092,  3097,  3100,
+  3102,  3104,  3106,  3108,  3110,  3112,  3114,  3118,  3122,  3126,
+  3130,  3131,  3133,  3135,  3137,  3139,  3141,  3143,  3145,  3147,
+  3155,  3157,  3158,  3159,  3162,  3168,  3170,  3175,  3177,  3180,
+  3194,  3197,  3200,  3204,  3207,  3214,  3216,  3219,  3221,  3223,
+  3226,  3229,  3232,  3235,  3237,  3240,  3244,  3246,  3252,  3254,
+  3255,  3257,  3262,  3264,  3266,  3268,  3270,  3273,  3274,  3276,
+  3279,  3280,  3283,  3283,  3286,  3286,  3289,  3289,  3291,  3293,
+  3295,  3297,  3303,  3309,  3312,  3315,  3321,  3323,  3325,  3329,
+  3331,  3332,  3333,  3335,  3338,  3345,  3350,  3356,  3360,  3362,
+  3365,  3367,  3370,  3374,  3376,  3379,  3381,  3384,  3401,  3407,
+  3415,  3417,  3419,  3423,  3426,  3427,  3435,  3439,  3443,  3446,
+  3447,  3453,  3456,  3459,  3461,  3465,  3470,  3473,  3483,  3488,
+  3489,  3496,  3499,  3502,  3504,  3507,  3509,  3519,  3533,  3537,
+  3540,  3542,  3546,  3550,  3553,  3556,  3558,  3562,  3564,  3571,
+  3578,  3581,  3584,  3588,  3592,  3598,  3602,  3607,  3609,  3612,
+  3617,  3623,  3634,  3637,  3639,  3643,  3648,  3650,  3657,  3660,
+  3662,  3664,  3670,  3675,  3678,  3680,  3682,  3684,  3686,  3688,
+  3690,  3692,  3694,  3696,  3698,  3700,  3702,  3704,  3706,  3708,
+  3710,  3712,  3714,  3716,  3718,  3720,  3722,  3724,  3726,  3728,
+  3730,  3732,  3734,  3736,  3738,  3740,  3743,  3745
 };
 #endif
 
@@ -724,188 +740,198 @@ static const short yyrline[] = { 0,
 static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER",
 "TYPENAME","SELFNAME","PFUNCNAME","SCSPEC","TYPESPEC","CV_QUALIFIER","CONSTANT",
 "STRING","ELLIPSIS","SIZEOF","ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH",
-"CASE","DEFAULT","BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","GCC_ASM_KEYWORD",
-"TYPEOF","ALIGNOF","SIGOF","ATTRIBUTE","EXTENSION","LABEL","REALPART","IMAGPART",
-"AGGR","VISSPEC","DELETE","NEW","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",
-"DEFARG","DEFARG_MARKER","TYPENAME_DEFN","IDENTIFIER_DEFN","PTYPENAME_DEFN",
-"END_OF_LINE","END_OF_SAVED_INPUT","')'","'}'","'!'","']'","program","extdefs",
-"@1","extdefs_opt",".hush_warning",".warning_ok","extension","asm_keyword","lang_extdef",
-"@2","extdef","@3","@4","using_decl","any_id","extern_lang_string","template_header",
-"@5","template_parm_list","maybe_identifier","template_type_parm","template_template_parm",
-"template_parm","template_def","datadef","ctor_initializer_opt","maybe_return_init",
-"eat_saved_input","fndef","constructor_declarator","@6","@7","@8","@9","fn.def1",
+"CASE","DEFAULT","BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF",
+"SIGOF","ATTRIBUTE","EXTENSION","LABEL","REALPART","IMAGPART","AGGR","VISSPEC",
+"DELETE","NEW","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","PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING",
+"ALL","PRE_PARSED_CLASS_DECL","DEFARG","DEFARG_MARKER","TYPENAME_DEFN","IDENTIFIER_DEFN",
+"PTYPENAME_DEFN","END_OF_LINE","END_OF_SAVED_INPUT","')'","'}'","'!'","']'",
+"program","extdefs","@1","extdefs_opt",".hush_warning",".warning_ok","extension",
+"asm_keyword","lang_extdef","@2","extdef","@3","@4","namespace_alias","@5","using_decl",
+"namespace_using_decl","using_directive","@6","namespace_qualifier","any_id",
+"extern_lang_string","template_header","@7","template_parm_list","maybe_identifier",
+"template_type_parm","template_template_parm","template_parm","template_def",
+"template_extdef","template_datadef","datadef","ctor_initializer_opt","maybe_return_init",
+"eat_saved_input","fndef","constructor_declarator","@8","@9","@10","@11","fn.def1",
 "component_constructor_declarator","fn.def2","return_id","return_init","base_init",
 ".set_base_init","member_init_list","member_init","identifier","notype_identifier",
-"identifier_defn","explicit_instantiation","@10","@11","@12","@13","@14","@15",
-"@16","@17","begin_explicit_instantiation","end_explicit_instantiation","template_type",
-"self_template_type","template_close_bracket","template_arg_list_opt","template_arg_list",
-"template_arg","unop","expr","paren_expr_or_null","paren_cond_or_null","xcond",
-"condition","@18","compstmtend","already_scoped_stmt","@19","nontrivial_exprlist",
-"nonnull_exprlist","unary_expr","new_placement","new_initializer","regcast_or_absdcl",
+"identifier_defn","explicit_instantiation","@12","@13","@14","@15","@16","@17",
+"@18","@19","begin_explicit_instantiation","end_explicit_instantiation","template_type",
+"apparent_template_type","self_template_type",".finish_template_type","template_close_bracket",
+"template_arg_list_opt","template_arg_list","template_arg","unop","expr","paren_expr_or_null",
+"paren_cond_or_null","xcond","condition","@20","compstmtend","already_scoped_stmt",
+"@21","nontrivial_exprlist","nonnull_exprlist","unary_expr",".finish_new_placement",
+".begin_new_placement","new_placement","new_initializer","regcast_or_absdcl",
 "cast_expr","expr_no_commas","notype_unqualified_id","do_id","template_id","object_template_id",
-"unqualified_id","expr_or_declarator","notype_template_declarator","direct_notype_declarator",
-"primary","@20","new","delete","boolean.literal","string","nodecls","object",
-"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",
-"initdcl","@21","initdcl0_innards","@22","initdcl0","notype_initdcl0","nomods_initdcl0",
-"@23","maybe_attribute","attributes","attribute","attribute_list","attrib","any_word",
-"identifiers_or_typenames","maybe_init","init","initlist","fn.defpen","pending_inline",
-"pending_inlines","defarg_again","pending_defargs","structsp","@24","@25","@26",
-"@27","maybecomma","maybecomma_warn","aggr","named_class_head_sans_basetype",
-"named_class_head_sans_basetype_defn","named_complex_class_head_sans_basetype",
-"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",
-"self_reference","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","cv_qualifiers","nonempty_cv_qualifiers","suspend_mom","nonmomentary_expr",
-"maybe_parmlist","after_type_declarator","nonnested_type","complete_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",
-"typename_sub","typename_sub0","typename_sub1","typename_sub2","explicit_template_type",
-"complex_type_name","ptr_to_mem","global_scope","new_declarator","direct_new_declarator",
-"absdcl","direct_abstract_declarator","stmts","errstmt","maybe_label_decls",
-"label_decls","label_decl","compstmt_or_error","compstmt","@28","simple_if",
-"@29","@30","implicitly_scoped_stmt","@31","stmt","simple_stmt","@32","@33",
-"@34","@35","@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","function_try_block",
-"@46","@47","try_block","@48","@49","handler_seq","handler","@50","@51","type_specifier_seq",
-"handler_args","label_colon","for.init.statement","maybe_cv_qualifier","xexpr",
-"asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
-"complex_parmlist","defarg","@52","defarg1","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", NULL
+"unqualified_id","expr_or_declarator_intern","expr_or_declarator","notype_template_declarator",
+"direct_notype_declarator","primary","@22","new","delete","boolean.literal",
+"string","nodecls","object","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","initdcl","@23","initdcl0_innards","@24","initdcl0",
+"notype_initdcl0","nomods_initdcl0","@25","maybe_attribute","attributes","attribute",
+"attribute_list","attrib","any_word","identifiers_or_typenames","maybe_init",
+"init","initlist","fn.defpen","pending_inline","pending_inlines","defarg_again",
+"pending_defargs","structsp","@26","@27","@28","@29","maybecomma","maybecomma_warn",
+"aggr","named_class_head_sans_basetype","named_class_head_sans_basetype_defn",
+"named_complex_class_head_sans_basetype","named_class_head","@30","@31","unnamed_class_head",
+"class_head","maybe_base_class_list","base_class_list","base_class","base_class.1",
+"base_class_access_list","left_curly","self_reference","opt.component_decl_list",
+"access_specifier","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","cv_qualifiers",
+"nonempty_cv_qualifiers","suspend_mom","nonmomentary_expr","maybe_parmlist",
+"after_type_declarator","nonnested_type","complete_type_name","nested_type",
+"direct_after_type_declarator","notype_declarator_intern","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","typename_sub","typename_sub0","typename_sub1","typename_sub2",
+"explicit_template_type","complex_type_name","ptr_to_mem","global_scope","new_declarator",
+"direct_new_declarator","absdcl","direct_abstract_declarator","stmts","errstmt",
+"maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt",
+"@32","simple_if","@33","@34","implicitly_scoped_stmt","@35","stmt","simple_stmt",
+"@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","@48",
+"@49","function_try_block","@50","@51","try_block","@52","@53","handler_seq",
+"handler","@54","@55","type_specifier_seq","handler_args","label_colon","for.init.statement",
+"maybe_cv_qualifier","xexpr","asm_operands","nonnull_asm_operands","asm_operand",
+"asm_clobbers","parmlist","complex_parmlist","defarg","@56","defarg1","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", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   114,   114,   116,   115,   115,   117,   117,   118,   119,   120,
-   121,   121,   123,   122,   124,   124,   124,   124,   124,   124,
-   124,   125,   124,   126,   124,   124,   124,   124,   124,   127,
-   127,   127,   128,   128,   128,   128,   129,   129,   131,   130,
-   130,   132,   132,   133,   133,   134,   134,   135,   136,   136,
-   136,   136,   136,   136,   137,   137,   138,   138,   138,   138,
-   138,   138,   138,   138,   138,   139,   139,   140,   140,   140,
-   141,   141,   142,   142,   142,   144,   143,   143,   145,   143,
-   143,   146,   143,   143,   147,   143,   143,   148,   148,   148,
-   148,   148,   149,   149,   149,   149,   150,   150,   150,   150,
-   150,   150,   150,   151,   152,   152,   152,   153,   154,   155,
-   155,   155,   155,   156,   156,   156,   156,   156,   156,   156,
-   156,   157,   157,   157,   157,   157,   158,   158,   158,   159,
-   159,   159,   161,   160,   162,   160,   163,   160,   164,   160,
-   165,   160,   166,   160,   167,   160,   168,   160,   169,   170,
-   171,   171,   171,   172,   173,   173,   174,   174,   175,   175,
-   176,   176,   177,   177,   177,   177,   177,   178,   178,   179,
-   179,   180,   180,   181,   181,   181,   183,   182,   182,   184,
-   184,   184,   184,   186,   185,   185,   187,   187,   187,   187,
-   188,   188,   189,   189,   189,   189,   189,   189,   189,   189,
-   189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
-   189,   189,   189,   189,   189,   189,   190,   190,   191,   191,
-   191,   191,   192,   192,   193,   193,   193,   194,   194,   194,
-   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
-   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
-   194,   194,   195,   195,   195,   195,   195,   195,   196,   197,
-   197,   198,   198,   198,   199,   199,   199,   200,   200,   200,
-   200,   201,   201,   202,   202,   202,   202,   203,   203,   203,
-   203,   203,   203,   203,   204,   203,   203,   203,   203,   203,
-   203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
-   203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
-   203,   203,   203,   203,   203,   203,   203,   205,   205,   206,
-   206,   207,   207,   208,   208,   209,   210,   210,   211,   211,
-   211,   211,   211,   211,   212,   212,   213,   213,   214,   214,
-   214,   214,   214,   215,   215,   216,   216,   216,   216,   216,
-   216,   217,   217,   217,   217,   217,   218,   218,   218,   218,
-   218,   218,   219,   219,   219,   219,   220,   220,   221,   221,
-   221,   221,   221,   221,   221,   222,   222,   222,   223,   223,
-   224,   224,   225,   225,   226,   226,   228,   227,   227,   230,
-   229,   229,   231,   232,   234,   233,   233,   235,   235,   236,
-   236,   237,   238,   238,   239,   239,   239,   239,   239,   240,
-   240,   240,   240,   241,   241,   242,   242,   243,   243,   243,
-   243,   243,   244,   244,   244,   244,   244,   245,   246,   246,
-   246,   247,   247,   248,   248,   249,   249,   249,   251,   250,
-   250,   252,   250,   250,   250,   250,   250,   253,   254,   250,
-   250,   255,   255,   256,   256,   257,   257,   257,   257,   257,
-   258,   259,   260,   260,   260,   260,   260,   261,   262,   262,
-   262,   263,   264,   264,   265,   265,   265,   266,   266,   267,
-   267,   268,   268,   268,   268,   269,   269,   269,   269,   270,
-   271,   272,   272,   272,   272,   273,   273,   274,   274,   274,
-   274,   274,   274,   274,   274,   274,   274,   275,   275,   275,
-   275,   275,   275,   275,   275,   275,   276,   276,   276,   277,
-   277,   277,   278,   278,   279,   279,   280,   280,   281,   281,
-   281,   281,   282,   282,   283,   283,   283,   284,   284,   285,
-   285,   286,   286,   286,   287,   287,   288,   288,   289,   290,
-   291,   291,   291,   291,   292,   292,   292,   292,   292,   292,
-   293,   293,   294,   294,   294,   295,   296,   296,   296,   296,
-   296,   296,   297,   297,   297,   297,   297,   297,   298,   298,
-   298,   298,   298,   298,   299,   299,   299,   299,   299,   299,
-   300,   300,   301,   301,   302,   302,   303,   303,   303,   304,
-   304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
-   307,   308,   308,   308,   308,   309,   309,   309,   309,   310,
-   310,   310,   310,   310,   310,   311,   312,   312,   312,   313,
-   313,   314,   315,   315,   315,   315,   315,   315,   315,   316,
-   316,   317,   317,   317,   317,   317,   317,   317,   317,   317,
-   317,   317,   318,   318,   318,   318,   318,   318,   318,   318,
-   318,   318,   318,   319,   319,   319,   319,   320,   321,   321,
-   322,   322,   323,   324,   324,   326,   325,   328,   329,   327,
-   330,   331,   330,   332,   332,   333,   333,   334,   333,   333,
-   335,   336,   333,   337,   338,   333,   339,   340,   341,   342,
-   333,   343,   344,   333,   345,   333,   346,   333,   347,   333,
-   333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-   333,   333,   333,   333,   349,   350,   348,   352,   353,   351,
-   354,   354,   356,   357,   355,   358,   358,   359,   359,   360,
-   360,   360,   360,   361,   361,   361,   362,   362,   363,   363,
-   363,   364,   364,   365,   365,   366,   367,   367,   368,   368,
-   368,   369,   369,   369,   369,   369,   369,   369,   369,   369,
-   369,   371,   370,   372,   372,   373,   373,   373,   373,   373,
-   374,   374,   375,   375,   375,   375,   375,   375,   376,   376,
-   377,   377,   378,   379,   379,   380,   380,   380,   381,   382,
-   382,   383,   383,   383,   383,   384,   385,   385,   385,   385,
-   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
-   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
-   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
-   385
+   112,   112,   114,   113,   113,   115,   115,   116,   117,   118,
+   119,   121,   120,   122,   122,   122,   122,   122,   122,   122,
+   123,   122,   124,   122,   122,   122,   122,   122,   126,   125,
+   127,   127,   127,   128,   128,   128,   130,   129,   131,   131,
+   132,   132,   132,   132,   133,   133,   135,   134,   134,   136,
+   136,   137,   137,   138,   138,   139,   140,   140,   140,   140,
+   140,   140,   141,   141,   142,   142,   142,   142,   142,   142,
+   143,   143,   143,   143,   144,   144,   144,   144,   144,   144,
+   144,   144,   144,   145,   145,   146,   146,   146,   147,   147,
+   148,   148,   148,   150,   149,   149,   151,   149,   149,   152,
+   149,   149,   153,   149,   149,   154,   154,   154,   154,   154,
+   155,   155,   155,   155,   156,   156,   156,   156,   156,   156,
+   156,   157,   158,   158,   158,   159,   160,   161,   161,   161,
+   161,   162,   162,   162,   162,   162,   162,   162,   162,   163,
+   163,   163,   163,   163,   164,   164,   164,   165,   165,   165,
+   167,   166,   168,   166,   169,   166,   170,   166,   171,   166,
+   172,   166,   173,   166,   174,   166,   175,   176,   177,   177,
+   177,   178,   178,   179,   180,   181,   181,   182,   182,   183,
+   183,   184,   184,   184,   185,   185,   185,   185,   185,   186,
+   186,   187,   187,   188,   188,   189,   189,   189,   191,   190,
+   190,   192,   192,   192,   192,   194,   193,   193,   195,   195,
+   195,   195,   196,   196,   197,   197,   197,   197,   197,   197,
+   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
+   197,   197,   197,   197,   197,   197,   197,   197,   198,   199,
+   200,   200,   201,   201,   201,   201,   202,   202,   203,   203,
+   203,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+   204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+   204,   204,   204,   204,   204,   204,   205,   205,   205,   205,
+   205,   205,   205,   206,   207,   207,   208,   208,   208,   209,
+   209,   209,   210,   210,   211,   211,   211,   211,   212,   212,
+   213,   213,   213,   213,   214,   214,   214,   214,   214,   214,
+   214,   215,   214,   214,   214,   214,   214,   214,   214,   214,
+   214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+   214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+   214,   214,   214,   214,   214,   214,   214,   216,   216,   217,
+   217,   218,   218,   219,   219,   220,   221,   221,   222,   222,
+   222,   222,   222,   222,   223,   223,   224,   224,   225,   225,
+   225,   225,   225,   226,   226,   227,   227,   227,   227,   227,
+   227,   228,   228,   228,   228,   228,   229,   229,   229,   229,
+   229,   229,   230,   230,   230,   230,   231,   231,   232,   232,
+   232,   232,   232,   232,   232,   233,   233,   233,   234,   234,
+   235,   235,   236,   236,   237,   237,   239,   238,   238,   241,
+   240,   240,   242,   243,   245,   244,   244,   246,   246,   247,
+   247,   248,   249,   249,   250,   250,   250,   250,   250,   251,
+   251,   251,   251,   252,   252,   253,   253,   254,   254,   254,
+   254,   254,   255,   255,   255,   255,   255,   256,   257,   257,
+   257,   258,   258,   259,   259,   260,   260,   260,   262,   261,
+   261,   263,   261,   261,   261,   261,   261,   264,   265,   261,
+   261,   266,   266,   267,   267,   268,   268,   268,   268,   268,
+   268,   269,   270,   270,   270,   271,   271,   271,   271,   271,
+   272,   273,   272,   274,   272,   275,   276,   276,   277,   277,
+   277,   278,   278,   279,   279,   280,   280,   280,   280,   281,
+   281,   281,   281,   282,   283,   284,   284,   284,   284,   285,
+   286,   286,   287,   287,   287,   287,   287,   287,   287,   287,
+   287,   287,   288,   288,   288,   288,   288,   288,   288,   288,
+   288,   289,   289,   289,   290,   290,   290,   291,   291,   292,
+   292,   293,   293,   294,   294,   294,   294,   295,   295,   296,
+   296,   296,   297,   297,   298,   298,   299,   299,   299,   300,
+   300,   301,   301,   302,   303,   304,   304,   304,   304,   305,
+   305,   305,   305,   305,   305,   306,   306,   307,   307,   307,
+   308,   309,   309,   309,   309,   309,   309,   310,   310,   311,
+   311,   311,   311,   311,   311,   312,   312,   312,   312,   312,
+   312,   313,   313,   313,   313,   313,   313,   314,   314,   315,
+   315,   316,   316,   317,   317,   317,   318,   318,   318,   319,
+   319,   319,   320,   320,   320,   320,   321,   321,   322,   322,
+   322,   322,   323,   323,   323,   323,   324,   324,   324,   324,
+   324,   324,   325,   326,   326,   326,   327,   327,   328,   329,
+   329,   329,   329,   329,   329,   329,   330,   330,   331,   331,
+   331,   331,   331,   331,   331,   331,   331,   331,   331,   332,
+   332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+   333,   333,   333,   333,   334,   335,   335,   336,   336,   337,
+   338,   338,   340,   339,   342,   343,   341,   344,   345,   344,
+   346,   346,   347,   347,   348,   347,   347,   349,   350,   347,
+   351,   352,   347,   353,   354,   355,   356,   347,   357,   358,
+   347,   359,   347,   360,   347,   361,   347,   347,   347,   347,
+   347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
+   347,   347,   347,   347,   363,   364,   362,   366,   367,   365,
+   368,   368,   370,   371,   369,   372,   372,   373,   373,   374,
+   374,   374,   374,   375,   375,   375,   376,   376,   377,   377,
+   377,   378,   378,   379,   379,   380,   381,   381,   382,   382,
+   382,   383,   383,   383,   383,   383,   383,   383,   385,   384,
+   386,   386,   387,   387,   387,   387,   387,   388,   388,   389,
+   389,   389,   389,   389,   389,   390,   390,   391,   391,   392,
+   393,   393,   394,   394,   394,   395,   396,   396,   397,   397,
+   397,   397,   398,   399,   399,   399,   399,   399,   399,   399,
+   399,   399,   399,   399,   399,   399,   399,   399,   399,   399,
+   399,   399,   399,   399,   399,   399,   399,   399,   399,   399,
+   399,   399,   399,   399,   399,   399,   399,   399
 };
 
 static const short yyr2[] = {     0,
      0,     1,     0,     2,     2,     1,     0,     0,     0,     1,
-     1,     1,     0,     2,     2,     1,     1,     5,     4,     5,
-     4,     0,     6,     0,     5,     5,     2,     4,     2,     2,
-     3,     3,     1,     1,     2,     2,     1,     2,     0,     5,
-     3,     1,     3,     1,     0,     2,     2,     3,     1,     3,
-     1,     3,     1,     3,     2,     2,     2,     3,     3,     2,
-     2,     2,     2,     2,     1,     1,     1,     0,     1,     2,
-     0,     1,     4,     3,     3,     0,     8,     5,     0,     9,
-     6,     0,     8,     5,     0,     9,     6,     2,     2,     1,
-     2,     1,     6,     4,     6,     4,     2,     1,     2,     2,
-     1,     2,     1,     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,     1,     0,     6,     0,     6,     0,     5,     0,     5,
-     0,     7,     0,     7,     0,     6,     0,     6,     0,     0,
-     4,     4,     1,     4,     1,     1,     0,     1,     1,     3,
+     1,     0,     2,     2,     1,     1,     5,     4,     5,     4,
+     0,     6,     0,     5,     1,     2,     1,     2,     0,     6,
+     2,     3,     3,     3,     3,     4,     0,     5,     2,     3,
+     1,     1,     2,     2,     1,     2,     0,     5,     3,     1,
+     3,     1,     0,     2,     2,     3,     1,     3,     1,     3,
+     1,     3,     2,     2,     2,     1,     1,     5,     4,     2,
+     2,     3,     3,     2,     2,     3,     3,     2,     2,     2,
+     2,     2,     1,     1,     1,     0,     1,     2,     0,     1,
+     4,     3,     3,     0,     8,     5,     0,     9,     6,     0,
+     8,     5,     0,     9,     6,     2,     2,     1,     2,     1,
+     6,     4,     6,     4,     2,     1,     2,     2,     1,     2,
+     1,     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,     1,
-     3,     1,     3,     0,     1,     1,     0,     7,     1,     1,
-     3,     4,     3,     0,     3,     1,     3,     3,     3,     3,
-     1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-     4,     2,     4,     2,     3,     3,     4,     4,     5,     5,
-     6,     2,     4,     5,     2,     2,     3,     3,     3,     1,
-     3,     2,     3,     4,     1,     2,     5,     1,     3,     3,
+     0,     6,     0,     6,     0,     5,     0,     5,     0,     7,
+     0,     7,     0,     6,     0,     6,     0,     0,     5,     5,
+     1,     1,     5,     5,     0,     1,     1,     0,     1,     1,
+     3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     3,     1,     3,     0,     1,     1,     0,     7,
+     1,     1,     3,     4,     3,     0,     3,     1,     3,     3,
+     3,     3,     1,     1,     1,     2,     2,     2,     2,     2,
+     2,     2,     4,     2,     4,     2,     3,     3,     4,     5,
+     6,     6,     7,     2,     4,     5,     2,     2,     1,     0,
+     4,     4,     3,     1,     3,     2,     3,     4,     1,     2,
+     5,     1,     3,     3,     3,     3,     3,     3,     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,     0,     5,
-     5,     5,     5,     5,     1,     1,     1,     1,     2,     2,
-     3,     4,     4,     1,     1,     1,     3,     1,     1,     1,
-     1,     3,     3,     3,     0,     4,     4,     2,     4,     2,
-     2,     1,     4,     1,     7,     7,     7,     7,     4,     4,
+     3,     5,     3,     3,     1,     2,     3,     3,     1,     1,
+     1,     1,     1,     0,     5,     5,     5,     5,     5,     1,
+     1,     1,     1,     2,     1,     2,     2,     3,     4,     4,
+     1,     1,     1,     3,     1,     1,     1,     1,     3,     3,
+     3,     0,     4,     4,     2,     4,     2,     4,     2,     2,
+     1,     4,     1,     7,     7,     7,     7,     4,     4,     2,
      2,     2,     1,     4,     2,     2,     5,     3,     2,     2,
      5,     3,     5,     3,     4,     6,     2,     1,     2,     1,
      2,     1,     1,     1,     2,     0,     2,     2,     3,     3,
@@ -922,2582 +948,2742 @@ static const short yyr2[] = {     0,
      3,     0,     3,     3,     3,     0,     2,     2,     0,     7,
      4,     0,     6,     3,     2,     2,     2,     0,     0,     9,
      1,     0,     1,     0,     1,     1,     2,     2,     2,     2,
-     2,     2,     3,     4,     3,     2,     3,     0,     1,     3,
-     2,     2,     1,     1,     0,     2,     3,     1,     4,     1,
-     3,     1,     1,     4,     4,     2,     2,     3,     3,     1,
-     0,     1,     2,     4,     3,     1,     2,     2,     2,     2,
-     2,     2,     2,     1,     2,     2,     3,     2,     2,     4,
-     4,     2,     1,     5,     4,     1,     0,     1,     3,     0,
-     1,     3,     1,     1,     1,     1,     4,     4,     4,     4,
-     4,     3,     4,     4,     4,     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,     2,     1,     1,     2,     2,     4,     4,     3,     3,
-     2,     1,     3,     3,     2,     2,     3,     1,     3,     3,
-     2,     2,     3,     1,     4,     3,     4,     3,     1,     2,
-     2,     2,     2,     2,     1,     2,     4,     4,     2,     1,
-     1,     1,     1,     2,     4,     2,     2,     2,     2,     1,
-     2,     2,     2,     2,     3,     1,     2,     3,     4,     2,
-     2,     2,     2,     2,     2,     4,     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,     6,     4,     4,     3,     5,     3,
-     3,     3,     2,     1,     1,     2,     2,     2,     0,     1,
-     1,     2,     3,     1,     2,     0,     3,     0,     0,     5,
-     1,     0,     2,     1,     1,     1,     2,     0,     4,     1,
-     0,     0,     5,     0,     0,     7,     0,     0,     0,     0,
-    12,     0,     0,     7,     0,     5,     0,     7,     0,     4,
-     2,     2,     2,     3,     6,     8,    10,    12,     4,     3,
-     2,     2,     1,     1,     0,     0,     6,     0,     0,     5,
+     2,     2,     2,     2,     2,     3,     4,     3,     2,     3,
+     1,     0,     3,     0,     3,     2,     1,     1,     0,     2,
+     3,     1,     4,     1,     3,     1,     1,     4,     4,     2,
+     2,     3,     3,     1,     0,     1,     2,     3,     2,     2,
+     1,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+     2,     3,     2,     2,     4,     4,     2,     1,     5,     4,
+     1,     0,     1,     3,     0,     1,     3,     1,     1,     1,
+     1,     4,     4,     4,     4,     4,     3,     4,     4,     4,
+     4,     3,     1,     3,     1,     3,     2,     1,     7,     0,
+     2,     1,     2,     0,     2,     4,     4,     2,     4,     3,
+     3,     2,     2,     3,     1,     1,     2,     1,     1,     2,
+     2,     4,     4,     3,     3,     2,     1,     1,     2,     3,
+     3,     2,     2,     3,     1,     3,     3,     2,     2,     3,
+     1,     4,     3,     4,     3,     1,     2,     2,     2,     2,
+     2,     1,     2,     4,     4,     2,     1,     1,     1,     1,
+     2,     4,     2,     2,     2,     2,     1,     2,     2,     2,
+     2,     3,     1,     2,     3,     4,     2,     2,     2,     2,
+     2,     2,     4,     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,     6,     4,     4,     3,     5,     3,     3,     3,     2,
+     1,     1,     2,     2,     2,     0,     1,     1,     2,     3,
+     1,     2,     0,     3,     0,     0,     5,     1,     0,     2,
+     1,     1,     1,     2,     0,     4,     1,     0,     0,     5,
+     0,     0,     7,     0,     0,     0,     0,    12,     0,     0,
+     7,     0,     5,     0,     7,     0,     4,     2,     2,     2,
+     3,     6,     8,    10,    12,     4,     3,     2,     2,     1,
+     1,     1,     1,     1,     0,     0,     6,     0,     0,     5,
      1,     2,     0,     0,     5,     1,     1,     3,     3,     2,
      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,     0,     3,     1,     1,     1,     2,     2,     2,     4,
-     2,     2,     2,     2,     2,     2,     1,     2,     1,     2,
-     1,     1,     0,     0,     1,     0,     4,     2,     1,     1,
-     3,     0,     3,     3,     3,     1,     2,     2,     2,     2,
+     1,     1,     2,     2,     2,     1,     2,     2,     0,     3,
+     1,     1,     1,     2,     2,     2,     4,     2,     2,     2,
+     2,     2,     2,     1,     2,     1,     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,     2,     2,     2,     3,
-     2,     2,     2,     2,     3,     2,     2,     4,     4,     3,
-     2
+     2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+     2,     3,     2,     2,     4,     4,     3,     2
 };
 
 static const short yydefact[] = {     3,
-    13,    13,     5,     0,     4,     0,   256,   600,   601,     0,
-   358,   370,   547,     0,    11,    12,     0,     0,     0,    10,
-   456,   806,     0,     0,     0,   149,   632,   257,   258,    65,
-     0,     0,   793,     0,    37,     0,     0,    14,     0,     8,
-     0,    17,    16,    71,    92,    68,     0,   602,   153,   275,
-   254,   276,   578,     0,   345,     0,   344,   363,     0,   383,
-   362,   400,   369,     0,   469,   468,   475,   474,   473,   451,
-   357,   563,   371,   564,    90,   274,   589,   561,     0,   603,
-   545,     0,     0,   255,    63,    64,   157,   606,   157,   607,
-   157,   259,   149,   122,   123,   124,   125,   126,   442,   445,
-     0,   628,     0,   446,     0,     0,     0,     0,   123,   124,
-   125,   126,    24,     0,     0,     0,     0,     0,     0,     0,
-   447,   610,     0,   616,     0,     0,     0,     0,     0,     0,
-    30,     0,     0,    39,     0,   157,   608,     0,     0,   576,
-     0,     0,     0,   575,     0,     0,     0,     0,   275,     0,
-   549,     0,   274,   545,    29,     0,    27,     3,    38,     0,
-    56,    55,    72,    15,     0,   398,     0,     0,   416,    69,
-    61,   609,   549,     0,   545,    62,     0,     0,     0,    88,
-     0,   379,   335,   560,   336,   572,     0,   545,   360,   359,
-    60,    91,   346,     0,   381,   361,    89,   352,   376,   377,
-   347,   365,   367,   356,   378,     0,    57,   401,   457,   458,
-   459,   460,   472,   131,   130,   132,   461,   462,   466,     0,
-     0,   475,   793,   471,   490,   491,   548,   364,     0,   395,
-   601,     0,   630,   153,   593,   594,   590,   566,   604,     0,
-   565,   562,     0,   841,   837,   836,   834,   816,   821,   822,
-     0,   828,   827,   813,   814,   812,   831,   820,   817,   818,
-   819,   823,   824,   810,   811,   807,   808,   809,   833,   825,
-   826,   815,   832,     0,   829,   736,   363,   737,   802,   259,
-   256,   547,   279,   324,     0,     0,     0,     0,   320,   318,
-   292,   322,   323,     0,     0,     0,     0,     0,   258,   251,
-     0,     0,   164,   163,     0,   165,   166,     0,     0,   167,
-     0,     0,   158,   159,     0,   225,     0,   228,   162,   278,
-   193,     0,     0,   280,   281,     0,   161,   342,   363,   343,
-   595,   303,   294,     0,     0,     0,     0,   157,     0,   444,
-     0,   439,     0,   629,   627,     0,   168,   169,     0,     0,
-     0,   405,     3,    22,     0,   624,   620,   621,   623,   625,
-   622,   122,   123,   124,     0,   125,   126,   612,   613,   617,
-   614,   611,   266,   267,     0,   265,    33,    34,     0,   592,
-   591,    32,    31,    41,     0,   358,   139,     0,     0,   363,
-   137,     0,     0,   574,     0,   573,   253,   270,     0,   582,
-   269,     0,   581,     0,   277,   586,     0,     0,    13,     0,
-   149,     9,     9,     0,   397,   399,   104,    75,   109,   725,
-     0,    67,    66,    74,   107,     0,     0,   105,    70,   588,
-     0,     0,   553,     0,   796,     0,   558,     0,   557,     0,
-     0,     0,     0,   545,   398,     0,    59,   549,   545,   571,
-     0,   349,   350,     0,    58,   398,   354,   353,   355,   348,
-   368,   385,   384,   463,   467,   465,     0,   470,   476,     0,
-     0,   366,   398,   545,    76,     0,     0,     0,     0,   545,
-    82,   546,   577,   601,   631,   153,     0,     0,   830,   835,
-   365,   545,   545,     0,   545,   840,   157,     0,     0,     0,
-   200,     0,     0,   202,   215,   216,     0,     0,     0,     0,
-     0,   252,   199,   196,   195,   197,     0,     0,     0,     0,
-     0,   278,     0,     0,     0,   194,   155,   156,   272,     0,
-   198,     0,     0,   226,     0,     0,     0,     0,     0,     0,
+    12,    12,     5,     0,     4,     0,   281,   637,   638,     0,
+   388,   400,   582,     0,    11,     0,     0,     0,    10,   486,
+   843,     0,     0,     0,   167,   669,   282,   283,    83,     0,
+     0,   830,     0,    45,     0,     0,    13,    25,     0,    27,
+     8,     0,    16,    15,    89,   110,    86,     0,   639,   171,
+   302,   279,   303,   615,     0,   375,     0,   374,   393,     0,
+   413,   392,   430,   399,     0,   501,   502,   504,   508,   507,
+   481,   387,   598,   401,   599,   108,   301,   626,   596,     0,
+   640,   580,     0,     0,   280,    81,    82,   178,   643,   178,
+   644,   178,   284,   167,   140,   141,   142,   143,   144,   472,
+   475,     0,   665,     0,   476,     0,     0,     0,     0,   141,
+   142,   143,   144,    23,     0,     0,     0,     0,     0,     0,
+     0,   477,   647,     0,   653,     0,     0,     0,    37,     0,
+     0,    31,     0,     0,    47,     0,   178,   645,     0,     0,
+     0,   613,   608,     0,     0,     0,   612,     0,     0,     0,
+     0,   302,     0,   293,   584,     0,     0,   301,   580,    28,
+     0,    26,     3,    46,     0,    64,   388,     0,     0,     8,
+    67,    63,    66,    89,     0,     0,     0,   399,    90,    14,
+     0,   428,     0,     0,   446,    87,    79,   646,   584,     0,
+   580,    80,     0,     0,     0,   106,     0,   409,   365,   595,
+   366,   607,     0,   580,   390,   389,    78,   109,   376,     0,
+   411,   391,   107,   382,   406,   407,   377,   395,   397,   386,
+   408,     0,    75,   431,   487,   488,   489,   490,   506,   149,
+   148,   150,   492,   493,   172,   499,   491,     0,     0,   494,
+   495,   509,   509,   524,   525,   583,   394,     0,   425,   638,
+     0,   667,   171,   630,   631,   627,   601,   641,     0,   600,
+   597,     0,   878,   874,   873,   871,   853,   858,   859,     0,
+   865,   864,   850,   851,   849,   868,   857,   854,   855,   856,
+   860,   861,   847,   848,   844,   845,   846,   870,   862,   863,
+   852,   869,     0,   866,   776,   393,   777,   839,   284,   281,
+   582,   306,   354,     0,     0,     0,     0,   350,   348,   321,
+   352,   353,     0,     0,     0,     0,     0,   282,   283,   275,
+     0,     0,   186,   185,     0,   187,   188,     0,     0,   189,
+     0,     0,   179,   180,     0,   249,     0,   252,   184,   305,
+   215,     0,     0,   307,   308,     0,   182,   372,   393,   373,
+   632,   333,   323,     0,     0,     0,     0,   178,     0,   474,
+     0,   469,     0,   666,   664,     0,   190,   191,     0,     0,
+     0,   435,     3,    21,    29,   661,   657,   658,   660,   662,
+   659,   140,   141,   142,     0,   143,   144,   649,   650,   654,
+   651,   648,     0,   291,   292,   290,   629,   628,    33,    32,
+    49,     0,   157,     0,     0,   393,   155,     0,     0,   609,
+   611,     0,   610,   141,   142,   277,   278,   297,     0,   619,
+   296,     0,   618,     0,   304,   282,   283,     0,     0,     0,
+   295,   294,   623,     0,     0,    12,     0,   167,     9,     9,
+    70,     0,    65,     0,     0,    71,    74,     0,   427,   429,
+   122,    93,   127,   765,     0,    85,    84,    92,   125,     0,
+     0,   123,    88,   625,     0,     0,   588,     0,   833,     0,
+   593,     0,   592,     0,     0,     0,     0,   580,   428,     0,
+    77,   584,   580,   606,     0,   379,   380,     0,    76,   428,
+   384,   383,   385,   378,   398,   415,   414,   178,   496,   500,
+   498,     0,   830,   503,   505,     0,     0,   396,   428,   580,
+    94,     0,     0,     0,     0,   580,   100,   581,   614,   638,
+   668,   171,     0,     0,   867,   872,   395,   580,   580,     0,
+   580,   877,   178,     0,     0,     0,   222,     0,     0,   224,
+   237,   238,     0,     0,     0,     0,     0,   276,   221,   218,
+   217,   219,     0,     0,     0,     0,     0,   305,     0,     0,
+     0,   216,   176,   177,   299,     0,   220,     0,     0,   250,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   288,   290,   291,   328,
-   327,     0,     0,     0,     0,     0,   204,   543,     0,   212,
-   325,   317,     0,     0,   793,   306,   309,   310,     0,     0,
-   337,   649,   645,   654,     0,   549,   545,   545,   545,   339,
-   652,     0,   599,   341,     0,     0,   340,   305,     0,   301,
-   319,   321,   596,     0,   302,   152,   154,     0,   147,     0,
-   363,   145,   540,   454,   538,   441,     0,     0,   372,     0,
-     0,   373,   374,   375,   411,   412,   413,   410,     0,   403,
-   406,     0,     3,     0,   615,   157,   618,    28,    36,    35,
-    45,     0,     0,     0,    49,    53,    42,   792,   787,     0,
-   342,   363,    45,   343,   791,    51,   150,   135,   133,   150,
-   151,   273,   580,   579,   277,   583,     0,    19,    21,    71,
-     0,   110,   326,     0,   676,    73,   674,   422,     0,   418,
-   417,   192,     0,   191,   550,   587,     0,   766,   767,     0,
-   761,   363,     0,   760,   762,   794,   776,     0,     0,   585,
-   556,   555,     0,     0,   570,     0,   393,   392,   380,   569,
-     0,   796,   559,   351,   382,   394,   398,   464,   600,   601,
-   793,     0,   793,   602,   477,   478,   480,   793,   483,   482,
-     0,   513,   601,     0,   504,     0,     0,   516,     0,   103,
-    98,     0,   153,   517,   520,     0,   496,     0,   101,     0,
-   398,   396,   796,   759,   157,   157,   605,   157,   796,   759,
-   545,    79,   545,    85,   839,   838,   802,   802,   802,     0,
-     0,     0,     0,   599,     0,     0,     0,     0,   363,     0,
-     0,     0,   284,     0,   282,   283,     0,   223,   160,   256,
-   600,   601,   257,   258,     0,     0,   423,   452,     0,   250,
-   249,   751,   750,     0,   247,   246,   244,   245,   243,   242,
-   241,   238,   239,   240,   236,   237,   231,   232,   233,   234,
-   235,   229,   230,     0,     0,     0,     0,     0,     0,   206,
-   220,     0,     0,   205,   545,   545,     0,   545,   542,   639,
-     0,     0,     0,     0,     0,   308,     0,   312,     0,   314,
-     0,   648,   647,   644,   643,   792,     0,     0,   663,     0,
-     0,   796,   338,   796,   650,   545,   759,   549,   649,   645,
-     0,     0,   545,     0,     0,     0,     0,     0,   260,   150,
-   143,   141,   150,     0,   455,     0,   454,   190,   189,   188,
-   187,   405,     0,     0,    25,     0,    26,   619,     0,    47,
-    44,    45,     0,    40,     0,     0,   649,   645,     0,   783,
-   545,   786,   788,     0,   784,   785,    46,   461,     0,   140,
-   150,   150,   138,    18,    20,   386,   127,   115,   128,   129,
-     0,   108,   111,     0,     0,     0,     0,   675,   669,   419,
-     0,   106,   554,   551,   765,   782,   771,   769,     0,   552,
-   764,   781,   770,   768,   763,   795,   778,   789,   779,   772,
-   777,   798,     0,   390,   568,   567,   389,   487,     0,   486,
-   793,   793,   793,     0,   545,   759,   512,   505,   517,   506,
-   398,   398,   502,   503,   500,   501,   545,   759,   256,   600,
-     0,   385,    99,   508,   518,   523,   524,   385,   385,     0,
-     0,   385,    97,   509,   521,   385,   497,   498,   499,   398,
-     0,   448,    78,     0,     0,     0,     0,    84,     0,   796,
-   759,   796,   759,   804,   803,   805,   261,   293,   201,   203,
-   299,   300,     0,     0,     0,     0,   283,   286,     0,     0,
-     0,     0,   224,     0,   287,   289,   218,   217,   208,     0,
-   207,   222,     0,     0,   636,   634,     0,   637,   549,   213,
-     0,     0,   157,   315,     0,     0,     0,   646,   642,   653,
-   545,   662,   660,   661,   651,   796,     0,   658,     0,   597,
-   598,     0,   304,   148,   150,   150,   146,   541,   539,   443,
-     0,   404,   402,   256,     0,    23,   626,    48,    43,    50,
-    54,   648,   644,   649,   645,     0,   561,     0,   545,   650,
-    52,   136,   134,     0,   113,     0,   117,     0,   119,     0,
-   121,     0,   726,     0,   180,   677,     0,   670,   671,     0,
-   420,   649,   645,     0,   278,     0,   595,   790,     0,     0,
-   799,   800,     0,     0,   387,     0,     0,     0,   489,   488,
-   481,   796,     0,   507,   416,   416,   796,     0,     0,     0,
-   398,   398,     0,   398,   398,     0,   398,     0,   416,     0,
-   436,   545,   263,   262,   264,   545,    81,     0,    87,     0,
-     0,     0,     0,     0,     0,   426,     0,   424,   227,   248,
-     0,   209,   210,   219,   221,   635,   633,   640,   638,     0,
-   214,     0,     0,   307,   311,   313,   796,   656,   545,   657,
-   144,   142,   440,     0,   407,   409,   648,   644,   566,   650,
-   114,   112,     0,     0,     0,     0,   414,     0,     0,   256,
-   600,   601,   678,   691,   694,   697,   702,     0,     0,     0,
-     0,     0,     0,   257,   723,   728,     0,   747,     0,   686,
-     0,     0,   363,     0,   665,   684,   690,   664,   685,   724,
-     0,   672,   421,     0,   598,   780,   774,   775,   773,     0,
-   797,   391,     0,   484,   485,   479,    94,   545,   511,   515,
-    96,   545,   398,   398,   532,   416,   256,   600,     0,   519,
-   525,   526,   385,   385,   416,   416,     0,   416,   522,   510,
-     0,   796,   796,   545,   545,     0,     0,     0,     0,   425,
-     0,     0,   211,   641,   316,   262,   659,   796,     0,   116,
-   118,   120,   733,   727,   731,     0,   673,   668,   183,   740,
-   742,   743,     0,     0,   682,     0,     0,     0,   709,   711,
-   712,   713,     0,     0,     0,   741,     0,   334,   748,     0,
-   687,   332,   385,     0,   333,     0,   385,     0,     0,     0,
-   181,   667,   666,   688,   722,   721,   283,   801,   388,   796,
-   796,   531,   528,   530,     0,     0,   398,   398,   398,   527,
-   529,   514,   438,     0,   437,   432,    77,    83,   796,   796,
-   295,   296,   297,   298,   427,   544,   655,   408,     0,   732,
-   415,   172,     0,   679,   692,   681,     0,     0,     0,     0,
-     0,   705,     0,   714,     0,   720,   729,     0,   330,   331,
-     0,     0,     0,   329,   182,   682,    93,    95,   398,   398,
-   537,   416,   416,     0,     0,   450,    80,    86,     0,   734,
-   179,     0,   363,     0,   682,     0,   695,   683,   669,   745,
-   698,     0,     0,     0,     0,   710,   719,     0,     0,   689,
-   536,   534,   533,   535,   435,   434,   428,    68,    71,     0,
-     0,     0,   173,   385,   680,   184,   693,   186,     0,   746,
-     0,   744,   703,   707,   706,   730,   752,     0,     0,   433,
-   738,   739,   735,   398,   669,   170,     0,     0,   176,     0,
-   175,   682,     0,     0,     0,   753,   754,   715,   431,     0,
-   430,     0,   185,     0,   696,   699,   704,   708,     0,   752,
-     0,     0,   429,   177,   171,     0,     0,     0,   716,   755,
-     0,     0,   756,     0,     0,   178,   700,   757,     0,   717,
-     0,     0,     0,   701,   758,   718,     0,     0,     0
+     0,     0,   315,     0,   317,   319,   320,   358,   357,     0,
+     0,   240,   240,     0,   226,   578,     0,   234,   355,   347,
+     0,     0,   830,   336,   339,   340,     0,     0,   367,   686,
+   682,   691,     0,   584,   580,   580,   580,   369,   689,     0,
+   636,   371,     0,     0,   370,   335,     0,   330,   349,   331,
+   351,   633,     0,   332,   175,   175,     0,   165,     0,   393,
+   163,   575,   484,   573,   471,     0,     0,   402,     0,     0,
+   403,   404,   405,   441,   442,   443,   440,     0,   433,   436,
+     0,     3,     0,   652,   178,   655,     0,    41,    42,     0,
+    53,     0,     0,    57,    61,    50,   829,   824,     0,   372,
+   393,    53,   373,   828,    59,   168,   153,   151,   168,   175,
+   300,   617,   616,   304,     0,   620,     0,    18,    20,    89,
+     9,     9,    73,    72,     0,   128,   356,     0,   713,    91,
+   711,   452,     0,   448,   447,   214,     0,   213,   585,   624,
+     0,   806,     0,   801,   393,     0,   800,   802,   831,   813,
+     0,     0,   622,   591,   590,     0,     0,   605,     0,   423,
+   422,   410,   604,     0,   833,   594,   381,   412,   424,   428,
+     0,   497,   510,   548,   638,     0,   539,     0,     0,   551,
+     0,   121,   116,     0,   171,   552,   555,     0,   531,     0,
+   119,     0,   428,     0,   426,   833,   799,   178,   178,   642,
+   178,   833,   799,   580,    97,   580,   103,   876,   875,   839,
+   839,   839,     0,     0,     0,     0,   636,     0,     0,     0,
+     0,   393,     0,     0,     0,   311,     0,   309,   310,     0,
+   247,   181,   281,   637,   638,   282,   283,     0,     0,   453,
+   482,     0,   274,   273,   791,   790,     0,   271,   270,   268,
+   269,   267,   266,   265,   262,   263,   264,   260,   261,   255,
+   256,   257,   258,   259,   253,   254,     0,     0,     0,     0,
+     0,   240,   228,   244,     0,     0,   227,   580,   580,     0,
+   580,   577,   676,     0,     0,     0,     0,     0,   338,     0,
+   342,     0,   344,     0,   685,   684,   681,   680,   829,     0,
+     0,   700,     0,     0,   833,   368,   833,   687,   580,   799,
+   584,   686,   682,     0,     0,   580,     0,   392,     0,     0,
+     0,     0,   170,   174,   285,   168,   161,   159,   168,     0,
+   485,     0,   484,   212,   211,   210,   209,   435,     0,     0,
+    24,     0,     0,   656,     0,    38,    44,    43,    55,    52,
+    53,     0,    48,     0,     0,   686,   682,     0,   820,   580,
+   823,   825,     0,   821,   822,    54,   492,     0,   158,   168,
+   168,   156,   169,   298,    17,    19,    69,    89,   416,   145,
+   637,   638,   133,   146,   147,     0,   126,   129,     0,   639,
+     0,     0,     0,     0,   712,   706,   449,     0,   124,   589,
+   586,   805,   819,   808,     0,   587,   804,   818,   807,   803,
+   832,   815,   826,   816,   809,   814,   835,     0,   420,   603,
+   602,   419,   175,   830,     0,   830,   511,   512,   514,   830,
+   517,   516,   580,   799,   547,   540,   552,   541,   428,   428,
+   537,   538,   535,   536,   580,   799,   281,   637,     0,   415,
+   117,   543,   553,   558,   559,   415,   415,     0,     0,   415,
+   115,   544,   556,   415,   532,   533,   534,   428,   530,   478,
+     0,    96,     0,     0,     0,     0,   102,     0,   833,   799,
+   833,   799,   841,   840,   842,   286,   322,   223,   225,   328,
+   329,     0,     0,     0,     0,   310,   313,     0,     0,     0,
+     0,   248,     0,   314,   316,   318,     0,     0,     0,     0,
+   229,   246,     0,     0,   673,   671,     0,   674,   584,   235,
+     0,     0,   178,   345,     0,     0,     0,   683,   679,   690,
+   580,   699,   697,   698,   688,   833,     0,   695,     0,   634,
+   635,     0,   334,   166,   168,   168,   164,   576,   574,   473,
+     0,   434,   432,   281,     0,    22,    30,   663,    56,    51,
+    58,    62,   685,   681,   686,   682,     0,   596,     0,   580,
+   687,    60,   154,   152,    68,     0,   131,     0,   135,     0,
+   137,     0,   139,     0,   766,     0,   202,   714,     0,   707,
+   708,     0,   450,   686,   682,     0,   305,     0,   632,   827,
+     0,     0,   836,   837,     0,     0,   417,   173,   521,     0,
+   520,   830,   830,   830,     0,   833,     0,   542,   446,   446,
+   833,     0,     0,     0,   428,   428,     0,   428,   428,     0,
+   428,     0,   446,   466,   580,   288,   287,   289,   580,    99,
+     0,   105,     0,     0,     0,     0,     0,     0,   456,     0,
+   454,   251,   272,   242,   241,   239,   230,     0,   243,   245,
+   672,   670,   677,   675,     0,   236,     0,     0,   337,   341,
+   343,   833,   693,   580,   694,   162,   160,   470,     0,   437,
+   439,   685,   681,   601,   687,   132,   130,     0,     0,     0,
+     0,   444,     0,     0,   281,   637,   638,   715,   728,   731,
+   734,   739,     0,     0,     0,     0,     0,     0,     0,     0,
+   282,   760,   768,     0,   787,   764,   763,   762,     0,   723,
+     0,     0,   393,     0,   702,   721,   727,   701,   722,   761,
+     0,   709,   451,     0,   635,   817,   811,   812,   810,     0,
+   834,   421,     0,     0,     0,     0,   523,   522,   515,   112,
+   580,   546,   550,   114,   580,   428,   428,   567,   446,   281,
+   637,     0,   554,   560,   561,   415,   415,   446,   446,     0,
+   446,   557,   545,     0,   833,   833,   580,   580,     0,     0,
+     0,     0,   455,     0,     0,   231,   232,   678,   346,   287,
+   696,   833,     0,   134,   136,   138,   773,   767,   771,     0,
+   710,   705,   205,   780,   782,   783,     0,     0,   719,     0,
+     0,     0,   746,   748,   749,   750,     0,     0,     0,     0,
+     0,     0,     0,   781,     0,   364,   788,     0,   724,   362,
+   415,     0,   363,     0,   415,     0,     0,     0,   203,   704,
+   703,   725,   759,   758,   310,   838,   418,   518,   519,   513,
+   833,   833,   566,   563,   565,     0,     0,   428,   428,   428,
+   562,   564,   549,   468,     0,   467,   462,    95,   101,   833,
+   833,   324,   325,   326,   327,   457,     0,   233,   692,   438,
+     0,   772,   445,   194,     0,   716,   729,   718,     0,     0,
+     0,     0,     0,   742,     0,   751,     0,   757,    39,   144,
+    34,   144,     0,    35,   769,     0,   360,   361,     0,     0,
+     0,   359,   204,   719,   111,   113,   428,   428,   572,   446,
+   446,     0,     0,   480,    98,   104,   579,     0,   774,   201,
+     0,   393,     0,   719,     0,   732,   720,   706,   785,   735,
+     0,     0,     0,     0,   747,   756,    40,    36,     0,     0,
+   726,   571,   569,   568,   570,   465,   464,   458,    86,    89,
+     0,     0,     0,   195,   415,   717,   206,   730,   208,     0,
+   786,     0,   784,   740,   744,   743,   770,   792,     0,     0,
+   463,   778,   779,   775,   428,   706,   192,     0,     0,   198,
+     0,   197,   719,     0,     0,     0,   793,   794,   752,   461,
+     0,   460,     0,   207,     0,   733,   736,   741,   745,     0,
+   792,     0,     0,   459,   199,   193,     0,     0,     0,   753,
+   795,     0,     0,   796,     0,     0,   200,   737,   797,     0,
+   754,     0,     0,     0,   738,   798,   755,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1547,
-   409,     2,   410,   160,   669,   311,   165,     3,     4,    38,
-   633,   353,   738,   375,    40,   739,   385,   644,   900,   645,
-   646,   647,    42,    43,   421,   168,   164,    44,   740,   754,
-  1021,   760,  1023,    46,   741,   742,   169,   170,   422,   672,
-   932,   933,   613,   934,   218,    47,   922,   921,   660,   657,
-  1086,  1085,   883,   880,   135,   920,    48,    49,   529,   312,
-   313,   314,   315,  1249,  1498,  1404,  1500,  1442,  1531,  1126,
-  1477,  1495,   347,   872,   316,   566,   834,   317,   318,   348,
-   320,   338,    51,   236,   377,   398,    52,    53,   321,   524,
-   322,   323,   324,   325,   423,   326,  1250,   462,   588,   327,
-  1251,    55,   201,   650,   328,   202,   502,   203,   181,   194,
-    59,   445,   463,  1273,   707,  1144,   182,   195,    60,   473,
-   708,    61,    62,   629,   630,   631,  1228,   428,   797,   798,
-  1468,  1469,  1436,  1385,  1301,    63,   617,   341,  1171,  1386,
-  1042,   886,    64,    65,    66,    67,   222,    68,    69,    70,
-   224,   725,   726,   727,   728,   226,   470,   471,   746,   747,
-   748,   994,  1004,   995,  1290,   996,   997,  1291,  1292,   614,
-   615,   567,   862,   330,   431,   432,   175,   183,    72,    73,
-    74,   184,   185,   152,    76,   131,   331,   332,   333,    78,
-   334,    80,   730,   122,   123,   124,   478,   104,    81,   335,
-   839,   840,   857,   591,  1254,  1255,  1127,  1128,  1129,   676,
-  1256,   939,  1257,  1333,  1445,  1407,  1408,  1258,  1259,  1426,
-  1334,  1446,  1335,  1479,  1336,  1481,  1526,  1541,  1337,  1502,
-  1455,  1503,  1413,   424,   673,  1226,  1260,  1347,  1458,  1324,
-  1325,  1399,  1472,  1444,  1440,  1261,  1451,  1350,   804,  1505,
-  1506,  1507,  1539,   693,   694,   961,  1140,  1269,   695,   696,
-   697,   957,   698,   145,   959,   700,  1142,  1143,   496,    83,
-    84
+static const short yydefgoto[] = {  1628,
+   436,     2,   437,   165,   709,   331,   181,     3,     4,    37,
+   672,   373,  1306,   673,   770,  1307,  1308,   393,  1412,   677,
+    41,   771,   402,   683,   939,   684,   685,   686,    43,   172,
+   173,    44,   455,   184,   180,    45,    46,   787,  1070,   793,
+  1072,    47,   773,   774,   185,   186,   456,   716,   977,   978,
+   652,   979,   234,    48,   961,   960,   699,   696,  1136,  1135,
+   919,   916,   136,   959,    49,   236,    50,   913,   565,   332,
+   333,   334,   335,  1309,  1579,  1476,  1581,  1521,  1612,  1178,
+  1558,  1576,   367,   905,   336,  1247,   860,   604,   867,   337,
+   338,   368,   340,   358,    52,   255,   678,   418,   154,    53,
+    54,   341,   560,   342,   343,   344,   345,   457,   346,  1310,
+   496,   626,   347,  1311,    56,   217,   689,   348,   218,   538,
+   219,   197,   210,    60,   479,   497,  1333,   750,  1196,   198,
+   211,    61,   509,   751,    62,    63,   668,   669,   670,  1283,
+   462,   830,   831,  1549,  1550,  1514,  1456,  1364,    64,   656,
+   361,  1224,  1457,  1091,   922,    65,    66,    67,    68,    69,
+   242,   243,    70,    71,   504,  1017,  1018,  1019,  1020,   245,
+   506,   507,   784,   778,   779,   780,  1042,  1052,  1043,  1353,
+  1044,  1045,  1354,  1355,   653,   654,   605,   895,   350,   465,
+   466,   191,   199,    73,    74,    75,   200,   142,   143,   157,
+    77,   132,   351,   352,   353,    79,   354,    81,  1022,   123,
+   124,   125,   514,   105,    82,   355,   872,   873,   890,   629,
+  1314,  1315,  1179,  1180,  1181,   720,  1316,   986,  1317,  1397,
+  1524,  1479,  1480,  1318,  1319,  1504,  1398,  1525,  1399,  1560,
+  1400,  1562,  1607,  1622,  1401,  1583,  1534,  1584,  1485,   458,
+   717,  1281,  1320,  1415,  1539,  1388,  1389,  1471,  1553,  1523,
+  1519,  1321,  1530,  1418,   837,  1586,  1587,  1588,  1620,   736,
+   737,  1006,  1192,  1329,   738,   739,   740,  1002,   741,   148,
+  1004,   743,  1194,  1195,   532,    84,    85
 };
 
-static const short yypact[] = {   125,
-   130,-32768,-32768,  3240,-32768,   195,    72,   188,   284,   151,
-   102,-32768,-32768,  1117,-32768,-32768,   136,   176,   198,-32768,
--32768,-32768,  1085,  1187,  1489,   256,-32768,   304,   367,-32768,
-  2407,  2407,-32768,  4859,-32768,  3240,   294,-32768,   352,    91,
-  5970,-32768,-32768,   208,  1265,   379,   356,   372,-32768,-32768,
--32768,-32768,   330,  2553,-32768, 10199,-32768,  1350,   498,-32768,
-   423,-32768,-32768,  1046,-32768,-32768,   399,-32768,-32768,   417,
-  4154,-32768,-32768,-32768,   784,-32768,-32768,-32768,   849,-32768,
--32768,   508,  5609,   408,-32768,-32768,  9052,-32768,  9052,-32768,
-  9052,-32768,-32768,-32768,   188,   284,   304,   445,   453,   492,
-   372,-32768,  1409,-32768,   508,  9052,  9052,   480,-32768,-32768,
--32768,-32768,-32768,    64,   528,   368,   383,   478,   538,   553,
--32768,-32768,   564,-32768,   572,   188,   284,  1112,   304,   445,
--32768,   855,   467,   509, 10350,  9052,-32768,  9052,  2926,-32768,
-  1285,   543,  2926,-32768,  1090,  3033,  3033,  4859,   524,   547,
-   517,   552,   555,-32768,-32768,   627,-32768,   556,-32768, 10084,
-   195,-32768,-32768,-32768,   582,   423,   691,   145,   179,   624,
--32768,-32768,   592,   250,-32768,-32768,  3416,  3416,  4989,   784,
-   591,-32768,-32768,   387,-32768,-32768,  2806,-32768,-32768,-32768,
--32768,-32768,  1350,   641,-32768,   423,   784,-32768,-32768,-32768,
-  1578,  1350,-32768,   423,-32768,  5186,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   372,   988,
-  1434,   399,-32768,-32768,-32768,-32768,-32768,   682,   508,-32768,
-   497,   963,-32768,   271,-32768,-32768,-32768,-32768,-32768,  3988,
--32768,-32768,   590,-32768,   617,   620,-32768,-32768,-32768,-32768,
-   658,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   113,
+   134,-32768,-32768, 10501,-32768,    45,    86,   454,   528,   151,
+   179,-32768,-32768,   625,-32768,   162,   167,   199,-32768,-32768,
+-32768,  1379,   744,   462,   231,-32768,   246,   543,-32768,  1936,
+  1936,-32768,  2838,-32768, 10501,   281,-32768,-32768,   332,-32768,
+   250, 10579,-32768,-32768,   270,   939,   377,   391,   420,-32768,
+-32768,-32768,-32768,   406,  3929,-32768, 10820,-32768,  1921,   529,
+-32768,   460,-32768,-32768,  1389,   411,-32768,-32768,-32768,-32768,
+   440,  2961,-32768,-32768,-32768,   921,-32768,-32768,-32768,   617,
+-32768,-32768,   362,  8032,   431,-32768,-32768,  9567,-32768,  9567,
+-32768,  9567,-32768,-32768,-32768,   454,   528,   246,   470,   452,
+   469,   420,-32768,   366,-32768,   362,  9653,  9653,   517,-32768,
+-32768,-32768,-32768,-32768,   675,   570,   544,   557,   585,   587,
+   618,-32768,-32768,  1050,-32768,  1205,   454,   528,-32768,   246,
+   470,-32768,  1385,  1043,   611, 11006,  9567,-32768,  9567,  3466,
+  2560,-32768,-32768,   688,   874,  2560,-32768,  1242,  3626,  3626,
+  2838,   554,   601,-32768,   533,   930,   630,   632,-32768,-32768,
+   747,-32768,   586,-32768, 10706,-32768,-32768,   231,  5117,   666,
+-32768,-32768,-32768,   270,  4845, 11061,   776,   715,-32768,-32768,
+   716,   460,   778,   156,   344,   753,-32768,-32768,   706,    65,
+-32768,-32768,  4597,  4597,  4660,   921,   832,-32768,-32768,   501,
+-32768,-32768,  1098,-32768,-32768,-32768,-32768,-32768,  1921,   865,
+-32768,   460,   921,-32768,-32768,-32768,  2025,  1921,-32768,   460,
+-32768,  4845,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   768,-32768,   420,-32768,   460,  1592,  1265,-32768,
+-32768,   785,   785,-32768,-32768,-32768,   541,   362,-32768,   339,
+   898,-32768,   201,-32768,-32768,-32768,-32768,-32768,  5823,-32768,
+-32768,   722,-32768,   760,   774,-32768,-32768,-32768,-32768,   808,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   616,-32768,-32768,   682,  4154,  1158,-32768,
--32768,   646,-32768,-32768,  9667,  9754,  9841,  9841,-32768,-32768,
--32768,-32768,-32768,   668,   701,   711,   721,   732,   445,  9139,
-  1090,  9841,-32768,-32768,  9841,-32768,-32768,  9841,  7165,-32768,
-  9841,   223,   683,-32768,  9841,-32768,  9226,-32768, 10446,-32768,
-  1514,  1785,  9313,-32768,   799,  2426,-32768,   953,  3686,  4007,
--32768,   307,-32768,  1524,  1858,   223,   223,  9052, 10350,-32768,
-  1090,   703,  1090,-32768,-32768,   708,   768, 10596,   724,   733,
-   738,   945,   556,-32768,  1112,-32768,-32768,-32768,-32768,-32768,
--32768,   528,   368,   383,  1090,   478,   538,   793,   553,-32768,
-   776,-32768,   188,   284,   814,-32768,-32768,-32768,   467,-32768,
--32768,-32768,-32768,-32768,  4967,-32768,-32768,  5186,  5373,  1679,
--32768,   223,   809,-32768,   775,-32768,-32768,-32768,  2926,-32768,
--32768,  2926,-32768,   760,-32768,-32768,  3988,    87,   761,   777,
--32768,-32768,-32768,   627,-32768,   423,-32768,-32768,-32768,-32768,
-   148,-32768,-32768,-32768,-32768,  7257,  9139,-32768,-32768,-32768,
-  9139,   779,-32768,  6493,   100,  4306,-32768,  4306,-32768,  4584,
-  4584,  4989,   790,-32768,   423,  5186,-32768,   783,-32768,-32768,
-  4619,  1578,  1350,  5186,-32768,   423,-32768,-32768,   423,  1578,
--32768,   811,-32768,-32768,   372,-32768,   988,-32768,  1220,  1675,
-    57,   682,   423,-32768,-32768,   836,   852,   876,   858,-32768,
--32768,-32768,-32768,   532,-32768,   338,   821,   826,-32768,-32768,
-   682,-32768,-32768,   822,-32768,-32768,  9052,  9139,   646,  7165,
--32768,   437,  7165,-32768,-32768,-32768,  9052,  5977,  5977,  5977,
-  5977, 10641,-32768,-32768,-32768,-32768,   832,  9928,  9928,  7165,
-   851,   524,   863,   887,   867,-32768,-32768,-32768,-32768,  9052,
--32768,  6790,  7165,-32768,  9139,  9139,  7349,  9139,  9139,  9139,
-  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,
-  9139,  9139,  9139,  9139,  9139,  9139,-32768,-32768,-32768,-32768,
--32768,  9139,  9139,  9139,  9052,  2857,   366,   440,  7988,-32768,
--32768,-32768,   880,   963,   972,   444,   523,   530,  2780,   543,
--32768,  1687,  1687,-32768,  4837,   868,   877,   948,-32768,-32768,
-   502,  8495,   725,-32768,   860,   508,-32768,-32768,  9139,-32768,
--32768,-32768,-32768,   249,-32768,-32768,-32768,   223,-32768,  5186,
-  1998,-32768,   933,   939,-32768,-32768,  1090,   793,-32768,  7717,
-  7809,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    79,-32768,
-   906,   895,   556,   951,   961,  9052,-32768,-32768,-32768,-32768,
-  1386,   256,   990,   206,   970,   971,-32768,-32768,  2152, 10406,
-  2152,  4432,  1046, 10143,-32768,   973,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   929,-32768,   979,-32768,-32768,   208,
-    89,   460,   993,   887,-32768,-32768,-32768,-32768,  6695, 10641,
--32768,   768,   947, 10596,-32768,-32768,   952,-32768,-32768,   967,
-   160,  5318,   969,-32768,   169,  5796,   996,  1015,   561,-32768,
--32768,-32768,  4306,  4306,-32768,  4619,-32768,  1016,-32768,-32768,
-   995,   100,-32768,  1578,-32768,-32768,   423,-32768,   368,   383,
--32768,   964,-32768,   553,  1022,-32768,-32768,   120,-32768,-32768,
-  1492,-32768,   589,   669,-32768,  9139,  5517,-32768,  5517,   335,
-   335,   217,   585,  2595, 10244,  2284,-32768,   225,   335,  1043,
-   423,-32768,   100,  2575,  9052,  9052,-32768,  9052,   100,  2575,
--32768,-32768,-32768,-32768,-32768,-32768,   649,   649,   649,   223,
-   975,  1000,  9406,   948,  1004,  1014,  1019,  1059,  4066,  1060,
-  1074,  1079,-32768,  1058,-32768,-32768,  1068,-32768,-32768,  1118,
-   787,   900,    65,   431,  9139,  1120,-32768,  1124,  1070, 10641,
- 10641,-32768,-32768,  1123,  5412,  5667,  3513,  5693,  4244,  3542,
-  3712,  1983,  1983,  1983,  1691,  1691,  1237,  1237,   756,   756,
-   756,-32768,-32768,  1084,  1082,  1086,  1095,  1097,  5977,   366,
--32768,  7257,  9139,-32768,-32768,-32768,  9139,-32768,-32768,  1105,
-  9841,  1099,  1119,  1136,  1166,-32768,  9139,-32768,  9139,-32768,
-  9139,  2683,-32768,  2683,-32768,   140,  1109,  1110,-32768,  1113,
-  5977,   100,-32768,   100,  4679,-32768,  2575,  1125,  8687,  8687,
-  6301,  1121,  9226,  1122,  3050,  1858,   984,  1130,-32768,-32768,
--32768,-32768,-32768,  9139,  1090,  1138,   939,-32768, 10641,-32768,
- 10641,   945,  1137,  9493,-32768,  1141,-32768,-32768,   223,-32768,
--32768,  1364,  4967,-32768,  5977,  9052,  2037,  2037,  3864,-32768,
--32768,-32768,-32768,  2806,-32768,-32768,-32768,    61,  9139,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   528,-32768,   478,   538,
-  9139,  1170,-32768,   587,   601,   622,   887,-32768,    71,-32768,
-    55,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  8591,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  1015,  1168,-32768,
--32768,-32768,  5977,-32768,-32768,-32768,  1190,-32768,  9052,-32768,
--32768,-32768,-32768,  1345,-32768,  2575, 10641,-32768,  1904,-32768,
-   423,   423,-32768,-32768,-32768,-32768,-32768,  2575,   232,   915,
-  9139,   811,-32768,  1196,-32768,-32768,-32768,   343,   391,   849,
-   543,   686,   335,  1199,-32768,   901,-32768,-32768,-32768,   423,
-  4219,-32768,-32768,  1154,   223,   223,   223,-32768,  1157,   100,
-  2575,   100,  2575,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1175,  1176,  1177,  1179,   929,-32768, 10528,  7257,
-  6885,  1163,-32768,  9139,-32768,-32768,-32768,-32768,   825,  1172,
--32768,-32768,  1173,    66,   285,   285,  1167,   285,-32768,-32768,
-  9841,  1268,  9052,-32768,  1185,  1186,  1188,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   100,  1191,-32768,  1192,-32768,
--32768,  3120,-32768,-32768,-32768,-32768,-32768, 10641,-32768,-32768,
-  1189,-32768,-32768,   227,  1197,-32768,-32768,-32768,-32768,-32768,
--32768,  2938,  2938,  3140,  3140,  3864,-32768,  2806,-32768,  3487,
- 10446,-32768,-32768,  1200,-32768,   460,-32768,  9139,-32768,  9139,
--32768,  9139,-32768,  1090,-32768,-32768,  6207,  1275,-32768,  6977,
--32768,  8780,  8780,  6397,   183,  1205,   254,-32768,  7257,  7069,
--32768,-32768,   240,  7257,-32768,  1214,  1218,  1220,-32768,-32768,
--32768,   100,  1219,-32768,  1266,  1266,   100,  1222,  9139,  9139,
- 10506,   423,  3309,   423,   423,  1160,   423,  4478,  1266,  5125,
--32768,-32768,-32768,  1278,-32768,-32768,-32768,  1225,-32768,  1226,
-  9139,  9139,  9139,  9139,  7257,-32768,  1276,-32768,-32768, 10641,
-  9139,-32768,   825,-32768,-32768,-32768,-32768,-32768,-32768,  1228,
--32768,  1290,   223,-32768,-32768,-32768,   100,-32768,-32768,-32768,
--32768,-32768,-32768,  9139,-32768,-32768,  2938,  2938,-32768,  3487,
--32768,-32768,  1234,  1236,  1244,  1250,-32768,   786,   242,  1297,
-  1021,  1023,-32768,-32768,-32768,-32768,-32768,  9139,  1300,  1304,
-  1309,  8873,   257,   415,-32768,-32768,  8965,  1366,  1316,-32768,
-  4706, 10305, 10451,  6095,-32768,-32768,  1362,-32768,-32768,-32768,
-  8099,-32768,-32768,  1273,  1916,-32768,-32768,-32768,-32768,  5977,
--32768,-32768,  7257,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 10506, 10506,-32768,  1266,   695,  1083,  9139,-32768,
--32768,-32768,   811,   811,  1266,  1266,   532,  1266,-32768,-32768,
-  5854,   100,   100,-32768,-32768,  1282,  1284,  1298,  1308,-32768,
-  7257,  1310,-32768,-32768,-32768,-32768,-32768,   100,  1314,-32768,
--32768,-32768,-32768,  1250,-32768,  1090,-32768,-32768,-32768,-32768,
--32768,-32768,   629,   629,   887,  1292,  1294, 10484,-32768,-32768,
--32768,-32768,  1334,  9139,  1369,-32768,   887,-32768,-32768,  1338,
--32768,-32768,   811,   823,-32768,   861,   811,  9580,   864,   266,
--32768,-32768,-32768,-32768,-32768,-32768,   339,-32768,-32768,   100,
-   100,-32768,-32768,-32768,  9139,  9139, 10506,   423,   423,-32768,
--32768,-32768,-32768,  7901,-32768,-32768,-32768,-32768,   100,   100,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1339,-32768,
--32768,-32768,  9052,-32768,-32768,-32768,  1435,  8401,  6603,  9052,
-  9139,-32768,  8209,-32768,  1394,-32768,-32768,   627,-32768,-32768,
- 10015, 10015,  7441,-32768,-32768,   887,-32768,-32768, 10506, 10506,
--32768,  1266,  1266,  1347, 10550,  1358,-32768,-32768,  5257,-32768,
--32768,  1349,   443,  5186,   887,  8305,-32768,-32768,    71,-32768,
--32768,  1402,  1359, 10619,  8209,-32768,-32768,  1250,    78,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   379,   208,  1360,
-  1361,   887,-32768,   811,-32768,-32768,-32768,-32768,   638,-32768,
-  7533,-32768,-32768,-32768,-32768,  1250,  1457,  1411,   156,-32768,
--32768,-32768,-32768,   423,    71,-32768,  9139,  1413,-32768,  1414,
--32768,   887,  8209,  1382,    53,  1418,-32768,-32768,-32768,   148,
--32768,  1415,-32768,  1371,-32768,-32768,-32768,-32768,  9139,  1457,
-  1421,  1457,-32768,-32768,-32768,  7625,  1373,   158,-32768,-32768,
-  7257,  1377,-32768,  1479,  1439,-32768,-32768,-32768,   301,-32768,
-  8305,  1490,  1442,-32768,-32768,-32768,  1508,  1509,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   770,-32768,-32768,   541,  2961,   889,-32768,-32768,
+   781,-32768,-32768, 10261, 10347, 10433, 10433,-32768,-32768,-32768,
+-32768,-32768,   791,   824,   834,   836,   839,   984,   470,  9739,
+  1344, 10433,-32768,-32768, 10433,-32768,-32768, 10433,  7140,-32768,
+ 10433,   783,   847,-32768, 10433,-32768,  9825,-32768, 11306,   207,
+   735,  2906,  9911,-32768,   909,  1677,-32768,  1035,  2216,  2707,
+-32768,   341,-32768,  1619,  1893,   783,   783,  9567, 11006,-32768,
+  1344,   820,  1344,-32768,-32768,   829,   873, 11239,   845,   850,
+   857,  1404,   586,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   570,   544,   557,  1344,   585,   587,   868,   618,-32768,
+   920,-32768,  2238,   454,   528,-32768,-32768,-32768,-32768,-32768,
+-32768,  4577,-32768,  4845,  4782,  1152,-32768,   783,   437,-32768,
+-32768,   807,-32768,   908,   914,-32768,-32768,-32768,  2560,-32768,
+-32768,  2560,-32768,   882,-32768,-32768,-32768,   930,   930,   930,
+-32768,-32768,-32768,  5823,    91,   883,   894,-32768,-32768,-32768,
+-32768, 11006,-32768,   962,  1003,-32768,-32768,   747,-32768,   460,
+-32768,-32768,-32768,-32768,   140,-32768,-32768,-32768,-32768,  7692,
+  9739,-32768,-32768,-32768,  9739,   901,-32768,  6828,   142, 10560,
+-32768, 10560,-32768, 11078, 11078,  4660,   897,-32768,   460,  4845,
+-32768,   906,-32768,-32768, 11119,  2025,  1921,  4845,-32768,   460,
+-32768,-32768,   460,  2025,-32768,   997,-32768,  9567,   768,-32768,
+-32768,  1592,-32768,-32768,-32768,  3869,    85,   541,   460,-32768,
+-32768,   954,   982,  1006,   990,-32768,-32768,-32768,-32768,   610,
+-32768,   463,   925,   956,-32768,-32768,   541,-32768,-32768,   819,
+-32768,-32768,  9567,  9739,   781,  7140,-32768,   479,  7140,-32768,
+-32768,-32768,  9653,  3641,  3641,  3641,  3641, 11284,-32768,-32768,
+-32768,-32768,   969, 10003, 10003,  7140,   971,   164,   985,  1032,
+   987,-32768,-32768,-32768,-32768,  9567,-32768,  7231,  7140,-32768,
+  9739,  9739,  7783,  9739,  9739,  9739,  9739,  9739,  9739,  9739,
+  9739,  9739,  9739,  9739,  9739,  9739,  9739,  9739,  9739,  9739,
+  9739,  9739,-32768,  9739,-32768,-32768,-32768,-32768,-32768,  9739,
+  9739,-32768,-32768,  2543,   443,   205,  8392,-32768,-32768,-32768,
+  1059,   898,  1108,   519,   559,   567,  2402,   874,-32768,  1955,
+  1955,-32768,  3205,  1007,  1031,  1080,-32768,-32768,   511,  8942,
+  1749,-32768,  1030,   362,-32768,-32768,  9739,-32768,-32768,-32768,
+-32768,-32768,   441,   431,-32768,-32768,   783,-32768,  4845,  2724,
+-32768,  1077,  1078,-32768,-32768,  1344,   868,-32768,  8124,  8215,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   120,-32768,  1055,
+  1034,   586,  2238,  1097,  9567,-32768,  1096,-32768,-32768,  1043,
+  1697,  1128,   471,  1101,  1103,-32768,-32768,  3099, 11061,  3099,
+  3303,  1389, 10765,-32768,  1105,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  1068,  1071,-32768,  1111,-32768,-32768,   270,
+-32768,-32768,-32768,-32768,    97,   400,  1118,  1032,-32768,-32768,
+-32768,-32768,  7030, 11284,-32768,   873,  1079, 11239,-32768,-32768,
+  1081,-32768,  1082,   573,  4360,  1083,-32768,   112,  4465,  1117,
+  1131,   568,-32768,-32768,-32768, 10560, 10560,-32768, 11119,-32768,
+  1136,-32768,-32768,  1090,   142,-32768,  2025,-32768,-32768,   460,
+  1130,-32768,  2297,-32768,   660,   789,-32768,  9739, 10638,-32768,
+ 10638,   408,   408,   211,   603,  3889, 10879,  5499,-32768,   210,
+   408,  1144,   460,  6090,-32768,   142,  5204,  9567,  9567,-32768,
+  9567,   142,  5204,-32768,-32768,-32768,-32768,-32768,-32768,   477,
+   477,   477,   783,  1084,  1099,  9218,  1080,  1109,  1114,  1116,
+  1141,  4282,  1150,  1153,  1154,-32768,  1122,-32768,-32768,  1126,
+-32768,-32768,  1157,    74,   325,   311,   172,  9739,  1174,-32768,
+  1180,  1146, 11284, 11284,-32768,-32768,  1190, 11324, 11341,  6304,
+ 11356,  2756,  3410,  3759,  2096,  2096,  2096,  1693,  1693,   992,
+   992,   968,   968,   968,-32768,-32768,  1147,  1156,  1162,  9739,
+  9653,-32768,   443,-32768,  7692,  9739,-32768,-32768,-32768,  9739,
+-32768,-32768,  1181, 10433,  1163,  1188,  1206,  1235,-32768,  9739,
+-32768,  9739,-32768,  9739,  3331,-32768,  3331,-32768,   105,  1175,
+  1176,-32768,  1178,  3641,   142,-32768,   142,  4214,-32768,  5204,
+  1182,  3040,  3040,  6640,  1179,  9825,  1187,   930,  1845,  1893,
+  1210,  1193,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  9739,
+  1344,  1177,  1078,-32768, 11284,-32768, 11284,  1404,  1196, 10089,
+-32768,  1197,  1245,-32768,   783,-32768,-32768,-32768,-32768,-32768,
+  2817,  4577,-32768,  3641,  9567,  3526,  3526,  5669,-32768,-32768,
+-32768,-32768,  1098,-32768,-32768,-32768,   903,  9739,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   270,-32768,   570,
+   544,   557,-32768,   585,   587,  9739,  1250,-32768,   606,   618,
+   608,   653,  1545,  1032,-32768,    78,-32768,    59,-32768,-32768,
+-32768,-32768,-32768,-32768,  9034,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  1131,  1247,-32768,-32768,-32768,  3641,-32768,-32768,
+-32768,  1251,-32768,-32768,  1223,-32768,  1259,-32768,-32768,   108,
+-32768,-32768,-32768,  5204, 11284,-32768,  2448,-32768,   460,   460,
+-32768,-32768,-32768,-32768,-32768,  5204,   604,   843,  9739,   997,
+-32768,  1266,-32768,-32768,-32768,   277,   353,   617,   874,   418,
+   408,  1272,-32768,   425,-32768,-32768,-32768,   460,-32768,-32768,
+  8460,-32768,  1216,   783,   783,   783,-32768,  1224,   142,  5204,
+   142,  5204,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1241,  1244,  1249,  1252,  1068,-32768, 11172,  7692,  7325,
+  1253,-32768,  9739,-32768,-32768,-32768,  1254,  1236,  1248,  3641,
+-32768,-32768,  1256,   190,   750,   750,  1239,   750,-32768,-32768,
+ 10433,  1352,  9567,-32768,  1258,  1261,  1262,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   142,  1263,-32768,  1264,-32768,
+-32768,  2147,-32768,-32768,-32768,-32768,-32768, 11284,-32768,-32768,
+  1267,-32768,-32768,   255,  1273,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  4152,  4152,  4986,  4986,  5669,-32768,  1098,-32768,
+  5377, 11306,-32768,-32768,-32768,  1295,-32768,   400,-32768,  9739,
+-32768,  9739,-32768,  9739,-32768,  1344,-32768,-32768,  6527,  1339,
+-32768,  7416,-32768,  9126,  9126,  6734,    62,  1297,    96,-32768,
+  7692,  7507,-32768,-32768,   286,  7692,-32768,-32768,-32768,  9653,
+-32768,-32768,-32768,-32768,  1654,   142,  1302,-32768,  1310,  1310,
+   142,  1306,  9739,  9739, 11150,   460,  4944,   460,   460,  1298,
+   460,  5233,  1310,-32768,-32768,-32768,  1325,-32768,-32768,-32768,
+  1307,-32768,  1309,  9739,  9739,  9739,  9739,  7692,-32768,  1356,
+-32768,-32768, 11284,-32768,-32768,-32768,   552,  1248,-32768,-32768,
+-32768,-32768,-32768,-32768,  1311,-32768,  1372,   783,-32768,-32768,
+-32768,   142,-32768,-32768,-32768,-32768,-32768,-32768,  9739,-32768,
+-32768,  4152,  4152,-32768,  5377,-32768,-32768,  1313,  1316,  1319,
+  1334,-32768,  1010,   298,  1376,   861,   910,-32768,-32768,-32768,
+-32768,-32768,  9739,  1377,  1380,  1384,  9304,   273,  1344,   828,
+   614,-32768,-32768,  9395,  1439,-32768,-32768,-32768,  1390,-32768,
+  4718, 10947,  5938,  6261,-32768,-32768,  1435,-32768,-32768,-32768,
+  8553,-32768,-32768,  1345,   369,-32768,-32768,-32768,-32768,  3641,
+-32768,-32768,  7692,  1347,  1348,  2297,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 11150, 11150,-32768,  1310,   628,
+   953,  9739,-32768,-32768,-32768,   997,   997,  1310,  1310,   610,
+  1310,-32768,-32768,  6395,   142,   142,-32768,-32768,  1354,  1355,
+  1359,  1360,-32768,  7692,  9739,-32768,   552,-32768,-32768,-32768,
+-32768,   142,  1362,-32768,-32768,-32768,-32768,  1334,-32768,  1344,
+-32768,-32768,-32768,-32768,-32768,-32768,   657,   657,  1032,  1381,
+  1386,  5708,-32768,-32768,-32768,-32768,  1392,  9739,  1412,  1418,
+  1426,  1692,  1763,-32768,  1032,-32768,-32768,  1394,-32768,-32768,
+   997,  1063,-32768,  1073,   997,  9481,  1075,   315,-32768,-32768,
+-32768,-32768,-32768,-32768,   188,-32768,-32768,-32768,-32768,-32768,
+   142,   142,-32768,-32768,-32768,  9739,  9739, 11150,   460,   460,
+-32768,-32768,-32768,-32768,  8306,-32768,-32768,-32768,-32768,   142,
+   142,-32768,-32768,-32768,-32768,-32768,  1374,-32768,-32768,-32768,
+  1396,-32768,-32768,-32768,  9653,-32768,-32768,-32768,  1466,  8849,
+  6936,  9653,  9739,-32768,  8661,-32768,  1436,-32768,-32768,  1441,
+-32768,  1426,  1692,-32768,-32768,   747,-32768,-32768, 10175, 10175,
+  7601,-32768,-32768,  1032,-32768,-32768, 11150, 11150,-32768,  1310,
+  1310,  1391, 11194,  1408,-32768,-32768,-32768,  6188,-32768,-32768,
+  1399,   763,  4845,  1032,  8755,-32768,-32768,    78,-32768,-32768,
+  1450,  1405, 11262,  8661,-32768,-32768,-32768,-32768,  1334,    87,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   377,   270,
+  1407,  1410,  1032,-32768,   997,-32768,-32768,-32768,-32768,   663,
+-32768,  7874,-32768,-32768,-32768,-32768,  1334,  1501,  1456,   161,
+-32768,-32768,-32768,-32768,   460,    78,-32768,  9739,  1463,-32768,
+  1464,-32768,  1032,  8661,  1443,   158,  1478,-32768,-32768,-32768,
+   140,-32768,  1474,-32768,  1431,-32768,-32768,-32768,-32768,  9739,
+  1501,  1481,  1501,-32768,-32768,-32768,  7965,  1437,   649,-32768,
+-32768,  7692,  1444,-32768,  1532,  1491,-32768,-32768,-32768,   317,
+-32768,  8755,  1544,  1496,-32768,-32768,-32768,  1557,  1563,-32768
 };
 
 static const short yypgoto[] = {-32768,
-  1511,-32768,  -303,-32768,  1101,    18,    -1,  1515,-32768,   192,
--32768,-32768,   519,  1161,-32768,     5,-32768,-32768,  -623,-32768,
--32768,   615,-32768,  1363,  -668,    83,  -664,  1392,    30,-32768,
--32768,-32768,-32768,-32768,   774,-32768,-32768,-32768,-32768,-32768,
--32768,   404,   661,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1440,  -611,  5315,    32,  -317,    44,
-  1416,  -503,-32768,   103,-32768,   222,-32768, -1302,-32768,  -756,
-    17,-32768,  1320,  1586,  -262,-32768,  -794,  1774,  -110,  1098,
-  3500,  1281,-32768,   -87,   -55,  1580,   -77,    27,-32768,-32768,
--32768,  -319,-32768,  -155,-32768,-32768, -1156,   -47,  -316,  2413,
-    58,  -240,  -120,    52,    76,  -181,    -4,  -144,  -610,   312,
--32768,    68,    73,-32768,  -337,-32768,-32768,-32768,-32768,-32768,
-   374,  1115,    20,-32768,   673,-32768,-32768, -1049,  -422,   890,
--32768,-32768,-32768,-32768,-32768,   -32,-32768,-32768,-32768,-32768,
--32768,   685,  -360,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  1348,-32768,   426,   602,-32768,-32768,-32768,-32768,   566,  -686,
--32768,-32768,-32768,-32768,-32768,-32768,   833,-32768,   412,   966,
-   704,  1024,  3968,     7,    51,  -431,  1407,  3322,  -438,-32768,
-    19,-32768,  3079,  -118,   247,   -59,  3948,  1271,-32768,  4653,
-  1794,  1660,   -16,  -115,-32768,  1471,   -81,-32768,  4369,  2696,
-  -290,-32768,  2504,-32768,-32768,   344,-32768,-32768,   471,    93,
-  -353,-32768,-32768,-32768,-32768, -1262,-32768, -1191, -1324,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   115,-32768,-32768,-32768,-32768,-32768,   153,
- -1232,-32768,-32768,   -65,-32768,-32768,-32768,-32768, -1312,    92,
--32768,    94,-32768,  -616,  -520,   660,-32768,-32768,-32768,-32768,
-  -371,-32768,  -364,  -179,-32768,   681,   349,-32768,  -394,-32768,
-  -217
+  1564,-32768,  -331,  1400,  -350,    19,     6,  1571,-32768,  1539,
+-32768,-32768,   228,-32768,   229,-32768,   249,-32768,   163,   902,
+    39,    15,-32768,-32768,  -629,-32768,-32768,   636,    55,  1420,
+  1137,  1433,  -704,    42,  -173,    -6,   150,-32768,-32768,-32768,
+-32768,-32768,   823,-32768,-32768,-32768,-32768,-32768,-32768,   436,
+  1148,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  1511,  -651,  5827,  1369,   -47,  -586,  -227,   -68,
+  1469,  -536,-32768,   684,-32768,   212,-32768, -1387,-32768, -1289,
+   -11,-32768,  1519,  1510,  -270,   364,  -544,-32768,  -826,  2320,
+     9,  1554,  3609,  1314,  -327,   -57,   -88,   682,  -139,   -65,
+    93,-32768,-32768,-32768,  -326,-32768,  -153,-32768,-32768, -1252,
+   -48,  -338,  4854,   138,   912,  -118,    81,   102,  -203,    -4,
+  -144,  -166,  -172,    16,   -21,   145,-32768,  -370,-32768,-32768,
+-32768,-32768,-32768,   213,  1308,    10,-32768,   686,-32768,-32768,
+  -768,  -377,   893,-32768,-32768,-32768,-32768,-32768,   -16,-32768,
+-32768,-32768,-32768,-32768,   694,  -346,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  1378,-32768,   283,   421,-32768,-32768,
+-32768,-32768,-32768,   848,  -677,-32768,-32768,-32768,-32768,-32768,
+-32768,   852,-32768,   412,   977,   714,  1039,  4229,    47,    21,
+  -455,  1438,  1271,  -667,-32768,     4,-32768,   822,  4045,  -147,
+   173,  -102,  4533,  1293,-32768,  4890,  2554,  1748,   -18,  -114,
+-32768,  1521,   -53,-32768,  4714,  3375,  -257,-32768,  1983,-32768,
+-32768,   333,-32768,-32768,   472,    63,  -439,-32768,-32768,-32768,
+-32768, -1405,-32768, -1174, -1373,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    83,
+-32768,-32768,-32768,-32768,-32768,   116, -1322,-32768,-32768,   -45,
+-32768,-32768,-32768,-32768, -1416,    67,-32768,    53,-32768,  -723,
+  -583,   667,-32768,-32768,-32768,-32768,  -388,-32768,  -382,  -441,
+-32768,  1416,   336,-32768,   -84,-32768,  -230
 };
 
 
-#define        YYLAST          10726
-
-
-static const short yytable[] = {    58,
-   408,   237,    37,   681,   937,   925,   180,   121,    41,   372,
-    71,   453,   593,   655,   479,   602,   711,   279,   606,   607,
-   656,    36,   501,   504,   653,   205,   789,   400,   403,   917,
-   729,    58,   102,    45,    37,  1051,    58,   139,   143,    37,
-    41,   371,    71,   469,   380,    41,   472,    71,   923,   632,
-   978,   193,   980,    36,   534,    56,   458,   461,    36,  1007,
-   151,    54,  1363,   237,   858,    45,   228,   677,   378,  1366,
-    45,   858,   452,   383,   661,   662,   381,   382,   277,    57,
-   208,   460,   329,  1448,   329,   192,   329,    56,   571,   278,
-  1348,  1400,    56,    54,   750,   491,  1452,   571,    54,   571,
-   241,   329,   329,   174,  1124,  1279,  1280,  1453,   482,   237,
-   234,    57,   166,   581,  1130,  1520,    57,   605,   716,  1300,
-   -44,  1478,   354,   344,    -1,   -44,   972,  -125,   355,    -2,
-   390,   329,   336,   329,   337,   752,   -44,  1014,   892,   136,
-  1487,    71,   230,  1019,   649,   418,    87,   491,   674,   158,
-    93,   945,   399,   402,   860,    58,  1509,   973,   276,   773,
-   205,   699,  1521,  1460,   387,  1131,    71,   751,   205,   205,
-   787,   945,   151,   151,   151,  1195,   505,   506,  1501,   392,
-   951,  1125,  1475,   436,   438,   774,   389,  1488,   893,    45,
-   159,   514,   388,   649,   515,   205,   667,   516,   926,   946,
-   526,   174,   947,  -326,   531,   151,   675,   419,   346,   350,
-    57,    56,   570,  1532,  -326,   208,  1478,    54,   419,   946,
-  1534,  1456,   947,   208,  -792,    92,   425,   155,   952,   106,
-  -275,   953,   162,   935,   174,    57,  1374,   948,   576,  1517,
-   420,   983,    88,   426,   205,  1380,  1381,   241,  1382,   788,
-  1077,   420,  1450,  1400,  1192,    85,   568,   948,   671,    94,
-   109,   110,    89,  1485,   456,   903,   954,  1535,  1084,   107,
-   577,  1087,   427,   228,   486,   984,  -275,  -275,  1098,   985,
-   153,   904,   902,   635,   602,  1008,  1214,   289,   126,   127,
-   879,   108,  -268,   482,  1159,   378,   205,   433,   527,  1270,
-   528,  -589,  1328,    27,   329,    86,    87,   458,   461,  1112,
-  1113,  1518,   986,   111,   112,   458,   163,   277,   480,   640,
-   938,   400,   403,   639,   655,   228,  1328,   461,   278,   896,
-   134,   958,   714,   329,   611,  1009,  1215,  1344,    90,    27,
-   658,   129,   130,   434,   649,    71,   461,  -589,  -589,  1271,
-   858,   649,  1329,   241,   598,   835,   479,   205,    91,  1153,
-  1542,    15,    16,  -589,   481,   836,  -385,  -335,   609,    15,
-    16,  1158,  1024,  1025,  1026,   593,  1425,  -549,   136,   837,
-   652,   608,  1463,  1464,   193,   763,  -277,   156,   858,   643,
-   389,   654,   153,   153,   153,  -385,   610,   276,  1313,  -385,
-   599,  -335,  1101,   167,  1178,  -335,  1180,   514,   515,  1052,
-  1543,   521,   157,   831,    57,  -336,   171,    15,    16,   205,
-   205,   137,   357,  -549,   173,   153,   172,   205,   858,   692,
-   832,   764,  -277,  -277,  -549,   208,  1079,   358,  -335,   205,
-   654,   138,    89,   126,   127,  -385,   703,   704,  -271,  -336,
-   199,   200,  1027,  -336,    19,   649,    14,    91,   205,   833,
-   651,   223,   927,   719,   720,    58,   151,   151,   151,   281,
-   373,   374,    10,  1211,  1212,   225,    71,  1346,   208,    21,
-  -549,   448,   280,  1007,   581,   137,  -336,   737,    24,   136,
-   581,   846,   329,  -126,    27,   329,   129,   130,   329,   137,
-   568,   743,   329,   779,   779,   779,   779,   928,    22,   651,
-   835,     8,     9,   649,    27,   329,   929,   930,   709,   649,
-   836,   745,    39,    28,   299,   329,   715,   744,   329,   717,
-   773,   655,   359,   685,   837,   729,   773,   847,   656,   415,
-   770,   968,   653,   970,   474,    57,   126,   127,   974,   866,
-   342,    90,   136,   931,    39,    33,   602,   206,   207,    39,
-   329,   277,   881,   340,   129,   130,   362,   363,   364,   458,
-   848,    91,   278,   352,   115,   116,   117,   850,   205,   761,
-   652,  1097,   356,  1123,   384,   858,    90,   692,   852,   854,
-   475,   654,   360,     8,   484,   867,   868,   491,   654,   129,
-   130,   910,   521,   915,   916,   521,    91,   361,   962,   776,
-   534,   173,   365,   858,   241,   372,   849,  1186,  1188,   205,
-   366,   367,   521,   851,   121,   762,   649,  1200,   118,   119,
-   649,   329,   987,  -268,  1117,   521,   975,   284,   343,   803,
-  1354,   276,  1359,    90,   916,   193,   129,   130,  1119,   228,
-   446,   447,   126,   127,   963,   936,   405,   482,   605,   205,
-   651,   406,   649,    91,  -584,   825,    -7,   651,   649,  1121,
-   485,   842,   126,   127,   100,   414,  1402,   935,   988,   899,
-  1118,   205,   976,   114,   429,  1496,   153,   153,   153,   199,
-   200,   652,  1480,   417,  1120,    14,   993,  1173,  1174,  1175,
-   454,   455,   654,    27,   430,   129,   130,  1188,   649,   729,
-  -102,   487,    15,    16,   488,  1122,  1266,  1268,    21,   492,
-   489,  1272,  1403,    27,   217,   129,   130,    24,   490,   493,
-  1060,  1497,    58,  -545,    58,   649,  -545,   774,  1513,   498,
-   193,    58,   530,    71,  -102,    71,   205,   649,  -102,   652,
-   329,   329,    71,   329,   737,   652,   737,  1375,   514,   515,
-   654,   507,  1310,   737,  1196,  1197,   654,  1199,   743,    87,
-   743,   651,   863,   992,  1002,   508,   743,   743,   126,   127,
-   649,  -102,   649,   368,  -545,   509,  -545,  -545,   745,  -545,
-   745,  1148,  1149,  1150,   744,   510,   979,   745,  1015,  1016,
-  -545,  1017,  -545,   744,  1490,   397,   511,   981,   982,   571,
-    15,    16,    57,   616,    57,  -385,  1010,   619,  -545,  -545,
-  1510,    57,  -545,   343,   779,   126,   127,   620,  1054,   651,
-   637,   129,   130,   622,  -545,   651,   237,    15,    16,   555,
-   556,    88,   623,  -385,  -385,  1326,  1327,   624,  -385,  -123,
-  1369,     7,     8,   231,    10,   485,   779,   281,   373,   374,
-    10,    89,   652,     8,     9,   649,   692,   636,   530,   665,
-   343,    -6,   831,   654,   638,   852,   854,   654,   129,   130,
-   464,   466,   446,  1419,   527,  1316,   528,   668,  1395,   832,
-    22,   686,   477,   649,   241,   710,    22,   232,   652,   705,
-   779,   329,   233,   232,   652,    28,    29,   643,   343,   654,
-   755,    28,   299,  1102,  1103,   654,   129,   130,   833,  1191,
-   454,  1420,   237,   446,  1424,  -100,   756,    15,    16,   233,
-   757,   993,   758,   765,   843,   151,   774,    33,   766,  1057,
-   233,   783,   651,    33,   692,   675,   651,    94,   109,   110,
-  1201,   625,   626,   627,    90,   654,   126,   127,   779,  -100,
-   785,   513,  -124,  -100,   329,    94,   109,   110,   476,    88,
-   861,   652,   786,   521,    91,   151,   788,  1160,   651,   845,
-   859,  1406,   654,   652,   651,   400,   403,     8,     9,    89,
-    94,    95,    96,  1417,   654,   863,  -100,   884,   885,   894,
-   581,   111,   112,   618,    22,   895,    58,    27,   992,   129,
-   130,   897,   628,   400,   403,   898,   652,    71,   652,   111,
-   112,   514,   515,   582,   651,   618,    21,   654,   737,   654,
-   237,   234,   343,   583,   905,   906,   343,   919,  -271,   924,
-   129,   130,   743,   584,    97,    98,   585,   586,    94,    95,
-    96,   651,   209,   210,   211,   419,   942,   969,   329,  1162,
-  -791,   943,   745,   651,   485,  1164,  1165,   655,   744,  1162,
-  1167,  1146,  1406,  1165,  1471,    88,   944,    90,   950,   960,
-   964,   971,   212,  1331,  1028,  1332,    57,    94,   109,   110,
-   967,  1406,    94,   109,   110,    89,   651,    91,   651,   936,
-    27,   652,    97,    98,   213,  1011,  1203,   965,  1536,  1029,
-  1217,  1218,   654,  1030,   281,   373,   374,    10,  1493,    94,
-    95,    96,  1253,  1031,  1012,  1248,   774,   718,  1032,   692,
-   151,   151,   151,    71,  1033,  1034,   526,    88,  1217,  1218,
-   654,   111,   112,   113,  1247,  1376,   111,   112,  1406,  1035,
-   214,   215,   216,    22,  1036,   153,   677,    89,   151,   151,
-   151,   126,   127,   126,  1297,    58,    27,  1037,    28,   299,
-   196,    27,   204,    97,    98,    99,    71,  1038,  1252,  1043,
-  -122,   651,  1040,  1041,   319,  1044,   319,   737,   319,   115,
-   116,   117,   796,  1045,  1046,   153,  1047,   486,   649,  1059,
-    33,   743,    57,  1353,  1048,  1353,  1049,  1062,   343,   651,
-  1063,  1061,    27,  1064,   129,   130,   129,   130,  1070,  1071,
-   205,   745,   115,   719,   720,  1072,   721,   744,   492,  1116,
-  1080,  1081,  1139,   319,   844,   319,   521,  1078,   493,  1083,
-   485,    27,  1253,   118,   119,    57,  1093,   193,  1090,  1253,
-   722,  1096,  1248,    71,  1145,  1163,  1253,   723,  1168,  1248,
-    71,   491,  1459,  1172,  1247,   779,  1176,    71,  1181,  1182,
-  1183,  1247,  1184,  1189,    27,  1202,   118,   119,  1247,  1198,
-   416,  1193,  1194,  1306,  1307,  1308,  1309,     7,   126,   127,
-    10,    15,    16,  1312,  1204,  1205,  -385,  1206,  1252,  1213,
-  1209,   901,   400,   403,  1210,  1252,  1216,   204,  1124,  1221,
-   514,   515,  1252,   918,  1265,   459,   204,   552,   553,   554,
-   555,   556,    57,  1274,  -385,  -385,    22,  1275,  1278,    57,
-   426,  1282,  -626,   232,  1304,  1305,    57,  1315,  1311,   796,
-  1314,    28,    29,  1320,  1343,  1321,  1323,   115,   719,   720,
-   153,   153,   153,  1322,  1155,  1156,   198,   199,   200,  1330,
-  1378,  1379,  1339,    14,  1340,   233,    94,   109,   110,  1341,
-   209,   210,   211,    33,  1349,   722,  1351,  1364,   153,   153,
-   153,    19,  1367,  1169,   151,  1409,    21,  1410,   362,   363,
-   364,  1391,   966,  1392,  1414,    24,  1474,   512,  1443,    27,
-   212,   118,   119,  1253,  1253,  1443,  1248,  1393,  1253,   278,
-   205,  1248,     8,     9,    71,    71,   278,  1394,   329,    71,
-   111,   112,  1396,  1398,   456,  1247,  1247,   703,   704,  1416,
-  1247,  1418,  1439,  1013,   652,   319,    94,    95,    96,  1018,
-    27,  1253,   366,   367,  1248,   654,  1415,   151,   151,   151,
-  1253,  1447,    71,  1248,  1457,  1465,  1467,   343,  1473,  1252,
-  1252,    71,  1482,  1247,  1252,   129,   130,  1504,  1483,  1491,
-  1492,  1508,  1247,  1515,  1516,  1519,  1443,  1522,   276,  1524,
-  1525,  1529,  1533,    57,    57,   276,  1537,   278,    57,  1538,
-    97,    98,   126,   127,   115,   719,   720,  1252,  1253,  1540,
-  1545,  1248,  1546,   196,   204,  1441,  1252,  1548,  1549,    71,
-     1,   803,  1441,   670,   651,   634,     5,  1099,  1003,  1222,
-  1247,    57,   412,   680,   684,   521,   281,     8,     9,    10,
-    57,   684,   339,   128,  1285,  1286,  1253,  1295,  1296,  1248,
-  1298,  1494,  1073,    27,  1074,   129,   130,    71,   118,   119,
-  1489,   413,   628,   393,  1252,  1405,   276,  1544,  1247,   416,
-   497,   557,   901,  1356,  1092,    22,   459,   204,   941,   468,
-   416,  1091,   232,  1276,   459,  1151,  1170,  1005,    57,  1299,
-    28,   299,   887,  1441,   457,   199,   200,   416,  1089,   830,
-   449,    14,  1252,   370,   319,   684,   578,  1362,  1262,  1514,
-   558,   559,  1523,  1511,   153,   560,   561,   562,   563,    19,
-  1486,  1528,    33,   150,    21,  1530,    57,  1138,  1368,     0,
-     0,  1527,     0,    24,     0,     0,     0,   319,   803,   680,
-     0,     0,   800,   801,     0,   805,   806,   807,   808,   809,
-   810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
-   820,   821,   822,   823,     0,     0,  1372,  1373,     0,   684,
-     0,   684,   684,     0,     0,     0,     0,   153,   153,   153,
-     0,     0,     0,     0,     0,   732,     0,     7,     8,   733,
-    10,   386,    12,    13,     0,   198,   199,   200,    14,   684,
-   126,   127,    14,     0,     0,    13,   684,     0,     0,     0,
-  1177,  1187,  1179,    17,     0,    18,    19,    20,     0,     0,
-    19,    21,  -492,     0,     0,    21,    22,   889,   891,     0,
-    24,   734,     0,   642,    24,   204,   401,   404,     0,    27,
-     0,    28,    29,   319,   581,   735,     0,   736,   239,   659,
-     0,    27,     0,   129,   130,    31,   682,     0,     0,     0,
-  1431,  1432,  1433,   682,     0,    32,  1208,   582,   150,     0,
-     0,     0,   239,    33,   196,     0,   204,   583,    34,   550,
-   551,   552,   553,   554,   555,   556,   680,   584,     0,     0,
-   585,   586,     0,     0,  1227,  -492,     0,     0,     8,     9,
-  1187,   239,    12,    13,     0,     0,     0,    79,    14,     0,
-   239,     0,  1461,  1462,     0,     0,   204,   103,     0,     0,
-     0,     0,     0,    17,     0,    18,     0,   682,   132,     0,
-     0,    21,     0,     0,   141,   141,     0,   141,   459,    79,
-    24,   416,  1277,   977,    79,     0,     0,  1281,     0,    27,
-     0,   129,   130,   564,     0,     0,   239,   187,     0,    79,
-     0,     0,   319,   319,     0,   319,     0,   220,     0,   196,
-   600,     8,     9,     0,   103,   416,     0,  1512,     0,     0,
-   684,     0,     0,     0,     0,   243,   103,     0,   565,   239,
-     0,   682,     0,   682,   682,     0,     0,  1317,   523,     0,
-     0,     0,  1039,     0,     0,     0,   289,   601,   103,    22,
-     0,     0,   239,  1345,     0,     0,   989,   990,     9,    10,
-     0,   682,    27,     0,   129,   130,     0,     0,   682,     0,
-     0,   132,     0,     0,     0,     0,   132,  -277,    79,   680,
-   684,     0,   141,     0,     0,   395,   141,     0,     0,   141,
-   141,   141,  -277,  -277,   684,    22,   684,  -277,   684,     0,
-     0,     0,     0,    79,     0,     0,     0,     0,    27,     0,
-    28,    29,     0,  -277,  1154,     0,   991,     0,     0,     0,
-   187,   187,   187,     0,   177,  -277,  -277,     0,  -277,     0,
-  -277,  1088,  1387,  1388,   178,     0,  1401,     0,     0,     0,
-     0,   684,    33,   239,     0,     0,     0,   179,  1397,   187,
-     0,     0,     0,   319,   198,   199,   200,     0,     0,  -277,
-  -277,    14,   683,  -277,   467,     0,  1111,     0,     0,   690,
-   401,   404,   103,     0,     0,  -277,     0,     0,   684,    19,
-     0,     0,     0,   141,    21,     0,     0,     0,     0,     7,
-     8,     9,    10,    24,     0,    13,   684,     0,     0,     0,
-  1427,  1428,     0,     0,   239,     0,     0,     0,   882,   548,
-   549,   550,   551,   552,   553,   554,   555,   556,     0,  1437,
-  1438,   103,   494,     0,     0,     0,     0,     0,    22,   523,
-     0,     0,   523,   771,   581,     0,     0,     0,  1161,     0,
-     0,    27,   682,    28,    29,   416,   416,     0,   401,   784,
-     0,   587,   587,   587,     0,     0,     0,   907,     0,     0,
-     0,     0,   523,     0,     0,   103,     0,   908,     0,   579,
-     0,   494,   494,   595,   416,    33,   239,   584,     0,     0,
-   909,   586,    79,     0,     0,     0,     0,   680,   680,     0,
-     0,  1190,     0,     0,     0,     0,     0,   824,   132,   826,
-   827,     0,   682,   239,     7,     8,     9,    10,     0,     0,
-   319,     0,     0,     0,     0,     0,   682,     0,   682,     0,
-   682,   874,   132,     0,     0,     0,     0,     0,   103,     0,
-     0,   187,   103,     0,   878,     0,     0,     0,     0,     0,
-     0,     0,   141,    22,     0,   141,     0,     0,     0,   581,
-   141,     0,     0,     0,     0,     0,    27,     0,    28,    29,
-     0,     0,     0,   682,     0,   684,     0,   684,     0,   684,
-     0,     0,   907,     0,     0,     0,     0,   680,     0,   187,
-     0,   187,   908,   187,   187,   187,   680,   680,   239,   187,
-    33,   680,   584,     0,   187,   909,   586,   187,     0,     0,
-   682,     0,     0,     0,   239,     0,  1283,  1284,     0,     0,
-     0,     0,     0,    79,     0,     0,     0,     0,   682,     0,
-     0,     0,     0,     0,     0,   416,   416,     0,   416,   416,
-     0,   416,   680,     0,   732,     0,     7,     8,   733,    10,
-   386,    12,    13,     0,     0,     0,     0,    14,     0,     0,
-     0,   103,   103,   103,   103,     0,     0,     0,     0,     0,
-     0,   684,    17,     0,    18,    19,    20,     0,     0,     0,
-    21,  -493,     0,     0,     0,    22,     0,     0,     0,    24,
-   734,     0,   642,     0,     0,  1338,     0,     0,    27,     0,
-    28,    29,     0,     0,   735,     0,   736,     0,     0,     0,
-     0,     0,   874,     0,    31,   587,   587,     0,   587,   103,
-     0,   494,     0,     0,    32,   873,   196,   204,     0,     0,
-   680,     0,    33,   579,     0,   494,   494,    34,   595,     0,
-     0,     0,     0,     0,     0,   875,  1377,     0,     0,   877,
-     0,     0,     0,     0,  -493,     0,     0,   416,   416,     0,
-     0,     0,     0,   187,     0,     0,     0,     0,   680,     7,
-   126,   127,    10,     0,     0,    13,     0,     0,  1053,     0,
-     0,     0,   587,     0,   587,   587,   572,   587,   281,   373,
-   374,    10,  1065,   573,  1066,     0,  1067,   682,     0,   682,
-     0,   682,   187,   914,   187,   187,   220,   595,    22,   401,
-   784,     0,     0,     0,     0,   684,     0,     0,     0,     0,
-     0,    27,     0,    28,    29,   587,     0,    22,     0,     0,
-     0,     0,  1429,  1430,   574,     0,     0,    31,     0,  1095,
-    27,  1435,    28,   299,     0,   187,     0,    32,   150,   914,
-     0,   416,   416,   416,     0,    33,   187,   187,     0,   187,
-    34,     0,     0,     0,     0,     0,     0,     0,  1454,     0,
-     0,     0,     0,     0,   575,     0,  1114,     0,   349,   351,
-     0,     0,     0,     0,     0,     0,     0,   132,  1136,     0,
-    79,     0,    79,   682,   239,     0,   239,  1000,    79,    79,
-     0,     0,     0,   416,   416,     0,     0,   103,     0,     0,
-     0,     0,   587,   103,     0,     7,     8,     9,    10,     0,
-   494,   494,   494,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   494,   239,     0,     0,     0,     0,     8,     9,
-     0,   386,    12,    13,     0,     0,   688,     0,    14,     0,
-     0,     0,     0,     0,    22,     0,     0,   989,   990,     9,
-    10,     0,     0,    17,     0,    18,    19,    27,   416,    28,
-    29,    21,     0,   176,     0,     0,     0,     0,     0,     0,
-    24,     0,   103,   177,     0,   587,     0,   587,   680,    27,
-     0,   129,   130,   178,     0,     0,    22,     0,   587,     0,
-     0,    33,   873,   873,   873,   494,   179,   494,     0,    27,
-     0,    28,    29,     0,   103,     0,     0,   991,   494,   239,
-   103,     0,   875,   875,   875,   177,     0,     0,     0,  1082,
-     0,     0,   689,     0,     0,   178,     0,   682,     0,     0,
-   587,   587,   587,    33,   401,   404,   126,   127,   179,     0,
-     0,   227,     0,     0,     0,     0,   103,     0,   103,    82,
-   187,   187,  1108,  1223,     0,  1224,     0,  1225,     0,   105,
-     0,     0,   401,  1264,     0,     0,     0,     0,     0,   125,
-   133,   525,   873,     0,     0,     0,   142,   142,     0,   142,
-   581,    82,     0,     0,     0,     0,    82,    27,     0,   129,
-   130,   239,  1108,     0,     0,     0,     0,     0,     0,   142,
-     0,    82,     0,   582,     0,     0,   103,     0,     0,   221,
-     0,     0,     0,   583,     0,     0,   229,   239,     0,   103,
-     0,     0,  1000,   584,     0,     0,   585,   586,   229,     0,
-     0,   103,   281,   126,   127,    10,     0,     0,     0,     0,
-     0,     0,     0,     0,  1166,     0,     0,   648,     0,  1319,
-     0,     0,     0,     0,    79,     0,     0,     0,     7,     8,
-     9,    10,     0,     0,   103,     0,   103,     0,     0,     0,
-     0,    22,     0,   379,     0,   239,     0,     0,   232,     0,
-    82,   590,   594,   597,   142,     0,    28,   299,   142,     0,
-     0,   142,   142,   142,     0,     0,   691,    22,   494,   494,
-     0,   494,     0,     0,   232,    82,     0,     0,     0,     0,
-     8,     9,    28,    29,    12,    13,     0,     0,    33,     0,
-    14,     0,   142,   142,   142,   587,   587,   587,   587,   587,
-     0,     0,     0,   587,     0,    17,   233,    18,     0,     0,
-     0,     0,     0,    21,    33,   187,   187,   187,   187,  1108,
-     0,   142,    24,   187,     0,   873,   873,   873,     0,     0,
-     0,    27,   772,   129,   130,   775,     0,     0,     0,   777,
-   778,   780,   781,   782,     0,  1108,  1108,  1108,     7,   126,
-   127,    10,   525,     0,   227,   142,     0,  1136,     0,     0,
-     7,     8,     9,    10,     0,   799,   227,     0,     0,     0,
-   829,     0,     0,     0,     0,     0,   187,     0,     0,     0,
-     0,   141,     0,    79,     0,     0,     0,    22,     0,     0,
-     0,     0,     0,   229,   142,     0,     0,   828,     0,    22,
-    27,     0,    28,    29,     0,   581,     0,     0,     0,     0,
-   587,   587,    27,   587,    28,    29,    31,   856,     0,     0,
-     0,   401,  1264,     0,   856,     0,    32,     0,   907,     0,
-   187,   187,     0,   187,    33,     0,     0,   229,   908,    34,
-     0,   580,     0,   142,   142,   596,    33,     0,   584,     0,
-   604,   909,   586,     0,    82,     7,   126,   127,    10,     0,
-     0,    13,     0,     0,   187,   914,   187,     0,     0,     0,
-   379,     0,   281,     8,     9,    10,     0,     0,     0,     0,
-     0,     0,     0,   103,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
-   229,     0,    75,   142,   229,   853,   855,    27,     0,    28,
-    29,    22,     0,     0,   142,     0,     0,   142,   232,     0,
-     0,     0,   142,   146,     0,     0,    28,   299,   648,   140,
-   144,     0,     0,   147,    75,     0,     0,     0,     0,    75,
-     0,    33,   281,     8,     9,    10,   148,     0,     0,     0,
-   233,   142,     0,   142,   197,   142,   142,   142,    33,     0,
-     0,   142,     7,     8,     9,    10,   142,     0,    13,   142,
-     0,  1108,   912,     0,   590,   594,     0,   597,     0,     0,
-     0,    22,     0,     0,   731,    82,   691,     0,   232,     0,
-     0,     0,   691,     0,     0,     0,    28,   299,     0,     0,
-     0,    22,     0,     0,     0,     0,     0,   581,     0,     0,
-     0,     0,     0,     0,    27,   594,    28,    29,     0,     0,
-   485,     0,     0,   229,   229,   229,   229,     0,    33,     0,
-  1104,     0,     0,   391,  1108,  1108,  1108,   394,     0,     0,
-  1105,   396,     0,     0,     0,     0,     0,     0,    33,     0,
-   584,     0,   103,  1106,   586,     0,     0,   187,    75,     0,
-     6,  1050,     7,     8,     9,    10,    11,    12,    13,     0,
-     0,     0,     0,    14,     0,   140,   144,     0,     0,     0,
-     0,   229,     0,   142,     0,     0,    15,    16,    17,     0,
-    18,    19,    20,   799,     0,     0,    21,   142,   142,   691,
-   596,    22,   594,   856,    23,    24,    25,   876,    26,     0,
-     0,     0,     0,     0,    27,     0,    28,    29,     0,   604,
-    30,     0,     0,     0,     0,   142,     0,     0,     0,     0,
-    31,  1287,  1288,     9,    10,   648,     0,  1100,   483,     0,
-    32,   856,     0,     0,     0,     0,     0,     0,    33,     0,
-     0,     0,     0,    34,     0,     0,   125,     0,     0,    35,
-     0,     0,     0,     0,   142,   596,   142,   142,   221,   596,
-    22,     0,     0,     0,     0,  1068,     0,  1069,     0,     0,
-     0,   856,     0,    27,     0,    28,    29,   731,  1075,     0,
-     0,  1289,   853,   855,     0,  1141,     0,     0,     0,   177,
-     0,  1147,     0,     0,     0,     0,     0,   142,   691,   178,
-     0,   596,     0,     0,     0,     0,     0,    33,   142,   142,
-   691,   142,   179,     0,     0,     0,     0,     0,     0,     0,
-   853,   855,     0,     0,     0,     0,     0,   612,     7,     8,
-     9,    10,     0,     0,    13,     0,     0,     0,     0,   133,
-     0,     0,    82,   691,    82,   691,     0,     0,     0,  1001,
-    82,    82,     0,     0,     0,     0,     0,     0,     0,   229,
-     0,     0,     0,     0,     0,   229,     0,    22,     0,     0,
-     0,     0,   142,   142,   142,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,   142,     0,     0,   663,     0,     0,
-   664,     0,     0,     0,     0,   666,   177,     0,     0,     7,
-     8,     9,    10,     0,     0,   482,   178,     0,   437,   439,
-   443,     0,     0,    50,    33,     0,     0,     0,     0,   179,
-     0,     0,     0,     0,   394,     0,   396,     0,   856,     0,
-     0,     0,     0,     0,   229,     0,     0,     0,    22,   483,
-    50,    50,     0,   149,   581,    50,     0,     0,     0,     0,
-    50,    27,     0,    28,    29,     0,   856,   142,   749,   142,
-     0,     0,     0,    50,     0,    50,   229,   907,     0,     0,
-   142,     0,   229,     0,   876,   876,   876,   908,     0,     0,
-     0,   604,     0,     0,     0,    33,     0,   584,   235,     0,
-   909,   586,   541,   542,   543,   544,   545,   546,   547,   548,
-   549,   550,   551,   552,   553,   554,   555,   556,   229,     0,
-   229,     0,   142,   142,   596,  1068,  1069,   853,   855,     0,
-     0,     0,     0,  1075,   544,   545,   546,   547,   548,   549,
-   550,   551,   552,   553,   554,   555,   556,   376,     0,     0,
-     0,   376,   376,     0,    50,   853,   855,     0,    50,     0,
-   235,     0,    50,     0,   876,   149,   149,   149,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   229,    50,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   731,
-     0,   229,     0,     0,  1001,     0,    50,    50,   149,     0,
-     0,     0,  1141,   229,     0,     0,   235,     0,     0,   126,
-   127,     0,     0,   199,   200,     0,     0,     0,     0,    14,
-     0,     0,     0,     0,     0,    50,    82,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   229,     0,   229,     0,
-  1068,  1069,    21,  1075,     0,     0,     0,     0,   913,     0,
-     0,    24,     0,   581,     0,     0,     0,     0,     0,    50,
-    27,     0,   129,   130,     0,     0,     0,     0,     0,     0,
-   142,   142,     0,   142,     0,     0,   582,   701,     0,   702,
-     0,   437,   439,   443,     0,     0,   583,     0,     0,     0,
-     0,     0,   713,     0,   956,     0,   584,     0,     0,   592,
-   586,   663,   664,     0,   666,   545,   546,   547,   548,   549,
-   550,   551,   552,   553,   554,   555,   556,   142,   142,   142,
-   142,   596,     0,     0,     0,   142,     0,     0,   522,     0,
-     0,   731,     0,     0,     0,   749,     0,   749,     0,     0,
-     0,     0,   999,  1006,   749,   376,     0,   876,   876,   876,
-     0,     0,     0,   235,     0,   525,     0,     0,    50,     0,
-     0,     0,     0,   731,     0,     0,     0,     0,     0,     0,
-     0,   648,     0,     0,   376,     0,     0,     0,   142,     0,
-     0,     0,     0,   142,     0,    82,     7,     8,     9,    10,
-   386,    12,    13,     0,     0,   688,     0,    14,   376,     0,
-     0,     0,     0,     0,     0,     0,     0,    50,     0,     0,
-     0,     0,    17,     0,    18,    19,     0,     0,    50,     0,
-    21,    50,     0,     0,     0,    22,    50,     0,     0,    24,
-     0,   581,   142,   142,     0,   142,     0,     0,    27,     0,
-    28,    29,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,  1104,    50,     0,    50,     0,   149,
-   149,   149,     0,     0,  1105,    50,   142,   596,   142,     0,
-    50,    77,    33,    50,   584,     0,     0,  1106,   586,     0,
-     0,   689,     0,     0,     0,   229,     0,     0,     0,    50,
-     0,     0,     0,     0,     0,     0,     0,     0,    77,    77,
-     0,    77,     0,    77,     0,   140,   144,     0,    77,     0,
-     7,   126,   127,    10,     0,     0,   482,     0,     0,   522,
-     0,    77,   522,    77,     0,     0,     0,     0,     0,     0,
-     8,     9,     0,     0,    12,   227,     0,   522,   522,   522,
-    14,     0,     0,     0,   701,   702,     0,   713,     0,    22,
-     0,     0,   522,     0,     0,    17,     0,    18,     0,     0,
-     0,     0,    27,    21,    28,    29,     0,     0,   240,     0,
-     0,     0,    24,   876,   581,     0,     0,   999,    31,     0,
-     0,    27,     0,   129,   130,   998,     0,     0,    32,   126,
-   127,     0,     0,   199,   200,     0,    33,   582,   235,    14,
-     0,    34,    77,     0,     0,     0,    77,   583,     0,   749,
-    77,   522,     0,    77,    77,    77,     0,   584,     0,     0,
-   585,   586,    21,     0,     0,     0,     0,    77,     0,    50,
-     0,    24,     0,   581,     0,     0,   876,   876,   876,     0,
-    27,   407,   129,   130,    77,    77,    77,     0,     0,     0,
-     0,     0,     0,     0,   229,     0,   582,     0,     0,   142,
-     0,     0,   435,     0,     0,     0,   583,     0,    50,    50,
-    50,    50,     0,    77,     0,   451,   584,     8,     9,   585,
-   586,    12,   227,     0,     0,     0,     0,    14,     0,     0,
+#define        YYLAST          11440
+
+
+static const short yytable[] = {    59,
+   443,   420,   423,   445,   122,   487,   196,   435,   444,    36,
+   631,   392,   984,   694,   256,   721,   432,   103,    42,   695,
+   515,   356,    35,   357,   182,   178,   754,   640,   641,   822,
+    59,   400,   253,   537,   540,   174,  1101,    59,   298,   891,
+    36,   671,   221,   508,   398,   399,   891,   962,   981,    42,
+    72,  1416,   209,    35,   249,   692,    42,   177,   861,   914,
+   169,   763,   956,  1063,  1531,  1472,   570,   247,   408,  1068,
+   391,   224,   492,   495,   190,   397,   141,   146,   256,   296,
+   170,    72,   725,   349,    57,   349,   260,   349,    72,   710,
+   486,  1026,   527,  1028,  1532,  1021,   171,   609,  1541,   494,
+  1055,   609,   349,   349,    86,    58,  1527,   609,  -302,   364,
+  1176,   467,    -1,   963,  1203,    57,   992,  1182,  1556,   759,
+   820,   782,   176,   997,   644,   155,   196,    89,   645,   646,
+   297,   406,   349,    -2,   349,  -141,    58,   256,   785,  1431,
+   718,    55,  -626,    58,  1204,   527,  1434,    90,  1568,   224,
+   518,  1559,   178,    87,  -302,  -302,   452,   468,   440,    88,
+    59,  1590,   174,   993,    59,   224,   994,  1183,   893,  -295,
+   998,   209,    55,   999,  1582,   190,  1127,  1598,   928,   175,
+   700,   701,    72,    42,   177,   295,  1177,   169,  -626,  -626,
+  1613,   490,   221,   783,  1569,   419,   422,   719,   707,   807,
+   221,   221,   742,  -626,   969,   158,   208,   170,   127,   128,
+   593,    72,   821,  -356,   522,    72,   405,   453,  -356,  1601,
+   190,   224,   453,   171,    93,   138,    94,   929,  1529,   224,
+   221,    38,    39,  -144,  -304,  1031,   619,    58,  1561,   470,
+   472,   155,   155,   155,  1472,    57,   224,   516,  1559,   176,
+   454,   260,    40,   593,   107,   454,   594,   615,    26,   108,
+   130,   131,    38,    39,  1134,  1602,    58,  1137,  1032,  1056,
+    58,  -295,  1033,   404,   868,    95,   110,   111,   985,   221,
+  -304,  -304,   806,    40,   869,   403,  1594,   155,   614,   647,
+   679,   109,   247,   517,   715,  -298,   606,  1250,   870,   594,
+  1207,  -365,    55,    15,   135,  1034,   175,   163,  1163,  1164,
+  1535,  1149,  1212,  1269,   541,   542,   641,  1100,  1057,   137,
+   891,   158,   158,   158,   349,   208,   420,   423,   112,   113,
+   550,   674,   221,   551,  -365,   941,   552,   296,  -365,   562,
+   932,   492,   495,   567,  1330,   247,  1231,   164,  1233,   492,
+   694,   608,  1408,   349,   650,   697,  1003,  1392,   260,  1566,
+   967,   968,  1270,   495,   891,     8,     9,   158,   757,     8,
+     9,  -365,  -143,   161,  1392,  1623,   179,  -366,    91,    15,
+  -304,   515,   495,  1055,   137,   510,  -142,   636,   297,   221,
+   459,   162,    91,  1331,   449,  -304,   631,   691,    92,  -304,
+   209,   183,   970,   971,   972,    72,  1393,   460,  1152,  1599,
+  -366,   891,    92,   363,  -366,  -304,   682,   130,   131,   915,
+  1376,   130,   131,  1503,  1624,   178,  1198,  -304,  -304,   761,
+  -304,   511,  -304,   637,    15,   712,   461,    59,  -415,   405,
+  1342,  1343,  -120,   295,    15,  1129,   973,  -366,   693,  -118,
+   187,    15,  -584,    26,  1363,   974,   975,   177,   775,   224,
+    58,  -304,  -304,   735,   803,   127,   128,  -415,   240,   221,
+   221,  -415,   241,   188,   760,  -120,  -304,   221,   308,  -120,
+   127,   128,  -118,  1266,  1267,   518,  -118,  1102,    72,   864,
+    18,   221,   976,   349,    26,   566,   649,   244,  -584,   189,
+   981,    59,   224,   690,   299,   129,   865,    89,   648,   796,
+   221,   563,  -120,   564,   693,    26,  -415,   130,   131,  -118,
+   746,   747,   176,   138,   769,   619,   362,    90,   349,   942,
+    26,   349,   130,   131,   349,   866,   966,  1021,   349,   812,
+   812,   812,   812,    58,  1175,   943,   528,  -584,   215,   216,
+  1468,   349,    72,   694,    14,   797,   529,   899,   606,   695,
+   360,   349,   550,   551,   349,   879,   155,   155,   155,   690,
+   679,   806,  1199,   891,  1201,  1076,    20,   938,  1205,   175,
+  1445,    91,   640,   641,   992,    23,   777,   222,   223,  1451,
+  1452,   937,  1453,  -584,   482,   692,   138,   377,   864,   296,
+   917,    92,   891,   900,   901,   881,   935,    58,   527,   372,
+   378,   880,   492,   883,  1007,   865,   139,    90,   691,     7,
+     8,   250,    10,   376,   752,   735,   189,    95,    96,    97,
+    92,   993,   758,   221,   994,   570,  -829,   260,   379,   949,
+   380,   954,   955,   776,   866,  1375,   158,   158,   158,  1035,
+   297,   882,  1169,  1255,  1171,   772,   794,    21,   137,   884,
+  1008,  -295,   122,    91,   251,  1213,   885,   887,  1021,   693,
+   349,   381,    27,    28,   221,  1414,   693,    88,    26,   644,
+    98,    99,   100,    92,   209,   401,   955,   137,   247,  1446,
+     7,   127,   128,    10,    -7,  1036,   252,   982,  1170,  1173,
+  1172,    88,   795,  1474,    32,   295,  1023,  1148,   425,  1577,
+  1615,  1239,  1241,    91,   153,  1073,  1074,  1075,   221,  1064,
+  1065,   775,  1066,   775,   690,     8,   520,  1041,    21,   775,
+   775,   690,   374,    92,   691,   251,   775,   433,   375,  -621,
+   221,  1544,  1545,    27,    28,  1174,   116,   117,   118,  1475,
+  1029,  1030,  1024,   127,   128,  1578,  1616,   303,   518,  1058,
+  1336,  1337,  1338,   164,    59,   807,    59,   252,   432,   363,
+   215,   216,   209,    59,   447,    32,    14,   130,   131,    59,
+   451,   595,   691,   349,   349,   693,   349,   769,   691,   769,
+   366,   370,   127,   128,  1165,   221,   769,    26,    20,   119,
+   120,   521,   769,    26,  1241,   130,   131,    23,   448,   619,
+   127,   128,   463,  1326,  1328,    72,   464,    72,  1332,   868,
+   596,   597,   127,   128,    72,   598,   599,   600,   601,   869,
+    72,   421,   424,   693,   222,   446,  1226,  1227,  1228,   693,
+   690,   498,    26,   870,   130,   131,   503,  1251,  1252,   777,
+  1254,   777,   147,   523,   363,   806,   349,   563,   777,   564,
+  1373,  1104,   130,   131,   777,  1591,   363,   524,   392,   525,
+    58,   129,    58,   534,   130,   131,   153,   127,   128,    58,
+   526,    26,  1110,   543,  1411,    58,   521,   256,   690,   812,
+   480,   481,   127,   128,   690,   691,    89,   544,   252,   735,
+    95,   110,   111,   512,  1214,   566,   776,   545,  1027,   546,
+   550,   551,   547,   260,    89,   776,    90,   224,   772,   609,
+   772,   776,  1395,   488,   489,  1040,  1050,   772,   655,   130,
+   131,   659,   300,   772,    90,    10,   658,   691,    21,   812,
+   349,   675,    26,   691,   130,   131,   693,    15,   885,   887,
+   693,  -415,   661,   112,   113,  1437,   682,   662,   528,  1478,
+    18,   -52,   411,    91,   663,    15,   -52,   413,   529,  -415,
+    21,  1396,  1012,   676,   807,  1495,   498,   -52,  1041,  -415,
+  -415,    90,   256,    92,  -415,   426,   427,    92,   693,   704,
+   735,    -6,  1153,  1154,   693,  1060,  1466,  -415,  -415,   428,
+   253,   690,   708,   812,   748,   690,    89,   420,   423,   429,
+   559,   730,   557,   775,  1447,   147,   753,    32,  1216,   691,
+   480,   713,   430,    15,  1218,  1219,    90,   788,  1216,  1221,
+  1380,   691,  1219,     8,     9,   798,   420,   423,   127,   128,
+   155,   693,  -183,   690,  1258,   300,   394,   395,    10,   690,
+   591,   592,   382,   383,   384,   789,    59,   137,  -183,   790,
+  -183,   488,   714,   791,  1478,   691,   799,   691,  1390,  1391,
+   693,   588,   589,   590,   591,   592,   816,   363,   818,   769,
+   519,   619,   693,    21,  1478,   130,   131,   155,    26,   719,
+   130,   131,   819,   256,   821,   812,   690,   385,    27,   319,
+     7,     8,     9,    10,   620,   386,   387,    72,   349,   252,
+   421,   705,   876,  1574,   621,   878,   693,   892,   693,  1256,
+   158,   480,  1497,   894,   622,   690,   896,   623,   624,   694,
+    32,   488,  1498,   480,  1502,  1552,   921,   690,    21,  1424,
+   920,   777,   931,  1478,  1422,   251,  1427,   930,   729,   982,
+   934,   721,   691,    27,    28,   936,   421,   424,   214,   215,
+   216,   101,    58,    20,   944,    14,   945,   158,   958,   115,
+   965,   690,   522,   690,  1313,  -298,  1040,   252,   964,   453,
+  -828,   735,    18,   807,  1305,    32,   989,    20,   990,   991,
+   996,  1077,   550,   551,  1005,   349,    23,  1304,   776,  1009,
+  1010,  1272,  1273,   693,  1013,  1059,  1078,   116,   117,   118,
+   772,   698,   233,     8,     9,  1082,  1079,   559,  -140,   557,
+   559,  1080,   557,  1081,  1083,    72,   809,  1084,  1085,  1086,
+  1272,  1273,   693,  1087,  1617,  1089,   421,   817,  1090,   557,
+   702,  1209,  1210,   703,    95,   414,   415,   155,   155,   155,
+   559,  1093,   557,  1092,  1094,   706,   836,   363,   690,  1312,
+   119,   120,  1421,  1095,  1421,   130,   131,    95,    96,    97,
+  1223,   388,  1096,  1111,  1109,  1112,   155,   155,   155,  1113,
+    58,  1114,  1120,  1121,   859,  1140,  1130,   690,  1122,   521,
+   875,   411,  1128,   413,  1131,   416,   221,    98,   113,  1313,
+  1133,   127,  1360,  1143,  1147,  1146,   519,   209,  1168,  1313,
+  1191,   907,   562,   688,  1197,  1200,  1313,  1202,   527,  1305,
+    98,    99,  1304,  1225,  1217,   812,  1305,   158,   158,   158,
+  1222,  1229,  1304,  1234,  1449,  1450,  1235,   140,   140,  1304,
+   156,  1236,  1540,  1245,  1237,   363,    95,   110,   111,  1253,
+    72,   420,   423,   130,   131,  1246,   158,   158,   158,  1257,
+    72,  1242,  1244,  1249,   212,  1259,   220,    72,  1260,  1261,
+  1264,  1176,   237,   460,  1265,  1268,  1571,   521,  -663,   688,
+  1271,    95,   110,   111,  1312,   499,   501,   300,   394,   395,
+    10,    95,    96,    97,  1312,   225,   226,   227,   513,   112,
+   113,  1312,  1276,   490,  1325,    58,    95,   110,   111,  1341,
+   664,   665,   666,  1345,  1367,    58,  1368,  1374,  1379,    18,
+  1384,  1378,    58,  1385,   228,    21,  1386,  1348,  1349,  1387,
+  1358,  1359,   251,  1361,   112,   113,   114,  1394,  1403,  1404,
+    27,   319,    26,  1405,    98,    99,   229,  1417,   140,  1419,
+  1432,  1486,  1435,   140,  1438,  1439,   156,   156,   156,   112,
+   113,  1462,  1463,   471,   473,   477,  1464,  1465,   549,  1470,
+  1522,  1488,    32,  1481,  1555,  1313,  1313,  1522,  1482,  1489,
+  1313,   375,  1526,   212,  1517,  1305,  1496,   907,  1518,   450,
+  1305,   230,   231,   232,  1537,  1536,   349,  1546,  1304,  1304,
+   140,   140,   156,  1304,  1548,   221,  1554,   550,   551,  1563,
+   657,  1585,  1564,   691,  1572,  1589,   220,  1573,   155,   667,
+  1313,   297,  1596,  1597,   493,   220,    72,    72,   297,  1313,
+  1305,    72,   657,  1575,   688,  1600,  1603,  1605,  1606,  1305,
+  1610,   688,  1619,  1304,  1614,   746,   747,   116,   971,   972,
+  1621,  1618,  1304,  1107,  1626,  1627,  1629,  1522,  1443,  1444,
+  1312,  1312,  1630,     1,   693,  1312,   140,   702,   703,   442,
+   706,    72,     5,   160,   933,  1493,   295,  1150,   711,  1313,
+    72,    58,    58,   295,   421,   817,    58,   557,   441,  1305,
+  1570,   155,   155,   155,    95,    96,    97,   439,   158,  1051,
+   119,   120,  1304,  1277,   359,  1312,   500,   409,   297,  1477,
+  1625,  1377,   533,  1142,  1312,   988,  1141,  1313,  1440,   690,
+   505,   300,     8,     9,    10,  1339,    58,  1305,  1053,   153,
+    72,  1061,   923,  1362,  1139,    58,   156,   483,   616,   363,
+  1304,   339,   863,   339,   390,   339,  1430,    98,    99,   762,
+   688,  1322,  1592,  1604,  1567,  1611,   116,   971,   972,    21,
+  1509,  1510,  1511,   295,  1312,  1436,   251,  1609,    72,  1190,
+     0,   158,   158,   158,    27,   319,  1188,   610,     0,   300,
+   394,   395,    10,  1015,   611,    58,     0,     0,     0,     0,
+   339,     0,   339,     0,    95,   110,   111,     0,   688,   382,
+   383,   384,  1312,     0,   688,     0,    32,    26,     0,   119,
+   120,     0,   212,   220,     0,   829,     0,    21,     0,  1542,
+  1543,     0,     0,    58,   612,     0,   140,     0,     0,   140,
+    26,     0,    27,   319,     0,   156,   156,   156,     0,     0,
+   744,   140,   745,     0,   471,   473,   477,   112,  1490,     0,
+    26,     0,   386,   387,     0,   756,     0,  -580,     0,   877,
+  -580,     0,     0,     0,   613,    95,   110,   111,   147,     0,
+   586,   587,   588,   589,   590,   591,   592,   140,     0,   140,
+     0,   156,   156,   156,     0,     0,   450,  1593,     0,     0,
+     0,     0,   140,   493,   220,   896,     0,   450,     0,     0,
+     0,   493,     0,     0,     0,     0,     0,  -580,     0,  -580,
+  -580,   688,  -580,     0,     0,   688,   450,     0,   112,  1492,
+     0,     0,     0,  -580,     0,  -580,     0,   258,   940,     0,
+     0,     0,     0,     0,     0,     0,     0,   421,   424,   957,
+     0,  -580,  -580,   156,     0,     0,   156,   300,     8,     9,
+    10,   258,     0,   688,     0,     0,  -580,     0,     0,   688,
+     0,   156,   156,   156,     0,     0,   421,  1324,     0,   557,
+   829,     0,     0,   548,     0,     0,   156,     0,     0,     0,
+   258,     0,     0,  1334,     0,    21,     0,     0,     0,     0,
+     0,   258,   251,     0,     0,   638,     8,     9,    10,     0,
+    27,   319,     0,     0,     0,     0,   688,     0,     0,     0,
+     0,   339,     0,     0,     0,     0,     0,  1369,  1370,  1371,
+  1372,     0,     0,     0,   252,     0,     0,   214,   215,   216,
+   308,   639,    32,    21,    14,   688,     0,   908,     7,   127,
+   128,    10,     0,     0,    13,     0,    26,   688,   130,   131,
+   258,    18,     0,     0,     0,     0,    20,   220,   127,   128,
+     0,     0,     0,    13,     0,    23,    18,     0,     0,     0,
+   727,     0,     0,     0,   411,   413,    21,   733,     0,   726,
+  1407,   688,   519,   688,     0,   258,   726,     0,     0,    26,
+     0,    27,    28,     0,     0,     0,   212,     0,   220,   237,
+     0,   619,     0,     0,     0,    30,     0,     0,    26,   258,
+   130,   131,     0,   724,   728,    31,   744,   745,     0,   756,
+     0,   728,     0,    32,   620,     0,     0,     0,    33,     0,
+     0,   491,   215,   216,   621,     0,     0,     0,    14,     0,
+     0,     0,   220,   804,   622,     0,  1046,   623,   624,     0,
+     0,   339,   726,   140,   140,    18,   140,     0,  1467,     0,
+    20,     0,     0,     0,   493,     0,     0,   450,   688,    23,
+     0,     0,     0,     0,     0,   667,     0,     0,     0,     0,
+     0,     0,     0,     0,   212,     0,   339,   728,   940,     0,
+   450,  1487,     0,   702,   703,     0,   706,   688,     0,     0,
+     0,   258,     0,   857,     0,     0,     0,  1188,     0,   858,
+     0,     0,   726,   156,     0,     0,     0,     0,   726,   339,
+     0,   724,     0,     0,   833,   834,     0,   838,   839,   840,
+   841,   842,   843,   844,   845,   846,   847,   848,   849,   850,
+   851,   852,   853,   854,   855,   856,   912,   728,   726,   300,
+     8,     9,    10,   728,     0,   726,     0,     0,  1520,   258,
+     0,     0,     0,     0,   836,  1520,     0,     0,     0,     0,
+  1011,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     0,   421,  1324,   728,   557,     0,     0,    21,     0,     0,
+   728,     0,     0,     0,   251,     0,     0,     0,     0,     0,
+     0,  1062,    27,   319,     0,     0,     0,  1067,     0,   156,
+   156,   908,   925,   927,     0,     0,   471,   473,   477,   127,
+   128,     0,     0,   215,   216,     0,   521,     0,   339,    14,
+     0,     0,     0,     0,    32,     0,     0,  1240,     0,     0,
+   300,   394,   395,    10,     0,  1520,     0,     0,   237,   258,
+     0,    20,     0,   140,   140,   908,     0,     0,     0,     0,
+    23,  1595,   619,     0,     0,   477,     0,     0,     0,    26,
+     0,   130,   131,     0,     0,     0,   724,   258,    21,     0,
+     0,     0,     0,  1608,     0,   620,     0,     0,     0,     0,
+   836,    26,     0,    27,   319,   621,     0,  1046,     0,   116,
+   971,   972,   908,  1014,     0,   622,     0,     0,   630,   624,
+  1123,     0,  1124,     0,     0,     0,     0,     0,     0,     0,
+     0,  1025,     0,  1282,   726,    32,  1015,     0,     0,  1240,
+   628,   632,   635,  1016,     0,     0,   450,   450,     0,     0,
+     0,   339,   339,     0,   339,     0,     0,     0,     0,     0,
+    26,     0,   119,   120,     0,     0,     0,     0,     0,   728,
+     0,     0,     0,     0,   258,   450,     0,     0,     0,  1097,
+  1098,     0,     0,     0,     0,  1103,     0,     0,   726,   726,
+   258,  1088,     0,     0,   726,     0,     0,     0,     0,  1115,
+     0,  1116,     0,  1117,     0,     0,     0,     0,   726,     0,
+   726,     0,   726,     0,   300,   127,   128,    10,     0,     0,
+     0,     0,     0,   728,   728,     0,     0,     0,   724,   728,
+     0,     0,     0,   744,   745,   471,   473,   477,     0,   688,
+     0,   756,     0,   728,     0,   728,     0,   728,     0,  1145,
+     0,     0,    21,     0,     0,  1409,  1410,     0,   726,   251,
+  1037,  1038,     9,    10,   471,   473,   477,    27,   319,     0,
+   140,   140,   156,   156,   908,     0,     0,     0,   140,     0,
+     0,     0,     0,  1138,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   728,  1230,  1166,  1232,  1356,    21,    32,
+     0,   156,   156,   908,   726,     0,     0,     0,   339,     0,
+     0,    26,     0,    27,    28,     0,     0,  1208,     0,  1039,
+     0,  1162,     0,   726,     0,     0,     0,   193,     0,     0,
+     0,     0,   450,   450,     0,   450,   450,   194,   450,   728,
+     0,     0,     0,     0,     0,    32,     0,  1473,     0,     0,
+   195,  1263,   744,   745,     0,   756,     8,     9,   728,     0,
+    12,    13,     0,     0,     0,     0,    14,    80,     0,  1491,
+  1494,     0,     7,   127,   128,    10,     0,   104,   246,     0,
+    16,     0,    17,     0,     0,     0,     0,   133,    20,   140,
+   140,     0,   140,   144,   144,     0,   144,    23,    80,     0,
+    18,     0,  1215,     0,     0,    80,    26,     0,   130,   131,
+    21,     0,   886,   888,     0,     0,     0,     0,   203,     0,
+    80,     0,     0,    26,     0,    27,    28,     0,   238,   212,
+   220,  1340,     0,     0,     0,   104,  1344,     0,     0,    30,
+     0,     0,     0,     0,     0,   862,   262,   104,     0,    31,
+  1538,     0,   724,   724,     0,     0,  1243,    32,     0,     0,
+     0,     0,    33,   450,   450,     0,   258,     0,   258,   104,
+     0,     0,     0,     0,     0,     0,   339,   625,   625,   625,
+   951,     0,   628,   632,     0,   635,     0,  1381,     0,  1278,
+     0,  1279,     0,  1280,     0,     0,     0,   133,   726,    80,
+   726,     0,   726,   144,   144,     0,   477,     0,   412,   144,
+   258,     0,   144,   144,   144,     0,     0,     0,     0,     0,
+     8,     9,     0,     0,    12,   246,     0,   632,    80,     0,
+    14,     0,    80,   728,     0,   728,     0,   728,   203,    80,
+   214,   215,   216,   156,    16,   724,    17,    14,     0,     0,
+     0,     0,    20,     0,   724,   724,   203,   203,   203,   724,
+     0,    23,     0,   619,    18,   450,   450,   450,     0,    20,
+    26,     0,   130,   131,     0,     0,  1346,  1347,    23,   471,
+   473,   477,     0,     0,     0,   203,   620,     0,  1383,     0,
+  1458,  1459,     0,   918,     0,     0,   621,   726,     0,     0,
+     0,   724,   502,     0,   632,   258,   622,  1469,     0,   623,
+   624,   104,     0,     0,     0,     0,   156,   156,   156,     0,
+     0,     0,   144,     0,   450,   450,     0,     0,     0,    95,
+   110,   111,   728,   225,   226,   227,   579,   580,   581,   582,
+   583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     7,   127,   128,    10,     0,     0,  1402,    18,     0,     0,
+   104,   530,   228,     0,     0,     0,  1505,  1506,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,  1118,    18,  1119,
+     0,     0,   112,   113,     0,  1515,  1516,     0,    21,   258,
+  1125,     0,   450,     0,   886,   888,   724,     0,     0,     0,
+     0,    26,     0,    27,    28,   104,     0,     0,     0,   617,
+     0,   530,   530,   633,     0,  1448,   258,   149,     0,     8,
+     9,     0,    80,    12,    13,     0,     0,   150,     0,    14,
+     0,     0,     0,     0,     0,    32,     0,   724,   886,   888,
+   151,     0,     0,    16,     0,    17,     0,     0,     0,   625,
+   625,    20,   625,     0,   726,     0,   133,     0,     0,   906,
+    23,     0,     0,     0,     0,   104,     0,   203,   104,    26,
+     0,   130,   131,   602,     8,     9,     0,   258,    12,   246,
+     0,     0,   144,     0,    14,   144,     0,     0,     0,   728,
+     0,     0,     0,     0,     0,     0,     0,   144,    16,     0,
+    17,     0,     0,     0,     0,    80,    20,     0,   603,  1507,
+  1508,     0,     0,     0,     0,    23,     0,   625,  1513,   625,
+   625,     0,   625,     0,    26,     0,   130,   131,     0,     0,
+     0,     0,     0,   203,     0,   203,     0,   203,   203,   203,
+     0,     0,     0,   203,     0,     0,  1533,     0,   203,     0,
+     0,   203,   300,     8,     9,    10,     0,    12,   301,   302,
+   303,     0,   304,    14,   625,     0,     0,     0,     0,    80,
+     0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
+    18,    19,     0,   306,   307,    20,     0,   308,   309,   310,
+    21,   311,   312,     0,    23,     0,   619,     0,   313,   314,
+   315,   316,   317,    26,     0,    27,   319,   104,   104,   104,
+   104,     7,     8,     9,    10,     0,   321,     0,     0,   902,
+     0,     0,     0,     0,     0,     0,     0,   323,   324,   903,
+     0,     0,     0,     0,     0,   326,   327,   328,     0,   622,
+     0,   625,   904,   624,     0,  1118,  1119,   886,   888,    21,
+     0,     0,     0,  1125,     0,   619,     0,     0,     0,   330,
+     0,     0,    26,     0,    27,    28,     0,   104,     0,   530,
+     0,     0,     0,     0,     0,   724,   886,   888,   946,     0,
+     0,   617,     0,   530,   530,     0,   633,     0,   947,     0,
+     0,     0,     0,   909,     0,     0,    32,   911,   622,     0,
+     0,   948,   624,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   203,     0,   625,     0,   625,     0,     8,     9,
+     0,   167,    12,    13,     0,     0,   732,   625,    14,     0,
+     0,   906,   906,   906,     0,     0,   133,     0,     0,     0,
+     0,     0,    16,   133,    17,    18,     0,     0,     0,     0,
+    20,   203,   953,   203,   203,   238,   633,     0,     0,    23,
+     0,   619,     0,     0,  1118,  1119,     0,  1125,    26,     0,
+   130,   131,     0,     0,     0,   625,   625,   625,     0,     0,
+     0,     0,     0,     0,   620,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   621,     0,     0,     0,   203,     0,
+     0,     0,   953,     0,   622,     0,     0,   623,   624,   203,
+   203,     0,   203,     0,     0,     7,     8,     9,    10,   214,
+   215,   216,     0,     0,   906,     0,    14,     0,     0,   133,
+     0,     0,    80,     0,    80,     0,     0,     0,     0,  1048,
+    80,    80,     0,    18,   127,   128,     0,    80,    20,   246,
+   104,     0,     0,    21,     0,     0,   104,    23,     0,   619,
+     0,     0,     0,   530,   530,   530,    26,     0,    27,    28,
+     0,     0,     0,     0,     0,   530,     0,     0,     0,     0,
+     0,     0,   946,     0,     0,     0,     0,   619,    83,     0,
+     0,     0,   947,     0,    26,     0,   130,   131,   106,     0,
+    32,     0,   622,     0,     0,   948,   624,   126,   134,     0,
+   620,     0,     0,     0,   145,   145,     0,   145,     0,    83,
+   621,     0,     0,     0,     0,     0,    83,     0,     0,     0,
+   622,     0,     0,   623,   624,     0,     0,     0,     0,   145,
+     0,    83,     0,     0,     0,     0,     0,     0,   530,   239,
+   530,     0,     0,     0,     0,     0,   248,   104,     0,     0,
+     0,   530,     0,   104,     0,   909,   909,   909,   248,     0,
+     0,     0,     0,  1132,     0,     0,     0,     0,     7,   127,
+   128,    10,   625,   625,   625,   625,   625,     0,     0,     0,
+   625,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+   589,   590,   591,   592,     0,   104,    18,   104,     0,   203,
+   203,  1159,     0,   906,   906,   906,    21,     0,     0,     0,
+    83,     0,     0,     0,   145,   145,     0,     0,     0,    26,
+   145,    27,    28,   145,   145,   145,     0,     0,     7,     8,
+     9,    10,     0,     0,    13,    30,     0,     0,     0,    83,
+     0,     0,     0,    83,     0,    31,     0,     0,  1159,   145,
+    83,     0,     0,    32,     0,     0,    18,     0,    33,     0,
+     0,   104,     0,     0,     0,     0,    21,   145,   145,   145,
+     0,     0,   619,     0,     0,     0,     0,   104,     0,    26,
+  1048,    27,    28,     0,     0,     0,     0,     0,     0,   104,
+     0,   625,   625,     0,   625,   946,   145,     0,     0,     0,
+     0,     0,  1220,     0,     0,   947,     0,     0,     0,     0,
+     0,     0,    51,    32,    80,   622,     0,     0,   948,   624,
+     0,     0,     0,   104,     0,   104,     0,     0,     7,   127,
+   128,    10,     0,   145,    13,     0,     0,     0,    51,    51,
+     0,   152,     0,    51,     8,     9,     0,     0,    12,    13,
+    51,     0,     0,   104,    14,     0,    18,     0,   530,   530,
+     0,   530,     0,    51,     0,    51,    21,     0,    16,     0,
+    17,   248,   145,     0,     0,     0,    20,     0,     0,    26,
+     0,    27,    28,     0,     0,    23,     0,     0,   254,     0,
+     0,     0,     0,     0,    26,   149,   130,   131,     0,     0,
+     0,     0,     0,     0,     0,   150,   203,   203,   203,   203,
+  1159,     0,     0,    32,   203,     0,   248,     0,   151,     0,
+   618,     0,   145,   145,   634,     0,     0,     0,     0,   643,
+     0,     0,     0,    83,     0,     0,     0,  1159,  1159,  1159,
+     0,   396,   396,     0,    51,     0,     0,     0,    51,    51,
+     0,     0,   254,     0,    51,     0,     0,   152,   152,   152,
+     0,     0,     0,     0,   431,     0,     0,   680,     0,     0,
+   203,     0,     0,    51,     0,   144,   248,    51,   145,   248,
+     0,     0,     0,    51,    51,     0,     0,     0,     0,     0,
+     0,     0,     0,   145,     0,     0,   145,     0,     0,     0,
+     0,    51,    51,   152,     0,     0,     0,     0,   145,     0,
+     0,   254,     0,     0,     0,     0,    83,     0,     0,     0,
+     0,     0,     0,     0,     0,   203,   203,     0,   203,     0,
+    51,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+   590,   591,   592,     0,   145,     0,   145,     0,   145,   145,
+   145,     0,     0,     0,   145,     0,     0,     0,     0,   145,
+     0,     0,   145,     0,   203,   953,   203,    51,     0,   764,
+     0,     7,     8,   765,    10,   167,    12,    13,     0,     0,
+    83,     0,    14,   104,     0,     0,     0,     0,     0,     0,
+     0,  1037,  1038,     9,    10,     0,    16,     0,    17,    18,
+    19,     0,     0,     0,    20,  -526,     0,     0,     0,    21,
+     0,     0,     0,    23,   766,     0,   168,     0,   248,   248,
+   248,   248,    26,     0,    27,    28,     0,     0,   767,    21,
+   768,     7,     8,     9,    10,     0,     0,   558,    30,     0,
+     0,     0,    26,     0,    27,    28,     0,     0,    31,     0,
+  1039,     0,     0,     0,   396,     0,    32,     0,   193,     0,
+     0,    33,   254,     0,     0,     0,     0,    51,   194,    21,
+     0,     0,     0,     0,     0,     0,    32,  -526,   248,  1159,
+   145,   195,    26,     0,    27,    28,     0,     0,   192,     0,
+     0,     0,     0,     0,   145,   145,     0,   634,   193,     0,
+     0,   396,     0,     0,   910,     0,     0,     0,   194,     0,
+     0,     0,    51,     0,     0,     0,    32,   643,     0,     0,
+     0,   195,     0,   145,     0,     0,     0,    51,     0,     0,
+    51,     0,     0,     0,     0,     0,   431,   431,   431,     0,
+     0,     0,    51,     0,     0,     0,     0,   680,    76,     0,
+    51,     0,  1159,  1159,  1159,   126,     0,     0,     0,     0,
+     0,     0,   145,   634,   145,   145,   239,   634,     0,     0,
+     0,   104,     0,     0,     0,     0,   203,     0,    51,    76,
+    51,     0,   152,   152,   152,     0,    76,     0,    51,     0,
+   983,     0,     0,    51,     0,     0,    51,     0,     0,   201,
+     0,   213,     0,     0,     0,     0,     0,     0,     0,   145,
+     0,     0,     0,   634,    51,     0,     0,     0,     0,     0,
+   145,   145,     0,   145,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   983,     0,     0,
+   134,     0,     0,    83,   558,    83,     0,   558,     0,     0,
+  1049,    83,    83,     0,     7,     8,     9,    10,    83,     0,
+   246,   248,   558,   558,   558,     0,     0,   248,     0,     0,
+     0,     0,     0,     0,   145,   145,   145,   558,     0,     0,
+   407,     0,    18,     0,   410,     0,   145,     0,     0,     0,
+     0,     0,    21,     0,     0,     0,     0,     0,   619,     0,
+     0,     0,     0,     0,     0,    26,     0,    27,    28,    76,
+     0,     0,     0,    76,     0,     0,     0,   127,   128,   201,
+   213,   946,   518,     0,     0,   254,     0,     0,     0,     0,
+     0,   947,     0,     0,     0,     0,     0,     0,   558,    32,
+     0,   622,     0,     0,   948,   624,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    51,     0,   145,
+   619,   145,     0,     0,     0,     0,   201,    26,   248,   130,
+   131,     0,   145,     0,   248,     0,   910,   910,   910,     0,
+     0,   396,     0,   620,   643,   127,   128,     0,   396,   215,
+   216,     0,     0,   621,     0,    14,    51,    51,    51,    51,
+     0,     0,     0,   622,     0,     0,   623,   624,     0,     0,
+   259,     0,     0,     0,     0,     0,   248,    20,   248,     0,
+   145,   145,   634,     0,     0,     0,    23,     0,   619,     0,
+     0,     0,     0,     0,     0,    26,     0,   130,   131,     0,
+     0,     0,     0,    51,     0,     0,     0,    51,     0,     0,
+     0,   620,     0,     0,    51,    51,     0,    51,     0,     0,
+     0,   621,     7,     8,     9,    10,   214,   215,   216,   910,
+     0,   622,     0,    14,   623,   624,     0,    51,     0,    51,
+     0,     0,   248,     0,    51,    51,    51,   434,     0,     0,
+    18,     0,    51,     0,     0,    20,     0,     0,   248,     0,
+    21,  1049,     0,   651,    23,     0,   619,     0,     0,     0,
+   248,     0,     0,    26,   558,    27,    28,     0,     0,   469,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   946,
+     0,     0,   485,     0,     0,    83,     0,     0,     0,   947,
+     0,     0,     0,     0,   248,     0,   248,    32,   201,   622,
+     0,     0,   995,   624,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     7,     8,     9,
+    10,   167,    12,    13,   248,     0,  1000,     0,    14,   145,
+   145,     0,   145,     0,     0,     0,    76,     0,     0,     0,
+     0,     0,    16,     0,    17,    18,     0,     0,     0,     0,
+    20,     0,     0,     0,     0,    21,     0,     0,     0,    23,
+   558,   558,   558,     0,     0,     0,   431,   254,    26,     0,
+    27,    28,     0,     0,   201,     0,     0,   145,   145,   145,
+   145,   634,   201,     0,    30,   145,    78,     0,     0,     0,
+     0,     0,   983,     0,    31,     0,     0,     0,     0,     0,
+   781,     0,    32,     0,    51,    51,   152,    33,   910,   910,
+   910,   254,    78,    78,     0,    78,     0,    78,     0,     0,
+     0,     0,     0,     0,    78,     0,     0,     0,     0,   983,
+     8,     9,     0,   167,    12,    13,     0,    78,     0,    78,
+    14,   145,     0,     0,     0,     0,   145,     0,     0,     7,
+     8,     9,    10,  1187,    16,    13,    17,    18,     0,     0,
+     0,     0,    20,     0,     0,     0,     0,     0,     0,     0,
+     0,   681,     0,     0,   168,     0,     0,    18,     0,     0,
+    26,     0,   130,   131,     0,    51,     0,    21,     0,     0,
+     0,     0,     0,     0,     0,     0,   145,   145,     0,   145,
+    26,     0,    27,    28,     0,     0,   254,     0,     0,     0,
+     0,     0,     7,     8,     9,    10,   193,     0,    78,    51,
+     0,     0,    78,    78,  1413,     0,   194,     0,    78,     0,
+     0,    78,    78,    78,    32,   145,   634,   145,     0,   195,
+    18,     0,     0,   201,     0,     0,     0,    78,     0,     0,
+    21,    78,     0,     0,   248,     0,   749,    78,    78,     0,
+   983,   755,     0,    26,     0,    27,    28,     0,     0,     0,
+     7,     8,     9,    10,     0,    78,    78,    78,     0,   474,
+     0,     0,   201,   952,   201,   201,     0,     0,   786,   475,
+   254,     0,     0,     0,   792,     0,   159,    32,     0,     0,
+     0,     0,   476,     0,    78,     0,   800,   801,    21,   802,
+     0,    51,    51,   152,   152,   152,     0,   254,   204,    51,
+     0,    26,     0,    27,    28,     0,     0,  1420,     0,   201,
+     0,     0,     0,  1001,     0,     8,     9,   193,   205,    12,
+   206,    78,  1187,  1187,  1187,    14,     0,   194,     0,     0,
+   910,     0,     0,     0,     0,    32,     0,     0,     0,    16,
+   195,    17,    18,   781,     0,   781,     0,    20,     0,     0,
+  1047,  1054,   781,     0,     0,    51,    23,     0,   781,     0,
+    51,     0,     0,     0,     0,    26,     0,   130,   131,     0,
+     0,     0,     0,     0,     0,     0,     0,     7,     8,     9,
+    10,     0,     0,     0,   897,   898,     0,     0,     0,   897,
+     0,     0,   159,   159,   159,     0,     0,     0,     0,     0,
+     0,     0,     0,   910,   910,   910,     0,     0,     0,     0,
+    51,    51,     0,    51,     0,    21,     0,   642,   204,     0,
+     0,    78,   248,     0,     0,     0,     0,   145,    26,     0,
+    27,    28,     0,     0,     0,     0,   204,   204,   478,     0,
+     0,     0,     0,     0,   193,     0,     0,     0,     0,    51,
+    51,    51,     0,     0,   194,     0,     0,     0,     0,     0,
+     0,     0,    32,     0,     0,   204,    78,   195,     0,     0,
+     0,     0,     0,     0,   202,     0,  1350,  1351,     9,    10,
+     0,    78,     0,     0,    78,     0,     0,     0,     0,     0,
+   369,   371,     0,     0,     0,     0,    78,     0,     0,   257,
+     0,     0,   261,     0,    78,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    21,     0,     0,     0,     7,     8,
+     9,    10,     0,   257,    13,   365,     0,    26,     0,    27,
+    28,     0,    78,     0,    78,  1352,    78,    78,    78,     0,
+     0,   531,    78,   193,     0,     0,    18,    78,     0,     0,
+    78,     0,  1069,   194,  1071,     0,    21,     0,     0,     0,
+     0,    32,   619,     0,  1187,     0,   195,     0,    78,    26,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,  1155,     0,     0,     0,     0,
+     0,   627,   627,   627,   202,  1156,     0,     0,     0,     0,
+     0,  1047,     0,    32,     0,   622,     0,     0,  1157,   624,
+     0,     0,   202,   202,   202,     0,     0,     0,     0,     0,
+     0,     0,   484,     0,     0,     0,  1105,  1106,     0,  1108,
+     0,     0,     0,     0,     0,   781,     0,  1187,  1187,  1187,
+     0,   202,     0,     0,     0,     0,     0,   204,     0,     7,
+     8,     9,    10,   167,    12,    13,     0,  1126,     0,     0,
+    14,    51,     0,     0,     0,     0,     0,   261,     0,     0,
+     0,     0,     0,     0,    16,     0,    17,    18,    19,     0,
+   642,   257,    20,     0,     0,     0,     0,    21,     0,     0,
+     0,    23,     0,     0,   168,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,     0,     0,     0,  1161,     0,
+     0,    78,   561,   204,     0,   204,    30,   478,   478,   478,
+     0,     0,     0,   204,     0,     0,    31,     0,   204,     0,
+     0,   204,     0,     0,    32,     0,     0,     8,     9,    33,
+   167,    12,    13,     0,    34,   732,     0,    14,     0,     0,
+    78,    78,    78,    78,     0,     0,     0,     0,     0,     0,
+     0,    16,     0,    17,    18,  1350,   127,   128,    10,    20,
+     0,     0,     0,   257,   261,     0,     0,     0,    23,     0,
+     0,  1206,     0,     0,     0,   687,     0,    26,     0,   130,
+   131,  1357,     0,  1211,     0,     0,  1357,    78,     0,     0,
+     0,    78,     0,    21,     0,     0,     0,     0,    78,    78,
+     0,    78,     0,     0,     0,     0,    26,     0,    27,    28,
+     0,     0,     0,   202,  1352,     0,     0,     0,     0,     0,
+     0,    78,    30,    78,     0,     0,     0,     0,    78,    78,
+    78,     0,    31,     0,     0,     0,    78,     0,     0,   871,
+    32,   734,     0,     0,     0,    33,     0,     0,     0,     0,
+     0,     0,     0,   627,   627,     0,   627,     0,     0,     0,
+     0,     0,     0,   627,     0,     0,     0,     0,     0,  1262,
+     0,     0,     0,     0,     0,   201,  1425,   201,     0,   202,
+     0,   202,   204,   202,   202,   202,     0,     0,     0,   202,
+     0,     0,     0,     0,   202,     0,     0,   202,     0,     7,
+     8,     9,    10,     0,     0,   518,     0,     0,  1275,   805,
+     0,     0,   808,     0,     0,     0,   810,   811,   813,   814,
+   815,   950,     0,   950,   950,     0,   627,    18,     0,   561,
+     0,     0,     0,     0,     0,     0,     0,    21,     0,     0,
+     0,     0,   832,   619,     0,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,     0,     0,     0,     0,     0,
+     0,     0,   642,     0,     0,     0,   946,     0,   950,     0,
+     0,     0,     0,  1365,     0,     0,   947,  1366,     0,   204,
+   204,     0,   204,     0,    32,     0,   622,     0,     0,   948,
+   624,     0,     0,     0,     0,     0,   889,     0,    78,    78,
+    78,     0,     0,   889,     0,     0,     0,     0,     0,   204,
+     0,     0,  1382,     0,     0,     0,     0,     0,     0,   764,
+     0,     7,     8,   765,    10,   167,    12,    13,     0,     0,
+     0,     0,    14,   531,   531,   531,     0,     0,     0,     0,
+     0,     0,   257,   261,     0,   627,    16,  1189,    17,    18,
+    19,     0,     0,     0,    20,  -527,     0,     0,   202,    21,
+     0,     0,     0,    23,   766,     0,   168,     0,     0,     0,
+     0,     0,    26,     0,    27,    28,     0,     0,   767,    78,
+   768,     0,     0,     0,     0,     0,     0,   201,    30,  1441,
+     0,     0,     0,  1442,     0,     0,     0,   202,    31,   202,
+   202,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+     0,    33,   687,    78,     0,  1460,  1461,     0,   627,     0,
+   627,     0,     0,     0,     0,     0,     0,  -527,     0,     0,
+     0,   627,     0,     0,     0,   627,   627,   627,     0,     0,
+     0,     0,     0,     0,   202,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   202,   202,     0,   202,     0,
+   734,     0,     0,     0,     0,     0,   734,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   950,
+   950,  1160,     0,     0,     0,   202,     0,     0,     0,     0,
+     0,     7,     8,     9,    10,   167,    12,    13,     0,     0,
+   732,     0,    14,     0,     0,    78,    78,    78,    78,    78,
+     0,     0,     0,    78,     0,     0,    16,     0,    17,    18,
+     0,     0,     0,     0,    20,     0,     0,     0,  1160,    21,
+     0,     0,     0,    23,  1099,   619,  1189,  1189,  1189,  1483,
+     0,     0,    26,     0,    27,    28,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  1155,     0,
+   204,     0,     0,     0,     0,     0,     0,   832,  1156,    78,
+     0,     0,     0,   734,    78,     0,    32,   889,   622,     0,
+     0,  1157,   624,     0,     0,     0,     0,     0,     0,  1484,
+   571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
+   581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
+   591,   592,     0,     0,     0,   687,     0,  1151,   257,   261,
+   257,   889,     0,     0,    78,    78,     0,    78,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   871,   871,
+     0,   871,     0,     0,     0,     7,   127,   128,    10,     0,
+     0,   518,     0,     0,     0,   202,   202,  1158,     0,     0,
+   102,     0,   257,    78,    78,    78,     0,     0,   889,   121,
+   102,     0,     0,    18,     0,     0,   102,   102,     0,   102,
+     0,  1193,     0,    21,     0,     0,   950,   950,  1160,  1160,
+  1160,     0,   261,     0,   950,     0,    26,   734,    27,    28,
+     0,     0,     0,     0,  1158,     0,     0,     0,     0,   734,
+     0,   235,    30,     0,     0,     0,     0,  1160,  1160,  1160,
+     0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+    32,     0,     0,     0,     0,    33,   202,     0,     0,     0,
+     0,     0,     0,   734,     0,   734,     0,     0,     0,     0,
+   204,     0,     0,     0,     0,     0,     0,   484,     0,     0,
+     7,     8,     9,    10,   214,   215,   216,     0,     0,     0,
+   389,    14,   121,  1248,     0,     0,     0,     0,  1189,   102,
+   102,     0,     0,     0,     0,     0,   102,   102,    18,     0,
+   102,   102,   102,    20,   417,   102,   102,   102,    21,     0,
+     0,     0,    23,     0,   619,   950,   950,     0,   950,     0,
+     0,    26,     0,    27,    28,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   193,     0,     0,
+   889,     0,     0,     0,     0,     0,     0,   194,     0,     0,
+     0,   257,     0,     0,   204,    32,   204,     0,     0,     0,
+  1426,  1189,  1189,  1189,     0,     0,     0,     0,     0,   889,
+     0,     0,   202,   202,   202,   202,  1158,     0,  1274,     0,
+   202,     0,     0,  1335,     0,    78,     0,     0,     0,     0,
+     0,     0,     0,     0,   235,   102,     0,     0,     0,     0,
+     0,     0,     0,  1158,  1158,  1158,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   102,     0,     0,     0,     0,
+   764,     0,     7,     8,   765,    10,   167,    12,    13,     0,
+     0,     0,     0,    14,     0,     0,   202,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    16,     0,    17,
+    18,    19,     0,     0,   102,    20,  -529,     0,     0,     0,
+    21,     0,     0,     0,    23,   766,     0,   168,     0,   478,
+     0,     0,     0,    26,     0,    27,    28,     0,     0,   767,
+     0,   768,     0,     0,     0,     0,     0,     0,     0,    30,
+     0,   202,   202,     0,   202,     0,     0,     0,     0,    31,
+     0,     0,   102,     0,   102,   102,     0,    32,     0,     0,
+     0,     0,    33,  1193,     0,     0,     0,     0,     0,     0,
+     0,     8,     9,     0,   167,    12,    13,     0,  -529,  1551,
+   202,    14,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   478,   478,   478,    16,     0,    17,    18,   102,
+     0,     0,     0,    20,     0,     0,     0,     0,     0,     0,
+     0,     0,    23,     0,     0,     0,   204,     0,   102,     0,
+     0,    26,     0,   130,   131,   102,     0,     0,   102,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   394,   396,    17,     0,    18,     0,     0,    77,   483,     0,
-    21,    50,     0,     0,     0,    50,     0,     0,     0,    24,
-     0,     0,    50,    50,     0,    50,     0,     0,    27,     0,
-   129,   130,     0,     0,     0,     0,     0,     0,     0,   732,
-     0,     7,     8,   733,    10,   386,    12,    13,   437,   439,
-   443,     0,    14,     0,     0,     0,    50,     0,    50,     0,
-     0,  1294,     0,    50,    50,    50,  1294,    17,   749,    18,
-    19,    20,     0,     0,     0,    21,  -495,     0,     0,     0,
-    22,     0,     0,     0,    24,   734,     0,   642,     0,     0,
-   443,     0,   522,    27,     0,    28,    29,     0,     0,   735,
-     0,   736,   603,     0,     0,     0,    77,     0,     0,    31,
-     0,     0,     0,     0,     0,   663,   664,     0,   666,    32,
-   998,     0,     0,     0,     0,     0,     0,    33,     7,     8,
-     9,    10,    34,     0,   227,   543,   544,   545,   546,   547,
-   548,   549,   550,   551,   552,   553,   554,   555,   556,  -495,
-  1357,     0,     0,     0,     0,    77,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    77,    22,     0,    77,
-     0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,     0,     0,     0,     0,   522,   522,
-   522,     0,     0,     0,   235,     0,   177,     0,     0,     0,
-     0,     0,     0,    77,     0,    77,   178,    77,    77,    77,
-     0,     0,     0,    77,    33,     0,     0,     0,    77,   179,
-     0,    77,   154,     0,     0,     0,    50,    50,   149,     0,
-     0,   706,     0,   235,     0,     0,   712,    77,     0,     0,
-     0,     0,   188,   701,   702,   437,   439,   443,     0,     0,
-     0,   713,     0,     0,     7,     8,     9,    10,   198,   199,
-   200,   753,     0,     0,     0,    14,     0,   759,  1135,     0,
-     0,     0,     0,   437,   439,   443,     0,     0,     0,   767,
-   768,     0,   769,    19,     0,     0,     0,     0,    21,     0,
-     0,     0,     0,    22,     0,     0,     0,    24,    50,   581,
-  1287,   126,   127,    10,  1293,     0,    27,     0,    28,    29,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   235,
-     0,     0,   907,     0,     0,     0,     0,     0,     0,     0,
-    50,     0,   908,     0,   154,   154,   154,     0,     0,    22,
-    33,     0,   584,     0,     0,   909,   586,   603,     0,     0,
-     0,     0,    27,     0,    28,    29,     0,     0,   701,   702,
-  1289,   713,     0,     0,     0,   188,   188,   444,    31,     0,
-     0,     0,     0,     0,     0,   864,   865,    77,    32,     0,
-   864,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-     0,    34,     0,     0,   188,     0,     0,     0,     0,     0,
-     0,   235,     0,     0,     0,     0,     7,     8,     9,    10,
-     0,     0,    13,     0,     0,     0,    77,    77,    77,    77,
-     0,    50,    50,   149,   149,   149,     0,   235,     0,    50,
+   102,  1428,     0,  1285,  1286,  1287,    10,   167,    12,   301,
+   302,   303,     0,   304,    14,  1288,     0,  1289,  1290,  1291,
+  1292,  1293,  1294,  1295,  1296,  1297,  1298,    15,    16,   305,
+    17,    18,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,  1299,    23,  1300,     0,     0,   313,
+   314,   315,   316,   317,    26,  1158,  1301,   319,   719,     0,
+  1302,   320,     0,     0,     0,     0,     0,   321,   102,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+   325,     0,     0,     0,     0,     0,   326,   327,   328,     0,
+     0,     0,     0,   329,   561,  1303,   102,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  1429,
+   330,   687,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,  1158,  1158,
+  1158,     0,     0,     0,     0,  1454,     0,  -479,  -479,  -479,
+  -479,  -479,  -479,  -479,     0,     0,  -479,     0,  -479,     0,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,  -479,
+     0,  -479,     0,     0,     0,  -479,     0,     0,     0,     0,
+  -479,     0,   102,     0,     0,  -479,     0,     0,     0,  -479,
+     0,  -479,     0,   102,   102,     0,   102,   102,  -479,     0,
+  -479,  -479,  -479,  -479,  -479,     0,  -479,  -479,  -479,  -479,
+  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,     0,
+  -479,  -479,  -479,     0,  -479,  -479,  -479,  -479,  -479,  -479,
+     0,  -479,     0,     0,     0,     0,  1455,     0,     0,   102,
+     0,  -479,  -479,  -479,     0,  -479,   102,   121,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   235,     0,
+     0,     0,     0,     0,     0,     0,     0,  1284,     0,  1285,
+  1286,  1287,    10,   167,    12,   301,   302,   303,     0,   304,
+    14,  1288,   980,  1289,  1290,  1291,  1292,  1293,  1294,  1295,
+  1296,  1297,  1298,    15,    16,   305,    17,    18,    19,     0,
+   306,   307,    20,     0,   308,   309,   310,    21,   311,   312,
+  1299,    23,  1300,     0,     0,   313,   314,   315,   316,   317,
+    26,     0,  1301,   319,   719,     0,  1302,   320,     0,   980,
+     0,     0,   102,   321,     0,     0,   322,     0,     0,     0,
+     0,     0,     0,     0,   323,   324,   325,     0,     0,     0,
+     0,     0,   326,   327,   328,     0,     0,     0,     0,   329,
+     0,  1303,     0,     0,     0,     0,   102,   102,   102,     0,
+     0,     0,     0,     0,     0,     0,   330,     0,   102,     0,
+   553,     0,   300,     8,     9,    10,   167,    12,   301,   302,
+   303,   732,   304,    14,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
+    18,    19,     0,   306,   307,    20,     0,   308,   309,   310,
+    21,   311,   312,     0,    23,     0,   619,     0,   313,   314,
+   315,   316,   317,    26,     0,    27,   319,  -312,     0,     0,
+   320,     0,     0,     0,     0,     0,   321,     0,     0,   902,
+     0,   102,     0,   102,     0,     0,     0,   323,   324,   903,
+     0,     0,     0,     0,   102,   326,   327,   328,     0,   622,
+     0,     0,   904,   624,   553,     0,     7,     8,     9,    10,
+   167,    12,   301,   302,   303,   732,   304,    14,     0,   330,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     7,     8,     9,    10,    22,     0,   482,     0,     0,
-     0,  1135,  1135,  1135,     0,     0,     0,     0,    27,    77,
-    28,    29,     0,    77,     0,     0,     0,   495,     0,     0,
-    77,    77,     0,    77,   440,     0,     0,     0,     0,     0,
-    22,     0,    50,     0,   441,     0,     0,    50,     0,    50,
-     0,     0,    33,    27,     0,    28,    29,   442,     0,   443,
-     0,     0,   126,   127,    77,     0,    77,   482,     0,   177,
-     0,    77,    77,    77,     0,     0,   589,   589,   589,   178,
-     0,     0,     0,     0,     0,     0,   186,    33,     7,     8,
-     9,    10,   179,     0,     0,     0,    50,    50,     0,    50,
-     0,     0,     0,     0,     0,     0,   581,     0,  1020,     0,
-  1022,   238,     0,    27,   242,   129,   130,     0,     0,     0,
-     0,     0,   437,   439,   443,     0,     0,    22,     0,   582,
-    50,    50,    50,     0,     0,   238,   188,   345,     0,   583,
-    27,     0,    28,    29,     0,     0,  1352,     0,     0,   584,
-     0,     0,   585,   586,     0,     0,   177,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   178,     0,     0,     0,
-     0,     0,     0,     0,    33,     0,     0,     0,     0,   179,
-     0,     0,  1055,  1056,   188,  1058,   188,     0,   444,   444,
-   444,     0,     0,     0,   188,     0,     0,     0,     0,   188,
-     0,     0,   188,   603,     0,     0,     0,     0,     0,   186,
-   186,   186,     0,  1076,     0,     0,     0,     0,     0,   450,
-     8,     9,     0,   386,    12,    13,     0,     0,   688,     0,
-    14,     0,     0,     0,    77,    77,    77,  1135,   186,     0,
-     0,     7,   126,   127,    10,    17,     0,    18,    19,     0,
-     0,     0,     0,    21,     0,     0,     0,     0,  1110,     0,
-     0,   242,    24,     0,   581,     0,     0,     0,     0,     0,
-     0,    27,     0,   129,   130,   238,  1137,     0,     0,     0,
-    22,     0,     0,     0,     0,     0,     0,   582,     0,     0,
-     0,     0,     0,    27,     0,    28,    29,   583,     0,     0,
-  1135,  1135,  1135,     0,     0,     0,    77,   584,     0,   146,
-   585,   586,     0,     0,   689,     0,   838,     0,     0,   147,
-     0,     0,  1152,    50,     0,     0,     0,    33,     0,     0,
-   589,   589,   148,   589,  1157,     0,     0,     0,    77,     0,
-   589,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     8,     9,     0,   386,    12,    13,     0,     0,   188,     0,
-    14,     0,     0,     0,     0,     0,   238,   242,     0,     0,
-     0,     7,     8,     9,    10,    17,     0,    18,    19,     0,
-     0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
-     0,     0,   641,     0,     0,   642,     0,   911,     0,   911,
-   911,    27,   589,   129,   130,     0,     0,     0,     0,     0,
-    22,     0,     0,     0,     0,     0,     0,     0,  1207,     0,
-   186,     0,     0,    27,     0,    28,    29,     0,     0,    77,
-    77,    77,    77,    77,     0,     0,     0,    77,     0,   440,
-   911,     0,     0,     0,     0,     0,     0,     0,     0,   441,
-     0,   188,   188,     0,   188,     0,  1220,    33,     0,  1137,
-  1137,  1137,   442,     0,     0,     0,     0,     0,   186,     0,
-   186,     0,   186,   186,   186,     0,     0,     0,   186,     0,
-     0,     0,     0,   186,     0,     0,   186,     0,     0,     0,
-    77,     0,   188,     0,     0,    77,     0,    77,     0,     0,
-     0,     0,     0,     0,     0,   732,     0,     7,     8,   733,
-    10,   386,    12,    13,     0,   495,   495,   495,    14,  1302,
-     0,     0,     0,  1303,     0,     0,     0,   589,     0,     0,
-     0,     0,     0,    17,     0,    18,    19,    20,     0,     0,
-     0,    21,  -494,     0,    77,    77,    22,    77,     0,     0,
-    24,   734,     0,   642,     0,     0,  1318,     0,     0,    27,
-     0,    28,    29,     0,     0,   735,     0,   736,     7,     8,
-     9,    10,     0,     0,     0,    31,     0,     0,    77,    77,
-    77,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-     0,     0,     0,    33,     0,     0,     0,     0,    34,     0,
-   589,     0,   589,     0,     0,     0,     0,    22,     0,     0,
-     0,     0,     0,   589,     0,  -494,     0,   589,   589,   589,
-    27,     0,    28,    29,     0,  1370,     0,   238,   242,  1371,
-     0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
-     8,     9,   186,   386,    12,    13,   178,     0,  1470,     0,
-    14,  1389,  1390,     0,    33,   911,   911,  1109,     0,   179,
-     0,     0,     0,     0,     0,    17,     0,    18,    19,     0,
-     0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
-     0,   186,    24,   186,   186,  1137,     0,     0,     0,     0,
-     0,    27,     0,   129,   130,     0,     0,  1109,     0,     0,
-     7,     8,     9,    10,   198,   199,   200,     0,   101,     0,
-     0,    14,     0,     0,     0,     0,     0,     0,   120,   101,
-     0,     0,     0,     0,   186,   101,   101,   188,   101,    19,
-     0,     0,     0,     0,    21,   186,   186,     0,   186,    22,
-     0,     0,     0,    24,     0,   581,     0,     0,  1137,  1137,
-  1137,     0,    27,     0,    28,    29,     8,     9,   219,   189,
-    12,   190,     0,   242,     0,     0,    14,     0,   907,     0,
-     0,    77,     0,     0,     0,     0,   186,     0,   908,     0,
-     0,    17,     0,    18,    19,     0,    33,     0,   584,    21,
-     0,   949,   586,     0,     0,     0,     0,     0,    24,     0,
-     0,     0,     0,   838,   838,     0,   838,    27,     0,   129,
-   130,     0,     0,     0,     0,     0,     0,   369,     0,   120,
-     0,     0,   101,     0,     0,     0,   101,   101,     0,     0,
-     0,     0,     0,   101,     0,   101,   101,   101,     0,     0,
-   101,   101,   101,     0,     0,     0,     0,     0,     0,     0,
-   911,   911,  1109,  1109,  1109,     0,     0,     0,   911,   539,
-   540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-   550,   551,   552,   553,   554,   555,   556,     0,     0,     0,
-  1109,  1109,  1109,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   732,     0,     7,
-     8,   733,    10,   386,    12,    13,     0,   238,   242,   238,
-    14,   188,     0,     0,   465,   101,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,     0,    18,    19,    20,
-     0,     0,     0,    21,   101,     0,     0,     0,    22,   186,
-   186,  1107,    24,   734,     0,   642,   238,     0,     0,     0,
-     0,    27,     0,    28,    29,     0,     0,   735,     0,   736,
-     0,     0,     0,     0,     0,   911,   911,    31,   911,     0,
-     0,     0,     0,   101,     0,     0,     0,    32,     0,     0,
-     0,  1107,     0,     0,     0,    33,     0,     0,     0,   244,
-    34,     0,     8,     9,     0,     0,    12,    13,     0,   188,
-     0,   188,    14,     0,     0,     0,     0,     0,     0,     0,
-     0,   186,     0,     0,     0,     0,     0,    17,     0,    18,
-   101,     0,   101,   101,     0,    21,     0,   245,   246,     0,
-     0,     0,   450,     0,    24,     0,   247,     0,     0,     0,
-     0,     0,     0,    27,     0,   129,   130,     0,   248,   101,
-     0,     0,   249,   250,   251,   252,   253,   254,   255,   256,
-   257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-   267,   268,   269,   101,     0,   270,   271,   272,     0,     0,
-   273,     0,     0,   274,     0,     0,     0,     0,     0,   101,
-     0,     0,     0,   101,     0,     0,   101,     0,     0,     0,
-   275,   101,     0,     0,     0,     0,   444,     0,     0,     0,
-     0,     0,     0,     0,   238,   540,   541,   542,   543,   544,
-   545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
-   555,   556,     0,     0,   186,   186,   186,   186,  1107,     0,
-  1219,     0,   186,   542,   543,   544,   545,   546,   547,   548,
-   549,   550,   551,   552,   553,   554,   555,   556,     0,     0,
-     0,   101,     0,   724,  1107,  1107,  1107,     0,     0,   444,
-   444,   444,     0,     0,     0,     0,     0,     0,     7,     8,
-     9,    10,   386,    12,    13,     0,     0,   955,   101,    14,
-     0,     0,   188,     0,     0,   186,     0,     0,     0,     0,
-     0,     0,     0,     0,    17,     0,    18,    19,     0,     0,
-     0,     0,    21,     0,     0,     0,     0,    22,     0,     0,
-     0,    24,     0,     0,     0,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,  1383,     0,  -449,  -449,  -449,  -449,
-  -449,  -449,  -449,     0,     0,  -449,    31,  -449,     0,   186,
-   186,     0,   186,     0,     0,     0,    32,     0,  -449,     0,
-  -449,  -449,   101,     0,    33,  -449,     0,     0,     0,    34,
-  -449,     0,     0,   101,   101,  -449,   101,   101,     0,  -449,
-     0,  -449,     0,   186,     0,   186,     0,     0,  -449,     0,
-  -449,  -449,  -449,  -449,  -449,     0,  -449,  -449,  -449,  -449,
-  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,
-  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,     0,
-  -449,  -449,  -449,     0,  -449,  -449,  -449,  -449,  -449,  -449,
-     0,  -449,  -449,     0,     0,   120,     0,  1384,     0,     0,
-     0,     0,  -449,  -449,  -449,     0,  -449,   219,     0,     0,
-   161,     0,     7,     8,     9,    10,    11,    12,    13,     0,
-     8,     9,     0,    14,    12,    13,   724,     0,     0,     0,
-    14,     0,     0,     0,     0,     0,    15,    16,    17,     0,
-    18,    19,    20,     0,     0,    17,    21,    18,     0,     0,
-  1107,    22,     0,    21,    23,    24,    25,     0,    26,     0,
-     0,     0,    24,     0,    27,     0,    28,    29,     0,     0,
-    30,    27,     0,   129,   130,     0,     0,     0,     0,     0,
-    31,     0,     0,     0,     0,   724,     0,     0,   101,     0,
-    32,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-     0,     0,     0,    34,     0,     0,     0,     0,     0,    35,
-     0,     0,     0,  1107,  1107,  1107,     0,     0,     0,     0,
-     0,   101,   101,   101,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   101,     0,  1360,   186,  1230,  1231,  1232,
-    10,   386,    12,   282,   283,   284,     0,   285,    14,  1233,
-     0,  1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,
-  1243,    15,    16,    17,   286,    18,    19,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,  1244,   299,   675,     0,  1245,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,   101,     0,   101,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,   101,
-     0,   306,   307,   308,     0,     0,     0,     0,   309,     0,
-  1246,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  1361,   310,  1229,     0,  1230,
-  1231,  1232,    10,   386,    12,   282,   283,   284,     0,   285,
-    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,  1239,  1240,
-  1241,  1242,  1243,    15,    16,    17,   286,    18,    19,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,  1244,   299,   675,     0,  1245,   300,     0,
-     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   305,   724,     0,
-     0,     0,     0,   306,   307,   308,     0,     0,     0,     0,
-   309,   517,  1246,   281,     8,     9,    10,   386,    12,   282,
-   283,   284,   688,   285,    14,   101,     0,     0,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
-   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,   581,     0,
-   294,   295,   296,   297,   298,    27,     0,    28,   299,  -285,
-     0,     0,   300,     0,     0,     0,     0,     0,   301,   101,
-   101,   869,   101,     0,     0,     0,     0,     0,     0,   303,
-   304,   870,     0,     0,     0,     0,     0,   306,   307,   308,
-     0,   584,     0,     0,   871,   586,     0,   517,   689,     7,
-     8,     9,    10,   386,    12,   282,   283,   284,   688,   285,
-    14,     0,   310,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,   286,    18,    19,    20,
-   724,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,   581,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,    29,  -285,     0,     0,   300,     0,
-     0,     0,   724,     0,   301,     0,     0,  1132,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,  1133,     0,     0,
-   101,     0,   101,   306,   307,   308,     0,   584,     0,     0,
-  1134,   586,     0,   687,   689,   281,     8,     9,    10,   386,
-    12,   282,   283,   284,   688,   285,    14,     0,   310,     0,
+     0,    16,   305,    17,    18,    19,     0,   306,   307,    20,
+     0,   308,   309,   310,    21,   311,   312,     0,    23,     0,
+   619,     0,   313,   314,   315,   316,   317,    26,     0,    27,
+    28,  -312,     0,     0,   320,     0,     0,     0,     0,     0,
+   321,     0,     0,  1184,     0,     0,     0,     0,     0,   980,
+     0,   323,   324,  1185,     0,     0,     0,     0,     0,   326,
+   327,   328,     0,   622,     0,     0,  1186,   624,   731,     0,
+   300,     8,     9,    10,   167,    12,   301,   302,   303,   732,
+   304,    14,     0,   330,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
+     0,   306,   307,    20,     0,   308,   309,   310,    21,   311,
+   312,     0,    23,     0,     0,   102,   313,   314,   315,   316,
+   317,    26,     0,    27,   319,     0,     0,     0,   320,     0,
+     0,     0,     0,     0,   321,     0,     0,   322,     0,     0,
+     0,     0,     0,     0,     0,   323,   324,   325,     0,     0,
+     0,     0,     0,   326,   327,   328,     0,     0,     0,     0,
+   329,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   102,   102,     0,   102,  -799,   835,   330,   300,     8,
+     9,    10,   167,    12,   301,   302,   303,     0,   304,    14,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    17,   286,    18,    19,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,     0,     0,     0,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     0,     0,     0,     0,   309,     0,     0,     0,
-   689,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -759,   802,   310,   281,     8,     9,    10,   386,
-    12,   282,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    17,   286,    18,    19,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,  1449,     0,  -749,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     0,     0,     0,   678,   309,   790,   791,   792,
-    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
-     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,   793,   794,   679,     0,     0,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,     0,   309,   795,
-   678,     0,   790,   791,   792,    10,     0,    12,   499,   283,
-   284,     0,   285,    14,     0,   940,   310,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
-    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,   793,   794,   679,     0,
-     0,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,     0,   309,   795,   678,     0,   790,   791,   792,
-    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
-     0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,   793,   794,   679,     0,     0,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,   678,   309,   790,
-   791,   792,    10,     0,    12,   499,   283,   284,     0,   285,
-    14,     0,     0,     0,     0,  -453,   310,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,   793,   794,   679,     0,     0,   300,     0,
-     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
-     0,     0,     0,   306,   307,   308,     0,     0,     0,   678,
-   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
-     0,   285,    14,     0,     0,     0,     0,  1263,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
-     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,    28,   299,   679,     0,     0,
-   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
-     0,     0,   309,     0,     0,   517,     0,   281,     8,     9,
-    10,  1267,    12,   282,   283,   284,     0,   285,    14,     0,
-   310,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,   299,  -285,     0,     0,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   518,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   519,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,   678,   520,   281,
-     8,     9,    10,     0,    12,   499,   283,   284,     0,   285,
-    14,     0,     0,     0,     0,     0,   310,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,   299,   679,     0,     0,   300,     0,
-     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
-     0,     0,     0,   306,   307,   308,     0,     0,     0,   802,
-   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
-     0,   285,    14,     0,     0,     0,     0,     0,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
-     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,    28,   299,     0,     0,     0,
-   300,  -749,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
-     0,   517,   309,     7,     8,     9,    10,     0,    12,   282,
-   283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
-   310,     0,     0,     0,     0,     0,     0,     0,     0,    17,
-   286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
-   294,   295,   296,   297,   298,    27,     0,    28,    29,  -285,
-     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
-     0,  1421,     0,     0,     0,     0,     0,     0,     0,   303,
-   304,  1422,     0,     0,     0,     0,     0,   306,   307,   308,
-     0,     0,     0,  1499,  1423,   281,     8,     9,    10,     0,
-    12,   282,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,     0,   310,     0,     0,     0,     0,     0,     0,     0,
-     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,     0,     0,  -174,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     0,     0,     0,   802,   309,   281,     8,     9,
-    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
-     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,   299,     0,     0,     0,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,   888,   309,   281,
-     8,     9,    10,     0,    12,   499,   283,   284,     0,   285,
-    14,     0,     0,     0,  -749,     0,   310,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,   299,     0,     0,     0,   300,     0,
-     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
-     0,     0,     0,   306,   307,   308,     0,     0,     0,   890,
-   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
-     0,   285,    14,     0,     0,     0,     0,     0,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
-     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,    28,   299,     0,     0,     0,
-   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
-     0,  1434,   309,   281,     8,     9,    10,     0,    12,   499,
-   283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
-   310,     0,     0,     0,     0,     0,     0,     0,     0,    17,
-   286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
-   294,   295,   296,   297,   298,    27,     0,    28,   299,     0,
-     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
-     0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
-   304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
-   281,     8,     9,    10,   309,    12,   499,   283,   284,     0,
-   285,    14,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   310,     0,     0,     0,    17,   286,    18,     0,
-    20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
-   292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
-   297,   298,    27,     0,    28,   299,     0,     0,     0,   300,
-     0,     0,     0,     0,     0,   301,     0,     0,   302,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,   305,     0,
-     0,     0,     0,     0,   306,   307,   308,     0,     0,     0,
-     0,   309,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   310,
-   841,  1230,  1231,  1232,    10,   386,    12,   282,   283,   284,
-     0,   285,    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,
-  1239,  1240,  1241,  1242,  1243,    15,    16,    17,   286,    18,
-    19,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,  1244,   299,   675,     0,  1245,
-   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
-     0,     0,   309,     0,  1246,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  1365,
-   310,  1230,  1231,  1232,    10,   386,    12,   282,   283,   284,
-     0,   285,    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,
-  1239,  1240,  1241,  1242,  1243,    15,    16,    17,   286,    18,
-    19,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,  1244,   299,   675,     0,  1245,
-   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
-     0,     0,   309,     0,  1246,     0,     0,  1230,  1231,  1232,
-    10,   386,    12,   282,   283,   284,     0,   285,    14,  1233,
-   310,  1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,
-  1243,    15,    16,    17,   286,    18,    19,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,  1244,   299,  1476,     0,  1245,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,     0,   309,     0,
-  1246,     0,     0,  1230,  1231,  1232,    10,   386,    12,   282,
-   283,   284,     0,   285,    14,  1233,   310,  1234,  1235,  1236,
-  1237,  1238,  1239,  1240,  1241,  1242,  1243,    15,    16,    17,
-   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
-   294,   295,   296,   297,   298,    27,     0,  1244,   299,     0,
-     0,  1245,   300,     0,     0,     0,     0,     0,   301,     0,
-     0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
-   304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
-     0,     0,     0,     0,   309,     0,  1246,   281,     8,     9,
-    10,   386,    12,   282,   283,   284,   688,   285,    14,     0,
-     0,     0,   310,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,    19,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,   581,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,   299,     0,     0,     0,   300,     0,     0,     0,
-     0,     0,   301,     0,     0,   869,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   870,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,   584,     0,     0,   871,   586,
-     0,     0,   689,     7,     8,     9,    10,   386,    12,   282,
-   283,   284,   688,   285,    14,     0,   310,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
-   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,   581,     0,
-   294,   295,   296,   297,   298,    27,     0,    28,    29,     0,
-     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
-     0,  1132,     0,     0,     0,     0,     0,     0,     0,   303,
-   304,  1133,     0,     0,     0,     0,     0,   306,   307,   308,
-     0,   584,     0,     0,  1134,   586,     0,     0,   689,   281,
-     8,     9,    10,     0,    12,   282,   283,   284,     0,   285,
-    14,     0,   310,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,   581,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,   299,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   301,     0,     0,   869,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   870,     0,     0,
-     0,     0,     0,   306,   307,   308,     0,   584,     0,     0,
-   871,   586,     7,     8,     9,    10,     0,    12,   282,   283,
-   284,     0,   285,    14,     0,     0,     0,     0,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
-    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,   581,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,    29,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   301,     0,     0,
-  1132,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-  1133,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-   584,     0,     0,  1134,   586,   281,     8,     9,    10,     0,
-    12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,     0,     0,  1342,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     0,     0,     0,     0,   309,   281,     8,     9,
-    10,   386,    12,   282,   283,   284,     0,   285,    14,     0,
-     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
-     0,     0,     0,    17,   286,    18,    19,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,   299,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,   281,     8,     9,    10,   309,    12,
-   282,   283,   284,     0,   285,    14,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   310,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,    28,   299,
-     0,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,   281,     8,     9,    10,   309,    12,   499,   283,   284,
-     0,   285,    14,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   310,     0,     0,     0,    17,   286,    18,
-     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
-    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
-   296,   297,   298,    27,     0,    28,   299,     0,     0,     0,
-   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
-     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
-     0,     0,     0,     0,     0,   306,   307,   308,   281,     8,
-     9,    10,   309,    12,   499,   283,   284,     0,   285,    14,
+     0,     0,     0,    16,   305,    17,    18,    19,     0,   306,
+   307,    20,     0,   308,   309,   310,    21,   311,   312,     0,
+    23,     0,     0,     0,   313,   314,   315,   316,   317,    26,
+     0,    27,   319,  1528,   980,  -789,   320,     0,     0,     0,
+     0,     0,   321,     0,     0,   322,     0,     0,     0,     0,
+     0,     0,     0,   323,   324,   325,     0,     0,     0,     0,
+     0,   326,   327,   328,     0,     0,     0,     0,   329,     0,
+   722,   980,   823,   824,   825,    10,     0,    12,   535,   302,
+   303,     0,   304,    14,     0,   330,   102,     0,   102,     0,
+     0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
+     0,    19,     0,   306,   307,    20,     0,   308,   309,   310,
+    21,   311,   312,     0,    23,     0,     0,     0,   313,   314,
+   315,   316,   317,    26,     0,   826,   827,   723,     0,     0,
+   320,     0,     0,     0,     0,     0,   321,     0,     0,   322,
+     0,     0,     0,     0,     0,     0,     0,   323,   324,   325,
+     0,     0,     0,     0,     0,   326,   327,   328,     0,     0,
+     0,     0,   329,   828,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   987,   330,
+   553,     0,   300,     8,     9,    10,     0,    12,   301,   302,
+   303,     0,   304,    14,     0,     0,     0,     0,     0,     0,
+     0,     0,   980,     0,     0,     0,     0,    16,   305,    17,
+    18,    19,     0,   306,   307,    20,     0,   308,   309,   310,
+    21,   311,   312,     0,    23,     0,     0,     0,   313,   314,
+   315,   316,   317,    26,     0,    27,   319,  -312,     0,     0,
+   320,     0,     0,     0,     0,     0,   321,     0,     0,   554,
+     0,     0,     0,     0,     0,     0,     0,   323,   324,   555,
+     0,     0,     0,     0,     0,   326,   327,   328,     0,     0,
+     0,   722,   556,   823,   824,   825,    10,     0,    12,   535,
+   302,   303,     0,   304,    14,     0,     0,     0,     0,   330,
+     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
+    17,     0,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,     0,    23,     0,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,   826,   827,   723,     0,
+     0,   320,     0,     0,     0,     0,     0,   321,     0,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+   325,     0,     0,     0,     0,     0,   326,   327,   328,     0,
+     0,     0,     0,   329,   828,   722,     0,   823,   824,   825,
+    10,     0,    12,   535,   302,   303,     0,   304,    14,     0,
+   330,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+   826,   827,   723,     0,     0,   320,     0,     0,     0,     0,
+     0,   321,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,   325,     0,     0,     0,     0,     0,
+   326,   327,   328,     0,     0,     0,   722,   329,   823,   824,
+   825,    10,     0,    12,   535,   302,   303,     0,   304,    14,
+     0,     0,     0,  -483,   330,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,   305,    17,     0,    19,     0,   306,
+   307,    20,     0,   308,   309,   310,    21,   311,   312,     0,
+    23,     0,     0,     0,   313,   314,   315,   316,   317,    26,
+     0,   826,   827,   723,     0,     0,   320,     0,     0,     0,
+     0,     0,   321,     0,     0,   322,     0,     0,     0,     0,
+     0,     0,     0,   323,   324,   325,     0,     0,     0,     0,
+     0,   326,   327,   328,     0,     0,     0,   722,   329,   300,
+     8,     9,    10,     0,    12,   535,   302,   303,     0,   304,
+    14,     0,     0,     0,  1323,   330,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+   306,   307,    20,     0,   308,   309,   310,    21,   311,   312,
+     0,    23,     0,     0,     0,   313,   314,   315,   316,   317,
+    26,     0,    27,   319,   723,     0,     0,   320,     0,     0,
+     0,     0,     0,   321,     0,     0,   322,     0,     0,     0,
+     0,     0,     0,     0,   323,   324,   325,     0,     0,     0,
+     0,     0,   326,   327,   328,     0,     0,     0,     0,   329,
+     0,   553,     0,     7,     8,     9,    10,  1327,    12,   301,
+   302,   303,     0,   304,    14,     0,   330,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
+    17,    18,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,     0,    23,     0,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,    27,    28,  -312,     0,
+     0,   320,     0,     0,     0,     0,     0,   321,     0,     0,
+  1499,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+  1500,     0,     0,     0,     0,     0,   326,   327,   328,     0,
+     0,     0,   722,  1501,   300,     8,     9,    10,     0,    12,
+   535,   302,   303,     0,   304,    14,     0,     0,     0,     0,
+   330,     0,     0,     0,     0,     0,     0,     0,     0,    16,
+   305,    17,     0,    19,     0,   306,   307,    20,     0,   308,
+   309,   310,    21,   311,   312,     0,    23,     0,     0,     0,
+   313,   314,   315,   316,   317,    26,     0,    27,   319,   723,
+     0,     0,   320,     0,     0,     0,     0,     0,   321,     0,
+     0,   322,     0,     0,     0,     0,     0,     0,     0,   323,
+   324,   325,     0,     0,     0,     0,     0,   326,   327,   328,
+     0,     0,     0,   835,   329,   300,     8,     9,    10,     0,
+    12,   535,   302,   303,     0,   304,    14,     0,     0,     0,
+     0,   330,     0,     0,     0,     0,     0,     0,     0,     0,
+    16,   305,    17,     0,    19,     0,   306,   307,    20,     0,
+   308,   309,   310,    21,   311,   312,     0,    23,     0,     0,
+     0,   313,   314,   315,   316,   317,    26,     0,    27,   319,
+     0,     0,     0,   320,  -789,     0,     0,     0,     0,   321,
+     0,     0,   322,     0,     0,     0,     0,     0,     0,     0,
+   323,   324,   325,     0,     0,     0,     0,     0,   326,   327,
+   328,     0,     0,     0,  1580,   329,   300,     8,     9,    10,
+     0,    12,   301,   302,   303,     0,   304,    14,     0,     0,
+     0,     0,   330,     0,     0,     0,     0,     0,     0,     0,
+     0,    16,   305,    17,     0,    19,     0,   306,   307,    20,
+     0,   308,   309,   310,    21,   311,   312,     0,    23,     0,
+     0,     0,   313,   314,   315,   316,   317,    26,     0,    27,
+   319,     0,     0,  -196,   320,     0,     0,     0,     0,     0,
+   321,     0,     0,   322,     0,     0,     0,     0,     0,     0,
+     0,   323,   324,   325,     0,     0,     0,     0,     0,   326,
+   327,   328,     0,     0,     0,   835,   329,   300,     8,     9,
+    10,     0,    12,   535,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
+     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+    27,   319,     0,     0,     0,   320,     0,     0,     0,     0,
+     0,   321,   263,     0,   322,     8,     9,     0,     0,    12,
+    13,     0,   323,   324,   325,    14,     0,     0,     0,     0,
+   326,   327,   328,     0,     0,     0,     0,   329,     0,    16,
+     0,    17,     0,     0,     0,     0,     0,    20,     0,   264,
+   265,     0,  -789,     0,   330,     0,    23,     0,   266,     0,
+     0,     0,     0,     0,     0,    26,     0,   130,   131,     0,
+   267,     0,     0,     0,   268,   269,   270,   271,   272,   273,
+   274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,   285,   286,   287,   288,     0,     0,   289,   290,   291,
+     0,     0,   292,     0,   924,   293,   300,     8,     9,    10,
+     0,    12,   535,   302,   303,     0,   304,    14,     0,     0,
+     0,   294,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    16,   305,    17,     0,    19,     0,   306,   307,    20,
+     0,   308,   309,   310,    21,   311,   312,     0,    23,     0,
+     0,     0,   313,   314,   315,   316,   317,    26,     0,    27,
+   319,     0,     0,     0,   320,     0,     0,     0,     0,     0,
+   321,     0,     0,   322,     0,     0,     0,     0,     0,     0,
+     0,   323,   324,   325,     0,     0,     0,     0,     0,   326,
+   327,   328,     0,     0,     0,   926,   329,   300,     8,     9,
+    10,     0,    12,   535,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
+     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+    27,   319,     0,     0,     0,   320,     0,     0,     0,     0,
+     0,   321,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,   325,     0,     0,     0,     0,     0,
+   326,   327,   328,     0,     0,     0,  1512,   329,   300,     8,
+     9,    10,     0,    12,   535,   302,   303,     0,   304,    14,
+     0,     0,     0,     0,   330,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,   305,    17,     0,    19,     0,   306,
+   307,    20,     0,   308,   309,   310,    21,   311,   312,     0,
+    23,     0,     0,     0,   313,   314,   315,   316,   317,    26,
+     0,    27,   319,     0,     0,     0,   320,     0,     0,     0,
+     0,     0,   321,     0,     0,   322,     0,     0,     0,     0,
+     0,     0,     0,   323,   324,   325,     0,     0,     0,     0,
+     0,   326,   327,   328,   300,     8,     9,    10,   329,    12,
+   535,   302,   303,     0,   304,    14,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   330,     0,     0,     0,    16,
+   305,    17,     0,    19,     0,   306,   307,    20,     0,   308,
+   309,   310,    21,   311,   312,     0,    23,     0,     0,     0,
+   313,   314,   315,   316,   317,    26,     0,    27,   319,     0,
+     0,     0,   320,     0,     0,     0,     0,     0,   321,     0,
+   764,   322,     7,     8,   765,    10,   167,    12,    13,   323,
+   324,   325,     0,    14,     0,     0,     0,   326,   327,   328,
+     0,     0,     0,     0,   329,     0,     0,    16,     0,    17,
+    18,    19,     0,     0,     0,    20,  -528,     0,     0,     0,
+    21,   330,   874,     0,    23,   766,     0,   168,     0,     0,
+     0,     0,     0,    26,     0,    27,    28,     0,     0,   767,
+     0,   768,     0,     0,     0,     0,     0,     0,     0,    30,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+     0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+     0,     0,    33,     0,     0,  1285,  1286,  1287,    10,   167,
+    12,   301,   302,   303,     0,   304,    14,  1288,  -528,  1289,
+  1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,  1298,    15,
+    16,   305,    17,    18,    19,     0,   306,   307,    20,     0,
+   308,   309,   310,    21,   311,   312,  1299,    23,  1300,     0,
+     0,   313,   314,   315,   316,   317,    26,     0,  1301,   319,
+   719,     0,  1302,   320,     0,     0,     0,     0,     0,   321,
+     0,     0,   322,     0,     0,     0,     0,     0,     0,     0,
+   323,   324,   325,     0,     0,     0,     0,     0,   326,   327,
+   328,     0,     0,     0,     0,   329,     0,  1303,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   310,     0,     0,     0,    17,   286,    18,     0,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,   532,     0,     0,     0,     0,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,   281,     8,     9,    10,   533,
-    12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   310,     0,     0,
-     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     0,     0,     0,     0,   309,   569,   281,     8,
-     9,    10,     0,    12,   499,   283,   284,     0,   285,    14,
-     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    17,   286,    18,     0,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,     0,     0,     0,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   518,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   519,     0,     0,     0,
-     0,     0,   306,   307,   308,  1094,     8,     9,    10,   520,
-    12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   310,     0,     0,
-     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
-     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
-     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,     0,     0,     0,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,     7,     8,     9,    10,   309,    12,   499,   283,
-   284,     0,   285,    14,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   310,     0,     0,     0,    17,   286,
-    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,    29,     0,     0,
-     0,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-  1421,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-  1422,     0,     0,     0,     0,     0,   306,   307,   308,   281,
-     8,     9,    10,  1423,    12,   499,   283,   284,     0,   285,
+     0,  1433,   330,  1285,  1286,  1287,    10,   167,    12,   301,
+   302,   303,     0,   304,    14,  1288,     0,  1289,  1290,  1291,
+  1292,  1293,  1294,  1295,  1296,  1297,  1298,    15,    16,   305,
+    17,    18,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,  1299,    23,  1300,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,  1301,   319,   719,     0,
+  1302,   320,     0,     0,     0,     0,     0,   321,     0,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+   325,     0,     0,     0,     0,     0,   326,   327,   328,     0,
+     0,     0,     0,   329,     0,  1303,     0,  1285,  1286,  1287,
+    10,   167,    12,   301,   302,   303,     0,   304,    14,  1288,
+   330,  1289,  1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,
+  1298,    15,    16,   305,    17,    18,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,  1299,    23,
+  1300,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+  1301,   319,  1557,     0,  1302,   320,     0,     0,     0,     0,
+     0,   321,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,   325,     0,     0,     0,     0,     0,
+   326,   327,   328,     0,     0,     0,     0,   329,     0,  1303,
+     0,  1285,  1286,  1287,    10,   167,    12,   301,   302,   303,
+     0,   304,    14,  1288,   330,  1289,  1290,  1291,  1292,  1293,
+  1294,  1295,  1296,  1297,  1298,    15,    16,   305,    17,    18,
+    19,     0,   306,   307,    20,     0,   308,   309,   310,    21,
+   311,   312,  1299,    23,  1300,     0,     0,   313,   314,   315,
+   316,   317,    26,     0,  1301,   319,     0,     0,  1302,   320,
+     0,     0,     0,     0,     0,   321,     0,     0,   322,     0,
+     0,     0,     0,     0,     0,     0,   323,   324,   325,     0,
+     0,     0,     0,     0,   326,   327,   328,     0,     0,     0,
+     0,   329,     0,  1303,   300,     8,     9,    10,   167,    12,
+   301,   302,   303,   732,   304,    14,     0,     0,   330,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    16,
+   305,    17,    18,    19,     0,   306,   307,    20,     0,   308,
+   309,   310,    21,   311,   312,     0,    23,     0,   619,     0,
+   313,   314,   315,   316,   317,    26,     0,    27,   319,     0,
+     0,     0,   320,     0,     0,     0,     0,     0,   321,     0,
+     0,   902,     0,     0,     0,     0,     0,     0,     0,   323,
+   324,   903,     0,     0,     0,     0,     0,   326,   327,   328,
+     0,   622,     0,     0,   904,   624,     7,     8,     9,    10,
+   167,    12,   301,   302,   303,   732,   304,    14,     0,     0,
+     0,   330,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    16,   305,    17,    18,    19,     0,   306,   307,    20,
+     0,   308,   309,   310,    21,   311,   312,     0,    23,     0,
+   619,     0,   313,   314,   315,   316,   317,    26,     0,    27,
+    28,     0,     0,     0,   320,     0,     0,     0,     0,     0,
+   321,     0,     0,  1184,     0,     0,     0,     0,     0,     0,
+     0,   323,   324,  1185,     0,     0,     0,     0,     0,   326,
+   327,   328,     0,   622,     0,     0,  1186,   624,     7,     8,
+     9,    10,     0,    12,   301,   302,   303,     0,   304,    14,
+     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,   305,    17,    18,    19,     0,   306,
+   307,    20,     0,   308,   309,   310,    21,   311,   312,     0,
+    23,     0,   619,     0,   313,   314,   315,   316,   317,    26,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   321,     0,     0,  1184,     0,     0,     0,     0,
+     0,     0,     0,   323,   324,  1185,     0,     0,     0,     0,
+     0,   326,   327,   328,     0,   622,     0,     0,  1186,   624,
+   300,     8,     9,    10,     0,    12,   535,   302,   303,     0,
+   304,    14,     0,     0,     0,   330,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
+     0,   306,   307,    20,     0,   308,   309,   310,    21,   311,
+   312,     0,    23,     0,     0,     0,   313,   314,   315,   316,
+   317,    26,     0,    27,   319,     0,     0,     0,   320,     0,
+     0,     0,     0,     0,   321,     0,     0,   554,     0,     0,
+     0,     0,     0,     0,     0,   323,   324,   555,     0,     0,
+     0,     0,     0,   326,   327,   328,   300,     8,     9,    10,
+   556,    12,   535,   302,   303,     0,   304,    14,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   330,     0,     0,
+     0,    16,   305,    17,     0,    19,     0,   306,   307,    20,
+     0,   308,   309,   310,    21,   311,   312,     0,    23,     0,
+     0,     0,   313,   314,   315,   316,   317,    26,     0,    27,
+   319,     0,     0,  1406,   320,     0,     0,     0,     0,     0,
+   321,     0,     0,   322,     0,     0,     0,     0,     0,     0,
+     0,   323,   324,   325,     0,     0,     0,     0,     0,   326,
+   327,   328,     0,     0,     0,     0,   329,   300,     8,     9,
+    10,   167,    12,   301,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
+     0,     0,    16,   305,    17,    18,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+    27,   319,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   321,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,   325,     0,     0,     0,     0,     0,
+   326,   327,   328,     7,     8,     9,    10,   329,    12,   535,
+   302,   303,     0,   304,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   330,     0,     0,     0,    16,   305,
+    17,    18,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,     0,    23,     0,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,    27,    28,     0,     0,
+     0,   320,     0,     0,     0,     0,     0,   321,     0,     0,
+  1499,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+  1500,     0,     0,     0,     0,     0,   326,   327,   328,   300,
+     8,     9,    10,  1501,    12,   301,   302,   303,     0,   304,
     14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   310,     0,     0,     0,    17,   286,    18,     0,    20,
-     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
-   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,   299,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
-     0,     0,     0,   306,   307,   308,   281,     8,     9,    10,
-   500,    12,   499,   283,   284,     0,   285,    14,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   310,     0,
-     0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,     0,     0,   294,   295,   296,   297,   298,    27,     0,
-    28,   299,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   305,     0,     0,     0,     0,     0,
-   306,   307,   308,   281,     8,     9,    10,   503,    12,   499,
-   283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   310,     0,     0,     0,    17,
-   286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
-   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
-   294,   295,   296,   297,   298,    27,     0,    28,   299,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   301,     0,
-     0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
-   304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
-   281,     8,     9,    10,   309,    12,   499,   283,   284,     0,
-   285,    14,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   310,     0,     0,     0,    17,   286,    18,     0,
-    20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
-   292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
-   297,   298,    27,     0,    28,   299,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   301,     0,     0,   518,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,   519,     0,
-     0,     0,     0,     0,   306,   307,   308,     7,     8,     9,
-    10,   520,    12,   282,   283,   284,     0,   285,    14,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   310,
-     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
-   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
-    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,    29,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   301,     0,     6,  1421,     7,     8,     9,    10,
-    11,    12,    13,   303,   304,  1422,     0,    14,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,     0,  1423,     0,
-     0,     0,    17,     0,    18,    19,     0,     0,     0,     0,
-    21,     0,     0,     0,     0,    22,   310,     0,     0,    24,
-     0,     0,   411,     0,     0,     0,     0,     0,    27,     0,
-    28,    29,     0,     0,    30,  -357,     8,     9,  -357,  -357,
-    12,   227,     0,     0,    31,     0,    14,     0,     0,     0,
-     0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-     0,    17,    33,    18,  -357,     0,     0,    34,     0,    21,
-     0,     0,     0,     0,  -357,     0,     0,     0,    24,     0,
-   581,     0,     0,     0,     0,     0,     0,    27,     0,   129,
-   130,     7,     8,     9,    10,   189,    12,   190,     0,     0,
-     0,     0,    14,   582,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   583,     0,     0,     0,    17,     0,    18,
-    19,  -357,     0,   584,     0,    21,   585,   586,     0,     0,
-    22,     0,     0,     0,    24,     0,   989,     8,   733,    10,
-   189,    12,   190,    27,     0,    28,    29,    14,     0,   191,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
-     0,     0,    17,     0,    18,    19,     0,     0,     0,    32,
-    21,     0,     0,     0,     0,    22,     0,    33,     0,    24,
-     0,     0,    34,     0,     0,     0,     0,     0,    27,     0,
-    28,    29,     0,     0,     0,     0,   991,     7,     8,     9,
-    10,   189,    12,   190,    31,     0,     0,     0,    14,     0,
-     0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-     0,     0,    33,    17,     0,    18,    19,    34,     0,     0,
-     0,    21,     0,     0,     0,     0,    22,     0,     0,     0,
-    24,     0,     7,     8,     9,    10,   386,    12,    13,    27,
-     0,    28,    29,    14,     0,  1355,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    31,     0,     0,    17,     0,
-    18,    19,     0,     0,     0,    32,    21,     0,     0,     0,
-     0,    22,     0,    33,     0,    24,     0,     0,    34,     0,
-     0,     0,     0,     0,    27,     0,    28,    29,     7,     8,
-     9,    10,   189,    12,   190,     0,     0,     0,     0,    14,
-    31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    32,     0,     0,     0,    17,     0,    18,    19,    33,     0,
-     0,     0,    21,    34,     0,     0,     0,    22,     0,     0,
-     0,    24,     0,     7,     8,     9,    10,   198,   199,   200,
-    27,     0,    28,    29,    14,     0,     0,     0,     0,     0,
+   330,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+   306,   307,    20,     0,   308,   309,   310,    21,   311,   312,
+     0,    23,     0,     0,     0,   313,   314,   315,   316,   317,
+    26,     0,   318,   319,     0,     0,     0,   320,     0,     0,
+     0,     0,     0,   321,     0,     0,   322,     0,     0,     0,
+     0,     0,     0,     0,   323,   324,   325,     0,     0,     0,
+     0,     0,   326,   327,   328,   300,     8,     9,    10,   329,
+    12,   301,   302,   303,     0,   304,    14,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   330,     0,     0,     0,
+    16,   305,    17,     0,    19,     0,   306,   307,    20,     0,
+   308,   309,   310,    21,   311,   312,     0,    23,     0,     0,
+     0,   313,   314,   315,   316,   317,    26,     0,    27,   319,
+     0,     0,     0,   320,     0,     0,     0,     0,     0,   321,
+     0,     0,   322,     0,     0,     0,     0,     0,     0,     0,
+   323,   324,   325,     0,     0,     0,     0,     0,   326,   327,
+   328,   300,     8,     9,    10,   329,    12,   535,   302,   303,
+     0,   304,    14,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   330,     0,     0,     0,    16,   305,    17,     0,
+    19,     0,   306,   307,    20,     0,   308,   309,   310,    21,
+   311,   312,     0,    23,     0,     0,     0,   313,   314,   315,
+   316,   317,    26,     0,    27,   319,     0,     0,     0,   320,
+     0,     0,     0,     0,     0,   321,     0,     0,   322,     0,
+     0,     0,     0,     0,     0,     0,   323,   324,   325,     0,
+     0,     0,     0,     0,   326,   327,   328,   300,     8,     9,
+    10,   329,    12,   535,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
+     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+    27,   319,   568,     0,     0,     0,     0,     0,     0,     0,
+     0,   321,     0,     0,   322,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,   325,     0,     0,     0,     0,     0,
+   326,   327,   328,   300,     8,     9,    10,   569,    12,   535,
+   302,   303,     0,   304,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   330,     0,     0,     0,    16,   305,
+    17,     0,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,     0,    23,     0,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,    27,   319,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   321,     0,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+   325,     0,     0,     0,     0,     0,   326,   327,   328,     0,
+     0,     0,     0,   329,   607,   300,     8,     9,    10,     0,
+    12,   535,   302,   303,     0,   304,    14,     0,     0,     0,
+   330,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    16,   305,    17,    18,    19,     0,   306,   307,    20,     0,
+   308,   309,   310,    21,   311,   312,     0,    23,     0,     0,
+     0,   313,   314,   315,   316,   317,    26,     0,    27,   319,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   321,
+     0,     0,   554,     0,     0,     0,     0,     0,     0,     0,
+   323,   324,   555,     0,     0,     0,     0,     0,   326,   327,
+   328,  1144,     8,     9,    10,   556,    12,   535,   302,   303,
+     0,   304,    14,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   330,     0,     0,     0,    16,   305,    17,     0,
+    19,     0,   306,   307,    20,     0,   308,   309,   310,    21,
+   311,   312,     0,    23,     0,     0,     0,   313,   314,   315,
+   316,   317,    26,     0,    27,   319,     0,     0,     0,   320,
+     0,     0,     0,     0,     0,   321,     0,     0,   322,     0,
+     0,     0,     0,     0,     0,     0,   323,   324,   325,     0,
+     0,     0,     0,     0,   326,   327,   328,     7,     8,     9,
+    10,   329,    12,   301,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
+     0,     0,    16,   305,    17,    18,    19,     0,   306,   307,
+    20,     0,   308,   309,   310,    21,   311,   312,     0,    23,
+     0,     0,     0,   313,   314,   315,   316,   317,    26,     0,
+    27,    28,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   321,     0,     0,  1499,     0,     0,     0,     0,     0,
+     0,     0,   323,   324,  1500,     0,     0,     0,     0,     0,
+   326,   327,   328,   300,     8,     9,    10,  1501,    12,   535,
+   302,   303,     0,   304,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   330,     0,     0,     0,    16,   305,
+    17,     0,    19,     0,   306,   307,    20,     0,   308,   309,
+   310,    21,   311,   312,     0,    23,     0,     0,     0,   313,
+   314,   315,   316,   317,    26,     0,    27,   319,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   321,     0,     0,
+   322,     0,     0,     0,     0,     0,     0,     0,   323,   324,
+   325,     0,     0,     0,     0,     0,   326,   327,   328,   300,
+     8,     9,    10,   536,    12,   535,   302,   303,     0,   304,
+    14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   330,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+   306,   307,    20,     0,   308,   309,   310,    21,   311,   312,
+     0,    23,     0,     0,     0,   313,   314,   315,   316,   317,
+    26,     0,    27,   319,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   321,     0,     0,   322,     0,     0,     0,
+     0,     0,     0,     0,   323,   324,   325,     0,     0,     0,
+     0,     0,   326,   327,   328,   300,     8,     9,    10,   539,
+    12,   535,   302,   303,     0,   304,    14,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   330,     0,     0,     0,
+    16,   305,    17,     0,    19,     0,   306,   307,    20,     0,
+   308,   309,   310,    21,   311,   312,     0,    23,     0,     0,
+     0,   313,   314,   315,   316,   317,    26,     0,    27,   319,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   321,
+     0,     6,   322,     7,     8,     9,    10,    11,    12,    13,
+   323,   324,   325,     0,    14,     0,     0,     0,   326,   327,
+   328,     0,     0,     0,     0,   329,     0,    15,    16,     0,
+    17,    18,    19,     0,     0,     0,    20,     0,     0,     0,
+     0,    21,   330,     0,    22,    23,    24,     0,    25,     0,
+     0,     0,     0,     0,    26,     0,    27,    28,     0,     0,
+    29,     0,     7,     8,     9,    10,     0,     0,   246,     0,
+    30,     0,     0,     0,     0,     0,     0,     0,     0,   166,
+    31,     7,     8,     9,    10,   167,    12,    13,    32,     0,
+    18,     0,    14,    33,     0,     0,     0,     0,    34,     0,
+    21,     0,     0,     0,     0,     0,    16,     0,    17,    18,
+    19,     0,     0,    26,    20,    27,    28,     0,     0,    21,
+     0,     0,     0,    23,     0,     0,   168,     0,     0,   193,
+     0,     0,    26,     0,    27,    28,     0,     0,   764,   194,
+     7,     8,   765,    10,   167,    12,    13,    32,    30,     0,
+     0,    14,   195,     0,     0,     0,     0,     0,    31,     0,
+     0,     0,     0,     0,     0,    16,    32,    17,    18,    19,
+     0,    33,     0,    20,     0,     0,    34,     0,    21,     0,
+     0,     0,    23,   766,     0,   168,     0,     0,     0,     0,
+     0,    26,     0,    27,    28,     0,     0,   767,     0,   768,
+     0,     0,     0,     0,     0,     0,     6,    30,     7,     8,
+     9,    10,    11,    12,    13,     0,     0,    31,     0,    14,
+     0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+    33,     0,     0,    16,     0,    17,    18,     0,     0,     0,
+     0,    20,     0,     0,     0,     0,    21,     0,     0,     0,
+    23,     0,     0,   438,     0,     0,     0,     0,     0,    26,
+     0,    27,    28,     0,     0,    29,     0,  -387,     8,     9,
+  -387,  -387,    12,   246,     0,    30,     0,     0,    14,     0,
+     0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+     0,     0,    16,    32,    17,  -387,     0,     0,    33,     0,
+    20,     0,     0,     0,     0,  -387,     0,     0,     0,    23,
+     0,   619,     0,     0,     0,     0,     0,     0,    26,     0,
+   130,   131,     7,     8,     9,    10,   205,    12,   206,     0,
+     0,     0,     0,    14,   620,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   621,     0,     0,    16,     0,    17,
+    18,     0,  -387,     0,   622,    20,     0,   623,   624,     0,
+    21,     0,     0,     0,    23,     0,     0,     0,     0,     0,
+     0,     0,     0,    26,     0,    27,    28,     0,     0,   207,
+     0,  1037,     8,   765,    10,   205,    12,   206,     0,    30,
+     0,     0,    14,     0,     0,     0,     0,     0,     0,    31,
+     0,     0,     0,     0,     0,     0,    16,    32,    17,    18,
+     0,     0,    33,     0,    20,     0,     0,     0,     0,    21,
+     0,     0,     0,    23,     0,     0,     0,     0,     0,     0,
+     0,     0,    26,     0,    27,    28,     0,     0,     0,     0,
+  1039,     0,     0,     0,     0,     0,     0,     0,    30,     7,
+     8,     9,    10,   205,    12,   206,     0,     0,    31,     0,
+    14,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+     0,    33,     0,     0,    16,     0,    17,    18,     0,     0,
+     0,     0,    20,     0,     0,     0,     0,    21,     0,     0,
+     0,    23,     0,     0,     0,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,     0,  1423,     0,     7,     8,
+     9,    10,   167,    12,    13,     0,    30,     0,     0,    14,
      0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-     0,     0,    19,     0,     0,     0,    32,    21,     0,     0,
-     0,     0,    22,     0,    33,  1411,    24,     0,   581,    34,
-     0,     0,     0,     0,     0,    27,     0,    28,    29,   535,
-   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
-   546,   177,   548,   549,   550,   551,   552,   553,   554,   555,
-   556,   178,     0,     0,     0,     0,     0,    19,     0,    33,
-     0,     0,     0,     0,  1358,     0,  1412,   535,   536,   537,
-   538,   539,   540,   541,   542,   543,   544,   545,   546,   547,
-   548,   549,   550,   551,   552,   553,   554,   555,   556,   535,
-   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
-   546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
-   556,   535,   536,   537,   538,   539,   540,   541,   542,   543,
-   544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-   554,   555,   556,   535,   536,   537,   538,   539,   540,   541,
-   542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556,     0,     0,     0,     0,     0,
-  1185,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   621,     0,     0,  1466,   535,
-   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
-   546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
-   556,  1484,   535,   536,   537,   538,   539,   540,   541,   542,
-   543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
-   553,   554,   555,   556,   535,   536,   537,   538,   539,   540,
-   541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
-   551,   552,   553,   554,   555,   556
+     0,     0,     0,    16,    32,    17,    18,     0,     0,    33,
+     0,    20,     0,     0,     0,     0,    21,     0,     0,     0,
+    23,     0,     0,     0,     0,     0,     0,     0,     0,    26,
+     0,    27,    28,     7,     8,     9,    10,   205,    12,   206,
+     0,     0,     0,     0,    14,    30,     0,     0,     0,     0,
+     7,     8,     9,    10,     0,    31,    13,     0,    16,     0,
+    17,    18,     0,    32,     0,     0,    20,     0,    33,     0,
+     0,    21,     0,     0,     0,    23,     0,     0,    18,     0,
+     0,     0,     0,     0,    26,     0,    27,    28,    21,     0,
+     0,     7,     8,     9,    10,     0,     0,   518,     0,     0,
+    30,    26,     0,    27,    28,     0,     0,     0,     0,     0,
+    31,     0,     0,     0,     0,     0,     0,   474,    32,    18,
+     0,     0,     0,    33,     0,     0,     0,   475,     0,    21,
+     0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+   476,     0,    26,     0,    27,    28,     0,     0,     0,     0,
+    18,     0,     0,     0,     0,     0,     0,     0,   193,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   194,     0,
+     0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+     0,   195,   571,   572,   573,   574,   575,   576,   577,   578,
+   579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+   589,   590,   591,   592,   571,   572,   573,   574,   575,   576,
+   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
+   587,   588,   589,   590,   591,   592,   571,   572,   573,   574,
+   575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,     0,     0,
+     0,     0,  1238,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   660,     0,     0,
+  1547,   571,   572,   573,   574,   575,   576,   577,   578,   579,
+   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+   590,   591,   592,  1565,   571,   572,   573,   574,   575,   576,
+   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
+   587,   588,   589,   590,   591,   592,   571,   572,   573,   574,
+   575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,   571,   572,
+   573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
+     0,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+   575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,   576,   577,
+   578,   579,   580,   581,   582,   583,   584,   585,   586,   587,
+   588,   589,   590,   591,   592,   578,   579,   580,   581,   582,
+   583,   584,   585,   586,   587,   588,   589,   590,   591,   592
 };
 
 static const short yycheck[] = {     4,
-   156,    79,     4,   426,   673,   670,    54,    24,     4,   125,
-     4,   193,   329,   385,   232,   335,   448,    83,   336,   337,
-   385,     4,   285,   286,   385,    58,   530,   146,   147,   653,
-   469,    36,    14,     4,    36,   830,    41,    31,    32,    41,
-    36,   123,    36,   223,   132,    41,   228,    41,   660,   353,
-   737,    56,   739,    36,   317,     4,   201,   202,    41,   746,
-    34,     4,  1254,   141,   585,    36,    71,   421,   128,  1261,
-    41,   592,   193,   133,   392,   393,   132,   133,    83,     4,
-    61,   202,    87,  1408,    89,    56,    91,    36,    11,    83,
-  1247,  1324,    41,    36,    38,   277,  1409,    11,    41,    11,
-    82,   106,   107,    53,    34,  1155,  1156,  1410,     9,   187,
-    79,    36,    45,    48,    60,    63,    41,   335,   456,  1169,
-    60,  1446,    59,   105,     0,    65,     7,    63,    65,     0,
-   135,   136,    89,   138,    91,   473,    76,   754,    60,    75,
-    63,   135,    75,   760,   385,     1,    75,   329,     1,    59,
-    49,    12,   146,   147,   586,   160,     1,    38,    83,    94,
-   193,    62,   110,  1426,   135,   111,   160,   111,   201,   202,
-   524,    12,   146,   147,   148,   110,   287,   288,  1481,   136,
-    12,   111,  1445,   177,   178,   502,   135,   110,   110,   160,
-   100,   302,   135,   434,   305,   228,   110,   308,   110,    60,
-   311,   151,    63,    59,   315,   179,    59,    63,   106,   107,
-   135,   160,   323,  1526,    59,   196,  1541,   160,    63,    60,
-    63,  1413,    63,   204,    65,    75,    48,    36,    60,    94,
-    48,    63,    41,   672,   184,   160,  1286,    98,   326,  1502,
-    96,    25,    55,    65,   277,  1295,  1296,   229,  1298,   110,
-   867,    96,  1409,  1486,  1049,    61,   322,    98,   414,     3,
-     4,     5,    75,  1455,   197,    60,    98,   110,   880,    94,
-   326,   883,    94,   278,   243,    59,    94,    95,   902,    63,
-    34,    76,   643,   365,   604,    61,    60,    39,     4,     5,
-   608,    94,   110,     9,    63,   355,   329,    48,    76,    60,
-    78,    48,    61,    55,   309,   111,    75,   452,   453,   921,
-   922,  1503,    96,    57,    58,   460,   109,   322,    48,   379,
-   674,   440,   441,   379,   696,   330,    61,   472,   322,   633,
-    75,   696,   453,   338,   339,   111,   110,    81,    55,    55,
-   388,    57,    58,    94,   585,   339,   491,    94,    95,   110,
-   871,   592,   111,   335,    48,    71,   574,   390,    75,   976,
-    60,    27,    28,   110,    94,    81,    32,    25,   339,    27,
-    28,   988,   767,   768,   769,   692,   111,    48,    75,    95,
-   385,   338,  1432,  1433,   389,    48,    48,    94,   909,   385,
-   339,   385,   146,   147,   148,    61,   339,   322,  1193,    65,
-    94,    59,   906,    25,  1021,    63,  1023,   518,   519,   832,
-   110,   309,    61,    48,   339,    25,    61,    27,    28,   452,
-   453,    55,    55,    94,    95,   179,    55,   460,   949,   434,
-    65,    94,    94,    95,    48,   416,   868,    55,    96,   472,
-   434,    75,    75,     4,     5,   111,   440,   441,   110,    59,
-     8,     9,   770,    63,    32,   696,    14,    75,   491,    94,
-   385,    63,     3,     4,     5,   470,   440,   441,   442,     3,
-     4,     5,     6,  1085,  1086,    59,   470,    63,   459,    37,
-    94,    95,    75,  1170,    48,    55,    96,   470,    46,    75,
-    48,    48,   497,    63,    55,   500,    57,    58,   503,    55,
-   566,   470,   507,   508,   509,   510,   511,    48,    42,   434,
-    71,     4,     5,   754,    55,   520,    57,    58,   446,   760,
-    81,   470,     4,    57,    58,   530,   454,   470,   533,   462,
-    94,   903,    55,   431,    95,   974,    94,    94,   903,   166,
-   497,   721,   903,   723,    48,   470,     4,     5,   728,    48,
-    59,    55,    75,    94,    36,    89,   876,    60,    61,    41,
-   565,   566,   610,   111,    57,    58,     3,     4,     5,   714,
-    48,    75,   566,    94,     3,     4,     5,    48,   611,    48,
-   585,   899,    55,   937,    76,  1106,    55,   592,   582,   583,
-    94,   585,    55,     4,     5,    94,    95,   779,   592,    57,
-    58,   649,   500,   651,   652,   503,    75,    55,    48,   507,
-   873,    95,    49,  1134,   596,   731,    94,  1040,  1041,   652,
-    57,    58,   520,    94,   641,    94,   867,  1059,    57,    58,
-   871,   636,    48,   110,    48,   533,    48,    11,    49,   537,
-  1251,   566,  1253,    55,   692,   650,    57,    58,    48,   654,
-    60,    61,     4,     5,    94,   672,   110,     9,   876,   692,
-   585,   110,   903,    75,   110,   563,   111,   592,   909,    48,
-    81,   569,     4,     5,    14,    94,    48,  1116,    94,   636,
-    94,   714,    94,    23,    61,    48,   440,   441,   442,     8,
-     9,   696,  1449,     3,    94,    14,   744,  1015,  1016,  1017,
-    60,    61,   696,    55,   113,    57,    58,  1130,   949,  1148,
-    25,    95,    27,    28,    95,    94,  1139,  1140,    37,    71,
-    63,  1144,    94,    55,    64,    57,    58,    46,   113,    81,
-   841,    94,   737,     9,   739,   976,    12,  1054,  1495,    94,
-   745,   746,    60,   737,    59,   739,   779,   988,    63,   754,
-   755,   756,   746,   758,   737,   760,   739,    63,   869,   870,
-   754,    94,  1185,   746,  1055,  1056,   760,  1058,   737,    75,
-   739,   696,    48,   744,   745,    75,   745,   746,     4,     5,
-  1021,    96,  1023,   123,    60,    75,    62,    63,   737,    65,
-   739,   971,   972,   973,   737,    75,   739,   746,   755,   756,
-    76,   758,    78,   746,  1469,   145,    75,   740,   741,    11,
-    27,    28,   737,   111,   739,    32,   749,   110,    94,    95,
-  1489,   746,    98,    49,   829,     4,     5,    60,   833,   754,
-    55,    57,    58,   110,   110,   760,   914,    27,    28,    84,
-    85,    55,   110,    60,    61,    60,    61,   110,    65,    63,
-  1273,     3,     4,     5,     6,    81,   861,     3,     4,     5,
-     6,    75,   867,     4,     5,  1106,   871,    75,    60,   110,
-    49,   111,    48,   867,    61,   869,   870,   871,    57,    58,
-   220,   221,    60,    61,    76,  1203,    78,   111,  1311,    65,
-    42,   113,   232,  1134,   876,   113,    42,    49,   903,   110,
-   905,   906,    81,    49,   909,    57,    58,   903,    49,   903,
-    75,    57,    58,   907,   908,   909,    57,    58,    94,    95,
-    60,    61,  1000,    60,    61,    25,    75,    27,    28,    81,
-    55,   979,    75,   113,    55,   909,  1253,    89,   113,   837,
-    81,   110,   867,    89,   949,    59,   871,     3,     4,     5,
-  1061,     7,     8,     9,    55,   949,     4,     5,   963,    59,
-   110,   301,    63,    63,   969,     3,     4,     5,     6,    55,
-    94,   976,   110,   871,    75,   949,   110,    63,   903,     8,
-   113,  1335,   976,   988,   909,  1104,  1105,     4,     5,    75,
-     3,     4,     5,  1347,   988,    48,    96,    65,    60,    94,
-    48,    57,    58,   343,    42,   111,  1011,    55,   979,    57,
-    58,    61,   352,  1132,  1133,    55,  1021,  1011,  1023,    57,
-    58,  1132,  1133,    71,   949,   365,    37,  1021,  1011,  1023,
-  1108,  1000,    49,    81,    65,    65,    49,    65,   110,    61,
-    57,    58,  1011,    91,    57,    58,    94,    95,     3,     4,
-     5,   976,     7,     8,     9,    63,   110,    94,  1063,   992,
-    65,   110,  1011,   988,    81,   998,   999,  1439,  1011,  1002,
-  1003,   969,  1426,  1006,  1439,    55,   110,    55,   110,    65,
-    65,    60,    37,    63,   110,    63,  1011,     3,     4,     5,
-   717,  1445,     3,     4,     5,    75,  1021,    75,  1023,  1116,
-    55,  1106,    57,    58,    59,    63,  1063,   113,  1531,   110,
-  1104,  1105,  1106,   110,     3,     4,     5,     6,  1472,     3,
-     4,     5,  1127,   110,   751,  1127,  1443,   467,   110,  1134,
-  1104,  1105,  1106,  1127,    76,    76,  1247,    55,  1132,  1133,
-  1134,    57,    58,    59,  1127,    63,    57,    58,  1502,    76,
-   105,   106,   107,    42,    76,   909,  1510,    75,  1132,  1133,
-  1134,     4,     5,     4,     5,  1170,    55,   110,    57,    58,
-    56,    55,    58,    57,    58,    59,  1170,   110,  1127,   110,
-    63,  1106,    63,    60,    87,    63,    89,  1170,    91,     3,
-     4,     5,   532,   110,   113,   949,   111,  1166,  1439,    95,
-    89,  1170,  1127,  1251,   110,  1253,   110,    89,    49,  1134,
-    75,   113,    55,    48,    57,    58,    57,    58,   110,   110,
-  1253,  1170,     3,     4,     5,   113,     7,  1170,    71,    60,
-   110,   110,    65,   136,   574,   138,  1134,   113,    81,   110,
-    81,    55,  1247,    57,    58,  1170,   110,  1252,   111,  1254,
-    31,   111,  1254,  1247,    65,    60,  1261,    38,    60,  1261,
-  1254,  1443,  1418,   110,  1247,  1270,   110,  1261,    94,    94,
-    94,  1254,    94,   111,    55,     8,    57,    58,  1261,   113,
-   166,   110,   110,  1181,  1182,  1183,  1184,     3,     4,     5,
-     6,    27,    28,  1191,   110,   110,    32,   110,  1247,   111,
-   110,   641,  1421,  1422,   113,  1254,   110,   193,    34,   110,
-  1421,  1422,  1261,   653,   110,   201,   202,    81,    82,    83,
-    84,    85,  1247,   110,    60,    61,    42,   110,   110,  1254,
-    65,   110,    55,    49,   110,   110,  1261,    48,    63,   679,
-   113,    57,    58,   110,  1242,   110,    97,     3,     4,     5,
-  1104,  1105,  1106,   110,   981,   982,     7,     8,     9,    63,
-  1293,  1294,    63,    14,    61,    81,     3,     4,     5,    61,
-     7,     8,     9,    89,     9,    31,    61,    16,  1132,  1133,
-  1134,    32,   110,  1010,  1358,    94,    37,    94,     3,     4,
-     5,   110,   712,   110,    61,    46,  1444,   300,  1403,    55,
-    37,    57,    58,  1408,  1409,  1410,  1408,   110,  1413,  1403,
-  1443,  1413,     4,     5,  1408,  1409,  1410,   110,  1423,  1413,
-    57,    58,   113,   110,  1357,  1408,  1409,  1421,  1422,    61,
-  1413,    94,    94,   753,  1439,   338,     3,     4,     5,   759,
-    55,  1446,    57,    58,  1446,  1439,  1344,  1421,  1422,  1423,
-  1455,    17,  1446,  1455,    61,   109,    99,    49,   110,  1408,
-  1409,  1455,    61,  1446,  1413,    57,    58,    11,   110,   110,
-   110,    61,  1455,    61,    61,    94,  1481,    60,  1403,    65,
-   110,    61,   110,  1408,  1409,  1410,   110,  1481,  1413,    11,
-    57,    58,     4,     5,     3,     4,     5,  1446,  1503,    61,
-    11,  1503,    61,   389,   390,  1403,  1455,     0,     0,  1503,
-     0,  1409,  1410,   413,  1439,   355,     2,   903,   745,  1116,
-  1503,  1446,   160,   426,   427,  1423,     3,     4,     5,     6,
-  1455,   434,    93,    45,  1161,  1162,  1541,  1164,  1165,  1541,
-  1167,  1474,   862,    55,   864,    57,    58,  1541,    57,    58,
-  1468,   160,   892,   138,  1503,  1334,  1481,  1541,  1541,   445,
-   280,    48,   902,  1252,   892,    42,   452,   453,   679,   222,
-   456,   887,    49,  1148,   460,   974,  1011,   745,  1503,  1168,
-    57,    58,   617,  1481,     7,     8,     9,   473,   885,   566,
-   184,    14,  1541,   123,   497,   498,   326,  1254,  1128,  1497,
-    87,    88,  1510,  1489,  1358,    92,    93,    94,    95,    32,
-  1458,  1520,    89,    34,    37,  1522,  1541,   958,  1270,    -1,
-    -1,  1519,    -1,    46,    -1,    -1,    -1,   530,  1526,   532,
-    -1,    -1,   535,   536,    -1,   538,   539,   540,   541,   542,
-   543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
-   553,   554,   555,   556,    -1,    -1,  1283,  1284,    -1,   562,
-    -1,   564,   565,    -1,    -1,    -1,    -1,  1421,  1422,  1423,
-    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
-     6,     7,     8,     9,    -1,     7,     8,     9,    14,   592,
-     4,     5,    14,    -1,    -1,     9,   599,    -1,    -1,    -1,
-  1020,  1041,  1022,    29,    -1,    31,    32,    33,    -1,    -1,
-    32,    37,    38,    -1,    -1,    37,    42,   620,   621,    -1,
-    46,    47,    -1,    49,    46,   611,   147,   148,    -1,    55,
-    -1,    57,    58,   636,    48,    61,    -1,    63,    79,    61,
-    -1,    55,    -1,    57,    58,    71,   427,    -1,    -1,    -1,
-  1377,  1378,  1379,   434,    -1,    81,  1076,    71,   179,    -1,
-    -1,    -1,   103,    89,   650,    -1,   652,    81,    94,    79,
-    80,    81,    82,    83,    84,    85,   679,    91,    -1,    -1,
-    94,    95,    -1,    -1,  1124,   111,    -1,    -1,     4,     5,
-  1130,   132,     8,     9,    -1,    -1,    -1,     4,    14,    -1,
-   141,    -1,  1429,  1430,    -1,    -1,   692,    14,    -1,    -1,
-    -1,    -1,    -1,    29,    -1,    31,    -1,   498,    25,    -1,
-    -1,    37,    -1,    -1,    31,    32,    -1,    34,   714,    36,
-    46,   717,  1152,   736,    41,    -1,    -1,  1157,    -1,    55,
-    -1,    57,    58,    59,    -1,    -1,   187,    54,    -1,    56,
-    -1,    -1,   755,   756,    -1,   758,    -1,    64,    -1,   745,
-     3,     4,     5,    -1,    71,   751,    -1,  1494,    -1,    -1,
-   773,    -1,    -1,    -1,    -1,    82,    83,    -1,    94,   220,
-    -1,   562,    -1,   564,   565,    -1,    -1,  1207,   309,    -1,
-    -1,    -1,   795,    -1,    -1,    -1,    39,    40,   105,    42,
-    -1,    -1,   243,  1243,    -1,    -1,     3,     4,     5,     6,
-    -1,   592,    55,    -1,    57,    58,    -1,    -1,   599,    -1,
-    -1,   128,    -1,    -1,    -1,    -1,   133,    12,   135,   832,
-   833,    -1,   139,    -1,    -1,   142,   143,    -1,    -1,   146,
-   147,   148,    27,    28,   847,    42,   849,    32,   851,    -1,
-    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    48,    61,    -1,    63,    -1,    -1,    -1,
-   177,   178,   179,    -1,    71,    60,    61,    -1,    63,    -1,
-    65,   884,  1302,  1303,    81,    -1,  1326,    -1,    -1,    -1,
-    -1,   894,    89,   334,    -1,    -1,    -1,    94,  1318,   206,
-    -1,    -1,    -1,   906,     7,     8,     9,    -1,    -1,    94,
-    95,    14,   427,    98,   221,    -1,   919,    -1,    -1,   434,
-   441,   442,   229,    -1,    -1,   110,    -1,    -1,   931,    32,
-    -1,    -1,    -1,   240,    37,    -1,    -1,    -1,    -1,     3,
-     4,     5,     6,    46,    -1,     9,   949,    -1,    -1,    -1,
-  1370,  1371,    -1,    -1,   395,    -1,    -1,    -1,    61,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    -1,  1389,
-  1390,   278,   279,    -1,    -1,    -1,    -1,    -1,    42,   500,
-    -1,    -1,   503,   498,    48,    -1,    -1,    -1,   991,    -1,
-    -1,    55,   773,    57,    58,   981,   982,    -1,   519,   520,
-    -1,   328,   329,   330,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,   533,    -1,    -1,   322,    -1,    81,    -1,   326,
-    -1,   328,   329,   330,  1010,    89,   467,    91,    -1,    -1,
-    94,    95,   339,    -1,    -1,    -1,    -1,  1040,  1041,    -1,
-    -1,  1044,    -1,    -1,    -1,    -1,    -1,   562,   355,   564,
-   565,    -1,   833,   494,     3,     4,     5,     6,    -1,    -1,
-  1063,    -1,    -1,    -1,    -1,    -1,   847,    -1,   849,    -1,
-   851,   592,   379,    -1,    -1,    -1,    -1,    -1,   385,    -1,
-    -1,   388,   389,    -1,   599,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   399,    42,    -1,   402,    -1,    -1,    -1,    48,
-   407,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,   894,    -1,  1118,    -1,  1120,    -1,  1122,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,  1130,    -1,   436,
-    -1,   438,    81,   440,   441,   442,  1139,  1140,   579,   446,
-    89,  1144,    91,    -1,   451,    94,    95,   454,    -1,    -1,
-   931,    -1,    -1,    -1,   595,    -1,  1159,  1160,    -1,    -1,
-    -1,    -1,    -1,   470,    -1,    -1,    -1,    -1,   949,    -1,
-    -1,    -1,    -1,    -1,    -1,  1161,  1162,    -1,  1164,  1165,
-    -1,  1167,  1185,    -1,     1,    -1,     3,     4,     5,     6,
-     7,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,
-    -1,   508,   509,   510,   511,    -1,    -1,    -1,    -1,    -1,
-    -1,  1214,    29,    -1,    31,    32,    33,    -1,    -1,    -1,
-    37,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
-    47,    -1,    49,    -1,    -1,  1238,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    61,    -1,    63,    -1,    -1,    -1,
-    -1,    -1,   773,    -1,    71,   582,   583,    -1,   585,   566,
-    -1,   568,    -1,    -1,    81,   592,  1252,  1253,    -1,    -1,
-  1273,    -1,    89,   580,    -1,   582,   583,    94,   585,    -1,
-    -1,    -1,    -1,    -1,    -1,   592,  1289,    -1,    -1,   596,
-    -1,    -1,    -1,    -1,   111,    -1,    -1,  1283,  1284,    -1,
-    -1,    -1,    -1,   610,    -1,    -1,    -1,    -1,  1311,     3,
-     4,     5,     6,    -1,    -1,     9,    -1,    -1,   833,    -1,
-    -1,    -1,   649,    -1,   651,   652,     1,   654,     3,     4,
-     5,     6,   847,     8,   849,    -1,   851,  1118,    -1,  1120,
-    -1,  1122,   649,   650,   651,   652,   653,   654,    42,   870,
-   871,    -1,    -1,    -1,    -1,  1358,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,   692,    -1,    42,    -1,    -1,
-    -1,    -1,  1375,  1376,    49,    -1,    -1,    71,    -1,   894,
-    55,  1384,    57,    58,    -1,   692,    -1,    81,   909,   696,
-    -1,  1377,  1378,  1379,    -1,    89,   703,   704,    -1,   706,
-    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1411,    -1,
-    -1,    -1,    -1,    -1,    89,    -1,   931,    -1,   106,   107,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   734,   949,    -1,
-   737,    -1,   739,  1214,   875,    -1,   877,   744,   745,   746,
-    -1,    -1,    -1,  1429,  1430,    -1,    -1,   754,    -1,    -1,
-    -1,    -1,   779,   760,    -1,     3,     4,     5,     6,    -1,
-   767,   768,   769,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   779,   914,    -1,    -1,    -1,    -1,     4,     5,
-    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,    -1,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,     3,     4,     5,
-     6,    -1,    -1,    29,    -1,    31,    32,    55,  1494,    57,
-    58,    37,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
-    46,    -1,   829,    71,    -1,   852,    -1,   854,  1531,    55,
-    -1,    57,    58,    81,    -1,    -1,    42,    -1,   865,    -1,
-    -1,    89,   869,   870,   871,   852,    94,   854,    -1,    55,
-    -1,    57,    58,    -1,   861,    -1,    -1,    63,   865,  1000,
-   867,    -1,   869,   870,   871,    71,    -1,    -1,    -1,   876,
-    -1,    -1,    98,    -1,    -1,    81,    -1,  1358,    -1,    -1,
-   907,   908,   909,    89,  1105,  1106,     4,     5,    94,    -1,
-    -1,     9,    -1,    -1,    -1,    -1,   903,    -1,   905,     4,
-   907,   908,   909,  1118,    -1,  1120,    -1,  1122,    -1,    14,
-    -1,    -1,  1133,  1134,    -1,    -1,    -1,    -1,    -1,    24,
-    25,   309,   949,    -1,    -1,    -1,    31,    32,    -1,    34,
-    48,    36,    -1,    -1,    -1,    -1,    41,    55,    -1,    57,
-    58,  1082,   949,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-    -1,    56,    -1,    71,    -1,    -1,   963,    -1,    -1,    64,
-    -1,    -1,    -1,    81,    -1,    -1,    71,  1108,    -1,   976,
-    -1,    -1,   979,    91,    -1,    -1,    94,    95,    83,    -1,
-    -1,   988,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1001,    -1,    -1,   385,    -1,  1214,
-    -1,    -1,    -1,    -1,  1011,    -1,    -1,    -1,     3,     4,
-     5,     6,    -1,    -1,  1021,    -1,  1023,    -1,    -1,    -1,
-    -1,    42,    -1,   128,    -1,  1166,    -1,    -1,    49,    -1,
-   135,   328,   329,   330,   139,    -1,    57,    58,   143,    -1,
-    -1,   146,   147,   148,    -1,    -1,   434,    42,  1055,  1056,
-    -1,  1058,    -1,    -1,    49,   160,    -1,    -1,    -1,    -1,
-     4,     5,    57,    58,     8,     9,    -1,    -1,    89,    -1,
-    14,    -1,   177,   178,   179,  1102,  1103,  1104,  1105,  1106,
-    -1,    -1,    -1,  1110,    -1,    29,    81,    31,    -1,    -1,
-    -1,    -1,    -1,    37,    89,  1102,  1103,  1104,  1105,  1106,
-    -1,   206,    46,  1110,    -1,  1132,  1133,  1134,    -1,    -1,
-    -1,    55,   500,    57,    58,   503,    -1,    -1,    -1,   507,
-   508,   509,   510,   511,    -1,  1132,  1133,  1134,     3,     4,
-     5,     6,   520,    -1,     9,   240,    -1,  1358,    -1,    -1,
-     3,     4,     5,     6,    -1,   533,     9,    -1,    -1,    -1,
-    94,    -1,    -1,    -1,    -1,    -1,  1163,    -1,    -1,    -1,
-    -1,  1168,    -1,  1170,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    -1,    -1,   278,   279,    -1,    -1,   565,    -1,    42,
-    55,    -1,    57,    58,    -1,    48,    -1,    -1,    -1,    -1,
-  1217,  1218,    55,  1220,    57,    58,    71,   585,    -1,    -1,
-    -1,  1422,  1423,    -1,   592,    -1,    81,    -1,    71,    -1,
-  1217,  1218,    -1,  1220,    89,    -1,    -1,   322,    81,    94,
-    -1,   326,    -1,   328,   329,   330,    89,    -1,    91,    -1,
-   335,    94,    95,    -1,   339,     3,     4,     5,     6,    -1,
-    -1,     9,    -1,    -1,  1251,  1252,  1253,    -1,    -1,    -1,
-   355,    -1,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-   385,    -1,     4,   388,   389,   582,   583,    55,    -1,    57,
-    58,    42,    -1,    -1,   399,    -1,    -1,   402,    49,    -1,
-    -1,    -1,   407,    71,    -1,    -1,    57,    58,   696,    31,
-    32,    -1,    -1,    81,    36,    -1,    -1,    -1,    -1,    41,
-    -1,    89,     3,     4,     5,     6,    94,    -1,    -1,    -1,
-    81,   436,    -1,   438,    56,   440,   441,   442,    89,    -1,
-    -1,   446,     3,     4,     5,     6,   451,    -1,     9,   454,
-    -1,  1358,   649,    -1,   651,   652,    -1,   654,    -1,    -1,
-    -1,    42,    -1,    -1,   469,   470,   754,    -1,    49,    -1,
-    -1,    -1,   760,    -1,    -1,    -1,    57,    58,    -1,    -1,
-    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-    -1,    -1,    -1,    -1,    55,   692,    57,    58,    -1,    -1,
-    81,    -1,    -1,   508,   509,   510,   511,    -1,    89,    -1,
-    71,    -1,    -1,   135,  1421,  1422,  1423,   139,    -1,    -1,
-    81,   143,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
-    91,    -1,  1439,    94,    95,    -1,    -1,  1444,   160,    -1,
-     1,   829,     3,     4,     5,     6,     7,     8,     9,    -1,
-    -1,    -1,    -1,    14,    -1,   177,   178,    -1,    -1,    -1,
-    -1,   566,    -1,   568,    -1,    -1,    27,    28,    29,    -1,
-    31,    32,    33,   861,    -1,    -1,    37,   582,   583,   867,
-   585,    42,   779,   871,    45,    46,    47,   592,    49,    -1,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,   604,
-    61,    -1,    -1,    -1,    -1,   610,    -1,    -1,    -1,    -1,
-    71,     3,     4,     5,     6,   903,    -1,   905,   240,    -1,
-    81,   909,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    -1,    94,    -1,    -1,   641,    -1,    -1,   100,
-    -1,    -1,    -1,    -1,   649,   650,   651,   652,   653,   654,
-    42,    -1,    -1,    -1,    -1,   852,    -1,   854,    -1,    -1,
-    -1,   949,    -1,    55,    -1,    57,    58,   672,   865,    -1,
-    -1,    63,   869,   870,    -1,   963,    -1,    -1,    -1,    71,
-    -1,   969,    -1,    -1,    -1,    -1,    -1,   692,   976,    81,
-    -1,   696,    -1,    -1,    -1,    -1,    -1,    89,   703,   704,
-   988,   706,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   907,   908,    -1,    -1,    -1,    -1,    -1,   339,     3,     4,
-     5,     6,    -1,    -1,     9,    -1,    -1,    -1,    -1,   734,
-    -1,    -1,   737,  1021,   739,  1023,    -1,    -1,    -1,   744,
-   745,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   754,
-    -1,    -1,    -1,    -1,    -1,   760,    -1,    42,    -1,    -1,
-    -1,    -1,   767,   768,   769,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,   779,    -1,    -1,   399,    -1,    -1,
-   402,    -1,    -1,    -1,    -1,   407,    71,    -1,    -1,     3,
-     4,     5,     6,    -1,    -1,     9,    81,    -1,   177,   178,
-   179,    -1,    -1,     4,    89,    -1,    -1,    -1,    -1,    94,
-    -1,    -1,    -1,    -1,   436,    -1,   438,    -1,  1106,    -1,
-    -1,    -1,    -1,    -1,   829,    -1,    -1,    -1,    42,   451,
-    31,    32,    -1,    34,    48,    36,    -1,    -1,    -1,    -1,
-    41,    55,    -1,    57,    58,    -1,  1134,   852,   470,   854,
-    -1,    -1,    -1,    54,    -1,    56,   861,    71,    -1,    -1,
-   865,    -1,   867,    -1,   869,   870,   871,    81,    -1,    -1,
-    -1,   876,    -1,    -1,    -1,    89,    -1,    91,    79,    -1,
-    94,    95,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,   903,    -1,
-   905,    -1,   907,   908,   909,  1102,  1103,  1104,  1105,    -1,
-    -1,    -1,    -1,  1110,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,   128,    -1,    -1,
-    -1,   132,   133,    -1,   135,  1132,  1133,    -1,   139,    -1,
-   141,    -1,   143,    -1,   949,   146,   147,   148,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   963,   160,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   974,
-    -1,   976,    -1,    -1,   979,    -1,   177,   178,   179,    -1,
-    -1,    -1,  1270,   988,    -1,    -1,   187,    -1,    -1,     4,
-     5,    -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    14,
-    -1,    -1,    -1,    -1,    -1,   206,  1011,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,  1021,    -1,  1023,    -1,
-  1217,  1218,    37,  1220,    -1,    -1,    -1,    -1,   650,    -1,
-    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,   240,
-    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-  1055,  1056,    -1,  1058,    -1,    -1,    71,   436,    -1,   438,
-    -1,   440,   441,   442,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,   451,    -1,   696,    -1,    91,    -1,    -1,    94,
-    95,   703,   704,    -1,   706,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,  1102,  1103,  1104,
-  1105,  1106,    -1,    -1,    -1,  1110,    -1,    -1,   309,    -1,
-    -1,  1116,    -1,    -1,    -1,   737,    -1,   739,    -1,    -1,
-    -1,    -1,   744,   745,   746,   326,    -1,  1132,  1133,  1134,
-    -1,    -1,    -1,   334,    -1,  1423,    -1,    -1,   339,    -1,
-    -1,    -1,    -1,  1148,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1439,    -1,    -1,   355,    -1,    -1,    -1,  1163,    -1,
-    -1,    -1,    -1,  1168,    -1,  1170,     3,     4,     5,     6,
-     7,     8,     9,    -1,    -1,    12,    -1,    14,   379,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,    -1,    -1,
-    -1,    -1,    29,    -1,    31,    32,    -1,    -1,   399,    -1,
-    37,   402,    -1,    -1,    -1,    42,   407,    -1,    -1,    46,
-    -1,    48,  1217,  1218,    -1,  1220,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    71,   436,    -1,   438,    -1,   440,
-   441,   442,    -1,    -1,    81,   446,  1251,  1252,  1253,    -1,
-   451,     4,    89,   454,    91,    -1,    -1,    94,    95,    -1,
-    -1,    98,    -1,    -1,    -1,  1270,    -1,    -1,    -1,   470,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,
-    -1,    34,    -1,    36,    -1,   907,   908,    -1,    41,    -1,
-     3,     4,     5,     6,    -1,    -1,     9,    -1,    -1,   500,
-    -1,    54,   503,    56,    -1,    -1,    -1,    -1,    -1,    -1,
-     4,     5,    -1,    -1,     8,     9,    -1,   518,   519,   520,
-    14,    -1,    -1,    -1,   703,   704,    -1,   706,    -1,    42,
-    -1,    -1,   533,    -1,    -1,    29,    -1,    31,    -1,    -1,
-    -1,    -1,    55,    37,    57,    58,    -1,    -1,    81,    -1,
-    -1,    -1,    46,  1358,    48,    -1,    -1,   979,    71,    -1,
-    -1,    55,    -1,    57,    58,   744,    -1,    -1,    81,     4,
-     5,    -1,    -1,     8,     9,    -1,    89,    71,   579,    14,
-    -1,    94,   135,    -1,    -1,    -1,   139,    81,    -1,  1011,
-   143,   592,    -1,   146,   147,   148,    -1,    91,    -1,    -1,
-    94,    95,    37,    -1,    -1,    -1,    -1,   160,    -1,   610,
-    -1,    46,    -1,    48,    -1,    -1,  1421,  1422,  1423,    -1,
-    55,   154,    57,    58,   177,   178,   179,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1439,    -1,    71,    -1,    -1,  1444,
-    -1,    -1,   175,    -1,    -1,    -1,    81,    -1,   649,   650,
-   651,   652,    -1,   206,    -1,   188,    91,     4,     5,    94,
-    95,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  1102,  1103,    29,    -1,    31,    -1,    -1,   240,  1110,    -1,
-    37,   692,    -1,    -1,    -1,   696,    -1,    -1,    -1,    46,
-    -1,    -1,   703,   704,    -1,   706,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
-    -1,     3,     4,     5,     6,     7,     8,     9,   907,   908,
-   909,    -1,    14,    -1,    -1,    -1,   737,    -1,   739,    -1,
-    -1,  1163,    -1,   744,   745,   746,  1168,    29,  1170,    31,
-    32,    33,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    46,    47,    -1,    49,    -1,    -1,
-   949,    -1,   773,    55,    -1,    57,    58,    -1,    -1,    61,
-    -1,    63,   335,    -1,    -1,    -1,   339,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,  1217,  1218,    -1,  1220,    81,
-   979,    -1,    -1,    -1,    -1,    -1,    -1,    89,     3,     4,
-     5,     6,    94,    -1,     9,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,   111,
-  1252,    -1,    -1,    -1,    -1,   388,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   399,    42,    -1,   402,
-    -1,    -1,    -1,    -1,   407,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    -1,    -1,   869,   870,
-   871,    -1,    -1,    -1,   875,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,   436,    -1,   438,    81,   440,   441,   442,
-    -1,    -1,    -1,   446,    89,    -1,    -1,    -1,   451,    94,
-    -1,   454,    34,    -1,    -1,    -1,   907,   908,   909,    -1,
-    -1,   444,    -1,   914,    -1,    -1,   449,   470,    -1,    -1,
-    -1,    -1,    54,  1102,  1103,  1104,  1105,  1106,    -1,    -1,
-    -1,  1110,    -1,    -1,     3,     4,     5,     6,     7,     8,
-     9,   474,    -1,    -1,    -1,    14,    -1,   480,   949,    -1,
-    -1,    -1,    -1,  1132,  1133,  1134,    -1,    -1,    -1,   492,
-   493,    -1,   495,    32,    -1,    -1,    -1,    -1,    37,    -1,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,   979,    48,
-     3,     4,     5,     6,  1163,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1000,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  1011,    -1,    81,    -1,   146,   147,   148,    -1,    -1,    42,
-    89,    -1,    91,    -1,    -1,    94,    95,   580,    -1,    -1,
-    -1,    -1,    55,    -1,    57,    58,    -1,    -1,  1217,  1218,
-    63,  1220,    -1,    -1,    -1,   177,   178,   179,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,   588,   589,   610,    81,    -1,
-   593,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
-    -1,    94,    -1,    -1,   206,    -1,    -1,    -1,    -1,    -1,
-    -1,  1082,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
-    -1,    -1,     9,    -1,    -1,    -1,   649,   650,   651,   652,
-    -1,  1102,  1103,  1104,  1105,  1106,    -1,  1108,    -1,  1110,
+   174,   149,   150,   176,    23,   209,    55,   161,   175,     4,
+   349,   126,   717,   402,    80,   455,   156,    14,     4,   402,
+   251,    90,     4,    92,    46,    42,   482,   355,   355,   566,
+    35,   134,    80,   304,   305,    42,   863,    42,    84,   623,
+    35,   373,    59,   247,   133,   134,   630,   699,   716,    35,
+     4,  1304,    57,    35,    76,   402,    42,    42,   603,   646,
+    42,   503,   692,   787,  1481,  1388,   337,    72,   137,   793,
+   124,    62,   217,   218,    54,   133,    30,    31,   144,    84,
+    42,    35,   460,    88,     4,    90,    83,    92,    42,   440,
+   209,   769,   296,   771,  1482,   763,    42,    11,  1504,   218,
+   778,    11,   107,   108,    60,     4,  1480,    11,    47,   106,
+    33,    47,     0,   700,     7,    35,    12,    59,  1524,   490,
+   560,    37,    42,    12,   355,    33,   175,    54,   356,   357,
+    84,   136,   137,     0,   139,    62,    35,   203,   509,  1314,
+     1,     4,    47,    42,    37,   349,  1321,    74,    62,   140,
+     9,  1525,   169,   109,    93,    94,     1,    93,   165,    74,
+   165,     1,   169,    59,   169,   156,    62,   109,   624,   108,
+    59,   176,    35,    62,  1562,   155,   900,  1583,    59,    42,
+   408,   409,   136,   169,   169,    84,   109,   169,    93,    94,
+  1607,   213,   209,   109,   108,   149,   150,    58,   108,   538,
+   217,   218,    61,   108,   108,    33,    57,   169,     4,     5,
+    47,   165,   108,    58,   262,   169,   136,    62,    58,    62,
+   200,   212,    62,   169,    74,    54,    48,   108,  1481,   220,
+   247,     4,     4,    62,    47,    25,    47,   136,  1528,   193,
+   194,   149,   150,   151,  1567,   165,   237,    47,  1622,   169,
+    95,   248,     4,    47,    93,    95,    93,   346,    54,    93,
+    56,    57,    35,    35,   916,   108,   165,   919,    58,    60,
+   169,   108,    62,   136,    70,     3,     4,     5,   718,   296,
+    93,    94,    93,    35,    80,   136,  1576,   195,   346,   358,
+   393,    93,   297,    93,   448,   108,   342,   108,    94,    93,
+  1024,    25,   165,    27,    74,    95,   169,    58,   960,   961,
+  1485,   941,  1036,    59,   306,   307,   643,   862,   109,    74,
+   904,   149,   150,   151,   329,   176,   474,   475,    56,    57,
+   322,   385,   349,   325,    58,   682,   328,   342,    62,   331,
+   672,   486,   487,   335,    59,   350,  1070,    98,  1072,   494,
+   739,   343,    80,   358,   359,   404,   739,    60,   355,  1534,
+   711,   712,   108,   508,   948,     4,     5,   195,   487,     4,
+     5,    95,    62,    93,    60,    59,   107,    25,    54,    27,
+    12,   612,   527,  1061,    74,    47,    62,    47,   342,   406,
+    47,    60,    54,   108,   182,    27,   735,   402,    74,    31,
+   405,    25,     3,     4,     5,   359,   109,    64,   945,  1584,
+    58,   995,    74,    48,    62,    47,   402,    56,    57,   647,
+  1247,    56,    57,   109,   108,   442,  1013,    59,    60,   498,
+    62,    93,    64,    93,    27,   442,    93,   442,    31,   359,
+  1209,  1210,    25,   342,    27,   901,    47,    95,   402,    25,
+    60,    27,    47,    54,  1223,    56,    57,   442,   506,   450,
+   359,    93,    94,   468,   533,     4,     5,    60,    58,   486,
+   487,    64,    62,    54,   496,    58,   108,   494,    38,    62,
+     4,     5,    58,  1135,  1136,     9,    62,   865,   442,    47,
+    31,   508,    93,   498,    54,    59,   359,    58,    93,    94,
+  1168,   506,   493,   402,    74,    44,    64,    54,   359,    47,
+   527,    75,    95,    77,   468,    54,   109,    56,    57,    95,
+   474,   475,   442,    54,   506,    47,    58,    74,   533,    59,
+    54,   536,    56,    57,   539,    93,   710,  1205,   543,   544,
+   545,   546,   547,   442,   984,    75,    70,    47,     8,     9,
+  1377,   556,   506,   942,    14,    93,    80,    47,   604,   942,
+   109,   566,   554,   555,   569,    47,   474,   475,   476,   468,
+   673,    93,  1014,  1157,  1016,   803,    36,   680,  1020,   442,
+  1349,    54,   910,   910,    12,    45,   506,    59,    60,  1358,
+  1359,   680,  1361,    93,    94,   942,    54,    54,    47,   604,
+   649,    74,  1186,    93,    94,    47,   675,   506,   812,    93,
+    54,    93,   757,    47,    47,    64,    74,    74,   623,     3,
+     4,     5,     6,    54,   480,   630,    94,     3,     4,     5,
+    74,    59,   488,   650,    62,   906,    64,   634,    54,   688,
+    54,   690,   691,   506,    93,    94,   474,   475,   476,    47,
+   604,    93,    47,  1109,    47,   506,    47,    41,    74,    93,
+    93,   108,   681,    54,    48,    62,   620,   621,  1336,   623,
+   675,    54,    56,    57,   691,    62,   630,    74,    54,   910,
+    56,    57,    58,    74,   689,    75,   735,    74,   693,    62,
+     3,     4,     5,     6,   109,    93,    80,   716,    93,    47,
+    93,    74,    93,    47,    88,   604,    47,   935,   108,    47,
+    62,  1089,  1090,    54,    33,   800,   801,   802,   735,   788,
+   789,   769,   791,   771,   623,     4,     5,   776,    41,   777,
+   778,   630,    58,    74,   739,    48,   784,   108,    64,   108,
+   757,  1510,  1511,    56,    57,    93,     3,     4,     5,    93,
+   772,   773,    93,     4,     5,    93,   108,    11,     9,   781,
+  1202,  1203,  1204,    98,   769,  1104,   771,    80,   908,    48,
+     8,     9,   777,   778,    60,    88,    14,    56,    57,   784,
+     3,    47,   787,   788,   789,   739,   791,   769,   793,   771,
+   107,   108,     4,     5,   968,   812,   778,    54,    36,    56,
+    57,    80,   784,    54,  1182,    56,    57,    45,    93,    47,
+     4,     5,    60,  1191,  1192,   769,   111,   771,  1196,    70,
+    86,    87,     4,     5,   778,    91,    92,    93,    94,    80,
+   784,   150,   151,   787,    59,    60,  1064,  1065,  1066,   793,
+   739,    74,    54,    94,    56,    57,    62,  1105,  1106,   769,
+  1108,   771,    31,    94,    48,    93,   861,    75,   778,    77,
+  1238,   866,    56,    57,   784,  1570,    48,    94,   983,    62,
+   769,    44,   771,    93,    56,    57,   195,     4,     5,   778,
+   111,    54,   874,    93,    57,   784,    80,   953,   787,   894,
+    59,    60,     4,     5,   793,   900,    54,    74,    80,   904,
+     3,     4,     5,     6,    62,    59,   769,    74,   771,    74,
+   902,   903,    74,   910,    54,   778,    74,   908,   769,    11,
+   771,   784,    62,    59,    60,   776,   777,   778,   109,    56,
+    57,    59,     3,   784,    74,     6,   108,   942,    41,   944,
+   945,    74,    54,   948,    56,    57,   900,    27,   902,   903,
+   904,    31,   108,    56,    57,  1333,   942,   108,    70,  1399,
+    31,    59,   141,    54,   108,    27,    64,   146,    80,    31,
+    41,    62,   760,    54,  1313,  1415,    74,    75,  1027,    59,
+    60,    74,  1048,    74,    64,    56,    57,    74,   942,   108,
+   995,   109,   946,   947,   948,   783,  1374,    59,    60,    70,
+  1048,   900,   109,  1008,   108,   904,    54,  1155,  1156,    80,
+   329,   111,   329,  1061,    62,   194,   111,    88,  1040,  1024,
+    59,    60,    93,    27,  1046,  1047,    74,    74,  1050,  1051,
+  1258,  1036,  1054,     4,     5,   111,  1184,  1185,     4,     5,
+   948,   995,    59,   942,  1113,     3,     4,     5,     6,   948,
+    83,    84,     3,     4,     5,    74,  1061,    74,    75,    54,
+    77,    59,    60,    74,  1504,  1070,   111,  1072,    59,    60,
+  1024,    80,    81,    82,    83,    84,   108,    48,   108,  1061,
+   259,    47,  1036,    41,  1524,    56,    57,   995,    54,    58,
+    56,    57,   108,  1159,   108,  1100,   995,    48,    56,    57,
+     3,     4,     5,     6,    70,    56,    57,  1061,  1113,    80,
+   429,   430,    54,  1553,    80,     8,  1070,   111,  1072,  1111,
+   948,    59,    60,    93,    90,  1024,    47,    93,    94,  1518,
+    88,    59,    60,    59,    60,  1518,    59,  1036,    41,  1312,
+    64,  1061,   109,  1583,  1311,    48,  1313,    93,   465,  1168,
+    54,  1591,  1157,    56,    57,    60,   475,   476,     7,     8,
+     9,    14,  1061,    36,    64,    14,    64,   995,    64,    22,
+    60,  1070,  1220,  1072,  1179,   108,  1027,    80,   108,    62,
+    64,  1186,    31,  1522,  1179,    88,   108,    36,   108,   108,
+   108,   108,  1184,  1185,    64,  1200,    45,  1179,  1061,    64,
+   111,  1155,  1156,  1157,    75,    62,   108,     3,     4,     5,
+  1061,    60,    65,     4,     5,    75,   108,   536,    62,   536,
+   539,   108,   539,   108,    75,  1179,   543,    75,    75,   108,
+  1184,  1185,  1186,   108,  1612,    62,   555,   556,    59,   556,
+   419,  1029,  1030,   422,     3,     4,     5,  1155,  1156,  1157,
+   569,    62,   569,   108,   108,   434,   573,    48,  1157,  1179,
+    56,    57,  1311,   108,  1313,    56,    57,     3,     4,     5,
+  1058,   124,   111,   111,    94,    88,  1184,  1185,  1186,    74,
+  1179,    47,   108,   108,   601,   109,   108,  1186,   111,    80,
+   607,   470,   111,   472,   108,   148,  1313,    56,    57,  1304,
+   108,     4,     5,   108,    60,   109,   485,  1312,    59,  1314,
+    64,   630,  1304,   402,    64,    93,  1321,    59,  1522,  1314,
+    56,    57,  1304,   108,    59,  1330,  1321,  1155,  1156,  1157,
+    59,   108,  1314,    93,  1356,  1357,    93,    30,    31,  1321,
+    33,    93,  1496,   108,    93,    48,     3,     4,     5,   111,
+  1304,  1499,  1500,    56,    57,   108,  1184,  1185,  1186,     8,
+  1314,   109,   109,   108,    57,   108,    59,  1321,   108,   108,
+   108,    33,    65,    64,   111,   109,  1550,    80,    54,   468,
+   108,     3,     4,     5,  1304,   238,   239,     3,     4,     5,
+     6,     3,     4,     5,  1314,     7,     8,     9,   251,    56,
+    57,  1321,   108,  1425,   108,  1304,     3,     4,     5,   108,
+     7,     8,     9,   108,   108,  1314,   108,    62,    47,    31,
+   108,   111,  1321,   108,    36,    41,   108,  1215,  1216,    96,
+  1218,  1219,    48,  1221,    56,    57,    58,    62,    62,    60,
+    56,    57,    54,    60,    56,    57,    58,     9,   141,    60,
+    16,    60,   108,   146,   108,   108,   149,   150,   151,    56,
+    57,   108,   108,   193,   194,   195,   108,   108,   321,   108,
+  1475,    60,    88,    93,  1523,  1480,  1481,  1482,    93,    54,
+  1485,    64,    17,   176,   111,  1480,    93,   806,    93,   182,
+  1485,   103,   104,   105,    54,    60,  1501,   107,  1480,  1481,
+   193,   194,   195,  1485,    97,  1522,   108,  1499,  1500,    60,
+   363,    11,   108,  1518,   108,    60,   209,   108,  1426,   372,
+  1525,  1475,    60,    60,   217,   218,  1480,  1481,  1482,  1534,
+  1525,  1485,   385,  1555,   623,    93,    59,    64,   108,  1534,
+    60,   630,    11,  1525,   108,  1499,  1500,     3,     4,     5,
+    60,   108,  1534,   870,    11,    60,     0,  1562,  1346,  1347,
+  1480,  1481,     0,     0,  1518,  1485,   259,   746,   747,   170,
+   749,  1525,     2,    35,   673,  1413,  1475,   942,   442,  1584,
+  1534,  1480,  1481,  1482,   903,   904,  1485,   904,   169,  1584,
+  1549,  1499,  1500,  1501,     3,     4,     5,   165,  1426,   777,
+    56,    57,  1584,  1168,    94,  1525,   238,   139,  1562,  1398,
+  1622,  1248,   299,   928,  1534,   723,   923,  1622,  1336,  1518,
+   243,     3,     4,     5,     6,  1205,  1525,  1622,   777,   948,
+  1584,   784,   656,  1222,   921,  1534,   329,   200,   346,    48,
+  1622,    88,   604,    90,   124,    92,  1314,    56,    57,   502,
+   739,  1180,  1570,  1591,  1539,  1603,     3,     4,     5,    41,
+  1448,  1449,  1450,  1562,  1584,  1330,    48,  1601,  1622,  1003,
+    -1,  1499,  1500,  1501,    56,    57,   995,     1,    -1,     3,
+     4,     5,     6,    30,     8,  1584,    -1,    -1,    -1,    -1,
+   137,    -1,   139,    -1,     3,     4,     5,    -1,   787,     3,
+     4,     5,  1622,    -1,   793,    -1,    88,    54,    -1,    56,
+    57,    -1,   405,   406,    -1,   568,    -1,    41,    -1,  1507,
+  1508,    -1,    -1,  1622,    48,    -1,   419,    -1,    -1,   422,
+    54,    -1,    56,    57,    -1,   428,   429,   430,    -1,    -1,
+   470,   434,   472,    -1,   474,   475,   476,    56,    57,    -1,
+    54,    -1,    56,    57,    -1,   485,    -1,     9,    -1,   612,
+    12,    -1,    -1,    -1,    88,     3,     4,     5,   947,    -1,
+    78,    79,    80,    81,    82,    83,    84,   470,    -1,   472,
+    -1,   474,   475,   476,    -1,    -1,   479,  1575,    -1,    -1,
+    -1,    -1,   485,   486,   487,    47,    -1,   490,    -1,    -1,
+    -1,   494,    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,
+    62,   900,    64,    -1,    -1,   904,   509,    -1,    56,    57,
+    -1,    -1,    -1,    75,    -1,    77,    -1,    80,   681,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1156,  1157,   692,
+    -1,    93,    94,   536,    -1,    -1,   539,     3,     4,     5,
+     6,   104,    -1,   942,    -1,    -1,   108,    -1,    -1,   948,
+    -1,   554,   555,   556,    -1,    -1,  1185,  1186,    -1,  1186,
+   723,    -1,    -1,   320,    -1,    -1,   569,    -1,    -1,    -1,
+   133,    -1,    -1,  1200,    -1,    41,    -1,    -1,    -1,    -1,
+    -1,   144,    48,    -1,    -1,     3,     4,     5,     6,    -1,
+    56,    57,    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,
+    -1,   358,    -1,    -1,    -1,    -1,    -1,  1234,  1235,  1236,
+  1237,    -1,    -1,    -1,    80,    -1,    -1,     7,     8,     9,
+    38,    39,    88,    41,    14,  1024,    -1,   630,     3,     4,
+     5,     6,    -1,    -1,     9,    -1,    54,  1036,    56,    57,
+   203,    31,    -1,    -1,    -1,    -1,    36,   650,     4,     5,
+    -1,    -1,    -1,     9,    -1,    45,    31,    -1,    -1,    -1,
+   461,    -1,    -1,    -1,  1153,  1154,    41,   468,    -1,   461,
+  1297,  1070,  1161,  1072,    -1,   238,   468,    -1,    -1,    54,
+    -1,    56,    57,    -1,    -1,    -1,   689,    -1,   691,   692,
+    -1,    47,    -1,    -1,    -1,    70,    -1,    -1,    54,   262,
+    56,    57,    -1,   460,   461,    80,   746,   747,    -1,   749,
+    -1,   468,    -1,    88,    70,    -1,    -1,    -1,    93,    -1,
+    -1,     7,     8,     9,    80,    -1,    -1,    -1,    14,    -1,
+    -1,    -1,   735,   534,    90,    -1,   776,    93,    94,    -1,
+    -1,   498,   534,   746,   747,    31,   749,    -1,  1375,    -1,
+    36,    -1,    -1,    -1,   757,    -1,    -1,   760,  1157,    45,
+    -1,    -1,    -1,    -1,    -1,   928,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   777,    -1,   533,   534,   941,    -1,
+   783,  1408,    -1,  1272,  1273,    -1,  1275,  1186,    -1,    -1,
+    -1,   354,    -1,   594,    -1,    -1,    -1,  1426,    -1,   600,
+    -1,    -1,   594,   806,    -1,    -1,    -1,    -1,   600,   566,
+    -1,   568,    -1,    -1,   571,   572,    -1,   574,   575,   576,
+   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
+   587,   588,   589,   590,   591,   592,   637,   594,   630,     3,
+     4,     5,     6,   600,    -1,   637,    -1,    -1,  1475,   412,
+    -1,    -1,    -1,    -1,  1481,  1482,    -1,    -1,    -1,    -1,
+   755,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    -1,  1500,  1501,   630,  1501,    -1,    -1,    41,    -1,    -1,
+   637,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+    -1,   786,    56,    57,    -1,    -1,    -1,   792,    -1,   902,
+   903,   904,   659,   660,    -1,    -1,   946,   947,   948,     4,
+     5,    -1,    -1,     8,     9,    -1,    80,    -1,   675,    14,
+    -1,    -1,    -1,    -1,    88,    -1,    -1,  1090,    -1,    -1,
+     3,     4,     5,     6,    -1,  1562,    -1,    -1,   941,   502,
+    -1,    36,    -1,   946,   947,   948,    -1,    -1,    -1,    -1,
+    45,  1578,    47,    -1,    -1,   995,    -1,    -1,    -1,    54,
+    -1,    56,    57,    -1,    -1,    -1,   723,   530,    41,    -1,
+    -1,    -1,    -1,  1600,    -1,    70,    -1,    -1,    -1,    -1,
+  1607,    54,    -1,    56,    57,    80,    -1,  1027,    -1,     3,
+     4,     5,   995,     7,    -1,    90,    -1,    -1,    93,    94,
+   895,    -1,   897,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   768,    -1,  1176,   806,    88,    30,    -1,    -1,  1182,
+   348,   349,   350,    37,    -1,    -1,  1029,  1030,    -1,    -1,
+    -1,   788,   789,    -1,   791,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,   806,
+    -1,    -1,    -1,    -1,   617,  1058,    -1,    -1,    -1,   860,
+   861,    -1,    -1,    -1,    -1,   866,    -1,    -1,   860,   861,
+   633,   828,    -1,    -1,   866,    -1,    -1,    -1,    -1,   880,
+    -1,   882,    -1,   884,    -1,    -1,    -1,    -1,   880,    -1,
+   882,    -1,   884,    -1,     3,     4,     5,     6,    -1,    -1,
+    -1,    -1,    -1,   860,   861,    -1,    -1,    -1,   865,   866,
+    -1,    -1,    -1,  1153,  1154,  1155,  1156,  1157,    -1,  1518,
+    -1,  1161,    -1,   880,    -1,   882,    -1,   884,    -1,   930,
+    -1,    -1,    41,    -1,    -1,  1298,  1299,    -1,   930,    48,
+     3,     4,     5,     6,  1184,  1185,  1186,    56,    57,    -1,
+  1153,  1154,  1155,  1156,  1157,    -1,    -1,    -1,  1161,    -1,
+    -1,    -1,    -1,   920,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   930,  1069,   976,  1071,  1217,    41,    88,
+    -1,  1184,  1185,  1186,   976,    -1,    -1,    -1,   945,    -1,
+    -1,    54,    -1,    56,    57,    -1,    -1,    60,    -1,    62,
+    -1,   958,    -1,   995,    -1,    -1,    -1,    70,    -1,    -1,
+    -1,    -1,  1215,  1216,    -1,  1218,  1219,    80,  1221,   976,
+    -1,    -1,    -1,    -1,    -1,    88,    -1,  1390,    -1,    -1,
+    93,  1126,  1272,  1273,    -1,  1275,     4,     5,   995,    -1,
+     8,     9,    -1,    -1,    -1,    -1,    14,     4,    -1,  1412,
+  1413,    -1,     3,     4,     5,     6,    -1,    14,     9,    -1,
+    28,    -1,    30,    -1,    -1,    -1,    -1,    24,    36,  1272,
+  1273,    -1,  1275,    30,    31,    -1,    33,    45,    35,    -1,
+    31,    -1,  1039,    -1,    -1,    42,    54,    -1,    56,    57,
+    41,    -1,   620,   621,    -1,    -1,    -1,    -1,    55,    -1,
+    57,    -1,    -1,    54,    -1,    56,    57,    -1,    65,  1312,
+  1313,  1206,    -1,    -1,    -1,    72,  1211,    -1,    -1,    70,
+    -1,    -1,    -1,    -1,    -1,    93,    83,    84,    -1,    80,
+  1493,    -1,  1089,  1090,    -1,    -1,  1093,    88,    -1,    -1,
+    -1,    -1,    93,  1346,  1347,    -1,   909,    -1,   911,   106,
+    -1,    -1,    -1,    -1,    -1,    -1,  1113,   348,   349,   350,
+   688,    -1,   690,   691,    -1,   693,    -1,  1262,    -1,  1170,
+    -1,  1172,    -1,  1174,    -1,    -1,    -1,   134,  1170,   136,
+  1172,    -1,  1174,   140,   141,    -1,  1426,    -1,   145,   146,
+   953,    -1,   149,   150,   151,    -1,    -1,    -1,    -1,    -1,
+     4,     5,    -1,    -1,     8,     9,    -1,   735,   165,    -1,
+    14,    -1,   169,  1170,    -1,  1172,    -1,  1174,   175,   176,
+     7,     8,     9,  1426,    28,  1182,    30,    14,    -1,    -1,
+    -1,    -1,    36,    -1,  1191,  1192,   193,   194,   195,  1196,
+    -1,    45,    -1,    47,    31,  1448,  1449,  1450,    -1,    36,
+    54,    -1,    56,    57,    -1,    -1,  1213,  1214,    45,  1499,
+  1500,  1501,    -1,    -1,    -1,   222,    70,    -1,  1269,    -1,
+  1365,  1366,    -1,    60,    -1,    -1,    80,  1269,    -1,    -1,
+    -1,  1238,   239,    -1,   812,  1048,    90,  1382,    -1,    93,
+    94,   248,    -1,    -1,    -1,    -1,  1499,  1500,  1501,    -1,
+    -1,    -1,   259,    -1,  1507,  1508,    -1,    -1,    -1,     3,
+     4,     5,  1269,     7,     8,     9,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+     3,     4,     5,     6,    -1,    -1,  1293,    31,    -1,    -1,
+   297,   298,    36,    -1,    -1,    -1,  1441,  1442,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   885,    31,   887,
+    -1,    -1,    56,    57,    -1,  1460,  1461,    -1,    41,  1132,
+   898,    -1,  1575,    -1,   902,   903,  1333,    -1,    -1,    -1,
+    -1,    54,    -1,    56,    57,   342,    -1,    -1,    -1,   346,
+    -1,   348,   349,   350,    -1,  1352,  1159,    70,    -1,     4,
+     5,    -1,   359,     8,     9,    -1,    -1,    80,    -1,    14,
+    -1,    -1,    -1,    -1,    -1,    88,    -1,  1374,   946,   947,
+    93,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,   620,
+   621,    36,   623,    -1,  1426,    -1,   393,    -1,    -1,   630,
+    45,    -1,    -1,    -1,    -1,   402,    -1,   404,   405,    54,
+    -1,    56,    57,    58,     4,     5,    -1,  1220,     8,     9,
+    -1,    -1,   419,    -1,    14,   422,    -1,    -1,    -1,  1426,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   434,    28,    -1,
+    30,    -1,    -1,    -1,    -1,   442,    36,    -1,    93,  1446,
+  1447,    -1,    -1,    -1,    -1,    45,    -1,   688,  1455,   690,
+   691,    -1,   693,    -1,    54,    -1,    56,    57,    -1,    -1,
+    -1,    -1,    -1,   470,    -1,   472,    -1,   474,   475,   476,
+    -1,    -1,    -1,   480,    -1,    -1,  1483,    -1,   485,    -1,
+    -1,   488,     3,     4,     5,     6,    -1,     8,     9,    10,
+    11,    -1,    13,    14,   735,    -1,    -1,    -1,    -1,   506,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+    31,    32,    -1,    34,    35,    36,    -1,    38,    39,    40,
+    41,    42,    43,    -1,    45,    -1,    47,    -1,    49,    50,
+    51,    52,    53,    54,    -1,    56,    57,   544,   545,   546,
+   547,     3,     4,     5,     6,    -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,   812,    93,    94,    -1,  1153,  1154,  1155,  1156,    41,
+    -1,    -1,    -1,  1161,    -1,    47,    -1,    -1,    -1,   110,
+    -1,    -1,    54,    -1,    56,    57,    -1,   604,    -1,   606,
+    -1,    -1,    -1,    -1,    -1,  1612,  1184,  1185,    70,    -1,
+    -1,   618,    -1,   620,   621,    -1,   623,    -1,    80,    -1,
+    -1,    -1,    -1,   630,    -1,    -1,    88,   634,    90,    -1,
+    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   649,    -1,   885,    -1,   887,    -1,     4,     5,
+    -1,     7,     8,     9,    -1,    -1,    12,   898,    14,    -1,
+    -1,   902,   903,   904,    -1,    -1,   673,    -1,    -1,    -1,
+    -1,    -1,    28,   680,    30,    31,    -1,    -1,    -1,    -1,
+    36,   688,   689,   690,   691,   692,   693,    -1,    -1,    45,
+    -1,    47,    -1,    -1,  1272,  1273,    -1,  1275,    54,    -1,
+    56,    57,    -1,    -1,    -1,   946,   947,   948,    -1,    -1,
+    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,   735,    -1,
+    -1,    -1,   739,    -1,    90,    -1,    -1,    93,    94,   746,
+   747,    -1,   749,    -1,    -1,     3,     4,     5,     6,     7,
+     8,     9,    -1,    -1,   995,    -1,    14,    -1,    -1,   766,
+    -1,    -1,   769,    -1,   771,    -1,    -1,    -1,    -1,   776,
+   777,   778,    -1,    31,     4,     5,    -1,   784,    36,     9,
+   787,    -1,    -1,    41,    -1,    -1,   793,    45,    -1,    47,
+    -1,    -1,    -1,   800,   801,   802,    54,    -1,    56,    57,
+    -1,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
+    -1,    -1,    70,    -1,    -1,    -1,    -1,    47,     4,    -1,
+    -1,    -1,    80,    -1,    54,    -1,    56,    57,    14,    -1,
+    88,    -1,    90,    -1,    -1,    93,    94,    23,    24,    -1,
+    70,    -1,    -1,    -1,    30,    31,    -1,    33,    -1,    35,
+    80,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+    90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,   885,    65,
+   887,    -1,    -1,    -1,    -1,    -1,    72,   894,    -1,    -1,
+    -1,   898,    -1,   900,    -1,   902,   903,   904,    84,    -1,
+    -1,    -1,    -1,   910,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,  1153,  1154,  1155,  1156,  1157,    -1,    -1,    -1,
+  1161,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+    81,    82,    83,    84,    -1,   942,    31,   944,    -1,   946,
+   947,   948,    -1,  1184,  1185,  1186,    41,    -1,    -1,    -1,
+   136,    -1,    -1,    -1,   140,   141,    -1,    -1,    -1,    54,
+   146,    56,    57,   149,   150,   151,    -1,    -1,     3,     4,
+     5,     6,    -1,    -1,     9,    70,    -1,    -1,    -1,   165,
+    -1,    -1,    -1,   169,    -1,    80,    -1,    -1,   995,   175,
+   176,    -1,    -1,    88,    -1,    -1,    31,    -1,    93,    -1,
+    -1,  1008,    -1,    -1,    -1,    -1,    41,   193,   194,   195,
+    -1,    -1,    47,    -1,    -1,    -1,    -1,  1024,    -1,    54,
+  1027,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,  1036,
+    -1,  1272,  1273,    -1,  1275,    70,   222,    -1,    -1,    -1,
+    -1,    -1,  1049,    -1,    -1,    80,    -1,    -1,    -1,    -1,
+    -1,    -1,     4,    88,  1061,    90,    -1,    -1,    93,    94,
+    -1,    -1,    -1,  1070,    -1,  1072,    -1,    -1,     3,     4,
+     5,     6,    -1,   259,     9,    -1,    -1,    -1,    30,    31,
+    -1,    33,    -1,    35,     4,     5,    -1,    -1,     8,     9,
+    42,    -1,    -1,  1100,    14,    -1,    31,    -1,  1105,  1106,
+    -1,  1108,    -1,    55,    -1,    57,    41,    -1,    28,    -1,
+    30,   297,   298,    -1,    -1,    -1,    36,    -1,    -1,    54,
+    -1,    56,    57,    -1,    -1,    45,    -1,    -1,    80,    -1,
+    -1,    -1,    -1,    -1,    54,    70,    56,    57,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    80,  1153,  1154,  1155,  1156,
+  1157,    -1,    -1,    88,  1161,    -1,   342,    -1,    93,    -1,
+   346,    -1,   348,   349,   350,    -1,    -1,    -1,    -1,   355,
+    -1,    -1,    -1,   359,    -1,    -1,    -1,  1184,  1185,  1186,
+    -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,   141,
+    -1,    -1,   144,    -1,   146,    -1,    -1,   149,   150,   151,
+    -1,    -1,    -1,    -1,   156,    -1,    -1,   393,    -1,    -1,
+  1217,    -1,    -1,   165,    -1,  1222,   402,   169,   404,   405,
+    -1,    -1,    -1,   175,   176,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   419,    -1,    -1,   422,    -1,    -1,    -1,
+    -1,   193,   194,   195,    -1,    -1,    -1,    -1,   434,    -1,
+    -1,   203,    -1,    -1,    -1,    -1,   442,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1272,  1273,    -1,  1275,    -1,
+   222,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    -1,   470,    -1,   472,    -1,   474,   475,
+   476,    -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,   485,
+    -1,    -1,   488,    -1,  1311,  1312,  1313,   259,    -1,     1,
+    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
+   506,    -1,    14,  1330,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     3,     4,     5,     6,    -1,    28,    -1,    30,    31,
+    32,    -1,    -1,    -1,    36,    37,    -1,    -1,    -1,    41,
+    -1,    -1,    -1,    45,    46,    -1,    48,    -1,   544,   545,
+   546,   547,    54,    -1,    56,    57,    -1,    -1,    60,    41,
+    62,     3,     4,     5,     6,    -1,    -1,   329,    70,    -1,
+    -1,    -1,    54,    -1,    56,    57,    -1,    -1,    80,    -1,
+    62,    -1,    -1,    -1,   346,    -1,    88,    -1,    70,    -1,
+    -1,    93,   354,    -1,    -1,    -1,    -1,   359,    80,    41,
+    -1,    -1,    -1,    -1,    -1,    -1,    88,   109,   604,  1426,
+   606,    93,    54,    -1,    56,    57,    -1,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,   620,   621,    -1,   623,    70,    -1,
+    -1,   393,    -1,    -1,   630,    -1,    -1,    -1,    80,    -1,
+    -1,    -1,   404,    -1,    -1,    -1,    88,   643,    -1,    -1,
+    -1,    93,    -1,   649,    -1,    -1,    -1,   419,    -1,    -1,
+   422,    -1,    -1,    -1,    -1,    -1,   428,   429,   430,    -1,
+    -1,    -1,   434,    -1,    -1,    -1,    -1,   673,     4,    -1,
+   442,    -1,  1499,  1500,  1501,   681,    -1,    -1,    -1,    -1,
+    -1,    -1,   688,   689,   690,   691,   692,   693,    -1,    -1,
+    -1,  1518,    -1,    -1,    -1,    -1,  1523,    -1,   470,    35,
+   472,    -1,   474,   475,   476,    -1,    42,    -1,   480,    -1,
+   716,    -1,    -1,   485,    -1,    -1,   488,    -1,    -1,    55,
+    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   735,
+    -1,    -1,    -1,   739,   506,    -1,    -1,    -1,    -1,    -1,
+   746,   747,    -1,   749,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   763,    -1,    -1,
+   766,    -1,    -1,   769,   536,   771,    -1,   539,    -1,    -1,
+   776,   777,   778,    -1,     3,     4,     5,     6,   784,    -1,
+     9,   787,   554,   555,   556,    -1,    -1,   793,    -1,    -1,
+    -1,    -1,    -1,    -1,   800,   801,   802,   569,    -1,    -1,
+   136,    -1,    31,    -1,   140,    -1,   812,    -1,    -1,    -1,
+    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,
+    -1,    -1,    -1,    -1,    -1,    54,    -1,    56,    57,   165,
+    -1,    -1,    -1,   169,    -1,    -1,    -1,     4,     5,   175,
+   176,    70,     9,    -1,    -1,   617,    -1,    -1,    -1,    -1,
+    -1,    80,    -1,    -1,    -1,    -1,    -1,    -1,   630,    88,
+    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   649,    -1,   885,
+    47,   887,    -1,    -1,    -1,    -1,   222,    54,   894,    56,
+    57,    -1,   898,    -1,   900,    -1,   902,   903,   904,    -1,
+    -1,   673,    -1,    70,   910,     4,     5,    -1,   680,     8,
+     9,    -1,    -1,    80,    -1,    14,   688,   689,   690,   691,
+    -1,    -1,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,
+    82,    -1,    -1,    -1,    -1,    -1,   942,    36,   944,    -1,
+   946,   947,   948,    -1,    -1,    -1,    45,    -1,    47,    -1,
+    -1,    -1,    -1,    -1,    -1,    54,    -1,    56,    57,    -1,
+    -1,    -1,    -1,   735,    -1,    -1,    -1,   739,    -1,    -1,
+    -1,    70,    -1,    -1,   746,   747,    -1,   749,    -1,    -1,
+    -1,    80,     3,     4,     5,     6,     7,     8,     9,   995,
+    -1,    90,    -1,    14,    93,    94,    -1,   769,    -1,   771,
+    -1,    -1,  1008,    -1,   776,   777,   778,   159,    -1,    -1,
+    31,    -1,   784,    -1,    -1,    36,    -1,    -1,  1024,    -1,
+    41,  1027,    -1,   359,    45,    -1,    47,    -1,    -1,    -1,
+  1036,    -1,    -1,    54,   806,    56,    57,    -1,    -1,   191,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    -1,    -1,   204,    -1,    -1,  1061,    -1,    -1,    -1,    80,
+    -1,    -1,    -1,    -1,  1070,    -1,  1072,    88,   404,    90,
+    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,  1100,    -1,    12,    -1,    14,  1105,
+  1106,    -1,  1108,    -1,    -1,    -1,   442,    -1,    -1,    -1,
+    -1,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
+    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    45,
+   902,   903,   904,    -1,    -1,    -1,   908,   909,    54,    -1,
+    56,    57,    -1,    -1,   480,    -1,    -1,  1153,  1154,  1155,
+  1156,  1157,   488,    -1,    70,  1161,     4,    -1,    -1,    -1,
+    -1,    -1,  1168,    -1,    80,    -1,    -1,    -1,    -1,    -1,
+   506,    -1,    88,    -1,   946,   947,   948,    93,  1184,  1185,
+  1186,   953,    30,    31,    -1,    33,    -1,    35,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,  1205,
+     4,     5,    -1,     7,     8,     9,    -1,    55,    -1,    57,
+    14,  1217,    -1,    -1,    -1,    -1,  1222,    -1,    -1,     3,
+     4,     5,     6,   995,    28,     9,    30,    31,    -1,    -1,
+    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    45,    -1,    -1,    48,    -1,    -1,    31,    -1,    -1,
+    54,    -1,    56,    57,    -1,  1027,    -1,    41,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,  1272,  1273,    -1,  1275,
+    54,    -1,    56,    57,    -1,    -1,  1048,    -1,    -1,    -1,
+    -1,    -1,     3,     4,     5,     6,    70,    -1,   136,  1061,
+    -1,    -1,   140,   141,  1300,    -1,    80,    -1,   146,    -1,
+    -1,   149,   150,   151,    88,  1311,  1312,  1313,    -1,    93,
+    31,    -1,    -1,   649,    -1,    -1,    -1,   165,    -1,    -1,
+    41,   169,    -1,    -1,  1330,    -1,   478,   175,   176,    -1,
+  1336,   483,    -1,    54,    -1,    56,    57,    -1,    -1,    -1,
+     3,     4,     5,     6,    -1,   193,   194,   195,    -1,    70,
+    -1,    -1,   688,   689,   690,   691,    -1,    -1,   510,    80,
+  1132,    -1,    -1,    -1,   516,    -1,    33,    88,    -1,    -1,
+    -1,    -1,    93,    -1,   222,    -1,   528,   529,    41,   531,
+    -1,  1153,  1154,  1155,  1156,  1157,    -1,  1159,    55,  1161,
+    -1,    54,    -1,    56,    57,    -1,    -1,    60,    -1,   735,
+    -1,    -1,    -1,   739,    -1,     4,     5,    70,     7,     8,
+     9,   259,  1184,  1185,  1186,    14,    -1,    80,    -1,    -1,
+  1426,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    28,
+    93,    30,    31,   769,    -1,   771,    -1,    36,    -1,    -1,
+   776,   777,   778,    -1,    -1,  1217,    45,    -1,   784,    -1,
+  1222,    -1,    -1,    -1,    -1,    54,    -1,    56,    57,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
+     6,    -1,    -1,    -1,   626,   627,    -1,    -1,    -1,   631,
+    -1,    -1,   149,   150,   151,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,  1499,  1500,  1501,    -1,    -1,    -1,    -1,
+  1272,  1273,    -1,  1275,    -1,    41,    -1,   355,   175,    -1,
+    -1,   359,  1518,    -1,    -1,    -1,    -1,  1523,    54,    -1,
+    56,    57,    -1,    -1,    -1,    -1,   193,   194,   195,    -1,
+    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,  1311,
+  1312,  1313,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    88,    -1,    -1,   222,   404,    93,    -1,    -1,
+    -1,    -1,    -1,    -1,    55,    -1,     3,     4,     5,     6,
+    -1,   419,    -1,    -1,   422,    -1,    -1,    -1,    -1,    -1,
+   107,   108,    -1,    -1,    -1,    -1,   434,    -1,    -1,    80,
+    -1,    -1,    83,    -1,   442,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,     3,     4,
+     5,     6,    -1,   104,     9,   106,    -1,    54,    -1,    56,
+    57,    -1,   470,    -1,   472,    62,   474,   475,   476,    -1,
+    -1,   298,   480,    70,    -1,    -1,    31,   485,    -1,    -1,
+   488,    -1,   794,    80,   796,    -1,    41,    -1,    -1,    -1,
+    -1,    88,    47,    -1,  1426,    -1,    93,    -1,   506,    54,
+    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
+    -1,   348,   349,   350,   175,    80,    -1,    -1,    -1,    -1,
+    -1,  1027,    -1,    88,    -1,    90,    -1,    -1,    93,    94,
+    -1,    -1,   193,   194,   195,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   203,    -1,    -1,    -1,   868,   869,    -1,   871,
+    -1,    -1,    -1,    -1,    -1,  1061,    -1,  1499,  1500,  1501,
+    -1,   222,    -1,    -1,    -1,    -1,    -1,   404,    -1,     3,
+     4,     5,     6,     7,     8,     9,    -1,   899,    -1,    -1,
+    14,  1523,    -1,    -1,    -1,    -1,    -1,   248,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1,
+   618,   262,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    56,    57,    -1,    -1,    -1,    -1,   950,    -1,
+    -1,   649,   329,   470,    -1,   472,    70,   474,   475,   476,
+    -1,    -1,    -1,   480,    -1,    -1,    80,    -1,   485,    -1,
+    -1,   488,    -1,    -1,    88,    -1,    -1,     4,     5,    93,
+     7,     8,     9,    -1,    98,    12,    -1,    14,    -1,    -1,
+   688,   689,   690,   691,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    28,    -1,    30,    31,     3,     4,     5,     6,    36,
+    -1,    -1,    -1,   354,   355,    -1,    -1,    -1,    45,    -1,
+    -1,  1023,    -1,    -1,    -1,   402,    -1,    54,    -1,    56,
+    57,  1217,    -1,  1035,    -1,    -1,  1222,   735,    -1,    -1,
+    -1,   739,    -1,    41,    -1,    -1,    -1,    -1,   746,   747,
+    -1,   749,    -1,    -1,    -1,    -1,    54,    -1,    56,    57,
+    -1,    -1,    -1,   404,    62,    -1,    -1,    -1,    -1,    -1,
+    -1,   769,    70,   771,    -1,    -1,    -1,    -1,   776,   777,
+   778,    -1,    80,    -1,    -1,    -1,   784,    -1,    -1,   606,
+    88,   468,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   620,   621,    -1,   623,    -1,    -1,    -1,
+    -1,    -1,    -1,   630,    -1,    -1,    -1,    -1,    -1,  1121,
+    -1,    -1,    -1,    -1,    -1,  1311,  1312,  1313,    -1,   470,
+    -1,   472,   649,   474,   475,   476,    -1,    -1,    -1,   480,
+    -1,    -1,    -1,    -1,   485,    -1,    -1,   488,    -1,     3,
+     4,     5,     6,    -1,    -1,     9,    -1,    -1,  1160,   536,
+    -1,    -1,   539,    -1,    -1,    -1,   543,   544,   545,   546,
+   547,   688,    -1,   690,   691,    -1,   693,    31,    -1,   556,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
+    -1,    -1,   569,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   910,    -1,    -1,    -1,    70,    -1,   735,    -1,
+    -1,    -1,    -1,  1225,    -1,    -1,    80,  1229,    -1,   746,
+   747,    -1,   749,    -1,    88,    -1,    90,    -1,    -1,    93,
+    94,    -1,    -1,    -1,    -1,    -1,   623,    -1,   946,   947,
+   948,    -1,    -1,   630,    -1,    -1,    -1,    -1,    -1,   776,
+    -1,    -1,  1264,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
+    -1,    -1,    14,   800,   801,   802,    -1,    -1,    -1,    -1,
+    -1,    -1,   633,   634,    -1,   812,    28,   995,    30,    31,
+    32,    -1,    -1,    -1,    36,    37,    -1,    -1,   649,    41,
+    -1,    -1,    -1,    45,    46,    -1,    48,    -1,    -1,    -1,
+    -1,    -1,    54,    -1,    56,    57,    -1,    -1,    60,  1027,
+    62,    -1,    -1,    -1,    -1,    -1,    -1,  1523,    70,  1341,
+    -1,    -1,    -1,  1345,    -1,    -1,    -1,   688,    80,   690,
+   691,    -1,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
+    -1,    93,   739,  1061,    -1,  1367,  1368,    -1,   885,    -1,
+   887,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
+    -1,   898,    -1,    -1,    -1,   902,   903,   904,    -1,    -1,
+    -1,    -1,    -1,    -1,   735,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   746,   747,    -1,   749,    -1,
+   787,    -1,    -1,    -1,    -1,    -1,   793,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   946,
+   947,   948,    -1,    -1,    -1,   776,    -1,    -1,    -1,    -1,
+    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
+    12,    -1,    14,    -1,    -1,  1153,  1154,  1155,  1156,  1157,
+    -1,    -1,    -1,  1161,    -1,    -1,    28,    -1,    30,    31,
+    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,   995,    41,
+    -1,    -1,    -1,    45,   861,    47,  1184,  1185,  1186,    12,
+    -1,    -1,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
+  1027,    -1,    -1,    -1,    -1,    -1,    -1,   894,    80,  1217,
+    -1,    -1,    -1,   900,  1222,    -1,    88,   904,    90,    -1,
+    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -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,   942,    -1,   944,   909,   910,
+   911,   948,    -1,    -1,  1272,  1273,    -1,  1275,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1105,  1106,
+    -1,  1108,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
+    -1,     9,    -1,    -1,    -1,   946,   947,   948,    -1,    -1,
+    14,    -1,   953,  1311,  1312,  1313,    -1,    -1,   995,    23,
+    24,    -1,    -1,    31,    -1,    -1,    30,    31,    -1,    33,
+    -1,  1008,    -1,    41,    -1,    -1,  1153,  1154,  1155,  1156,
+  1157,    -1,   983,    -1,  1161,    -1,    54,  1024,    56,    57,
+    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,    -1,  1036,
+    -1,    65,    70,    -1,    -1,    -1,    -1,  1184,  1185,  1186,
+    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    88,    -1,    -1,    -1,    -1,    93,  1027,    -1,    -1,    -1,
+    -1,    -1,    -1,  1070,    -1,  1072,    -1,    -1,    -1,    -1,
+  1217,    -1,    -1,    -1,    -1,    -1,    -1,  1048,    -1,    -1,
+     3,     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,
+   124,    14,   126,  1100,    -1,    -1,    -1,    -1,  1426,   133,
+   134,    -1,    -1,    -1,    -1,    -1,   140,   141,    31,    -1,
+   144,   145,   146,    36,   148,   149,   150,   151,    41,    -1,
+    -1,    -1,    45,    -1,    47,  1272,  1273,    -1,  1275,    -1,
+    -1,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
+  1157,    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,
+    -1,  1132,    -1,    -1,  1311,    88,  1313,    -1,    -1,    -1,
+    93,  1499,  1500,  1501,    -1,    -1,    -1,    -1,    -1,  1186,
+    -1,    -1,  1153,  1154,  1155,  1156,  1157,    -1,  1159,    -1,
+  1161,    -1,    -1,  1200,    -1,  1523,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   238,   239,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,  1184,  1185,  1186,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,
+     1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
+    -1,    -1,    -1,    14,    -1,    -1,  1217,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
+    31,    32,    -1,    -1,   298,    36,    37,    -1,    -1,    -1,
+    41,    -1,    -1,    -1,    45,    46,    -1,    48,    -1,  1426,
+    -1,    -1,    -1,    54,    -1,    56,    57,    -1,    -1,    60,
+    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    -1,  1272,  1273,    -1,  1275,    -1,    -1,    -1,    -1,    80,
+    -1,    -1,   346,    -1,   348,   349,    -1,    88,    -1,    -1,
+    -1,    -1,    93,  1330,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     4,     5,    -1,     7,     8,     9,    -1,   109,    12,
+  1311,    14,  1313,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1499,  1500,  1501,    28,    -1,    30,    31,   393,
+    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    45,    -1,    -1,    -1,  1523,    -1,   412,    -1,
+    -1,    54,    -1,    56,    57,   419,    -1,    -1,   422,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,     3,     4,     5,     6,    42,    -1,     9,    -1,    -1,
-    -1,  1132,  1133,  1134,    -1,    -1,    -1,    -1,    55,   692,
-    57,    58,    -1,   696,    -1,    -1,    -1,   279,    -1,    -1,
-   703,   704,    -1,   706,    71,    -1,    -1,    -1,    -1,    -1,
-    42,    -1,  1163,    -1,    81,    -1,    -1,  1168,    -1,  1170,
-    -1,    -1,    89,    55,    -1,    57,    58,    94,    -1,  1358,
-    -1,    -1,     4,     5,   737,    -1,   739,     9,    -1,    71,
-    -1,   744,   745,   746,    -1,    -1,   328,   329,   330,    81,
-    -1,    -1,    -1,    -1,    -1,    -1,    54,    89,     3,     4,
-     5,     6,    94,    -1,    -1,    -1,  1217,  1218,    -1,  1220,
-    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,   761,    -1,
-   763,    79,    -1,    55,    82,    57,    58,    -1,    -1,    -1,
-    -1,    -1,  1421,  1422,  1423,    -1,    -1,    42,    -1,    71,
-  1251,  1252,  1253,    -1,    -1,   103,   388,   105,    -1,    81,
-    55,    -1,    57,    58,    -1,    -1,    61,    -1,    -1,    91,
-    -1,    -1,    94,    95,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    94,
-    -1,    -1,   835,   836,   436,   838,   438,    -1,   440,   441,
-   442,    -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,   451,
-    -1,    -1,   454,   876,    -1,    -1,    -1,    -1,    -1,   177,
-   178,   179,    -1,   866,    -1,    -1,    -1,    -1,    -1,   187,
-     4,     5,    -1,     7,     8,     9,    -1,    -1,    12,    -1,
-    14,    -1,    -1,    -1,   907,   908,   909,  1358,   206,    -1,
-    -1,     3,     4,     5,     6,    29,    -1,    31,    32,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   911,    -1,
-    -1,   229,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,   243,   949,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    55,    -1,    57,    58,    81,    -1,    -1,
-  1421,  1422,  1423,    -1,    -1,    -1,   979,    91,    -1,    71,
-    94,    95,    -1,    -1,    98,    -1,   568,    -1,    -1,    81,
-    -1,    -1,   975,  1444,    -1,    -1,    -1,    89,    -1,    -1,
-   582,   583,    94,   585,   987,    -1,    -1,    -1,  1011,    -1,
-   592,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     4,     5,    -1,     7,     8,     9,    -1,    -1,   610,    -1,
-    14,    -1,    -1,    -1,    -1,    -1,   334,   335,    -1,    -1,
-    -1,     3,     4,     5,     6,    29,    -1,    31,    32,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    46,    -1,    -1,    49,    -1,   649,    -1,   651,
-   652,    55,   654,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1071,    -1,
-   388,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,  1102,
-  1103,  1104,  1105,  1106,    -1,    -1,    -1,  1110,    -1,    71,
-   692,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
-    -1,   703,   704,    -1,   706,    -1,  1109,    89,    -1,  1132,
-  1133,  1134,    94,    -1,    -1,    -1,    -1,    -1,   436,    -1,
-   438,    -1,   440,   441,   442,    -1,    -1,    -1,   446,    -1,
-    -1,    -1,    -1,   451,    -1,    -1,   454,    -1,    -1,    -1,
-  1163,    -1,   744,    -1,    -1,  1168,    -1,  1170,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
-     6,     7,     8,     9,    -1,   767,   768,   769,    14,  1172,
-    -1,    -1,    -1,  1176,    -1,    -1,    -1,   779,    -1,    -1,
-    -1,    -1,    -1,    29,    -1,    31,    32,    33,    -1,    -1,
-    -1,    37,    38,    -1,  1217,  1218,    42,  1220,    -1,    -1,
-    46,    47,    -1,    49,    -1,    -1,  1209,    -1,    -1,    55,
-    -1,    57,    58,    -1,    -1,    61,    -1,    63,     3,     4,
-     5,     6,    -1,    -1,    -1,    71,    -1,    -1,  1251,  1252,
-  1253,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    94,    -1,
-   852,    -1,   854,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    -1,    -1,   865,    -1,   111,    -1,   869,   870,   871,
-    55,    -1,    57,    58,    -1,  1278,    -1,   595,   596,  1282,
-    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
-     4,     5,   610,     7,     8,     9,    81,    -1,    12,    -1,
-    14,  1304,  1305,    -1,    89,   907,   908,   909,    -1,    94,
-    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   649,    46,   651,   652,  1358,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,    -1,   949,    -1,    -1,
-     3,     4,     5,     6,     7,     8,     9,    -1,    14,    -1,
-    -1,    14,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
-    -1,    -1,    -1,    -1,   692,    31,    32,   979,    34,    32,
-    -1,    -1,    -1,    -1,    37,   703,   704,    -1,   706,    42,
-    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,  1421,  1422,
-  1423,    -1,    55,    -1,    57,    58,     4,     5,    64,     7,
-     8,     9,    -1,   731,    -1,    -1,    14,    -1,    71,    -1,
-    -1,  1444,    -1,    -1,    -1,    -1,   744,    -1,    81,    -1,
-    -1,    29,    -1,    31,    32,    -1,    89,    -1,    91,    37,
-    -1,    94,    95,    -1,    -1,    -1,    -1,    -1,    46,    -1,
-    -1,    -1,    -1,  1055,  1056,    -1,  1058,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,   125,
-    -1,    -1,   128,    -1,    -1,    -1,   132,   133,    -1,    -1,
-    -1,    -1,    -1,   139,    -1,   141,   142,   143,    -1,    -1,
-   146,   147,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  1102,  1103,  1104,  1105,  1106,    -1,    -1,    -1,  1110,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    -1,    -1,
-  1132,  1133,  1134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   434,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    -1,    13,    14,    15,    -1,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    40,    41,    42,    43,    44,    45,    46,    -1,    -1,    49,
+    50,    51,    52,    53,    54,  1426,    56,    57,    58,    -1,
+    60,    61,    -1,    -1,    -1,    -1,    -1,    67,   502,    -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,  1501,    95,   530,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+   110,  1518,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,  1499,  1500,
+  1501,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    -1,    12,    -1,    14,    -1,
+    -1,    -1,  1523,    -1,    -1,    -1,    -1,    -1,    -1,    25,
+    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,    -1,
+    36,    -1,   606,    -1,    -1,    41,    -1,    -1,    -1,    45,
+    -1,    47,    -1,   617,   618,    -1,   620,   621,    54,    -1,
+    56,    57,    58,    59,    60,    -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,
+    86,    87,    88,    -1,    90,    91,    92,    93,    94,    95,
+    -1,    97,    -1,    -1,    -1,    -1,   102,    -1,    -1,   673,
+    -1,   107,   108,   109,    -1,   111,   680,   681,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   692,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    -1,   875,   876,   877,
-    14,  1163,    -1,    -1,   220,   221,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    33,
-    -1,    -1,    -1,    37,   240,    -1,    -1,    -1,    42,   907,
-   908,   909,    46,    47,    -1,    49,   914,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,    -1,    61,    -1,    63,
-    -1,    -1,    -1,    -1,    -1,  1217,  1218,    71,  1220,    -1,
-    -1,    -1,    -1,   279,    -1,    -1,    -1,    81,    -1,    -1,
-    -1,   949,    -1,    -1,    -1,    89,    -1,    -1,    -1,     1,
-    94,    -1,     4,     5,    -1,    -1,     8,     9,    -1,  1251,
-    -1,  1253,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   979,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
-   326,    -1,   328,   329,    -1,    37,    -1,    39,    40,    -1,
-    -1,    -1,  1000,    -1,    46,    -1,    48,    -1,    -1,    -1,
-    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    60,   355,
-    -1,    -1,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,   379,    -1,    87,    88,    89,    -1,    -1,
-    92,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,   395,
-    -1,    -1,    -1,   399,    -1,    -1,   402,    -1,    -1,    -1,
-   112,   407,    -1,    -1,    -1,    -1,  1358,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1082,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    -1,    -1,  1102,  1103,  1104,  1105,  1106,    -1,
-  1108,    -1,  1110,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    -1,    -1,
-    -1,   467,    -1,   469,  1132,  1133,  1134,    -1,    -1,  1421,
-  1422,  1423,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    -1,    -1,    12,   494,    14,
-    -1,    -1,  1444,    -1,    -1,  1163,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    -1,    -1,
-    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,     1,    -1,     3,     4,     5,     6,
-     7,     8,     9,    -1,    -1,    12,    71,    14,    -1,  1217,
-  1218,    -1,  1220,    -1,    -1,    -1,    81,    -1,    25,    -1,
-    27,    28,   568,    -1,    89,    32,    -1,    -1,    -1,    94,
-    37,    -1,    -1,   579,   580,    42,   582,   583,    -1,    46,
-    -1,    48,    -1,  1251,    -1,  1253,    -1,    -1,    55,    -1,
-    57,    58,    59,    60,    61,    -1,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-    87,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
-    -1,    98,    99,    -1,    -1,   641,    -1,   104,    -1,    -1,
-    -1,    -1,   109,   110,   111,    -1,   113,   653,    -1,    -1,
-     1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
-     4,     5,    -1,    14,     8,     9,   672,    -1,    -1,    -1,
-    14,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    -1,
-    31,    32,    33,    -1,    -1,    29,    37,    31,    -1,    -1,
-  1358,    42,    -1,    37,    45,    46,    47,    -1,    49,    -1,
-    -1,    -1,    46,    -1,    55,    -1,    57,    58,    -1,    -1,
-    61,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,   731,    -1,    -1,   734,    -1,
-    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,   100,
-    -1,    -1,    -1,  1421,  1422,  1423,    -1,    -1,    -1,    -1,
-    -1,   767,   768,   769,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   779,    -1,     1,  1444,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,   852,    -1,   854,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,   865,
-    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
-    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   111,   112,     1,    -1,     3,
      4,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
-    14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,   974,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,
-    94,     1,    96,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,  1001,    -1,    -1,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,  1055,
-  1056,    71,  1058,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    91,    -1,    -1,    94,    95,    -1,     1,    98,     3,
-     4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-    14,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
-  1116,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
-    -1,    -1,  1148,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-  1166,    -1,  1168,    87,    88,    89,    -1,    91,    -1,    -1,
-    94,    95,    -1,     1,    98,     3,     4,     5,     6,     7,
-     8,     9,    10,    11,    12,    13,    14,    -1,   112,    -1,
+    14,    15,   716,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+    34,    35,    36,    -1,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    -1,    -1,    49,    50,    51,    52,    53,
+    54,    -1,    56,    57,    58,    -1,    60,    61,    -1,   763,
+    -1,    -1,   766,    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,   800,   801,   802,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,   812,    -1,
+     1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+    31,    32,    -1,    34,    35,    36,    -1,    38,    39,    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,   885,    -1,   887,    -1,    -1,    -1,    78,    79,    80,
+    -1,    -1,    -1,    -1,   898,    86,    87,    88,    -1,    90,
+    -1,    -1,    93,    94,     1,    -1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    -1,   110,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    30,    31,    32,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
-    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   110,     1,   112,     3,     4,     5,     6,     7,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
+    -1,    38,    39,    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,   983,
+    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,
+    87,    88,    -1,    90,    -1,    -1,    93,    94,     1,    -1,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+    13,    14,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
+    -1,    34,    35,    36,    -1,    38,    39,    40,    41,    42,
+    43,    -1,    45,    -1,    -1,  1049,    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,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,  1105,  1106,    -1,  1108,   108,     1,   110,     3,     4,
+     5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    30,    31,    32,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    59,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,
-     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    95,
+    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,
+    35,    36,    -1,    38,    39,    40,    41,    42,    43,    -1,
+    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
+    -1,    56,    57,    58,  1168,    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,
+     1,  1205,     3,     4,     5,     6,    -1,     8,     9,    10,
+    11,    -1,    13,    14,    -1,   110,  1220,    -1,  1222,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+    -1,    32,    -1,    34,    35,    36,    -1,    38,    39,    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,
+    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
      1,    -1,     3,     4,     5,     6,    -1,     8,     9,    10,
-    11,    -1,    13,    14,    -1,   111,   112,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
-    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    59,    -1,
-    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    -1,    94,    95,     1,    -1,     3,     4,     5,
+    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1336,    -1,    -1,    -1,    -1,    28,    29,    30,
+    31,    32,    -1,    34,    35,    36,    -1,    38,    39,    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,
+    -1,     1,    93,     3,     4,     5,     6,    -1,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    30,    -1,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    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,    -1,    -1,    93,    94,     1,    -1,     3,     4,     5,
      6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
-     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,   111,   112,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
-    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,    -1,   111,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
-    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-    -1,    -1,    94,    -1,    -1,     1,    -1,     3,     4,     5,
-     6,   103,     8,     9,    10,    11,    -1,    13,    14,    -1,
-   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
+   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,    -1,     1,    93,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,   109,   110,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,
+    35,    36,    -1,    38,    39,    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,    -1,     1,    93,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
-    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
-    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
-    62,    63,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-    -1,     1,    94,     3,     4,     5,     6,    -1,     8,     9,
-    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
-   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    -1,    -1,     1,    94,     3,     4,     5,     6,    -1,
+    14,    -1,    -1,    -1,   109,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    34,    35,    36,    -1,    38,    39,    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,    -1,    -1,    93,
+    -1,     1,    -1,     3,     4,     5,     6,   101,     8,     9,
+    10,    11,    -1,    13,    14,    -1,   110,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    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,    -1,     1,    93,     3,     4,     5,     6,    -1,     8,
+     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
+   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+    29,    30,    -1,    32,    -1,    34,    35,    36,    -1,    38,
+    39,    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,    -1,     1,    93,     3,     4,     5,     6,    -1,
      8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    29,    30,    -1,    32,    -1,    34,    35,    36,    -1,
+    38,    39,    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,    -1,     1,    93,     3,     4,     5,     6,
+    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
+    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
+    -1,    38,    39,    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,     3,     4,     5,
      6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
-     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,   110,    -1,   112,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
-    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
-    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-    -1,     1,    94,     3,     4,     5,     6,    -1,     8,     9,
-    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
-   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-     3,     4,     5,     6,    94,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   112,    -1,    -1,    -1,    29,    30,    31,    -1,
-    33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,
-    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
-    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
-   113,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-    -1,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    61,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-    -1,    -1,    94,    -1,    96,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-   112,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-    -1,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    61,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-    -1,    -1,    94,    -1,    96,    -1,    -1,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-   112,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
-    96,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    -1,    13,    14,    15,   112,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    -1,    -1,    -1,    94,    -1,    96,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    -1,
-    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    48,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    91,    -1,    -1,    94,    95,
-    -1,    -1,    98,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,    -1,   112,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    91,    -1,    -1,    94,    95,    -1,    -1,    98,     3,
-     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    91,    -1,    -1,
-    94,    95,     3,     4,     5,     6,    -1,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
-    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    91,    -1,    -1,    94,    95,     3,     4,     5,     6,    -1,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,    -1,    94,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,     3,     4,     5,     6,    94,     8,
+    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,     4,     5,    -1,    -1,     8,
+     9,    -1,    78,    79,    80,    14,    -1,    -1,    -1,    -1,
+    86,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    28,
+    -1,    30,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
+    39,    -1,   108,    -1,   110,    -1,    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,    -1,     1,    94,     3,     4,     5,     6,
+    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
+    -1,    38,    39,    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,    -1,     1,    93,     3,     4,     5,
+     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,    -1,     1,    93,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,
+    35,    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,     8,
      9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,     3,     4,     5,     6,    94,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   112,    -1,    -1,    -1,    29,    30,    31,
-    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,     3,     4,
-     5,     6,    94,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    28,
+    29,    30,    -1,    32,    -1,    34,    35,    36,    -1,    38,
+    39,    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,     3,     4,     5,     6,     7,     8,     9,    78,
+    79,    80,    -1,    14,    -1,    -1,    -1,    86,    87,    88,
+    -1,    -1,    -1,    -1,    93,    -1,    -1,    28,    -1,    30,
+    31,    32,    -1,    -1,    -1,    36,    37,    -1,    -1,    -1,
+    41,   110,   111,    -1,    45,    46,    -1,    48,    -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,     3,     4,     5,     6,     7,
+     8,     9,    10,    11,    -1,    13,    14,    15,   109,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,    30,    31,    32,    -1,    34,    35,    36,    -1,
+    38,    39,    40,    41,    42,    43,    44,    45,    46,    -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,
-   112,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,     3,     4,     5,     6,    94,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
-    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,    -1,    94,    95,     3,     4,
+    -1,   109,   110,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    -1,    13,    14,    15,    -1,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    40,    41,    42,    43,    44,    45,    46,    -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,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+   110,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    -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,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    -1,    13,    14,    15,   110,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+    32,    -1,    34,    35,    36,    -1,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    -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,    13,    14,    -1,    -1,   110,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+    29,    30,    31,    32,    -1,    34,    35,    36,    -1,    38,
+    39,    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,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    -1,    -1,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
+    -1,    38,    39,    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,
      5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,     3,     4,     5,     6,    94,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
-    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,     3,     4,     5,     6,    94,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    29,    30,
-    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,     3,
-     4,     5,     6,    94,     8,     9,    10,    11,    -1,    13,
+    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,
+    35,    36,    -1,    38,    39,    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,     5,     6,    -1,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
+    -1,    34,    35,    36,    -1,    38,    39,    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,     3,     4,     5,     6,
+    93,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
+    -1,    38,    39,    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,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    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,     3,
+     4,     5,     6,    93,     8,     9,    10,    11,    -1,    13,
     14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   112,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,     3,     4,     5,     6,
-    94,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,
-    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,     3,     4,     5,     6,    94,     8,     9,
+   110,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    34,    35,    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+    28,    29,    30,    -1,    32,    -1,    34,    35,    36,    -1,
+    38,    39,    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,     3,     4,     5,     6,    93,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,    -1,    -1,    -1,    28,    29,    30,    -1,
+    32,    -1,    34,    35,    36,    -1,    38,    39,    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,     3,     4,     5,
+     6,    93,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,
+    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,     8,     9,
     10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    29,
-    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-     3,     4,     5,     6,    94,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   112,    -1,    -1,    -1,    29,    30,    31,    -1,
-    33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,     3,     4,     5,
-     6,    94,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
-    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,     1,    71,     3,     4,     5,     6,
-     7,     8,     9,    79,    80,    81,    -1,    14,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
-    -1,    -1,    29,    -1,    31,    32,    -1,    -1,    -1,    -1,
-    37,    -1,    -1,    -1,    -1,    42,   112,    -1,    -1,    46,
-    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    61,     3,     4,     5,     6,     7,
-     8,     9,    -1,    -1,    71,    -1,    14,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    89,    31,    32,    -1,    -1,    94,    -1,    37,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,
-    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
-    58,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
-    -1,    -1,    14,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    81,    -1,    -1,    -1,    29,    -1,    31,
-    32,    89,    -1,    91,    -1,    37,    94,    95,    -1,    -1,
-    42,    -1,    -1,    -1,    46,    -1,     3,     4,     5,     6,
-     7,     8,     9,    55,    -1,    57,    58,    14,    -1,    61,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-    -1,    -1,    29,    -1,    31,    32,    -1,    -1,    -1,    81,
-    37,    -1,    -1,    -1,    -1,    42,    -1,    89,    -1,    46,
-    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    63,     3,     4,     5,
-     6,     7,     8,     9,    71,    -1,    -1,    -1,    14,    -1,
-    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    89,    29,    -1,    31,    32,    94,    -1,    -1,
-    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
-    46,    -1,     3,     4,     5,     6,     7,     8,     9,    55,
-    -1,    57,    58,    14,    -1,    61,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    29,    -1,
-    31,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,    -1,
-    -1,    42,    -1,    89,    -1,    46,    -1,    -1,    94,    -1,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,     3,     4,
-     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    81,    -1,    -1,    -1,    29,    -1,    31,    32,    89,    -1,
-    -1,    -1,    37,    94,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    46,    -1,     3,     4,     5,     6,     7,     8,     9,
-    55,    -1,    57,    58,    14,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,
-    -1,    -1,    42,    -1,    89,    12,    46,    -1,    48,    94,
-    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    71,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    81,    -1,    -1,    -1,    -1,    -1,    32,    -1,    89,
-    -1,    -1,    -1,    -1,    94,    -1,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    64,    65,    66,    67,    68,    69,    70,
+    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    28,    29,
+    30,    -1,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    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,     5,     6,    -1,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    29,    30,    31,    32,    -1,    34,    35,    36,    -1,
+    38,    39,    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,     3,     4,     5,     6,    93,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,    -1,    -1,    -1,    28,    29,    30,    -1,
+    32,    -1,    34,    35,    36,    -1,    38,    39,    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,     3,     4,     5,
+     6,    93,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,
+    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,    35,
+    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    28,    29,
+    30,    -1,    32,    -1,    34,    35,    36,    -1,    38,    39,
+    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,     3,
+     4,     5,     6,    93,     8,     9,    10,    11,    -1,    13,
+    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   110,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    34,    35,    36,    -1,    38,    39,    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,     3,     4,     5,     6,    93,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+    28,    29,    30,    -1,    32,    -1,    34,    35,    36,    -1,
+    38,    39,    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,     3,     4,     5,     6,     7,     8,     9,
+    78,    79,    80,    -1,    14,    -1,    -1,    -1,    86,    87,
+    88,    -1,    -1,    -1,    -1,    93,    -1,    27,    28,    -1,
+    30,    31,    32,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+    -1,    41,   110,    -1,    44,    45,    46,    -1,    48,    -1,
+    -1,    -1,    -1,    -1,    54,    -1,    56,    57,    -1,    -1,
+    60,    -1,     3,     4,     5,     6,    -1,    -1,     9,    -1,
+    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+    80,     3,     4,     5,     6,     7,     8,     9,    88,    -1,
+    31,    -1,    14,    93,    -1,    -1,    -1,    -1,    98,    -1,
+    41,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    31,
+    32,    -1,    -1,    54,    36,    56,    57,    -1,    -1,    41,
+    -1,    -1,    -1,    45,    -1,    -1,    48,    -1,    -1,    70,
+    -1,    -1,    54,    -1,    56,    57,    -1,    -1,     1,    80,
+     3,     4,     5,     6,     7,     8,     9,    88,    70,    -1,
+    -1,    14,    93,    -1,    -1,    -1,    -1,    -1,    80,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    88,    30,    31,    32,
+    -1,    93,    -1,    36,    -1,    -1,    98,    -1,    41,    -1,
+    -1,    -1,    45,    46,    -1,    48,    -1,    -1,    -1,    -1,
+    -1,    54,    -1,    56,    57,    -1,    -1,    60,    -1,    62,
+    -1,    -1,    -1,    -1,    -1,    -1,     1,    70,     3,     4,
+     5,     6,     7,     8,     9,    -1,    -1,    80,    -1,    14,
+    -1,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,
+    93,    -1,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,
+    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
+    -1,    56,    57,    -1,    -1,    60,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    70,    -1,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    88,    30,    31,    -1,    -1,    93,    -1,
+    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    45,
+    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+    56,    57,     3,     4,     5,     6,     7,     8,     9,    -1,
+    -1,    -1,    -1,    14,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    80,    -1,    -1,    28,    -1,    30,
+    31,    -1,    88,    -1,    90,    36,    -1,    93,    94,    -1,
+    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    54,    -1,    56,    57,    -1,    -1,    60,
+    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    70,
+    -1,    -1,    14,    -1,    -1,    -1,    -1,    -1,    -1,    80,
+    -1,    -1,    -1,    -1,    -1,    -1,    28,    88,    30,    31,
+    -1,    -1,    93,    -1,    36,    -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,     3,
+     4,     5,     6,     7,     8,     9,    -1,    -1,    80,    -1,
+    14,    -1,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
+    -1,    93,    -1,    -1,    28,    -1,    30,    31,    -1,    -1,
+    -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    56,    57,    -1,    -1,    60,    -1,     3,     4,
+     5,     6,     7,     8,     9,    -1,    70,    -1,    -1,    14,
+    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    88,    30,    31,    -1,    -1,    93,
+    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+    -1,    56,    57,     3,     4,     5,     6,     7,     8,     9,
+    -1,    -1,    -1,    -1,    14,    70,    -1,    -1,    -1,    -1,
+     3,     4,     5,     6,    -1,    80,     9,    -1,    28,    -1,
+    30,    31,    -1,    88,    -1,    -1,    36,    -1,    93,    -1,
+    -1,    41,    -1,    -1,    -1,    45,    -1,    -1,    31,    -1,
+    -1,    -1,    -1,    -1,    54,    -1,    56,    57,    41,    -1,
+    -1,     3,     4,     5,     6,    -1,    -1,     9,    -1,    -1,
+    70,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,
+    80,    -1,    -1,    -1,    -1,    -1,    -1,    70,    88,    31,
+    -1,    -1,    -1,    93,    -1,    -1,    -1,    80,    -1,    41,
+    -1,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,
+    93,    -1,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,
+    31,    -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,    63,    64,    65,    66,    67,    68,    69,    70,
     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
-   113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,   109,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    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,    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,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,
+   107,    63,    64,    65,    66,    67,    68,    69,    70,    71,
     72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,    85,    64,    65,    66,    67,    68,    69,
+    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,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    -1,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    68,    69,
     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85
+    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/lib/bison.simple"
+#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -3690,7 +3876,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/lib/bison.simple"
+#line 196 "/usr/cygnus/gnupro-98r1/share/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 *.
@@ -3995,121 +4181,112 @@ yyreduce:
   switch (yyn) {
 
 case 2:
-#line 337 "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 ();
-               ;
+#line 340 "parse.y"
+{ finish_translation_unit (); ;
     break;}
 case 3:
-#line 351 "parse.y"
+#line 348 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 4:
-#line 353 "parse.y"
+#line 350 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 5:
-#line 355 "parse.y"
+#line 352 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 8:
-#line 364 "parse.y"
+#line 361 "parse.y"
 { have_extern_spec = 1;
                  used_extern_spec = 0;
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 9:
-#line 369 "parse.y"
+#line 366 "parse.y"
 { have_extern_spec = 0; ;
     break;}
 case 10:
-#line 374 "parse.y"
+#line 371 "parse.y"
 { yyval.itype = pedantic;
                  pedantic = 0; ;
     break;}
-case 13:
-#line 384 "parse.y"
+case 12:
+#line 380 "parse.y"
 { if (pending_lang_change) do_pending_lang_change(); ;
     break;}
-case 14:
-#line 386 "parse.y"
+case 13:
+#line 382 "parse.y"
 { if (! toplevel_bindings_p () && ! pseudo_global_level_p())
                  pop_everything (); ;
     break;}
+case 14:
+#line 388 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
 case 15:
-#line 392 "parse.y"
+#line 390 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 16:
-#line 394 "parse.y"
+#line 392 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 17:
-#line 396 "parse.y"
-{ if (pending_inlines) do_pending_inlines (); ;
-    break;}
-case 18:
-#line 398 "parse.y"
+#line 394 "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 401 "parse.y"
+case 18:
+#line 397 "parse.y"
 { pop_lang_context (); ;
     break;}
-case 20:
-#line 403 "parse.y"
+case 19:
+#line 399 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
-case 21:
-#line 406 "parse.y"
+case 20:
+#line 402 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
-case 22:
-#line 409 "parse.y"
+case 21:
+#line 405 "parse.y"
 { push_namespace (yyvsp[-1].ttype); ;
     break;}
-case 23:
-#line 411 "parse.y"
+case 22:
+#line 407 "parse.y"
 { pop_namespace (); ;
     break;}
-case 24:
-#line 413 "parse.y"
+case 23:
+#line 409 "parse.y"
 { push_namespace (NULL_TREE); ;
     break;}
-case 25:
-#line 415 "parse.y"
+case 24:
+#line 411 "parse.y"
 { pop_namespace (); ;
     break;}
 case 26:
-#line 417 "parse.y"
-{ do_namespace_alias (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
-    break;}
-case 27:
-#line 419 "parse.y"
+#line 414 "parse.y"
 { do_toplevel_using_decl (yyvsp[-1].ttype); ;
     break;}
 case 28:
-#line 421 "parse.y"
-{
-                 if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
-                   yyvsp[-1].ttype = lastiddecl;
-                 do_using_directive (yyvsp[-1].ttype);
-               ;
+#line 417 "parse.y"
+{ pedantic = yyvsp[-1].itype; ;
     break;}
 case 29:
-#line 427 "parse.y"
-{ pedantic = yyvsp[-1].itype; ;
+#line 422 "parse.y"
+{ begin_only_namespace_names (); ;
     break;}
 case 30:
-#line 432 "parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 424 "parse.y"
+{
+                 end_only_namespace_names ();
+                 if (lastiddecl)
+                   yyvsp[-1].ttype = lastiddecl;
+                 do_namespace_alias (yyvsp[-4].ttype, yyvsp[-1].ttype);
+               ;
     break;}
 case 31:
 #line 434 "parse.y"
@@ -4119,109 +4296,136 @@ case 32:
 #line 436 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 35:
-#line 443 "parse.y"
+case 33:
+#line 438 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 36:
+case 34:
+#line 443 "parse.y"
+{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 35:
 #line 445 "parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+{ yyval.ttype = build_parse_node (SCOPE_REF, global_namespace, yyvsp[0].ttype); ;
+    break;}
+case 36:
+#line 447 "parse.y"
+{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 37:
-#line 450 "parse.y"
-{ push_lang_context (yyvsp[0].ttype); ;
+#line 452 "parse.y"
+{ begin_only_namespace_names (); ;
     break;}
 case 38:
-#line 452 "parse.y"
+#line 454 "parse.y"
+{
+                 end_only_namespace_names ();
+                 /* If no declaration was found, the using-directive is
+                    invalid. Since that was not reported, we need the
+                    identifier for the error message. */
+                 if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE && lastiddecl)
+                   yyvsp[-1].ttype = lastiddecl;
+                 do_using_directive (yyvsp[-1].ttype);
+               ;
+    break;}
+case 39:
+#line 467 "parse.y"
+{
+                 if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
+                   yyval.ttype = lastiddecl;
+                 got_scope = yyval.ttype;
+               ;
+    break;}
+case 40:
+#line 473 "parse.y"
+{
+                 yyval.ttype = yyvsp[-1].ttype;
+                 if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
+                   yyval.ttype = lastiddecl;
+                 got_scope = yyval.ttype;
+               ;
+    break;}
+case 43:
+#line 484 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 44:
+#line 486 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 45:
+#line 491 "parse.y"
+{ push_lang_context (yyvsp[0].ttype); ;
+    break;}
+case 46:
+#line 493 "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 39:
-#line 459 "parse.y"
+case 47:
+#line 500 "parse.y"
 { begin_template_parm_list (); ;
     break;}
-case 40:
-#line 461 "parse.y"
+case 48:
+#line 502 "parse.y"
 { yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
     break;}
-case 41:
-#line 463 "parse.y"
+case 49:
+#line 504 "parse.y"
 { begin_specialization(); 
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 42:
-#line 469 "parse.y"
+case 50:
+#line 510 "parse.y"
 { yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 43:
-#line 471 "parse.y"
+case 51:
+#line 512 "parse.y"
 { yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 44:
-#line 476 "parse.y"
+case 52:
+#line 517 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 45:
-#line 478 "parse.y"
+case 53:
+#line 519 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 46:
-#line 482 "parse.y"
-{ 
-                 yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype);
-                 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'");
-                     TREE_PURPOSE (yyval.ttype) = class_type_node;
-                   }
-               ;
+case 54:
+#line 523 "parse.y"
+{ yyval.ttype = finish_template_type_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 47:
-#line 493 "parse.y"
-{ yyval.ttype = build_tree_list (class_type_node, yyvsp[0].ttype); ;
+case 55:
+#line 525 "parse.y"
+{ yyval.ttype = finish_template_type_parm (class_type_node, yyvsp[0].ttype); ;
     break;}
-case 48:
-#line 498 "parse.y"
-{
-                 tree decl = build_decl (TYPE_DECL, yyvsp[0].ttype, NULL_TREE);
-                 tree tmpl = build_lang_decl (TEMPLATE_DECL, yyvsp[0].ttype, NULL_TREE);
-                 DECL_TEMPLATE_PARMS (tmpl) = current_template_parms;
-                 DECL_TEMPLATE_RESULT (tmpl) = decl;
-                 SET_DECL_ARTIFICIAL (decl);
-                 end_template_decl ();
-
-                 if (yyvsp[-1].ttype == signature_type_node)
-                   sorry ("signature as template template parameter");
-                 else if (yyvsp[-1].ttype != class_type_node)
-                   pedwarn ("template template parameters must use the keyword `class'");
-                 yyval.ttype = build_tree_list (class_type_node, tmpl);
-               ;
+case 56:
+#line 530 "parse.y"
+{ yyval.ttype = finish_template_template_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 49:
-#line 523 "parse.y"
+case 57:
+#line 542 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 50:
-#line 525 "parse.y"
+case 58:
+#line 544 "parse.y"
 { yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); ;
     break;}
-case 51:
-#line 527 "parse.y"
+case 59:
+#line 546 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
-case 52:
-#line 529 "parse.y"
+case 60:
+#line 548 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); ;
     break;}
-case 53:
-#line 531 "parse.y"
+case 61:
+#line 550 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 54:
-#line 533 "parse.y"
+case 62:
+#line 552 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) != TEMPLATE_DECL
                      && TREE_CODE (yyvsp[0].ttype) != TEMPLATE_TEMPLATE_PARM
@@ -4233,40 +4437,67 @@ case 54:
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype);
                ;
     break;}
-case 55:
-#line 548 "parse.y"
-{ 
-                  if (yyvsp[-1].ttype) 
-                    end_template_decl (); 
-                 else
-                   end_specialization ();
-               ;
+case 63:
+#line 566 "parse.y"
+{ finish_template_decl (yyvsp[-1].ttype); ;
     break;}
-case 56:
-#line 556 "parse.y"
-{ 
-                  if (yyvsp[-1].ttype) 
-                    end_template_decl ();
-                 else
-                   end_specialization (); 
-                ;
+case 64:
+#line 568 "parse.y"
+{ finish_template_decl (yyvsp[-1].ttype); ;
     break;}
-case 58:
-#line 567 "parse.y"
+case 65:
+#line 573 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 66:
+#line 575 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 67:
+#line 577 "parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 68:
+#line 579 "parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+                 pop_lang_context (); ;
+    break;}
+case 69:
+#line 582 "parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+                 pop_lang_context (); ;
+    break;}
+case 70:
+#line 585 "parse.y"
+{ pedantic = yyvsp[-1].itype; ;
+    break;}
+case 72:
+#line 591 "parse.y"
 {;
     break;}
-case 59:
-#line 569 "parse.y"
-{
-                 note_list_got_semicolon (yyvsp[-2].ftype.t);
-               ;
+case 73:
+#line 593 "parse.y"
+{ note_list_got_semicolon (yyvsp[-2].ftype.t); ;
     break;}
-case 60:
-#line 573 "parse.y"
+case 74:
+#line 595 "parse.y"
+{ maybe_process_partial_specialization (yyvsp[-1].ftype.t);
+                 note_got_semicolon (yyvsp[-1].ftype.t); ;
+    break;}
+case 76:
+#line 602 "parse.y"
+{;
+    break;}
+case 77:
+#line 604 "parse.y"
+{ note_list_got_semicolon (yyvsp[-2].ftype.t); ;
+    break;}
+case 78:
+#line 606 "parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
-case 62:
-#line 576 "parse.y"
+case 80:
+#line 609 "parse.y"
 {
                  tree t, attrs;
                  split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs);
@@ -4274,195 +4505,133 @@ case 62:
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
                ;
     break;}
-case 66:
-#line 589 "parse.y"
+case 84:
+#line 622 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 67:
-#line 591 "parse.y"
+case 85:
+#line 624 "parse.y"
 { yyval.itype = 1; ;
     break;}
-case 73:
-#line 607 "parse.y"
+case 91:
+#line 640 "parse.y"
 { finish_function (lineno, (int)yyvsp[-1].itype, 0); ;
     break;}
-case 74:
-#line 609 "parse.y"
-{ ;
-    break;}
-case 75:
-#line 611 "parse.y"
+case 92:
+#line 642 "parse.y"
+{ 
+                 int nested = (hack_decl_function_context
+                               (current_function_decl) != NULL_TREE);
+                 finish_function (lineno, (int)yyvsp[0].itype, nested); 
+               ;
+    break;}
+case 93:
+#line 648 "parse.y"
 { ;
     break;}
-case 76:
-#line 616 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
-                 if (yyvsp[-2].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-2].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
-               ;
+case 94:
+#line 653 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 77:
-#line 625 "parse.y"
+case 95:
+#line 655 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 78:
-#line 627 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
-                 if (yyvsp[-4].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-4].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
+case 96:
+#line 657 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); 
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 79:
-#line 637 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
-                 if (yyvsp[-2].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-2].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
-               ;
+case 97:
+#line 661 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 80:
-#line 646 "parse.y"
+case 98:
+#line 663 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 81:
-#line 648 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
-                 if (yyvsp[-4].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-4].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
+case 99:
+#line 665 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype);
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 82:
-#line 658 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
-                 if (yyvsp[-2].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-2].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
-               ;
+case 100:
+#line 669 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 83:
-#line 667 "parse.y"
+case 101:
+#line 671 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 84:
-#line 669 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
-                 if (yyvsp[-4].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-4].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
+case 102:
+#line 673 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype);
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 85:
-#line 679 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
-                 if (yyvsp[-2].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-2].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
-               ;
+case 103:
+#line 677 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 86:
-#line 688 "parse.y"
+case 104:
+#line 679 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 87:
-#line 690 "parse.y"
-{
-                 yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
-                 if (yyvsp[-4].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-4].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
+case 105:
+#line 681 "parse.y"
+{ yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); 
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 88:
-#line 703 "parse.y"
-{ tree specs, attrs;
-                 split_specs_attrs (yyvsp[-1].ftype.t, &specs, &attrs);
-                 if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
-                   YYERROR1;
-                 reinit_parse_for_function ();
-                 yyval.ttype = NULL_TREE; ;
+case 106:
+#line 688 "parse.y"
+{ if (!begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype))
+                   YYERROR1; ;
     break;}
-case 89:
-#line 710 "parse.y"
-{ tree specs, attrs;
-                 split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
-                 if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
-                   YYERROR1;
-                 reinit_parse_for_function ();
-                 yyval.ttype = NULL_TREE; ;
+case 107:
+#line 691 "parse.y"
+{ if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype))
+                   YYERROR1; ;
     break;}
-case 90:
-#line 717 "parse.y"
-{ if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
-                   YYERROR1;
-                 reinit_parse_for_function ();
-                 yyval.ttype = NULL_TREE; ;
+case 108:
+#line 694 "parse.y"
+{ if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype))
+                   YYERROR1; ;
     break;}
-case 91:
-#line 722 "parse.y"
-{ tree specs, attrs;
-                 split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
-                 if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
-                   YYERROR1;
-                 reinit_parse_for_function ();
-                 yyval.ttype = NULL_TREE; ;
+case 109:
+#line 697 "parse.y"
+{ if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype))
+                   YYERROR1; ;
     break;}
-case 92:
-#line 729 "parse.y"
-{ if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
-                   YYERROR1;
-                 reinit_parse_for_function ();
-                 yyval.ttype = NULL_TREE; ;
+case 110:
+#line 700 "parse.y"
+{ if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype))
+                   YYERROR1; ;
     break;}
-case 93:
-#line 737 "parse.y"
+case 111:
+#line 706 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 94:
-#line 739 "parse.y"
+case 112:
+#line 708 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 95:
-#line 741 "parse.y"
+case 113:
+#line 710 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 96:
-#line 743 "parse.y"
+case 114:
+#line 712 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 97:
-#line 750 "parse.y"
-{ tree specs = strip_attrs (yyvsp[-1].ttype);
-                 yyval.ttype = start_method (specs, yyvsp[0].ttype);
+case 115:
+#line 719 "parse.y"
+{ tree specs, attrs;
+                 split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
+                 attrs = build_tree_list (attrs, NULL_TREE);
+                 yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs);
                 rest_of_mdef:
                  if (! yyval.ttype)
                    YYERROR1;
@@ -4470,55 +4639,64 @@ case 97:
                    yychar = YYLEX;
                  reinit_parse_for_method (yychar, yyval.ttype); ;
     break;}
-case 98:
-#line 759 "parse.y"
-{ yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype); goto rest_of_mdef; ;
+case 116:
+#line 730 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype, NULL_TREE); 
+                 goto rest_of_mdef; ;
     break;}
-case 99:
-#line 761 "parse.y"
-{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
-                 yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+case 117:
+#line 733 "parse.y"
+{ tree specs, attrs;
+                 split_specs_attrs (yyvsp[-1].ftype.t, &specs, &attrs);
+                 attrs = build_tree_list (attrs, NULL_TREE);
+                 yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
-case 100:
-#line 764 "parse.y"
-{ tree specs = strip_attrs (yyvsp[-1].ttype);
-                 yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+case 118:
+#line 738 "parse.y"
+{ tree specs, attrs;
+                 split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
+                 attrs = build_tree_list (attrs, NULL_TREE);
+                 yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
-case 101:
-#line 767 "parse.y"
-{ yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
+case 119:
+#line 743 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, NULL_TREE); 
+                 goto rest_of_mdef; ;
     break;}
-case 102:
-#line 769 "parse.y"
-{ tree specs = strip_attrs (yyvsp[-1].ttype);
-                 yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
+case 120:
+#line 746 "parse.y"
+{ tree specs, attrs;
+                 split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
+                 attrs = build_tree_list (attrs, NULL_TREE);
+                 yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
-case 103:
-#line 772 "parse.y"
-{ yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
+case 121:
+#line 751 "parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, NULL_TREE); 
+                 goto rest_of_mdef; ;
     break;}
-case 104:
-#line 777 "parse.y"
+case 122:
+#line 757 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
                  yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 105:
-#line 786 "parse.y"
+case 123:
+#line 766 "parse.y"
 { store_return_init (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 106:
-#line 788 "parse.y"
+case 124:
+#line 768 "parse.y"
 { store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 107:
-#line 790 "parse.y"
+case 125:
+#line 770 "parse.y"
 { store_return_init (yyval.ttype, NULL_TREE); ;
     break;}
-case 108:
-#line 795 "parse.y"
+case 126:
+#line 775 "parse.y"
 {
                  if (yyvsp[0].itype == 0)
                    error ("no base initializers given following ':'");
@@ -4529,8 +4707,8 @@ case 108:
                  keep_next_level ();
                ;
     break;}
-case 109:
-#line 808 "parse.y"
+case 127:
+#line 788 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -4548,206 +4726,208 @@ case 109:
                    error ("only constructors take base initializers");
                ;
     break;}
-case 110:
-#line 828 "parse.y"
+case 128:
+#line 808 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 111:
-#line 830 "parse.y"
+case 129:
+#line 810 "parse.y"
 { yyval.itype = 1; ;
     break;}
-case 114:
-#line 837 "parse.y"
+case 132:
+#line 817 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
                  expand_member_init (current_class_ref, NULL_TREE, yyvsp[-1].ttype);
                ;
     break;}
-case 115:
-#line 843 "parse.y"
+case 133:
+#line 823 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
                  expand_member_init (current_class_ref, NULL_TREE, void_type_node);
                ;
     break;}
-case 116:
-#line 849 "parse.y"
+case 134:
+#line 829 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 117:
-#line 851 "parse.y"
+case 135:
+#line 831 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
-case 118:
-#line 853 "parse.y"
+case 136:
+#line 833 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 119:
-#line 855 "parse.y"
+case 137:
+#line 835 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
-case 120:
-#line 857 "parse.y"
+case 138:
+#line 837 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-3].ttype),
                                      yyvsp[-1].ttype); ;
     break;}
-case 121:
-#line 860 "parse.y"
+case 139:
+#line 840 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-1].ttype),
                                      void_type_node); ;
     break;}
-case 133:
-#line 886 "parse.y"
+case 151:
+#line 866 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE);
                  yyungetc (';', 1); ;
     break;}
-case 135:
-#line 890 "parse.y"
+case 153:
+#line 870 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 137:
-#line 894 "parse.y"
+case 155:
+#line 874 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 139:
-#line 897 "parse.y"
+case 157:
+#line 877 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 141:
-#line 900 "parse.y"
+case 159:
+#line 880 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype);
                  yyungetc (';', 1); ;
     break;}
-case 143:
-#line 905 "parse.y"
+case 161:
+#line 885 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); ;
     break;}
-case 145:
-#line 909 "parse.y"
+case 163:
+#line 889 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
-case 147:
-#line 912 "parse.y"
+case 165:
+#line 892 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
-case 149:
-#line 917 "parse.y"
+case 167:
+#line 897 "parse.y"
 { begin_explicit_instantiation(); ;
     break;}
-case 150:
-#line 920 "parse.y"
+case 168:
+#line 900 "parse.y"
 { end_explicit_instantiation(); ;
     break;}
-case 151:
-#line 928 "parse.y"
-{
-                 yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
-                 if (yyval.ttype != error_mark_node)
-                   yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
-               ;
+case 169:
+#line 909 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 152:
-#line 934 "parse.y"
-{
-                 yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
-                 if (yyval.ttype != error_mark_node)
-                   yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
-               ;
+case 170:
+#line 912 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 154:
-#line 944 "parse.y"
-{
-                 yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
-                 if (yyval.ttype != error_mark_node)
-                   yyval.ttype = TYPE_STUB_DECL (yyval.ttype);
+case 173:
+#line 920 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 174:
+#line 925 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 175:
+#line 929 "parse.y"
+{ 
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+
+                 yyval.ttype = finish_template_type (yyvsp[-3].ttype, yyvsp[-1].ttype, 
+                                            yychar == SCOPE);
                ;
     break;}
-case 156:
-#line 954 "parse.y"
+case 177:
+#line 940 "parse.y"
 {
                  /* Handle `Class<Class<Type>>' without space in the `>>' */
                  pedwarn ("`>>' should be `> >' in template class name");
                  yyungetc ('>', 1);
                ;
     break;}
-case 157:
-#line 963 "parse.y"
+case 178:
+#line 949 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 159:
-#line 969 "parse.y"
+case 180:
+#line 955 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
-case 160:
-#line 971 "parse.y"
+case 181:
+#line 957 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 161:
-#line 976 "parse.y"
+case 182:
+#line 962 "parse.y"
 { yyval.ttype = groktypename (yyvsp[0].ftype.t); ;
     break;}
-case 163:
-#line 982 "parse.y"
+case 183:
+#line 964 "parse.y"
+{ yyval.ttype = lastiddecl; ;
+    break;}
+case 185:
+#line 970 "parse.y"
 { yyval.code = NEGATE_EXPR; ;
     break;}
-case 164:
-#line 984 "parse.y"
+case 186:
+#line 972 "parse.y"
 { yyval.code = CONVERT_EXPR; ;
     break;}
-case 165:
-#line 986 "parse.y"
+case 187:
+#line 974 "parse.y"
 { yyval.code = PREINCREMENT_EXPR; ;
     break;}
-case 166:
-#line 988 "parse.y"
+case 188:
+#line 976 "parse.y"
 { yyval.code = PREDECREMENT_EXPR; ;
     break;}
-case 167:
-#line 990 "parse.y"
+case 189:
+#line 978 "parse.y"
 { yyval.code = TRUTH_NOT_EXPR; ;
     break;}
-case 168:
-#line 995 "parse.y"
+case 190:
+#line 983 "parse.y"
 { yyval.ttype = build_x_compound_expr (yyval.ttype); ;
     break;}
-case 170:
-#line 1001 "parse.y"
+case 192:
+#line 989 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
-case 171:
-#line 1005 "parse.y"
+case 193:
+#line 993 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 172:
-#line 1010 "parse.y"
+case 194:
+#line 998 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
-case 173:
-#line 1014 "parse.y"
+case 195:
+#line 1002 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 174:
-#line 1019 "parse.y"
+case 196:
+#line 1007 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 175:
-#line 1021 "parse.y"
-{ yyval.ttype = condition_conversion (yyval.ttype); ;
-    break;}
-case 176:
-#line 1023 "parse.y"
+case 198:
+#line 1010 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 177:
-#line 1028 "parse.y"
+case 199:
+#line 1015 "parse.y"
 { {
                  tree d;
                  for (d = getdecls (); d; d = TREE_CHAIN (d))
@@ -4761,205 +4941,198 @@ case 177:
                  }
                  current_declspecs = yyvsp[-4].ftype.t;
                  yyvsp[0].itype = suspend_momentary ();
-                 yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
-                 cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype,
-                                        /*prefix_attributes*/ NULL_TREE);
+                 yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+                                         yyvsp[-1].ttype, /*prefix_attributes*/ NULL_TREE);
                ;
     break;}
-case 178:
-#line 1046 "parse.y"
+case 200:
+#line 1032 "parse.y"
 { 
                  cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 1, LOOKUP_ONLYCONVERTING);
                  resume_momentary (yyvsp[-2].itype);
-                 yyval.ttype = yyvsp[-1].ttype
+                 yyval.ttype = convert_from_reference (yyvsp[-1].ttype)
                  if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE)
                    cp_error ("definition of array `%#D' in condition", yyval.ttype); 
                ;
     break;}
-case 184:
-#line 1065 "parse.y"
+case 206:
+#line 1051 "parse.y"
 { yyval.ttype = begin_compound_stmt (1); ;
     break;}
-case 185:
-#line 1067 "parse.y"
+case 207:
+#line 1053 "parse.y"
 { finish_compound_stmt (1, yyvsp[-1].ttype); ;
     break;}
-case 187:
-#line 1074 "parse.y"
+case 209:
+#line 1060 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 188:
-#line 1077 "parse.y"
+case 210:
+#line 1063 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
-case 189:
-#line 1080 "parse.y"
+case 211:
+#line 1066 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 190:
-#line 1082 "parse.y"
+case 212:
+#line 1068 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
-case 191:
-#line 1087 "parse.y"
+case 213:
+#line 1073 "parse.y"
 { yyval.ttype = build_expr_list (NULL_TREE, yyval.ttype); ;
     break;}
-case 193:
-#line 1093 "parse.y"
+case 215:
+#line 1079 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 194:
-#line 1096 "parse.y"
+case 216:
+#line 1082 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 195:
-#line 1099 "parse.y"
+case 217:
+#line 1085 "parse.y"
 { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
     break;}
-case 196:
-#line 1101 "parse.y"
+case 218:
+#line 1087 "parse.y"
 { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
-case 197:
-#line 1103 "parse.y"
+case 219:
+#line 1089 "parse.y"
 { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
-case 198:
-#line 1105 "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);
-               ;
+case 220:
+#line 1091 "parse.y"
+{ yyval.ttype = finish_unary_op_expr (yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
-case 199:
-#line 1112 "parse.y"
-{ tree label = lookup_label (yyvsp[0].ttype);
-                 if (pedantic)
+case 221:
+#line 1094 "parse.y"
+{ if (pedantic)
                    pedwarn ("ANSI C++ forbids `&&'");
-                 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;
-                   }
-               ;
+                 yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ;
     break;}
-case 200:
-#line 1125 "parse.y"
+case 222:
+#line 1098 "parse.y"
 { yyval.ttype = expr_sizeof (yyvsp[0].ttype); ;
     break;}
-case 201:
-#line 1127 "parse.y"
-{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t)); ;
+case 223:
+#line 1100 "parse.y"
+{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t));
+                 check_for_new_type ("sizeof", yyvsp[-1].ftype); ;
     break;}
-case 202:
-#line 1129 "parse.y"
+case 224:
+#line 1103 "parse.y"
 { yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
     break;}
-case 203:
-#line 1131 "parse.y"
+case 225:
+#line 1105 "parse.y"
 { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t)); 
                  check_for_new_type ("alignof", yyvsp[-1].ftype); ;
     break;}
-case 204:
-#line 1137 "parse.y"
+case 226:
+#line 1111 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-1].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
-case 205:
-#line 1140 "parse.y"
+case 227:
+#line 1114 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
-case 206:
-#line 1143 "parse.y"
+case 228:
+#line 1117 "parse.y"
 { yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
-case 207:
-#line 1146 "parse.y"
+case 229:
+#line 1120 "parse.y"
 { yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-3].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
-case 208:
-#line 1149 "parse.y"
+case 230:
+#line 1133 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t),
-                                 NULL_TREE, yyvsp[-3].itype); 
+                                 NULL_TREE, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
-case 209:
-#line 1153 "parse.y"
-{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-4].itype); 
+case 231:
+#line 1138 "parse.y"
+{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
-case 210:
-#line 1156 "parse.y"
-{ yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-4].itype); 
+case 232:
+#line 1142 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
-case 211:
-#line 1159 "parse.y"
-{ yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); 
+case 233:
+#line 1146 "parse.y"
+{ yyval.ttype = build_new (yyvsp[-5].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-6].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
-case 212:
-#line 1163 "parse.y"
+case 234:
+#line 1150 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
     break;}
-case 213:
-#line 1165 "parse.y"
+case 235:
+#line 1152 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
-case 214:
-#line 1169 "parse.y"
+case 236:
+#line 1156 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
-case 215:
-#line 1173 "parse.y"
+case 237:
+#line 1160 "parse.y"
 { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;
     break;}
-case 216:
-#line 1175 "parse.y"
+case 238:
+#line 1162 "parse.y"
 { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;
     break;}
-case 217:
-#line 1180 "parse.y"
-{ yyval.ttype = yyvsp[-1].ttype; ;
+case 239:
+#line 1172 "parse.y"
+{ finish_new_placement (NULL_TREE, yyvsp[-2].itype); ;
     break;}
-case 218:
-#line 1182 "parse.y"
-{
-                 yyval.ttype = yyvsp[-1].ttype; 
-                 pedwarn ("old style placement syntax, use () instead");
-               ;
+case 240:
+#line 1175 "parse.y"
+{ yyval.itype = begin_new_placement (); ;
     break;}
-case 219:
-#line 1190 "parse.y"
+case 241:
+#line 1179 "parse.y"
+{ yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ;
+    break;}
+case 242:
+#line 1181 "parse.y"
+{ cp_pedwarn ("old style placement syntax, use () instead");
+                 yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ;
+    break;}
+case 243:
+#line 1187 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 220:
-#line 1192 "parse.y"
+case 244:
+#line 1189 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 221:
-#line 1194 "parse.y"
+case 245:
+#line 1191 "parse.y"
 {
                  cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t);
                  yyval.ttype = error_mark_node;
                ;
     break;}
-case 222:
-#line 1202 "parse.y"
+case 246:
+#line 1199 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
@@ -4970,26 +5143,24 @@ case 222:
                    yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 223:
-#line 1216 "parse.y"
-{ yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
-                 TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
+case 247:
+#line 1213 "parse.y"
+{ yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0);
                  yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
-case 224:
-#line 1221 "parse.y"
-{ yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
-                 TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
+case 248:
+#line 1217 "parse.y"
+{ yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 
                  yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
-case 226:
-#line 1230 "parse.y"
+case 250:
+#line 1225 "parse.y"
 { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 227:
-#line 1232 "parse.y"
+case 251:
+#line 1227 "parse.y"
 { 
                  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
                                        nreverse (yyvsp[-2].ttype)); 
@@ -5001,395 +5172,327 @@ case 227:
                  yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init);
                ;
     break;}
-case 229:
-#line 1248 "parse.y"
+case 253:
+#line 1243 "parse.y"
 { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 230:
-#line 1250 "parse.y"
+case 254:
+#line 1245 "parse.y"
 { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 231:
-#line 1252 "parse.y"
+case 255:
+#line 1247 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 232:
-#line 1254 "parse.y"
+case 256:
+#line 1249 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 233:
-#line 1256 "parse.y"
+case 257:
+#line 1251 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 234:
-#line 1258 "parse.y"
+case 258:
+#line 1253 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 235:
-#line 1260 "parse.y"
+case 259:
+#line 1255 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 236:
-#line 1262 "parse.y"
+case 260:
+#line 1257 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 237:
-#line 1264 "parse.y"
+case 261:
+#line 1259 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 238:
-#line 1266 "parse.y"
+case 262:
+#line 1261 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 239:
-#line 1268 "parse.y"
+case 263:
+#line 1263 "parse.y"
 { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 240:
-#line 1270 "parse.y"
+case 264:
+#line 1265 "parse.y"
 { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 241:
-#line 1272 "parse.y"
+case 265:
+#line 1267 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 242:
-#line 1274 "parse.y"
+case 266:
+#line 1269 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 243:
-#line 1276 "parse.y"
+case 267:
+#line 1271 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 244:
-#line 1278 "parse.y"
+case 268:
+#line 1273 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 245:
-#line 1280 "parse.y"
+case 269:
+#line 1275 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 246:
-#line 1282 "parse.y"
+case 270:
+#line 1277 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 247:
-#line 1284 "parse.y"
+case 271:
+#line 1279 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 248:
-#line 1286 "parse.y"
+case 272:
+#line 1281 "parse.y"
 { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 249:
-#line 1288 "parse.y"
+case 273:
+#line 1283 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype);
                  if (yyval.ttype != error_mark_node)
                     C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
     break;}
-case 250:
-#line 1292 "parse.y"
+case 274:
+#line 1287 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
-case 251:
-#line 1294 "parse.y"
+case 275:
+#line 1289 "parse.y"
 { yyval.ttype = build_throw (NULL_TREE); ;
     break;}
-case 252:
-#line 1296 "parse.y"
+case 276:
+#line 1291 "parse.y"
 { yyval.ttype = build_throw (yyvsp[0].ttype); ;
     break;}
-case 253:
-#line 1314 "parse.y"
+case 277:
+#line 1309 "parse.y"
 { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
-case 259:
-#line 1323 "parse.y"
-{ yyval.ttype = do_identifier (yyvsp[-1].ttype, 1); ;
+case 278:
+#line 1311 "parse.y"
+{ yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
-case 260:
-#line 1327 "parse.y"
+case 284:
+#line 1320 "parse.y"
+{
+                 /* If lastiddecl is a TREE_LIST, it's a baselink, which
+                    means that we're in an expression like S::f<int>, so
+                    don't do_identifier; we only do that for unqualified
+                    identifiers.  */
+                 if (lastiddecl && TREE_CODE (lastiddecl) != TREE_LIST)
+                   yyval.ttype = do_identifier (yyvsp[-1].ttype, 1, NULL_TREE);
+                 else
+                   yyval.ttype = yyvsp[-1].ttype;
+               ;
+    break;}
+case 285:
+#line 1333 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 261:
-#line 1329 "parse.y"
+case 286:
+#line 1335 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 262:
-#line 1334 "parse.y"
+case 287:
+#line 1340 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 263:
-#line 1336 "parse.y"
+case 288:
+#line 1342 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 264:
-#line 1339 "parse.y"
+case 289:
+#line 1345 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 269:
-#line 1351 "parse.y"
+case 294:
+#line 1357 "parse.y"
+{
+                 /* Provide support for '(' attributes '*' declarator ')'
+                    etc */
+                 yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE);
+               ;
+    break;}
+case 296:
+#line 1367 "parse.y"
 { yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
     break;}
-case 270:
-#line 1353 "parse.y"
+case 297:
+#line 1369 "parse.y"
 { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
-case 271:
-#line 1355 "parse.y"
+case 298:
+#line 1371 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 272:
-#line 1360 "parse.y"
+case 299:
+#line 1376 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 273:
-#line 1362 "parse.y"
+case 300:
+#line 1378 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 277:
-#line 1370 "parse.y"
+case 304:
+#line 1388 "parse.y"
 { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
     break;}
-case 278:
-#line 1375 "parse.y"
+case 305:
+#line 1393 "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 (TREE_CODE (yyval.ttype) != TEMPLATE_ID_EXPR)
-                   yyval.ttype = do_identifier (yyval.ttype, 1);
+                 if (TREE_CODE (yyvsp[0].ttype) == BIT_NOT_EXPR)
+                   yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyvsp[0].ttype, 0));
+                 else 
+                   yyval.ttype = finish_id_expr (yyvsp[0].ttype);
                ;
     break;}
-case 281:
-#line 1384 "parse.y"
+case 308:
+#line 1402 "parse.y"
 {
                  if (processing_template_decl)
                    push_obstacks (&permanent_obstack, &permanent_obstack);
                  yyval.ttype = combine_strings (yyval.ttype);
+                 /* combine_strings doesn't set up TYPE_MAIN_VARIANT of
+                    a const array the way we want, so fix it.  */
+                 if (flag_const_strings)
+                   TREE_TYPE (yyval.ttype) = build_cplus_array_type
+                     (TREE_TYPE (TREE_TYPE (yyval.ttype)),
+                      TYPE_DOMAIN (TREE_TYPE (yyval.ttype)));
                  if (processing_template_decl)
                    pop_obstacks ();
                ;
     break;}
-case 282:
-#line 1392 "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 283:
-#line 1400 "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); ;
+case 309:
+#line 1416 "parse.y"
+{ yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;
     break;}
-case 284:
-#line 1408 "parse.y"
+case 310:
+#line 1418 "parse.y"
+{ yyvsp[-1].ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
+                 yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;
+    break;}
+case 311:
+#line 1421 "parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
-case 285:
-#line 1410 "parse.y"
-{ if (current_function_decl == 0)
+case 312:
+#line 1423 "parse.y"
+{ tree scope = current_scope ();
+                 if (!scope || TREE_CODE (scope) != FUNCTION_DECL)
                    {
                      error ("braced-group within expression allowed only inside a function");
                      YYERROR;
                    }
-                 keep_next_level ();
-                 if (!processing_template_decl)
-                   yyval.ttype = expand_start_stmt_expr (); 
-                 else
-                   yyval.ttype = NULL_TREE;
-               ;
-    break;}
-case 286:
-#line 1422 "parse.y"
-{ tree rtl_exp;
                  if (pedantic)
-                   pedwarn ("ANSI C++ forbids braced-groups within expressions");
-                 if (!processing_template_decl)
-                   {
-                     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.  */
-                     if (processing_template_decl)
-                       yyval.ttype = build (BIND_EXPR, NULL_TREE,
-                                   NULL_TREE, last_tree, yyvsp[-1].ttype);
-                     else
-                       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;
+                   pedwarn ("ANSI C++ forbids braced-groups within expressions");  
+                 yyval.ttype = begin_stmt_expr (); 
                ;
     break;}
-case 287:
-#line 1452 "parse.y"
-{
-                  yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_ref); 
-                  if (TREE_CODE (yyval.ttype) == CALL_EXPR
-                      && TREE_TYPE (yyval.ttype) != void_type_node)
-                   yyval.ttype = require_complete_type (yyval.ttype);
-                ;
+case 313:
+#line 1434 "parse.y"
+{ yyval.ttype = finish_stmt_expr (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 288:
-#line 1459 "parse.y"
-{
-                 yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_ref);
-                 if (TREE_CODE (yyval.ttype) == CALL_EXPR
-                     && TREE_TYPE (yyval.ttype) != void_type_node)
-                   yyval.ttype = require_complete_type (yyval.ttype);
-                ;
+case 314:
+#line 1439 "parse.y"
+{ yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ;
     break;}
-case 289:
-#line 1466 "parse.y"
+case 315:
+#line 1441 "parse.y"
+{ yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 1); ;
+    break;}
+case 316:
+#line 1443 "parse.y"
+{ yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); ;
+    break;}
+case 317:
+#line 1445 "parse.y"
+{ yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); ;
+    break;}
+case 318:
+#line 1447 "parse.y"
 { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 290:
-#line 1468 "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 291:
-#line 1477 "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 292:
-#line 1482 "parse.y"
-{ if (current_class_ptr)
-                   {
-#ifdef WARNING_ABOUT_CCD
-                     TREE_USED (current_class_ptr) = 1;
-#endif
-                     yyval.ttype = current_class_ptr;
-                   }
-                 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;
-                   }
-               ;
+case 319:
+#line 1449 "parse.y"
+{ yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTINCREMENT_EXPR); ;
     break;}
-case 293:
-#line 1505 "parse.y"
+case 320:
+#line 1451 "parse.y"
+{ yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTDECREMENT_EXPR); ;
+    break;}
+case 321:
+#line 1454 "parse.y"
+{ yyval.ttype = finish_this_expr (); ;
+    break;}
+case 322:
+#line 1456 "parse.y"
 {
-                 tree type = NULL_TREE;
-                 tree id = yyval.ttype;
+                 /* This is a C cast in C++'s `functional' notation
+                    using the "implicit int" extension so that:
+                    `const (3)' is equivalent to `const int (3)'.  */
+                 tree type;
 
-                 /* 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));
-                   }
+
+                 type = cp_build_qualified_type (integer_type_node,
+                                                 cp_type_qual_from_rid (yyvsp[-3].ttype));
+                 yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
                ;
     break;}
-case 295:
-#line 1550 "parse.y"
+case 324:
+#line 1474 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("dynamic_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
     break;}
-case 296:
-#line 1554 "parse.y"
+case 325:
+#line 1478 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("static_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
     break;}
-case 297:
-#line 1558 "parse.y"
+case 326:
+#line 1482 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
     break;}
-case 298:
-#line 1562 "parse.y"
+case 327:
+#line 1486 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("const_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
     break;}
-case 299:
-#line 1566 "parse.y"
+case 328:
+#line 1490 "parse.y"
 { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ;
     break;}
-case 300:
-#line 1568 "parse.y"
+case 329:
+#line 1492 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
                  check_for_new_type ("typeid", yyvsp[-1].ftype);
                  yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ;
     break;}
-case 301:
-#line 1572 "parse.y"
+case 330:
+#line 1496 "parse.y"
 { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ;
     break;}
-case 302:
-#line 1574 "parse.y"
+case 331:
+#line 1498 "parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 332:
+#line 1500 "parse.y"
 {
                  got_scope = NULL_TREE;
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
@@ -5398,173 +5501,103 @@ case 302:
                    yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 303:
-#line 1582 "parse.y"
+case 333:
+#line 1508 "parse.y"
 { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
     break;}
-case 304:
-#line 1584 "parse.y"
-{ if (processing_template_decl)
-                   yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE);
-                 else
-                   yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
+case 334:
+#line 1510 "parse.y"
+{ yyval.ttype = finish_qualified_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 305:
-#line 1589 "parse.y"
-{ if (processing_template_decl)
-                   yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-1].ttype), 
-                                      NULL_TREE, NULL_TREE);
-                 else
-                   yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
+case 335:
+#line 1512 "parse.y"
+{ yyval.ttype = finish_qualified_call_expr (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
-case 306:
-#line 1595 "parse.y"
+case 336:
+#line 1514 "parse.y"
 { 
                  yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); 
                ;
     break;}
-case 307:
-#line 1599 "parse.y"
-{
-                 yyval.ttype = build_method_call (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, 
-                                         NULL_TREE, LOOKUP_NORMAL); 
-                ;
+case 337:
+#line 1518 "parse.y"
+{ yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
-case 308:
-#line 1604 "parse.y"
-{
-                 yyval.ttype = build_method_call (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE,
-                                         NULL_TREE, LOOKUP_NORMAL); 
-                ;
+case 338:
+#line 1520 "parse.y"
+{ yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 309:
-#line 1609 "parse.y"
+case 339:
+#line 1522 "parse.y"
 { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
-case 310:
-#line 1611 "parse.y"
+case 340:
+#line 1524 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype));
                  else
                    yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
     break;}
-case 311:
-#line 1616 "parse.y"
-{
-#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, current_class_ref);
-                 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);
-#endif
-               ;
-    break;}
-case 312:
-#line 1631 "parse.y"
-{
-#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, current_class_ref);
-                 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);
-#endif
-               ;
+case 341:
+#line 1529 "parse.y"
+{ yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
-case 313:
-#line 1646 "parse.y"
-{
-                 if (IS_SIGNATURE (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);
-                   }
-                 else
-                   yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
-               ;
+case 342:
+#line 1531 "parse.y"
+{ yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 314:
-#line 1657 "parse.y"
-{
-                 if (IS_SIGNATURE (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);
-                   }
-                 else
-                   yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), NULL_TREE);
-               ;
+case 343:
+#line 1533 "parse.y"
+{ yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
-case 315:
-#line 1669 "parse.y"
-{
-                 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 = cp_convert (void_type_node, yyvsp[-3].ttype);
-               ;
+case 344:
+#line 1535 "parse.y"
+{ yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 316:
-#line 1677 "parse.y"
-{
-                 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 = cp_convert (void_type_node, yyvsp[-5].ttype);
-               ;
+case 345:
+#line 1538 "parse.y"
+{ yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 317:
-#line 1686 "parse.y"
+case 346:
+#line 1540 "parse.y"
+{ yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 347:
+#line 1542 "parse.y"
 {
                  yyval.ttype = error_mark_node;
                ;
     break;}
-case 318:
-#line 1731 "parse.y"
+case 348:
+#line 1587 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 319:
-#line 1733 "parse.y"
+case 349:
+#line 1589 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
-case 320:
-#line 1738 "parse.y"
+case 350:
+#line 1594 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 321:
-#line 1740 "parse.y"
+case 351:
+#line 1596 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
-case 322:
-#line 1745 "parse.y"
+case 352:
+#line 1601 "parse.y"
 { yyval.ttype = boolean_true_node; ;
     break;}
-case 323:
-#line 1747 "parse.y"
+case 353:
+#line 1603 "parse.y"
 { yyval.ttype = boolean_false_node; ;
     break;}
-case 325:
-#line 1754 "parse.y"
+case 355:
+#line 1610 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 326:
-#line 1759 "parse.y"
+case 356:
+#line 1615 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -5575,220 +5608,220 @@ case 326:
                  keep_next_level ();
                ;
     break;}
-case 327:
-#line 1772 "parse.y"
+case 357:
+#line 1628 "parse.y"
 { got_object = TREE_TYPE (yyval.ttype); ;
     break;}
-case 328:
-#line 1774 "parse.y"
+case 358:
+#line 1630 "parse.y"
 {
                  yyval.ttype = build_x_arrow (yyval.ttype); 
                  got_object = TREE_TYPE (yyval.ttype);
                ;
     break;}
-case 329:
-#line 1782 "parse.y"
+case 359:
+#line 1638 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t)))
                    note_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
-case 330:
-#line 1788 "parse.y"
+case 360:
+#line 1644 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  note_list_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
-case 331:
-#line 1793 "parse.y"
+case 361:
+#line 1649 "parse.y"
 { resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 332:
-#line 1795 "parse.y"
+case 362:
+#line 1651 "parse.y"
 {
                  shadow_tag (yyvsp[-1].ftype.t);
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
                ;
     break;}
-case 333:
-#line 1800 "parse.y"
+case 363:
+#line 1656 "parse.y"
 { warning ("empty declaration"); ;
     break;}
-case 334:
-#line 1802 "parse.y"
+case 364:
+#line 1658 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
-case 337:
-#line 1816 "parse.y"
+case 367:
+#line 1672 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (),
                                             NULL_TREE, NULL_TREE); ;
     break;}
-case 338:
-#line 1819 "parse.y"
+case 368:
+#line 1675 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE,
                                             NULL_TREE); ;
     break;}
-case 339:
-#line 1826 "parse.y"
+case 369:
+#line 1682 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 340:
-#line 1829 "parse.y"
+case 370:
+#line 1685 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 341:
-#line 1832 "parse.y"
+case 371:
+#line 1688 "parse.y"
 { yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 342:
-#line 1835 "parse.y"
+case 372:
+#line 1691 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
-case 343:
-#line 1838 "parse.y"
+case 373:
+#line 1694 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 346:
-#line 1854 "parse.y"
+case 376:
+#line 1710 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 347:
-#line 1857 "parse.y"
+case 377:
+#line 1713 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 348:
-#line 1860 "parse.y"
+case 378:
+#line 1716 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
-case 349:
-#line 1863 "parse.y"
+case 379:
+#line 1719 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 350:
-#line 1866 "parse.y"
+case 380:
+#line 1722 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 351:
-#line 1869 "parse.y"
+case 381:
+#line 1725 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t,
                                         chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
-case 352:
-#line 1876 "parse.y"
+case 382:
+#line 1732 "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 353:
-#line 1881 "parse.y"
+case 383:
+#line 1737 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
     break;}
-case 354:
-#line 1883 "parse.y"
+case 384:
+#line 1739 "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 355:
-#line 1888 "parse.y"
+case 385:
+#line 1744 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 356:
-#line 1890 "parse.y"
+case 386:
+#line 1746 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
-case 357:
-#line 1900 "parse.y"
+case 387:
+#line 1756 "parse.y"
 { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
     break;}
-case 358:
-#line 1902 "parse.y"
+case 388:
+#line 1758 "parse.y"
 { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
     break;}
-case 359:
-#line 1904 "parse.y"
+case 389:
+#line 1760 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
                  TREE_STATIC (yyval.ttype) = 1; ;
     break;}
-case 360:
-#line 1907 "parse.y"
+case 390:
+#line 1763 "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 361:
-#line 1913 "parse.y"
+case 391:
+#line 1769 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 362:
-#line 1915 "parse.y"
+case 392:
+#line 1771 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
-case 363:
-#line 1926 "parse.y"
+case 393:
+#line 1782 "parse.y"
 { yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 364:
-#line 1929 "parse.y"
+case 394:
+#line 1785 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 365:
-#line 1932 "parse.y"
+case 395:
+#line 1788 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 366:
-#line 1935 "parse.y"
+case 396:
+#line 1791 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
-case 367:
-#line 1941 "parse.y"
+case 397:
+#line 1797 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
-case 368:
-#line 1943 "parse.y"
+case 398:
+#line 1799 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
     break;}
-case 370:
-#line 1953 "parse.y"
+case 400:
+#line 1809 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
-case 371:
-#line 1955 "parse.y"
+case 401:
+#line 1811 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
-case 372:
-#line 1957 "parse.y"
-{ yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype);
+case 402:
+#line 1813 "parse.y"
+{ yyval.ftype.t = finish_typeof (yyvsp[-1].ttype);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 373:
-#line 1960 "parse.y"
+case 403:
+#line 1816 "parse.y"
 { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 374:
-#line 1963 "parse.y"
+case 404:
+#line 1819 "parse.y"
 { tree type = TREE_TYPE (yyvsp[-1].ttype);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5804,8 +5837,8 @@ case 374:
                    }
                ;
     break;}
-case 375:
-#line 1978 "parse.y"
+case 405:
+#line 1834 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5821,328 +5854,320 @@ case 375:
                    }
                ;
     break;}
-case 376:
-#line 1998 "parse.y"
+case 406:
+#line 1854 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
-case 377:
-#line 2000 "parse.y"
+case 407:
+#line 1856 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
-case 385:
-#line 2021 "parse.y"
+case 410:
+#line 1863 "parse.y"
+{ check_multiple_declarators (); ;
+    break;}
+case 412:
+#line 1869 "parse.y"
+{ check_multiple_declarators (); ;
+    break;}
+case 414:
+#line 1875 "parse.y"
+{ check_multiple_declarators (); ;
+    break;}
+case 415:
+#line 1880 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 386:
-#line 2023 "parse.y"
+case 416:
+#line 1882 "parse.y"
 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 387:
-#line 2028 "parse.y"
-{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
-                 cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
+case 417:
+#line 1887 "parse.y"
+{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+                                         yyvsp[-1].ttype, prefix_attributes); ;
     break;}
-case 388:
-#line 2032 "parse.y"
+case 418:
+#line 1891 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
     break;}
-case 389:
-#line 2034 "parse.y"
-{ yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
-                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes);
+case 419:
+#line 1893 "parse.y"
+{ yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+                                         yyvsp[0].ttype, prefix_attributes);
                  cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
-case 390:
-#line 2047 "parse.y"
+case 420:
+#line 1906 "parse.y"
 { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, 
                                           yyvsp[-1].ttype, 1, &yyval.ttype); ;
     break;}
-case 391:
-#line 2052 "parse.y"
+case 421:
+#line 1911 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1,
                                  LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
-case 392:
-#line 2056 "parse.y"
+case 422:
+#line 1915 "parse.y"
 { tree d;
                  yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d);
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
-case 393:
-#line 2063 "parse.y"
+case 423:
+#line 1922 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
-case 394:
-#line 2067 "parse.y"
+case 424:
+#line 1926 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
-case 395:
-#line 2072 "parse.y"
+case 425:
+#line 1931 "parse.y"
 { /* Set things up as initdcl0_innards expects.  */
-             yyval.ttype = yyvsp[-1].ttype; 
+             yyvsp[0].ttype = yyvsp[-1].ttype; 
               yyvsp[-1].ttype = NULL_TREE; ;
     break;}
-case 396:
-#line 2076 "parse.y"
+case 426:
+#line 1935 "parse.y"
 {;
     break;}
-case 397:
-#line 2078 "parse.y"
+case 427:
+#line 1937 "parse.y"
 { tree d;
                  parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d);
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
-case 398:
-#line 2087 "parse.y"
+case 428:
+#line 1946 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 399:
-#line 2089 "parse.y"
+case 429:
+#line 1948 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 400:
-#line 2094 "parse.y"
+case 430:
+#line 1953 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 401:
-#line 2096 "parse.y"
+case 431:
+#line 1955 "parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 402:
-#line 2101 "parse.y"
+case 432:
+#line 1960 "parse.y"
 { yyval.ttype = yyvsp[-2].ttype; ;
     break;}
-case 403:
-#line 2106 "parse.y"
+case 433:
+#line 1965 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 404:
-#line 2108 "parse.y"
+case 434:
+#line 1967 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 405:
-#line 2113 "parse.y"
+case 435:
+#line 1972 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 406:
-#line 2115 "parse.y"
+case 436:
+#line 1974 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 407:
-#line 2117 "parse.y"
+case 437:
+#line 1976 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
     break;}
-case 408:
-#line 2119 "parse.y"
+case 438:
+#line 1978 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
     break;}
-case 409:
-#line 2121 "parse.y"
+case 439:
+#line 1980 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 414:
-#line 2137 "parse.y"
+case 444:
+#line 1996 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 415:
-#line 2139 "parse.y"
+case 445:
+#line 1998 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 416:
-#line 2144 "parse.y"
+case 446:
+#line 2003 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 417:
-#line 2146 "parse.y"
+case 447:
+#line 2005 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 419:
-#line 2154 "parse.y"
+case 449:
+#line 2013 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
-case 420:
-#line 2157 "parse.y"
+case 450:
+#line 2016 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
-case 421:
-#line 2160 "parse.y"
+case 451:
+#line 2019 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
-case 422:
-#line 2163 "parse.y"
+case 452:
+#line 2022 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 423:
-#line 2170 "parse.y"
+case 453:
+#line 2029 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
-case 424:
-#line 2172 "parse.y"
+case 454:
+#line 2031 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 425:
-#line 2175 "parse.y"
+case 455:
+#line 2034 "parse.y"
 { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 426:
-#line 2177 "parse.y"
+case 456:
+#line 2036 "parse.y"
 { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 427:
-#line 2179 "parse.y"
+case 457:
+#line 2038 "parse.y"
 { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 428:
-#line 2184 "parse.y"
+case 458:
+#line 2043 "parse.y"
 { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
-                                 NULL_TREE, 1);
+                                 NULL_TREE, 2);
                  reinit_parse_for_function (); ;
     break;}
-case 429:
-#line 2190 "parse.y"
+case 459:
+#line 2049 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)yyvsp[-1].itype, nested);
+                 finish_function (lineno, (int)yyvsp[-1].itype | 2, nested);
                  process_next_inline (yyvsp[-3].ttype);
                ;
     break;}
-case 430:
-#line 2197 "parse.y"
-{ process_next_inline (yyvsp[-2].ttype); ;
+case 460:
+#line 2056 "parse.y"
+{ 
+                 int nested = (hack_decl_function_context
+                               (current_function_decl) != NULL_TREE);
+                 finish_function (lineno, (int)yyvsp[0].itype | 2, nested); 
+                  process_next_inline (yyvsp[-2].ttype);
+               ;
     break;}
-case 431:
-#line 2199 "parse.y"
+case 461:
+#line 2063 "parse.y"
 { process_next_inline (yyvsp[-2].ttype); ;
     break;}
-case 434:
-#line 2211 "parse.y"
+case 464:
+#line 2075 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 435:
-#line 2213 "parse.y"
+case 465:
+#line 2077 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, error_mark_node); ;
     break;}
-case 437:
-#line 2218 "parse.y"
+case 467:
+#line 2082 "parse.y"
 { do_pending_defargs (); ;
     break;}
-case 438:
-#line 2220 "parse.y"
+case 468:
+#line 2084 "parse.y"
 { do_pending_defargs (); ;
     break;}
-case 439:
-#line 2225 "parse.y"
+case 469:
+#line 2089 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
-                 yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+                 yyval.ttype = current_enum_type;
+                 current_enum_type = start_enum (yyvsp[-1].ttype); ;
     break;}
-case 440:
-#line 2228 "parse.y"
-{ yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+case 470:
+#line 2093 "parse.y"
+{ TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype;
+                 yyval.ftype.t = finish_enum (current_enum_type);
                  yyval.ftype.new_type_flag = 1;
+                 current_enum_type = yyvsp[-3].ttype;
                  resume_momentary ((int) yyvsp[-4].itype);
-                 check_for_missing_semicolon (yyvsp[-3].ttype); ;
+                 check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
-case 441:
-#line 2233 "parse.y"
-{ yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
+case 471:
+#line 2100 "parse.y"
+{ yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype));
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
-case 442:
-#line 2237 "parse.y"
+case 472:
+#line 2104 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
-                 yyval.ttype = start_enum (make_anon_name ()); ;
+                 yyval.ttype = current_enum_type;
+                 current_enum_type = start_enum (make_anon_name ()); ;
     break;}
-case 443:
-#line 2240 "parse.y"
-{ yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+case 473:
+#line 2108 "parse.y"
+{ TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype;
+                 yyval.ftype.t = finish_enum (current_enum_type);
+                 yyval.ftype.new_type_flag = 1;
+                 current_enum_type = yyvsp[-3].ttype;
                  resume_momentary ((int) yyvsp[-5].itype);
-                 check_for_missing_semicolon (yyvsp[-3].ttype);
-                 yyval.ftype.new_type_flag = 1; ;
+                 check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
-case 444:
-#line 2245 "parse.y"
-{ yyval.ftype.t = finish_enum (start_enum (make_anon_name()), NULL_TREE);
+case 474:
+#line 2115 "parse.y"
+{ yyval.ftype.t = finish_enum (start_enum (make_anon_name()));
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
-case 445:
-#line 2249 "parse.y"
-{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
+case 475:
+#line 2119 "parse.y"
+{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 446:
-#line 2252 "parse.y"
-{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
+case 476:
+#line 2122 "parse.y"
+{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 447:
-#line 2255 "parse.y"
+case 477:
+#line 2125 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype;
-                 yyval.ftype.new_type_flag = 0; ;
+                 yyval.ftype.new_type_flag = 0; 
+                 if (!processing_template_decl)
+                   cp_pedwarn ("using `typename' outside of template"); ;
     break;}
-case 448:
-#line 2260 "parse.y"
-{
+case 478:
+#line 2132 "parse.y"
+{ 
                  int semi;
 
-                 yyval.ttype = yyvsp[-4].ttype;
-#if 0
-                 /* Need to rework class nesting in the
-                    presence of nested classes, etc.  */
-                 shadow_tag (CLASSTYPE_AS_LIST (yyvsp[-4].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 (yyvsp[-4].ttype);
-
-                 if (TREE_CODE (yyvsp[-4].ttype) == ENUMERAL_TYPE)
-                   ;
-                 else
-                   {
-                     yyval.ttype = finish_struct (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, semi);
-                     if (semi) note_got_semicolon (yyval.ttype);
-                   }
 
-                 pop_obstacks ();
-
-                 if (! semi)
-                   check_for_missing_semicolon (yyvsp[-4].ttype); 
-                 if (current_scope () == current_function_decl)
-                   do_pending_defargs ();
+                 yyval.ttype = finish_class_definition (yyvsp[-4].ttype, yyvsp[0].ttype, semi); 
                ;
     break;}
-case 449:
-#line 2293 "parse.y"
-{
-                 if (pending_inlines 
-                     && current_scope () == current_function_decl)
-                   do_pending_inlines ();
-               ;
+case 479:
+#line 2142 "parse.y"
+{ finish_default_args (); ;
     break;}
-case 450:
-#line 2299 "parse.y"
-{ 
-                 yyval.ftype.t = yyvsp[-3].ttype;
+case 480:
+#line 2144 "parse.y"
+{ yyval.ftype.t = yyvsp[-3].ttype;
                  yyval.ftype.new_type_flag = 1; 
-                 if (current_class_type == NULL_TREE)
-                   clear_inline_text_obstack (); 
-
-                 /* Undo the begin_tree in left_curly.  */
-                 end_tree ();
-               ;
+                 begin_inline_definitions (); ;
     break;}
-case 451:
-#line 2309 "parse.y"
+case 481:
+#line 2148 "parse.y"
 {
                  yyval.ftype.new_type_flag = 0;
                  if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE)
@@ -6161,191 +6186,161 @@ case 451:
                    }
                ;
     break;}
-case 455:
-#line 2336 "parse.y"
+case 485:
+#line 2175 "parse.y"
 { if (pedantic && !in_system_header)
                    pedwarn ("comma at end of enumerator list"); ;
     break;}
-case 457:
-#line 2343 "parse.y"
+case 487:
+#line 2182 "parse.y"
 { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
-case 458:
-#line 2345 "parse.y"
+case 488:
+#line 2184 "parse.y"
 { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
-case 459:
-#line 2347 "parse.y"
+case 489:
+#line 2186 "parse.y"
 { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
-case 460:
-#line 2349 "parse.y"
+case 490:
+#line 2188 "parse.y"
 { error ("no body nor ';' separates two class, struct or union declarations"); ;
     break;}
-case 461:
-#line 2354 "parse.y"
-{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+case 491:
+#line 2190 "parse.y"
+{ yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 492:
+#line 2195 "parse.y"
+{ 
+                 current_aggr = yyvsp[-1].ttype; 
+                 yyval.ttype = yyvsp[0].ttype; 
+               ;
     break;}
-case 462:
-#line 2359 "parse.y"
+case 493:
+#line 2203 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 463:
-#line 2364 "parse.y"
+case 494:
+#line 2205 "parse.y"
+{ yyungetc ('{', 1); ;
+    break;}
+case 495:
+#line 2207 "parse.y"
+{ yyungetc (':', 1); ;
+    break;}
+case 496:
+#line 2212 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 464:
-#line 2369 "parse.y"
+case 497:
+#line 2217 "parse.y"
 {
                  current_aggr = yyvsp[-3].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 465:
-#line 2374 "parse.y"
+case 498:
+#line 2222 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
-case 466:
-#line 2379 "parse.y"
+case 499:
+#line 2227 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 467:
-#line 2381 "parse.y"
+case 500:
+#line 2229 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 468:
-#line 2386 "parse.y"
-{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 0); ;
+case 501:
+#line 2234 "parse.y"
+{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ;
     break;}
-case 469:
-#line 2391 "parse.y"
-{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
+case 502:
+#line 2236 "parse.y"
+{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ;
     break;}
-case 470:
-#line 2394 "parse.y"
+case 503:
+#line 2240 "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 471:
-#line 2400 "parse.y"
+case 504:
+#line 2246 "parse.y"
+{ push_scope (CP_DECL_CONTEXT (yyvsp[0].ttype)); ;
+    break;}
+case 505:
+#line 2248 "parse.y"
 { 
-                 yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
-                 if (TREE_INT_CST_LOW (current_aggr) == union_type 
+                  pop_scope (CP_DECL_CONTEXT (yyvsp[-2].ttype));
+                 yyval.ttype = TREE_TYPE (yyvsp[-2].ttype);
+                 if (current_aggr == union_type_node
                      && TREE_CODE (yyval.ttype) != UNION_TYPE)
                    cp_pedwarn ("`union' tag used in declaring `%#T'", yyval.ttype);
                  else if (TREE_CODE (yyval.ttype) == UNION_TYPE
-                          && TREE_INT_CST_LOW (current_aggr) != union_type)
+                          && current_aggr != union_type_node)
                    cp_pedwarn ("non-`union' tag used in declaring `%#T'", yyval.ttype);
+                 else if (TREE_CODE (yyval.ttype) == RECORD_TYPE)
+                   /* We might be specializing a template with a different
+                      class-key; deal.  */
+                   CLASSTYPE_DECLARED_CLASS (yyval.ttype) = (current_aggr
+                                                    == class_type_node);
                  if (yyvsp[0].ttype)
                    {
-                     if (IS_AGGR_TYPE (yyval.ttype) && CLASSTYPE_USE_TEMPLATE (yyval.ttype))
-                       {
-                         if (CLASSTYPE_IMPLICIT_INSTANTIATION (yyval.ttype)
-                             && TYPE_SIZE (yyval.ttype) == NULL_TREE)
-                           {
-                             SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (yyval.ttype);
-                             if (processing_template_decl)
-                               push_template_decl (TYPE_MAIN_DECL (yyval.ttype));
-                           }
-                         else if (CLASSTYPE_TEMPLATE_INSTANTIATION (yyval.ttype))
-                           cp_error ("specialization after instantiation of `%T'", yyval.ttype);
-                       }
-                     xref_basetypes (current_aggr, yyvsp[-1].ttype, yyval.ttype, yyvsp[0].ttype); 
+                     maybe_process_partial_specialization (yyval.ttype);
+                     xref_basetypes (current_aggr, yyvsp[-2].ttype, yyval.ttype, yyvsp[0].ttype); 
                    }
                ;
     break;}
-case 472:
-#line 2429 "parse.y"
-{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
+case 506:
+#line 2272 "parse.y"
+{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0);
                  yyungetc ('{', 1); ;
     break;}
-case 475:
-#line 2440 "parse.y"
+case 509:
+#line 2283 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 476:
-#line 2442 "parse.y"
+case 510:
+#line 2285 "parse.y"
 { yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
     break;}
-case 477:
-#line 2444 "parse.y"
+case 511:
+#line 2287 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 479:
-#line 2450 "parse.y"
+case 513:
+#line 2293 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 480:
-#line 2455 "parse.y"
-{
-                 tree type = TREE_TYPE (yyvsp[0].ttype);
-                 if (! is_aggr_type (type, 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 (access_public_node, type);
-                   }
-                 else if (type && IS_SIGNATURE (type))
-                   {
-                     error ("signature name not allowed as base class");
-                     yyval.ttype = NULL_TREE;
-                   }
-                 else
-                   yyval.ttype = build_tree_list (access_default_node, type);
-               ;
+case 514:
+#line 2298 "parse.y"
+{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype,
+                                             current_aggr 
+                                             == signature_type_node); ;
     break;}
-case 481:
-#line 2480 "parse.y"
-{
-                 tree type = TREE_TYPE (yyvsp[0].ttype);
-                 if (current_aggr == signature_type_node)
-                   error ("access and source specifiers not allowed in signature");
-                 if (! IS_AGGR_TYPE (type))
-                   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 (access_public_node, type);
-                   }
-                 else if (type && IS_SIGNATURE (type))
-                   {
-                     error ("signature name not allowed as base class");
-                     yyval.ttype = NULL_TREE;
-                   }
-                 else
-                   yyval.ttype = build_tree_list (yyval.ttype, type);
-               ;
+case 515:
+#line 2302 "parse.y"
+{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 
+                                             current_aggr 
+                                             == signature_type_node); ;
     break;}
-case 482:
-#line 2510 "parse.y"
-{ yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
+case 516:
+#line 2309 "parse.y"
+{ if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
     break;}
-case 484:
-#line 2513 "parse.y"
+case 518:
+#line 2312 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6367,8 +6362,8 @@ case 484:
                    }
                ;
     break;}
-case 485:
-#line 2534 "parse.y"
+case 519:
+#line 2333 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6390,14 +6385,14 @@ case 485:
                    }
                ;
     break;}
-case 487:
-#line 2559 "parse.y"
+case 521:
+#line 2358 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  yyval.ttype = access_default_virtual_node; ;
     break;}
-case 488:
-#line 2563 "parse.y"
+case 522:
+#line 2362 "parse.y"
 {
                  if (yyvsp[-2].ttype != access_default_virtual_node)
                    error ("multiple access specifiers");
@@ -6409,8 +6404,8 @@ case 488:
                    yyval.ttype = access_private_virtual_node;
                ;
     break;}
-case 489:
-#line 2574 "parse.y"
+case 523:
+#line 2373 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  else if (yyval.ttype == access_public_node)
@@ -6423,369 +6418,297 @@ case 489:
                    error ("multiple `virtual' specifiers");
                ;
     break;}
-case 490:
-#line 2589 "parse.y"
-{ tree t = yyvsp[-1].ttype;
-                 push_obstacks_nochange ();
-                 end_temporary_allocation ();
-
-                 if (t == error_mark_node
-                     || ! IS_AGGR_TYPE (t))
-                   {
-                     t = yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
-                     pushtag (make_anon_name (), t, 0);
-                   }
-                 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;
-                    }
-                 if (processing_template_decl && TYPE_CONTEXT (t)
-                     && ! current_class_type)
-                   push_template_decl (TYPE_STUB_DECL (t));
-                 pushclass (t, 0);
-                 TYPE_BEING_DEFINED (t) = 1;
-                 if (IS_AGGR_TYPE (t) && CLASSTYPE_USE_TEMPLATE (t))
-                   {
-                     if (CLASSTYPE_IMPLICIT_INSTANTIATION (t)
-                         && TYPE_SIZE (t) == NULL_TREE)
-                       {
-                         SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (t);
-                         if (processing_template_decl)
-                           push_template_decl (TYPE_MAIN_DECL (t));
-                       }
-                     else if (CLASSTYPE_TEMPLATE_INSTANTIATION (t))
-                       cp_error ("specialization after instantiation of `%T'", t);
-                   }
-                 /* 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
-                 reset_specialization();
-
-                 /* In case this is a local class within a template
-                    function, we save the current tree structure so
-                    that we can get it back later.  */
-                 begin_tree ();
-               ;
-    break;}
-case 491:
-#line 2678 "parse.y"
-{
-                   yyval.ttype = build_self_reference ();
-               ;
-    break;}
-case 492:
-#line 2685 "parse.y"
-{ if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ;
+case 524:
+#line 2388 "parse.y"
+{ yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ;
     break;}
-case 493:
-#line 2687 "parse.y"
+case 525:
+#line 2393 "parse.y"
 {
-                 if (current_aggr == signature_type_node)
-                   yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype);
-                 else
-                   yyval.ttype = build_tree_list (access_default_node, yyvsp[0].ttype);
-                 if (yyvsp[-1].ttype) yyval.ttype = tree_cons (access_public_node, yyvsp[-1].ttype, yyval.ttype);
+                 finish_member_declaration (build_self_reference ());
                ;
     break;}
-case 494:
-#line 2695 "parse.y"
+case 530:
+#line 2407 "parse.y"
 {
-                 tree visspec = yyvsp[-2].ttype;
-
                  if (current_aggr == signature_type_node)
                    {
                      error ("access specifier not allowed in signature");
-                     visspec = access_public_node;
+                     yyvsp[-1].ttype = access_public_node;
                    }
-                 yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype));
-               ;
-    break;}
-case 495:
-#line 2706 "parse.y"
-{
-                 if (current_aggr == signature_type_node)
-                   error ("access specifier not allowed in signature");
-               ;
+
+                 current_access_specifier = yyvsp[-1].ttype;
+                ;
     break;}
-case 496:
-#line 2716 "parse.y"
-{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
+case 531:
+#line 2422 "parse.y"
+{ 
+                 finish_member_declaration (yyvsp[0].ttype);
                ;
     break;}
-case 497:
-#line 2719 "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;
-                   }
+case 532:
+#line 2426 "parse.y"
+{ 
+                 finish_member_declaration (yyvsp[0].ttype);
                ;
     break;}
-case 498:
-#line 2735 "parse.y"
-{ ;
-    break;}
-case 499:
-#line 2737 "parse.y"
+case 534:
+#line 2434 "parse.y"
 { error ("missing ';' before right brace");
                  yyungetc ('}', 0); ;
     break;}
-case 500:
-#line 2742 "parse.y"
+case 535:
+#line 2439 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 501:
-#line 2744 "parse.y"
+case 536:
+#line 2441 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 502:
-#line 2746 "parse.y"
+case 537:
+#line 2443 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 503:
-#line 2748 "parse.y"
+case 538:
+#line 2445 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 504:
-#line 2750 "parse.y"
+case 539:
+#line 2447 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 505:
-#line 2752 "parse.y"
+case 540:
+#line 2449 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 506:
-#line 2755 "parse.y"
-{ yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+case 541:
+#line 2452 "parse.y"
+{  
+                 if (yyvsp[0].ttype)
+                   yyval.ttype = finish_member_template_decl (yyvsp[0].ttype);
+                 else
+                   /* The component was already processed.  */
+                   yyval.ttype = NULL_TREE;
+
+                 finish_template_decl (yyvsp[-1].ttype);
+               ;
     break;}
-case 507:
-#line 2757 "parse.y"
-{
-                 shadow_tag (yyvsp[-1].ftype.t);
-                 note_list_got_semicolon (yyvsp[-1].ftype.t);
-                 yyval.ttype = finish_member_template_decl (yyvsp[-2].ttype, yyvsp[-1].ftype.t);
+case 542:
+#line 2462 "parse.y"
+{ 
+                 yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); 
+                 finish_template_decl (yyvsp[-2].ttype);
                ;
     break;}
-case 508:
-#line 2769 "parse.y"
-{ yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
+case 543:
+#line 2473 "parse.y"
+{
+                 /* Most of the productions for component_decl only
+                    allow the creation of one new member, so we call
+                    finish_member_declaration in component_decl_list.
+                    For this rule and the next, however, there can be
+                    more than one member, e.g.:
+
+                      int i, j;
+
+                    and we need the first member to be fully
+                    registered before the second is processed.
+                    Therefore, the rules for components take care of
+                    this processing.  To avoid registering the
+                    components more than once, we send NULL_TREE up
+                    here; that lets finish_member_declaration now
+                    that there is nothing to do.  */
+                 if (!yyvsp[0].itype)
+                   grok_x_components (yyvsp[-1].ftype.t);
+                 yyval.ttype = NULL_TREE;
+               ;
     break;}
-case 509:
-#line 2771 "parse.y"
-{ yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+case 544:
+#line 2494 "parse.y"
+{ 
+                 if (!yyvsp[0].itype)
+                   grok_x_components (yyvsp[-1].ttype);
+                 yyval.ttype = NULL_TREE; 
+               ;
     break;}
-case 510:
-#line 2773 "parse.y"
+case 545:
+#line 2500 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 511:
-#line 2776 "parse.y"
+case 546:
+#line 2503 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 512:
-#line 2779 "parse.y"
+case 547:
+#line 2506 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 513:
-#line 2781 "parse.y"
+case 548:
+#line 2508 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 514:
-#line 2792 "parse.y"
+case 549:
+#line 2519 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
                  yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, attrs)); ;
     break;}
-case 515:
-#line 2797 "parse.y"
+case 550:
+#line 2524 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 516:
-#line 2800 "parse.y"
+case 551:
+#line 2527 "parse.y"
 { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
     break;}
-case 517:
-#line 2806 "parse.y"
-{ yyval.ttype = NULL_TREE; ;
+case 552:
+#line 2533 "parse.y"
+{ yyval.itype = 0; ;
     break;}
-case 519:
-#line 2809 "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);
+case 553:
+#line 2535 "parse.y"
+{ 
+                 if (PROCESSING_REAL_TEMPLATE_DECL_P ())
+                   yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
+                 finish_member_declaration (yyvsp[0].ttype); 
+                 yyval.itype = 1;
                ;
     break;}
-case 520:
-#line 2821 "parse.y"
-{ yyval.ttype = NULL_TREE; ;
+case 554:
+#line 2542 "parse.y"
+{ 
+                 check_multiple_declarators ();
+                 if (PROCESSING_REAL_TEMPLATE_DECL_P ())
+                   yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
+                 finish_member_declaration (yyvsp[0].ttype);
+                 yyval.itype = 2;
+               ;
     break;}
-case 522:
-#line 2824 "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);
+case 555:
+#line 2553 "parse.y"
+{ yyval.itype = 0; ;
+    break;}
+case 556:
+#line 2555 "parse.y"
+{ 
+                 if (PROCESSING_REAL_TEMPLATE_DECL_P ())
+                   yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
+                 finish_member_declaration (yyvsp[0].ttype);
+                 yyval.itype = 1;
+               ;
+    break;}
+case 557:
+#line 2562 "parse.y"
+{ 
+                 check_multiple_declarators ();
+                 if (PROCESSING_REAL_TEMPLATE_DECL_P ())
+                   yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
+                 finish_member_declaration (yyvsp[0].ttype); 
+                 yyval.itype = 2;
                ;
     break;}
-case 527:
-#line 2846 "parse.y"
+case 562:
+#line 2583 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 528:
-#line 2852 "parse.y"
+case 563:
+#line 2589 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 529:
-#line 2861 "parse.y"
+case 564:
+#line 2598 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 530:
-#line 2867 "parse.y"
+case 565:
+#line 2604 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 531:
-#line 2873 "parse.y"
+case 566:
+#line 2610 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 532:
-#line 2879 "parse.y"
+case 567:
+#line 2616 "parse.y"
 { split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-3].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 533:
-#line 2888 "parse.y"
+case 568:
+#line 2625 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 534:
-#line 2891 "parse.y"
+case 569:
+#line 2628 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 535:
-#line 2897 "parse.y"
+case 570:
+#line 2634 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 536:
-#line 2900 "parse.y"
+case 571:
+#line 2637 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 537:
-#line 2903 "parse.y"
+case 572:
+#line 2640 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 539:
-#line 2914 "parse.y"
+case 574:
+#line 2651 "parse.y"
 { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 540:
-#line 2919 "parse.y"
-{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
+case 575:
+#line 2656 "parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ;
     break;}
-case 541:
-#line 2921 "parse.y"
-{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
+case 576:
+#line 2658 "parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ;
     break;}
-case 542:
-#line 2927 "parse.y"
+case 577:
+#line 2664 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 543:
-#line 2930 "parse.y"
+case 578:
+#line 2667 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 544:
-#line 2935 "parse.y"
+case 579:
+#line 2674 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
@@ -6794,72 +6717,72 @@ case 544:
                  yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag;
                ;
     break;}
-case 545:
-#line 2946 "parse.y"
+case 580:
+#line 2685 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 546:
-#line 2948 "parse.y"
+case 581:
+#line 2687 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 547:
-#line 2953 "parse.y"
+case 582:
+#line 2692 "parse.y"
 { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 548:
-#line 2956 "parse.y"
+case 583:
+#line 2695 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 549:
-#line 2965 "parse.y"
+case 584:
+#line 2704 "parse.y"
 { yyval.itype = suspend_momentary (); ;
     break;}
-case 550:
-#line 2970 "parse.y"
+case 585:
+#line 2709 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 551:
-#line 2976 "parse.y"
+case 586:
+#line 2715 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 552:
-#line 2978 "parse.y"
+case 587:
+#line 2717 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 553:
-#line 2980 "parse.y"
+case 588:
+#line 2719 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
     break;}
-case 554:
-#line 2982 "parse.y"
+case 589:
+#line 2721 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
     break;}
-case 555:
-#line 2989 "parse.y"
+case 590:
+#line 2728 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 556:
-#line 2991 "parse.y"
+case 591:
+#line 2730 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 557:
-#line 2993 "parse.y"
+case 592:
+#line 2732 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 558:
-#line 2995 "parse.y"
+case 593:
+#line 2734 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 559:
-#line 2997 "parse.y"
+case 594:
+#line 2736 "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 561:
-#line 3005 "parse.y"
+case 596:
+#line 2744 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    {
@@ -6877,8 +6800,8 @@ case 561:
                    yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 562:
-#line 3022 "parse.y"
+case 597:
+#line 2761 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -6887,162 +6810,161 @@ case 562:
                  got_scope = NULL_TREE;
                ;
     break;}
-case 565:
-#line 3035 "parse.y"
+case 600:
+#line 2774 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 566:
-#line 3040 "parse.y"
+case 601:
+#line 2779 "parse.y"
 { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
     break;}
-case 567:
-#line 3045 "parse.y"
+case 602:
+#line 2784 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 568:
-#line 3047 "parse.y"
+case 603:
+#line 2786 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 569:
-#line 3049 "parse.y"
+case 604:
+#line 2788 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 570:
-#line 3051 "parse.y"
+case 605:
+#line 2790 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 571:
-#line 3053 "parse.y"
+case 606:
+#line 2792 "parse.y"
 { push_nested_class (yyvsp[-1].ttype, 3);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
                  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
     break;}
-case 573:
-#line 3064 "parse.y"
+case 609:
+#line 2804 "parse.y"
+{
+                 /* Provide support for '(' attributes '*' declarator ')'
+                    etc */
+                 yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE);
+               ;
+    break;}
+case 610:
+#line 2813 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 574:
-#line 3066 "parse.y"
+case 611:
+#line 2815 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 575:
-#line 3068 "parse.y"
+case 612:
+#line 2817 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 576:
-#line 3070 "parse.y"
+case 613:
+#line 2819 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 577:
-#line 3072 "parse.y"
+case 614:
+#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 579:
-#line 3080 "parse.y"
+case 616:
+#line 2829 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 580:
-#line 3082 "parse.y"
+case 617:
+#line 2831 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 581:
-#line 3084 "parse.y"
+case 618:
+#line 2833 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 582:
-#line 3086 "parse.y"
+case 619:
+#line 2835 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 583:
-#line 3088 "parse.y"
+case 620:
+#line 2837 "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 585:
-#line 3096 "parse.y"
+case 622:
+#line 2845 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 586:
-#line 3098 "parse.y"
+case 623:
+#line 2847 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 587:
-#line 3100 "parse.y"
+case 624:
+#line 2849 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 588:
-#line 3102 "parse.y"
+case 625:
+#line 2851 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 589:
-#line 3104 "parse.y"
-{ if (OP0 (yyval.ttype) != current_class_type)
-                   {
-                     push_nested_class (OP0 (yyval.ttype), 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
-               ;
+case 626:
+#line 2853 "parse.y"
+{ enter_scope_of (yyvsp[0].ttype); ;
     break;}
-case 590:
-#line 3111 "parse.y"
+case 627:
+#line 2855 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
-                 if (yyvsp[-1].ttype != current_class_type)
-                   {
-                     push_nested_class (yyvsp[-1].ttype, 3);
-                     TREE_COMPLEXITY (yyval.ttype) = current_class_depth;
-                   }
+                 enter_scope_of (yyval.ttype);
                ;
     break;}
-case 591:
-#line 3123 "parse.y"
+case 628:
+#line 2863 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 592:
-#line 3126 "parse.y"
+case 629:
+#line 2866 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 593:
-#line 3132 "parse.y"
+case 630:
+#line 2872 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 594:
-#line 3135 "parse.y"
+case 631:
+#line 2875 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 596:
-#line 3142 "parse.y"
+case 633:
+#line 2882 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 597:
-#line 3147 "parse.y"
+case 634:
+#line 2887 "parse.y"
 { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
-case 598:
-#line 3149 "parse.y"
+case 635:
+#line 2889 "parse.y"
 { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
-case 599:
-#line 3151 "parse.y"
+case 636:
+#line 2891 "parse.y"
 { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 604:
-#line 3163 "parse.y"
+case 641:
+#line 2902 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 605:
-#line 3165 "parse.y"
+case 642:
+#line 2904 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 606:
-#line 3172 "parse.y"
+case 643:
+#line 2911 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    {
@@ -7054,35 +6976,35 @@ case 606:
                          && ! IDENTIFIER_CLASS_VALUE (yyvsp[-1].ttype))
                        pushdecl_class_level (yyval.ttype);
                    }
-                 got_scope = yyval.ttype = TREE_TYPE (yyval.ttype);
+                 got_scope = yyval.ttype = TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype));
                ;
     break;}
-case 607:
-#line 3186 "parse.y"
+case 644:
+#line 2925 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype = TREE_TYPE (yyval.ttype);
                ;
     break;}
-case 608:
-#line 3192 "parse.y"
+case 645:
+#line 2931 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype;
                ;
     break;}
-case 609:
-#line 3198 "parse.y"
+case 646:
+#line 2937 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
     break;}
-case 611:
-#line 3214 "parse.y"
+case 648:
+#line 2953 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 612:
-#line 3219 "parse.y"
+case 649:
+#line 2958 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7096,27 +7018,27 @@ case 612:
                    }
                ;
     break;}
-case 613:
-#line 3232 "parse.y"
+case 650:
+#line 2971 "parse.y"
 { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;
     break;}
-case 614:
-#line 3234 "parse.y"
+case 651:
+#line 2973 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 615:
-#line 3236 "parse.y"
+case 652:
+#line 2975 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 616:
-#line 3241 "parse.y"
+case 653:
+#line 2980 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                ;
     break;}
-case 617:
-#line 3246 "parse.y"
+case 654:
+#line 2985 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7130,52 +7052,54 @@ case 617:
                    }
                ;
     break;}
-case 618:
-#line 3259 "parse.y"
+case 655:
+#line 2998 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 619:
-#line 3261 "parse.y"
+case 656:
+#line 3000 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 620:
-#line 3266 "parse.y"
+case 657:
+#line 3005 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyvsp[-1].ttype = lastiddecl;
 
-                 got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype));
+                 /* Retrieve the type for the identifier, which might involve
+                    some computation. */
+                 got_scope = yyval.ttype = complete_type (IDENTIFIER_TYPE_VALUE (yyvsp[-1].ttype));
 
                  if (yyval.ttype == error_mark_node)
                    cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype);
                ;
     break;}
-case 621:
-#line 3276 "parse.y"
+case 658:
+#line 3017 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype));
                ;
     break;}
-case 622:
-#line 3282 "parse.y"
+case 659:
+#line 3023 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
     break;}
-case 625:
-#line 3286 "parse.y"
+case 662:
+#line 3027 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype;
                ;
     break;}
-case 626:
-#line 3295 "parse.y"
+case 663:
+#line 3036 "parse.y"
 { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 627:
-#line 3300 "parse.y"
+case 664:
+#line 3041 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7184,149 +7108,149 @@ case 627:
                  got_scope = NULL_TREE;
                ;
     break;}
-case 629:
-#line 3309 "parse.y"
+case 666:
+#line 3050 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 630:
-#line 3314 "parse.y"
+case 667:
+#line 3055 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
-case 631:
-#line 3316 "parse.y"
+case 668:
+#line 3057 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
     break;}
-case 632:
-#line 3323 "parse.y"
+case 669:
+#line 3064 "parse.y"
 { got_scope = void_type_node; ;
     break;}
-case 633:
-#line 3329 "parse.y"
+case 670:
+#line 3070 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 634:
-#line 3331 "parse.y"
+case 671:
+#line 3072 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 635:
-#line 3333 "parse.y"
+case 672:
+#line 3074 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 636:
-#line 3335 "parse.y"
+case 673:
+#line 3076 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 637:
-#line 3337 "parse.y"
+case 674:
+#line 3078 "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 638:
-#line 3341 "parse.y"
+case 675:
+#line 3082 "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 640:
-#line 3350 "parse.y"
+case 677:
+#line 3091 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 641:
-#line 3352 "parse.y"
+case 678:
+#line 3093 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 642:
-#line 3358 "parse.y"
+case 679:
+#line 3099 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 643:
-#line 3360 "parse.y"
+case 680:
+#line 3101 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 644:
-#line 3362 "parse.y"
+case 681:
+#line 3103 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
-case 645:
-#line 3364 "parse.y"
+case 682:
+#line 3105 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
     break;}
-case 646:
-#line 3366 "parse.y"
+case 683:
+#line 3107 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 647:
-#line 3368 "parse.y"
+case 684:
+#line 3109 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 648:
-#line 3370 "parse.y"
+case 685:
+#line 3111 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
-case 649:
-#line 3372 "parse.y"
+case 686:
+#line 3113 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
     break;}
-case 650:
-#line 3374 "parse.y"
+case 687:
+#line 3115 "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 651:
-#line 3378 "parse.y"
+case 688:
+#line 3119 "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 653:
-#line 3387 "parse.y"
+case 690:
+#line 3128 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 655:
-#line 3391 "parse.y"
+case 692:
+#line 3132 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 656:
-#line 3393 "parse.y"
+case 693:
+#line 3134 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 657:
-#line 3395 "parse.y"
+case 694:
+#line 3136 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 658:
-#line 3397 "parse.y"
+case 695:
+#line 3138 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 659:
-#line 3399 "parse.y"
+case 696:
+#line 3140 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 660:
-#line 3401 "parse.y"
+case 697:
+#line 3142 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 661:
-#line 3403 "parse.y"
+case 698:
+#line 3144 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 662:
-#line 3405 "parse.y"
+case 699:
+#line 3146 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 663:
-#line 3407 "parse.y"
+case 700:
+#line 3148 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
-case 670:
-#line 3430 "parse.y"
+case 707:
+#line 3171 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids label declarations"); ;
     break;}
-case 673:
-#line 3441 "parse.y"
+case 710:
+#line 3182 "parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -7336,263 +7260,267 @@ case 673:
                    }
                ;
     break;}
-case 674:
-#line 3455 "parse.y"
+case 711:
+#line 3196 "parse.y"
 {;
     break;}
-case 676:
-#line 3461 "parse.y"
+case 713:
+#line 3202 "parse.y"
 { yyval.ttype = begin_compound_stmt (0); ;
     break;}
-case 677:
-#line 3463 "parse.y"
+case 714:
+#line 3204 "parse.y"
 { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
     break;}
-case 678:
-#line 3468 "parse.y"
+case 715:
+#line 3209 "parse.y"
 {
                  yyval.ttype = begin_if_stmt ();
                  cond_stmt_keyword = "if";
                ;
     break;}
-case 679:
-#line 3473 "parse.y"
+case 716:
+#line 3214 "parse.y"
 { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 680:
-#line 3475 "parse.y"
+case 717:
+#line 3216 "parse.y"
 { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ;
     break;}
-case 682:
-#line 3480 "parse.y"
+case 719:
+#line 3221 "parse.y"
 { yyval.ttype = begin_compound_stmt (0); ;
     break;}
-case 683:
-#line 3482 "parse.y"
+case 720:
+#line 3223 "parse.y"
 { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
     break;}
-case 684:
-#line 3487 "parse.y"
+case 721:
+#line 3228 "parse.y"
 {;
     break;}
-case 686:
-#line 3493 "parse.y"
+case 723:
+#line 3234 "parse.y"
 { finish_stmt (); ;
     break;}
-case 687:
-#line 3495 "parse.y"
+case 724:
+#line 3236 "parse.y"
 { finish_expr_stmt (yyvsp[-1].ttype); ;
     break;}
-case 688:
-#line 3497 "parse.y"
+case 725:
+#line 3238 "parse.y"
 { begin_else_clause (); ;
     break;}
-case 689:
-#line 3499 "parse.y"
+case 726:
+#line 3240 "parse.y"
 { 
                  finish_else_clause (yyvsp[-3].ttype); 
                  finish_if_stmt ();
                ;
     break;}
-case 690:
-#line 3504 "parse.y"
+case 727:
+#line 3245 "parse.y"
 { finish_if_stmt (); ;
     break;}
-case 691:
-#line 3506 "parse.y"
+case 728:
+#line 3247 "parse.y"
 {
                  yyval.ttype = begin_while_stmt ();
                  cond_stmt_keyword = "while";
                ;
     break;}
-case 692:
-#line 3511 "parse.y"
+case 729:
+#line 3252 "parse.y"
 { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 693:
-#line 3513 "parse.y"
+case 730:
+#line 3254 "parse.y"
 { finish_while_stmt (yyvsp[-3].ttype); ;
     break;}
-case 694:
-#line 3515 "parse.y"
+case 731:
+#line 3256 "parse.y"
 { yyval.ttype = begin_do_stmt (); ;
     break;}
-case 695:
-#line 3517 "parse.y"
+case 732:
+#line 3258 "parse.y"
 {
                  finish_do_body (yyvsp[-2].ttype);
                  cond_stmt_keyword = "do";
                ;
     break;}
-case 696:
-#line 3522 "parse.y"
+case 733:
+#line 3263 "parse.y"
 { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
-case 697:
-#line 3524 "parse.y"
+case 734:
+#line 3265 "parse.y"
 { yyval.ttype = begin_for_stmt (); ;
     break;}
-case 698:
-#line 3526 "parse.y"
+case 735:
+#line 3267 "parse.y"
 { finish_for_init_stmt (yyvsp[-2].ttype); ;
     break;}
-case 699:
-#line 3528 "parse.y"
+case 736:
+#line 3269 "parse.y"
 { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
-case 700:
-#line 3530 "parse.y"
+case 737:
+#line 3271 "parse.y"
 { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;
     break;}
-case 701:
-#line 3532 "parse.y"
+case 738:
+#line 3273 "parse.y"
 { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ;
     break;}
-case 702:
-#line 3534 "parse.y"
+case 739:
+#line 3275 "parse.y"
 { begin_switch_stmt (); ;
     break;}
-case 703:
-#line 3536 "parse.y"
+case 740:
+#line 3277 "parse.y"
 { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ;
     break;}
-case 704:
-#line 3538 "parse.y"
+case 741:
+#line 3279 "parse.y"
 { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 705:
-#line 3540 "parse.y"
+case 742:
+#line 3281 "parse.y"
 { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
-case 707:
-#line 3543 "parse.y"
+case 744:
+#line 3284 "parse.y"
 { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 709:
-#line 3546 "parse.y"
+case 746:
+#line 3287 "parse.y"
 { finish_case_label (NULL_TREE, NULL_TREE); ;
     break;}
-case 711:
-#line 3549 "parse.y"
+case 748:
+#line 3290 "parse.y"
 { finish_break_stmt (); ;
     break;}
-case 712:
-#line 3551 "parse.y"
+case 749:
+#line 3292 "parse.y"
 { finish_continue_stmt (); ;
     break;}
-case 713:
-#line 3553 "parse.y"
+case 750:
+#line 3294 "parse.y"
 { finish_return_stmt (NULL_TREE); ;
     break;}
-case 714:
-#line 3555 "parse.y"
+case 751:
+#line 3296 "parse.y"
 { finish_return_stmt (yyvsp[-1].ttype); ;
     break;}
-case 715:
-#line 3557 "parse.y"
+case 752:
+#line 3298 "parse.y"
 { 
                  finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
                                   NULL_TREE); 
                ;
     break;}
-case 716:
-#line 3563 "parse.y"
+case 753:
+#line 3304 "parse.y"
 { 
                  finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                                   NULL_TREE); 
                ;
     break;}
-case 717:
-#line 3569 "parse.y"
+case 754:
+#line 3310 "parse.y"
 { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 718:
-#line 3573 "parse.y"
+case 755:
+#line 3314 "parse.y"
 { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
     break;}
-case 719:
-#line 3575 "parse.y"
+case 756:
+#line 3316 "parse.y"
 { 
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids computed gotos");
                  finish_goto_stmt (yyvsp[-1].ttype);
                ;
     break;}
-case 720:
-#line 3581 "parse.y"
+case 757:
+#line 3322 "parse.y"
 { finish_goto_stmt (yyvsp[-1].ttype); ;
     break;}
-case 721:
-#line 3583 "parse.y"
+case 758:
+#line 3324 "parse.y"
 { finish_stmt (); ;
     break;}
-case 722:
-#line 3585 "parse.y"
+case 759:
+#line 3326 "parse.y"
 { error ("label must be followed by statement");
                  yyungetc ('}', 0);
                  finish_stmt (); ;
     break;}
-case 723:
-#line 3589 "parse.y"
+case 760:
+#line 3330 "parse.y"
 { finish_stmt (); ;
     break;}
-case 725:
-#line 3595 "parse.y"
+case 763:
+#line 3334 "parse.y"
+{ do_local_using_decl (yyvsp[0].ttype); ;
+    break;}
+case 765:
+#line 3340 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
                  expand_start_early_try_stmts ();
                ;
     break;}
-case 726:
-#line 3601 "parse.y"
-{ expand_start_all_catch (); ;
+case 766:
+#line 3346 "parse.y"
+{ 
+                  expand_start_all_catch (); 
+                ;
     break;}
-case 727:
-#line 3603 "parse.y"
+case 767:
+#line 3350 "parse.y"
 {
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
                  expand_end_all_catch ();
-                 finish_function (lineno, (int)yyvsp[-3].itype, nested);
+                 yyval.itype = yyvsp[-3].itype;
                ;
     break;}
-case 728:
-#line 3613 "parse.y"
+case 768:
+#line 3358 "parse.y"
 { yyval.ttype = begin_try_block (); ;
     break;}
-case 729:
-#line 3615 "parse.y"
+case 769:
+#line 3360 "parse.y"
 { finish_try_block (yyvsp[-1].ttype); ;
     break;}
-case 730:
-#line 3617 "parse.y"
+case 770:
+#line 3362 "parse.y"
 { finish_handler_sequence (yyvsp[-3].ttype); ;
     break;}
-case 733:
-#line 3627 "parse.y"
+case 773:
+#line 3372 "parse.y"
 { yyval.ttype = begin_handler(); ;
     break;}
-case 734:
-#line 3629 "parse.y"
+case 774:
+#line 3374 "parse.y"
 { finish_handler_parms (yyvsp[-1].ttype); ;
     break;}
-case 735:
-#line 3631 "parse.y"
+case 775:
+#line 3376 "parse.y"
 { finish_handler (yyvsp[-3].ttype); ;
     break;}
-case 738:
-#line 3641 "parse.y"
+case 778:
+#line 3386 "parse.y"
 { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
     break;}
-case 739:
-#line 3657 "parse.y"
+case 779:
+#line 3402 "parse.y"
 { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
                  expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
                                            TREE_VALUE (yyvsp[-1].ftype.t)); ;
     break;}
-case 740:
-#line 3664 "parse.y"
+case 780:
+#line 3409 "parse.y"
 { tree label;
                do_label:
                  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -7600,247 +7528,215 @@ case 740:
                    expand_label (label);
                ;
     break;}
-case 741:
-#line 3671 "parse.y"
+case 781:
+#line 3416 "parse.y"
 { goto do_label; ;
     break;}
-case 742:
-#line 3673 "parse.y"
+case 782:
+#line 3418 "parse.y"
 { goto do_label; ;
     break;}
-case 743:
-#line 3675 "parse.y"
+case 783:
+#line 3420 "parse.y"
 { goto do_label; ;
     break;}
-case 744:
-#line 3680 "parse.y"
+case 784:
+#line 3425 "parse.y"
 { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
     break;}
-case 746:
-#line 3683 "parse.y"
+case 786:
+#line 3428 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids compound statements inside for initializations");
                ;
     break;}
-case 747:
-#line 3692 "parse.y"
+case 787:
+#line 3437 "parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 748:
-#line 3695 "parse.y"
+case 788:
+#line 3440 "parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 749:
-#line 3700 "parse.y"
+case 789:
+#line 3445 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 751:
-#line 3703 "parse.y"
+case 791:
+#line 3448 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 752:
-#line 3710 "parse.y"
+case 792:
+#line 3455 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 755:
-#line 3717 "parse.y"
+case 795:
+#line 3462 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 756:
-#line 3722 "parse.y"
+case 796:
+#line 3467 "parse.y"
 { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 757:
-#line 3727 "parse.y"
+case 797:
+#line 3472 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
-case 758:
-#line 3729 "parse.y"
+case 798:
+#line 3474 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 759:
-#line 3740 "parse.y"
+case 799:
+#line 3485 "parse.y"
 {
                  yyval.ttype = empty_parms();
                ;
     break;}
-case 761:
-#line 3745 "parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
-                 TREE_PARMLIST (yyval.ttype) = 1; 
+case 801:
+#line 3490 "parse.y"
+{ yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0);
                  check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
     break;}
-case 762:
-#line 3754 "parse.y"
-{
-                 yyval.ttype = chainon (yyval.ttype, void_list_node);
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
-    break;}
-case 763:
-#line 3759 "parse.y"
-{
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
-    break;}
-case 764:
-#line 3764 "parse.y"
-{
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
-    break;}
-case 765:
-#line 3768 "parse.y"
-{
-                 yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); 
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
+case 802:
+#line 3498 "parse.y"
+{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ;
     break;}
-case 766:
-#line 3773 "parse.y"
-{
-                 yyval.ttype = NULL_TREE;
-               ;
+case 803:
+#line 3500 "parse.y"
+{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
     break;}
-case 767:
-#line 3777 "parse.y"
-{
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
+case 804:
+#line 3503 "parse.y"
+{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
     break;}
-case 768:
-#line 3781 "parse.y"
-{
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
+case 805:
+#line 3505 "parse.y"
+{ yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE,
+                                                        yyvsp[-1].ftype.t), 1); ;
     break;}
-case 769:
-#line 3785 "parse.y"
-{
-                 yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
-                 TREE_PARMLIST (yyval.ttype) = 1;
-               ;
+case 806:
+#line 3508 "parse.y"
+{ yyval.ttype = finish_parmlist (NULL_TREE, 1); ;
     break;}
-case 770:
-#line 3790 "parse.y"
+case 807:
+#line 3510 "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;
+                 yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 0);
                  yyungetc (':', 0);
                  yychar = ')';
                ;
     break;}
-case 771:
-#line 3801 "parse.y"
+case 808:
+#line 3520 "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, yyvsp[-1].ftype.t, void_list_node);
-                 TREE_PARMLIST (yyval.ttype) = 1;
+                 yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE,
+                                                        yyvsp[-1].ftype.t), 0); 
                  yyungetc (':', 0);
                  yychar = ')';
                ;
     break;}
-case 772:
-#line 3816 "parse.y"
+case 809:
+#line 3535 "parse.y"
 { maybe_snarf_defarg (); ;
     break;}
-case 773:
-#line 3818 "parse.y"
+case 810:
+#line 3537 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 776:
-#line 3829 "parse.y"
+case 813:
+#line 3548 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
-case 777:
-#line 3832 "parse.y"
+case 814:
+#line 3551 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
     break;}
-case 778:
-#line 3835 "parse.y"
+case 815:
+#line 3554 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
     break;}
-case 779:
-#line 3838 "parse.y"
+case 816:
+#line 3557 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 780:
-#line 3840 "parse.y"
+case 817:
+#line 3559 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
     break;}
-case 782:
-#line 3846 "parse.y"
+case 819:
+#line 3565 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
     break;}
-case 783:
-#line 3856 "parse.y"
+case 820:
+#line 3575 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
     break;}
-case 784:
-#line 3860 "parse.y"
+case 821:
+#line 3579 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 785:
-#line 3863 "parse.y"
+case 822:
+#line 3582 "parse.y"
 { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 786:
-#line 3866 "parse.y"
+case 823:
+#line 3585 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 787:
-#line 3870 "parse.y"
+case 824:
+#line 3589 "parse.y"
 { tree specs = strip_attrs (yyvsp[0].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 788:
-#line 3874 "parse.y"
+case 825:
+#line 3593 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 789:
-#line 3881 "parse.y"
+case 826:
+#line 3600 "parse.y"
 { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
-case 790:
-#line 3884 "parse.y"
+case 827:
+#line 3603 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;  ;
     break;}
-case 793:
-#line 3895 "parse.y"
+case 830:
+#line 3614 "parse.y"
 { see_typename (); ;
     break;}
-case 794:
-#line 3900 "parse.y"
+case 831:
+#line 3619 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
                ;
     break;}
-case 795:
-#line 3905 "parse.y"
+case 832:
+#line 3624 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -7850,194 +7746,194 @@ case 795:
                  yyval.ttype = build_tree_list (integer_type_node, yyval.ttype);
                ;
     break;}
-case 796:
-#line 3917 "parse.y"
+case 833:
+#line 3636 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 797:
-#line 3919 "parse.y"
+case 834:
+#line 3638 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 798:
-#line 3921 "parse.y"
+case 835:
+#line 3640 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
     break;}
-case 799:
-#line 3926 "parse.y"
+case 836:
+#line 3645 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
     break;}
-case 801:
-#line 3932 "parse.y"
+case 838:
+#line 3651 "parse.y"
 {
                  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
                  yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 802:
-#line 3940 "parse.y"
+case 839:
+#line 3659 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 803:
-#line 3942 "parse.y"
+case 840:
+#line 3661 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 804:
-#line 3944 "parse.y"
+case 841:
+#line 3663 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 805:
-#line 3946 "parse.y"
+case 842:
+#line 3665 "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 806:
-#line 3953 "parse.y"
+case 843:
+#line 3672 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
-case 807:
-#line 3958 "parse.y"
+case 844:
+#line 3677 "parse.y"
 { yyval.ttype = ansi_opname[MULT_EXPR]; ;
     break;}
-case 808:
-#line 3960 "parse.y"
+case 845:
+#line 3679 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
     break;}
-case 809:
-#line 3962 "parse.y"
+case 846:
+#line 3681 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
     break;}
-case 810:
-#line 3964 "parse.y"
+case 847:
+#line 3683 "parse.y"
 { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
     break;}
-case 811:
-#line 3966 "parse.y"
+case 848:
+#line 3685 "parse.y"
 { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
     break;}
-case 812:
-#line 3968 "parse.y"
+case 849:
+#line 3687 "parse.y"
 { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
     break;}
-case 813:
-#line 3970 "parse.y"
+case 850:
+#line 3689 "parse.y"
 { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
     break;}
-case 814:
-#line 3972 "parse.y"
+case 851:
+#line 3691 "parse.y"
 { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
     break;}
-case 815:
-#line 3974 "parse.y"
+case 852:
+#line 3693 "parse.y"
 { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
     break;}
-case 816:
-#line 3976 "parse.y"
+case 853:
+#line 3695 "parse.y"
 { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
     break;}
-case 817:
-#line 3978 "parse.y"
+case 854:
+#line 3697 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 818:
-#line 3980 "parse.y"
+case 855:
+#line 3699 "parse.y"
 { yyval.ttype = ansi_opname[LT_EXPR]; ;
     break;}
-case 819:
-#line 3982 "parse.y"
+case 856:
+#line 3701 "parse.y"
 { yyval.ttype = ansi_opname[GT_EXPR]; ;
     break;}
-case 820:
-#line 3984 "parse.y"
+case 857:
+#line 3703 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 821:
-#line 3986 "parse.y"
+case 858:
+#line 3705 "parse.y"
 { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
     break;}
-case 822:
-#line 3988 "parse.y"
+case 859:
+#line 3707 "parse.y"
 { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
     break;}
-case 823:
-#line 3990 "parse.y"
+case 860:
+#line 3709 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 824:
-#line 3992 "parse.y"
+case 861:
+#line 3711 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 825:
-#line 3994 "parse.y"
+case 862:
+#line 3713 "parse.y"
 { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
     break;}
-case 826:
-#line 3996 "parse.y"
+case 863:
+#line 3715 "parse.y"
 { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
     break;}
-case 827:
-#line 3998 "parse.y"
+case 864:
+#line 3717 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
     break;}
-case 828:
-#line 4000 "parse.y"
+case 865:
+#line 3719 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
     break;}
-case 829:
-#line 4002 "parse.y"
+case 866:
+#line 3721 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
     break;}
-case 830:
-#line 4004 "parse.y"
+case 867:
+#line 3723 "parse.y"
 { yyval.ttype = ansi_opname[COND_EXPR]; ;
     break;}
-case 831:
-#line 4006 "parse.y"
+case 868:
+#line 3725 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 832:
-#line 4008 "parse.y"
+case 869:
+#line 3727 "parse.y"
 { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
     break;}
-case 833:
-#line 4010 "parse.y"
+case 870:
+#line 3729 "parse.y"
 { yyval.ttype = ansi_opname[MEMBER_REF]; ;
     break;}
-case 834:
-#line 4012 "parse.y"
+case 871:
+#line 3731 "parse.y"
 { yyval.ttype = ansi_opname[CALL_EXPR]; ;
     break;}
-case 835:
-#line 4014 "parse.y"
+case 872:
+#line 3733 "parse.y"
 { yyval.ttype = ansi_opname[ARRAY_REF]; ;
     break;}
-case 836:
-#line 4016 "parse.y"
+case 873:
+#line 3735 "parse.y"
 { yyval.ttype = ansi_opname[NEW_EXPR]; ;
     break;}
-case 837:
-#line 4018 "parse.y"
+case 874:
+#line 3737 "parse.y"
 { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
     break;}
-case 838:
-#line 4020 "parse.y"
+case 875:
+#line 3739 "parse.y"
 { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
     break;}
-case 839:
-#line 4022 "parse.y"
+case 876:
+#line 3741 "parse.y"
 { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
     break;}
-case 840:
-#line 4025 "parse.y"
+case 877:
+#line 3744 "parse.y"
 { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 841:
-#line 4027 "parse.y"
+case 878:
+#line 3746 "parse.y"
 { yyval.ttype = ansi_opname[ERROR_MARK]; ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/lib/bison.simple"
+#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -8233,7 +8129,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 4030 "parse.y"
+#line 3749 "parse.y"
 
 
 #ifdef SPEW_DEBUG