diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/java/java-tree.h | 11 | ||||
| -rw-r--r-- | gcc/java/parse.c | 3798 | 
2 files changed, 1908 insertions, 1901 deletions
| diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index d80c6c9582a..eedcb006c1b 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -49,11 +49,13 @@ struct JCF;        MODIFY_EXPR_FROM_INITIALIZATION_P (in MODIFY_EXPR)     3: IS_AN_IMPORT_ON_DEMAND_P (in IDENTIFIER_NODE)        RESOLVE_PACKAGE_NAME_P (in EXPR_WITH_FILE_LOCATION) +      SWITCH_HAS_DEFAULT (in SWITCH_EXPR)     4: IS_A_COMMAND_LINE_FILENAME_P (in IDENTIFIER_NODE)        RESOLVE_TYPE_NAME_P (in EXPR_WITH_FILE_LOCATION)     5: HAS_BEEN_ALREADY_PARSED_P (in IDENTIFIER_NODE)        IS_BREAK_STMT_P (in EXPR_WITH_FILE_LOCATION)        IS_CRAFTED_STRING_BUFFER_P (in CALL_EXPR) +   6: CAN_COMPLETE_NORMALLY (in statement nodes).     Usage of TYPE_LANG_FLAG_?:     0: CLASS_METHOD_CHECKED_P (in RECORD_TYPE) @@ -262,6 +264,7 @@ extern tree class_dtable_decl;  extern struct CPool *outgoing_cpool;   extern tree current_constant_pool_data_ref; +extern tree wfl_operator;  struct lang_identifier  { @@ -541,6 +544,8 @@ extern int alloc_name_constant PROTO ((int, tree));  extern void emit_register_classes PROTO (());  extern void lang_init_source PROTO ((int));  extern void write_classfile PROTO ((tree)); +extern char *print_int_node PROTO ((tree)); +extern void parse_error_context VPROTO ((tree cl, char *msg, ...));  extern tree build_primtype_type_ref PROTO ((char *));  /* Access flags etc for a method (a FUNCTION_DECL): */ @@ -713,6 +718,9 @@ extern tree *type_map;  /* True if EXPR is RHS sub-tree of a compound assign expression */  #define COMPOUND_ASSIGN_P(EXPR) TREE_LANG_FLAG_1 (EXPR) +/* True if a SWITCH_EXPR has a DEFAULT_EXPR. */ +#define SWITCH_HAS_DEFAULT(NODE) TREE_LANG_FLAG_3 (NODE) +  /* True if EXPR (a WFL in that case) was created after the     reduction of PRIMARY . XXX */  #define PRIMARY_P(EXPR) TREE_LANG_FLAG_2 (EXPR) @@ -739,6 +747,9 @@ extern tree *type_map;  /* True if EXPR (a CALL_EXPR in that case) is a crafted StringBuffer */  #define IS_CRAFTED_STRING_BUFFER_P(EXPR) TREE_LANG_FLAG_5 (EXPR) +/* True if NODE (a statement) can complete normally. */ +#define CAN_COMPLETE_NORMALLY(NODE) TREE_LANG_FLAG_6(NODE) +  /* Add a FIELD_DECL to RECORD_TYPE RTYPE.     The field has name NAME (a char*), and type FTYPE.     Unless this is the first field, FIELD most hold the previous field. diff --git a/gcc/java/parse.c b/gcc/java/parse.c index 8646523eace..6cfae0b8987 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -175,7 +175,7 @@ static enum tree_code binop_lookup[19] =  /* Fake WFL used to report error message. It is initialized once if     needed and reused with it's location information is overriden.  */ -static tree wfl_operator = NULL_TREE; +tree wfl_operator = NULL_TREE;  /* The "$L" identifier we use to create labels.  */  static tree label_id = NULL_TREE; @@ -286,8 +286,8 @@ static const short yyprhs[] = {     0,     665,   667,   670,   673,   676,   679,   682,   685,   688,   691,     695,   700,   705,   711,   716,   722,   729,   737,   744,   746,     748,   750,   752,   754,   756,   758,   764,   767,   771,   776, -   784,   792,   795,   800,   803,   807,   813,   816,   820,   824, -   829,   831,   834,   837,   839,   841,   844,   848,   851,   854, +   784,   792,   793,   797,   802,   805,   809,   815,   818,   822, +   826,   831,   833,   836,   839,   841,   844,   848,   851,   854,     858,   861,   866,   869,   872,   876,   881,   884,   886,   894,     902,   909,   913,   919,   924,   932,   939,   942,   945,   949,     952,   953,   955,   957,   960,   961,   963,   965,   969,   973, @@ -393,11 +393,11 @@ static const short yyrhs[] = {   123,      94,   185,     0,    48,     1,     0,    48,    93,     1,     0,      48,    93,   263,     1,     0,    48,    93,   263,    94,   186,      56,   185,     0,    48,    93,   263,    94,   186,    56,   186, -     0,   198,   199,     0,    68,    93,   263,    94,     0,    68, -     1,     0,    68,    93,     1,     0,    68,    93,   263,    94, -     1,     0,    95,    96,     0,    95,   203,    96,     0,    95, -   200,    96,     0,    95,   200,   203,    96,     0,   201,     0, -   200,   201,     0,   202,   181,     0,   203,     0,   204,     0, +     0,     0,   199,   198,   200,     0,    68,    93,   263,    94, +     0,    68,     1,     0,    68,    93,     1,     0,    68,    93, +   263,    94,     1,     0,    95,    96,     0,    95,   203,    96, +     0,    95,   201,    96,     0,    95,   201,   203,    96,     0, +   202,     0,   201,   202,     0,   203,   181,     0,   204,     0,     203,   204,     0,    62,   264,    88,     0,    47,    88,     0,      62,     1,     0,    62,   264,     1,     0,    47,     1,     0,      66,    93,   263,    94,     0,   205,   185,     0,    66,     1, @@ -493,56 +493,56 @@ static const short yyrhs[] = {   123,  #if YYDEBUG != 0  static const short yyrline[] = { 0, -   271,   277,   279,   280,   281,   282,   283,   287,   289,   292, -   294,   295,   298,   300,   303,   307,   311,   315,   321,   323, -   325,   327,   332,   334,   337,   341,   346,   351,   353,   354, -   355,   356,   357,   358,   359,   362,   367,   373,   375,   378, -   381,   383,   387,   389,   392,   419,   421,   425,   438,   440, -   444,   451,   452,   454,   464,   469,   484,   488,   491,   494, -   497,   499,   501,   503,   507,   509,   511,   513,   517,   519, -   521,   528,   534,   539,   543,   546,   550,   552,   555,   557, -   558,   559,   563,   565,   566,   568,   573,   576,   586,   589, -   591,   595,   598,   605,   611,   619,   621,   623,   625,   627, -   631,   633,   638,   645,   646,   650,   653,   655,   657,   659, -   661,   663,   665,   667,   674,   677,   679,   684,   686,   690, -   695,   700,   704,   709,   711,   713,   720,   722,   724,   728, -   731,   733,   737,   739,   740,   745,   750,   756,   764,   771, -   774,   777,   781,   784,   788,   797,   799,   801,   806,   813, -   821,   823,   827,   835,   846,   850,   853,   856,   859,   862, -   865,   868,   871,   873,   877,   883,   888,   890,   894,   897, -   901,   903,   906,   908,   909,   911,   915,   919,   925,   930, -   935,   939,   943,   949,   951,   952,   957,   960,   964,   969, -   977,   979,   982,   984,   986,   990,   994,   997,  1001,  1003, -  1004,  1005,  1006,  1007,  1017,  1019,  1020,  1021,  1022,  1025, -  1027,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036, -  1039,  1044,  1055,  1062,  1066,  1077,  1087,  1093,  1099,  1105, -  1107,  1113,  1115,  1121,  1123,  1125,  1127,  1129,  1133,  1135, -  1136,  1137,  1138,  1139,  1140,  1143,  1146,  1148,  1150,  1154, -  1159,  1164,  1172,  1178,  1180,  1182,  1186,  1189,  1191,  1193, -  1202,  1204,  1211,  1216,  1225,  1227,  1234,  1240,  1245,  1247, -  1249,  1253,  1261,  1264,  1266,  1268,  1272,  1277,  1286,  1291, -  1294,  1301,  1303,  1305,  1309,  1312,  1321,  1328,  1330,  1334, -  1347,  1349,  1355,  1361,  1365,  1367,  1371,  1374,  1376,  1380, -  1383,  1385,  1387,  1391,  1394,  1396,  1398,  1402,  1405,  1407, -  1409,  1413,  1419,  1421,  1425,  1432,  1434,  1436,  1438,  1442, -  1450,  1453,  1455,  1457,  1461,  1463,  1470,  1478,  1495,  1497, -  1499,  1503,  1509,  1514,  1516,  1519,  1521,  1523,  1525,  1526, -  1527,  1528,  1532,  1534,  1536,  1541,  1543,  1545,  1547,  1549, -  1553,  1556,  1561,  1563,  1568,  1569,  1570,  1571,  1572,  1574, -  1576,  1578,  1580,  1582,  1586,  1588,  1591,  1597,  1602,  1606, -  1609,  1611,  1613,  1617,  1619,  1621,  1623,  1627,  1630,  1634, -  1640,  1642,  1650,  1653,  1655,  1659,  1662,  1670,  1674,  1677, -  1679,  1690,  1701,  1706,  1715,  1717,  1721,  1724,  1726,  1731, -  1736,  1741,  1748,  1750,  1751,  1752,  1755,  1760,  1765,  1767, -  1768,  1770,  1772,  1773,  1775,  1779,  1782,  1786,  1789,  1793, -  1795,  1797,  1799,  1800,  1802,  1806,  1814,  1816,  1818,  1830, -  1832,  1838,  1840,  1842,  1846,  1848,  1853,  1858,  1863,  1865, -  1867,  1871,  1873,  1878,  1883,  1885,  1889,  1891,  1896,  1901, -  1906,  1908,  1910,  1914,  1916,  1921,  1926,  1931,  1936,  1938, -  1940,  1942,  1944,  1946,  1950,  1952,  1957,  1962,  1964,  1968, -  1970,  1975,  1979,  1981,  1986,  1990,  1992,  1997,  2001,  2003, -  2008,  2012,  2014,  2019,  2023,  2025,  2030,  2036,  2038,  2042, -  2044,  2047,  2050,  2058,  2060,  2061,  2064,  2066,  2069,  2073 +   266,   272,   274,   275,   276,   277,   278,   282,   284,   287, +   289,   290,   293,   295,   298,   302,   306,   310,   316,   318, +   320,   322,   327,   329,   332,   336,   341,   346,   348,   349, +   350,   351,   352,   353,   354,   357,   362,   368,   370,   373, +   376,   378,   382,   384,   387,   414,   416,   420,   433,   435, +   439,   446,   447,   449,   459,   464,   479,   483,   486,   489, +   492,   494,   496,   498,   502,   504,   506,   508,   512,   514, +   516,   523,   529,   534,   538,   541,   545,   547,   550,   552, +   553,   554,   558,   560,   561,   563,   568,   571,   581,   584, +   586,   590,   593,   600,   606,   614,   616,   618,   620,   622, +   626,   628,   633,   640,   641,   645,   648,   650,   652,   654, +   656,   658,   660,   662,   669,   672,   674,   679,   681,   685, +   690,   695,   699,   704,   706,   708,   715,   717,   719,   723, +   726,   728,   732,   734,   735,   740,   745,   751,   759,   766, +   769,   772,   776,   779,   783,   792,   794,   796,   801,   808, +   816,   818,   822,   830,   841,   845,   848,   851,   854,   857, +   860,   863,   866,   868,   872,   878,   883,   885,   889,   892, +   896,   898,   901,   903,   904,   906,   910,   914,   920,   925, +   930,   934,   938,   944,   946,   947,   952,   955,   959,   964, +   972,   974,   977,   979,   981,   985,   989,   992,   996,   998, +   999,  1000,  1001,  1002,  1012,  1014,  1015,  1016,  1017,  1020, +  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031, +  1034,  1039,  1050,  1057,  1061,  1072,  1082,  1088,  1094,  1100, +  1102,  1108,  1110,  1116,  1118,  1120,  1122,  1124,  1128,  1130, +  1131,  1132,  1133,  1134,  1135,  1138,  1141,  1143,  1145,  1149, +  1154,  1159,  1165,  1174,  1180,  1182,  1184,  1188,  1190,  1191, +  1192,  1195,  1197,  1200,  1204,  1206,  1209,  1216,  1222,  1224, +  1226,  1230,  1238,  1241,  1243,  1245,  1249,  1254,  1263,  1268, +  1271,  1278,  1280,  1282,  1286,  1289,  1298,  1305,  1307,  1311, +  1324,  1326,  1332,  1338,  1342,  1344,  1348,  1351,  1353,  1357, +  1360,  1362,  1364,  1368,  1371,  1373,  1375,  1379,  1382,  1384, +  1386,  1390,  1396,  1398,  1402,  1409,  1411,  1413,  1415,  1419, +  1427,  1430,  1432,  1434,  1438,  1440,  1447,  1455,  1473,  1475, +  1477,  1481,  1487,  1492,  1494,  1497,  1499,  1501,  1503,  1504, +  1505,  1506,  1510,  1512,  1514,  1519,  1521,  1523,  1525,  1527, +  1531,  1534,  1539,  1541,  1546,  1547,  1548,  1549,  1550,  1552, +  1554,  1556,  1558,  1560,  1564,  1566,  1569,  1575,  1580,  1584, +  1587,  1589,  1591,  1595,  1597,  1599,  1601,  1605,  1608,  1612, +  1618,  1620,  1628,  1631,  1633,  1637,  1640,  1648,  1652,  1655, +  1657,  1668,  1679,  1684,  1693,  1695,  1699,  1702,  1704,  1709, +  1714,  1719,  1726,  1728,  1729,  1730,  1733,  1738,  1743,  1745, +  1746,  1748,  1750,  1751,  1753,  1757,  1760,  1764,  1767,  1771, +  1773,  1775,  1777,  1778,  1780,  1784,  1792,  1794,  1796,  1808, +  1810,  1816,  1818,  1820,  1824,  1826,  1831,  1836,  1841,  1843, +  1845,  1849,  1851,  1856,  1861,  1863,  1867,  1869,  1874,  1879, +  1884,  1886,  1888,  1892,  1894,  1899,  1904,  1909,  1914,  1916, +  1918,  1920,  1922,  1924,  1928,  1930,  1935,  1940,  1942,  1946, +  1948,  1953,  1957,  1959,  1964,  1968,  1970,  1975,  1979,  1981, +  1986,  1990,  1992,  1997,  2001,  2003,  2008,  2014,  2016,  2020, +  2022,  2025,  2028,  2036,  2038,  2039,  2042,  2044,  2047,  2051  };  #endif @@ -583,22 +583,22 @@ static const char * const yytname[] = {   "$","error","$undefined.","PLUS_TK",  "local_variable_declaration","statement","statement_nsi","statement_without_trailing_substatement",  "empty_statement","label_decl","labeled_statement","labeled_statement_nsi","expression_statement",  "statement_expression","if_then_statement","if_then_else_statement","if_then_else_statement_nsi", -"switch_statement","switch_expression","switch_block","switch_block_statement_groups", -"switch_block_statement_group","group_of_labels","switch_labels","switch_label", -"while_expression","while_statement","while_statement_nsi","do_statement_begin", -"do_statement","for_statement","for_statement_nsi","for_header","for_begin", -"for_init","for_update","statement_expression_list","break_statement","continue_statement", -"return_statement","throw_statement","synchronized_statement","synchronized", -"try_statement","catches","catch_clause","catch_clause_parameter","finally", -"primary","primary_no_new_array","class_instance_creation_expression","something_dot_new", -"argument_list","array_creation_expression","dim_exprs","dim_expr","dims","field_access", -"method_invocation","array_access","postfix_expression","post_increment_expression", -"post_decrement_expression","unary_expression","pre_increment_expression","pre_decrement_expression", -"unary_expression_not_plus_minus","cast_expression","multiplicative_expression", -"additive_expression","shift_expression","relational_expression","equality_expression", -"and_expression","exclusive_or_expression","inclusive_or_expression","conditional_and_expression", -"conditional_or_expression","conditional_expression","assignment_expression", -"assignment","left_hand_side","assignment_operator","expression","constant_expression", NULL +"switch_statement","@9","switch_expression","switch_block","switch_block_statement_groups", +"switch_block_statement_group","switch_labels","switch_label","while_expression", +"while_statement","while_statement_nsi","do_statement_begin","do_statement", +"for_statement","for_statement_nsi","for_header","for_begin","for_init","for_update", +"statement_expression_list","break_statement","continue_statement","return_statement", +"throw_statement","synchronized_statement","synchronized","try_statement","catches", +"catch_clause","catch_clause_parameter","finally","primary","primary_no_new_array", +"class_instance_creation_expression","something_dot_new","argument_list","array_creation_expression", +"dim_exprs","dim_expr","dims","field_access","method_invocation","array_access", +"postfix_expression","post_increment_expression","post_decrement_expression", +"unary_expression","pre_increment_expression","pre_decrement_expression","unary_expression_not_plus_minus", +"cast_expression","multiplicative_expression","additive_expression","shift_expression", +"relational_expression","equality_expression","and_expression","exclusive_or_expression", +"inclusive_or_expression","conditional_and_expression","conditional_or_expression", +"conditional_expression","assignment_expression","assignment","left_hand_side", +"assignment_operator","expression","constant_expression", NULL  };  #endif @@ -628,8 +628,8 @@ static const short yyr1[] = {     0,     188,   189,   190,   190,   191,   192,   192,   192,   192,   192,     192,   192,   192,   192,   192,   192,   192,   192,   193,   193,     193,   193,   193,   193,   193,   194,   194,   194,   194,   195, -   196,   197,   198,   198,   198,   198,   199,   199,   199,   199, -   200,   200,   201,   202,   203,   203,   204,   204,   204,   204, +   196,   198,   197,   199,   199,   199,   199,   200,   200,   200, +   200,   201,   201,   202,   203,   203,   204,   204,   204,   204,     204,   205,   206,   206,   206,   206,   207,   208,   209,   210,     210,   210,   210,   210,   211,   211,   212,   212,   212,   213,     214,   214,   214,   214,   215,   215,   216,   216,   216,   217, @@ -681,8 +681,8 @@ static const short yyr2[] = {     0,       1,     2,     2,     2,     2,     2,     2,     2,     2,     3,       4,     4,     5,     4,     5,     6,     7,     6,     1,     1,       1,     1,     1,     1,     1,     5,     2,     3,     4,     7, -     7,     2,     4,     2,     3,     5,     2,     3,     3,     4, -     1,     2,     2,     1,     1,     2,     3,     2,     2,     3, +     7,     0,     3,     4,     2,     3,     5,     2,     3,     3, +     4,     1,     2,     2,     1,     2,     3,     2,     2,     3,       2,     4,     2,     2,     3,     4,     2,     1,     7,     7,       6,     3,     5,     4,     7,     6,     2,     2,     3,     2,       0,     1,     1,     2,     0,     1,     1,     3,     3,     2, @@ -738,7 +738,7 @@ static const short yydefact[] = {     0,     141,     0,    55,     0,     0,   278,     0,     0,     0,     0,       0,     0,     0,     0,   337,     0,   221,     0,     8,   404,       0,     0,   195,     0,   210,     0,   191,   193,     0,   194, -   199,   211,     0,   200,   212,     0,   201,   202,   213,     0, +   199,   211,     0,   200,   212,     0,   201,   202,   213,   252,       0,   203,     0,   214,   204,   291,     0,   215,   216,   217,     219,   218,     0,   220,   245,   244,     0,   242,   243,   240,     241,   239,   125,   123,     0,   116,     0,     0,   414,   404, @@ -750,40 +750,40 @@ static const short yydefact[] = {     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     497,   498,     0,   143,     0,   142,   135,   104,   133,   137,     189,   140,     0,   228,   229,   227,   247,     0,   313,     0, -   302,   300,     0,   310,   308,     0,   274,     0,   254,     0, +   302,   300,     0,   310,   308,     0,   274,     0,   255,     0,     324,     0,   288,     0,   306,   304,     0,     0,   197,     0,       0,   224,   222,     0,     0,   190,   188,   192,   196,   320, -   404,   223,   226,     0,   252,   273,     0,   404,     0,   293, -   297,   290,     0,     0,   317,     0,   126,   124,   122,   121, -   132,   131,   350,   345,     0,   387,   377,   376,   359,     0, -   370,   378,     0,   371,     0,   360,     0,     0,     0,     0, -     0,     0,   347,   338,   182,   181,     0,   349,   344,   389, -     0,   367,   399,     0,   348,   343,   365,   346,   366,   386, -   401,     0,   364,     0,   439,   436,   440,   437,   441,   438, -   445,   443,   446,   444,   451,   448,   452,   449,   453,   450, -   461,   456,   463,   458,   460,   455,   462,   457,   464,     0, -   459,   468,   466,   469,   467,   472,   471,   475,   474,   478, -   477,   481,   480,   484,   483,   488,     0,     0,   493,   492, -   144,   134,   404,     0,     0,   145,     0,   248,     0,   314, -   312,   303,   301,   311,   309,   275,     0,   255,     0,     0, -     0,   321,   325,     0,   322,   289,   307,   305,   338,     0, -   198,   230,     0,     0,     0,     0,   257,     0,   261,     0, -   264,   265,     0,   294,     0,   282,     0,     0,   319,     0, -   395,   396,     0,   382,   383,     0,   379,   372,     0,   375, -   373,   374,   361,   352,     0,   433,   427,   430,     0,     0, -   428,   186,   183,   185,   390,     0,   400,   397,     0,   402, -   398,   355,     0,   487,     0,     0,   146,     0,     0,   147, -   249,     0,   276,   272,     0,   329,     0,   333,   332,   326, -   323,   327,   234,     0,   231,   232,     0,   271,   268,   269, -   500,     0,   259,   262,   264,     0,   258,   266,     0,   299, -   298,   284,     0,   296,     0,   318,     0,   393,     0,   381, -   380,   385,   384,   354,   362,   351,   432,   426,   434,   429, -   369,   368,   391,     0,   356,   357,   489,   486,     0,   148, -     0,     0,     0,   246,     0,   199,     0,   206,   207,     0, -   208,   209,     0,   256,   330,     0,   235,     0,     0,   233, -   270,   267,   260,     0,     0,   283,     0,   316,   315,   394, -   353,   392,   358,     0,   149,     0,     0,     0,   225,   277, -     0,   331,   328,   238,   236,     0,     0,   281,     0,     0, +   404,   223,   226,     0,   273,     0,   404,     0,   293,   297, +   290,     0,     0,   317,     0,   126,   124,   122,   121,   132, +   131,   350,   345,     0,   387,   377,   376,   359,     0,   370, +   378,     0,   371,     0,   360,     0,     0,     0,     0,     0, +     0,   347,   338,   182,   181,     0,   349,   344,   389,     0, +   367,   399,     0,   348,   343,   365,   346,   366,   386,   401, +     0,   364,     0,   439,   436,   440,   437,   441,   438,   445, +   443,   446,   444,   451,   448,   452,   449,   453,   450,   461, +   456,   463,   458,   460,   455,   462,   457,   464,     0,   459, +   468,   466,   469,   467,   472,   471,   475,   474,   478,   477, +   481,   480,   484,   483,   488,     0,     0,   493,   492,   144, +   134,   404,     0,     0,   145,     0,   248,     0,   314,   312, +   303,   301,   311,   309,   275,     0,   256,     0,     0,     0, +   321,   325,     0,   322,   289,   307,   305,   338,     0,   198, +   230,     0,     0,     0,   253,     0,   294,     0,   282,     0, +     0,   319,     0,   395,   396,     0,   382,   383,     0,   379, +   372,     0,   375,   373,   374,   361,   352,     0,   433,   427, +   430,     0,     0,   428,   186,   183,   185,   390,     0,   400, +   397,     0,   402,   398,   355,     0,   487,     0,     0,   146, +     0,     0,   147,   249,     0,   276,   272,     0,   329,     0, +   333,   332,   326,   323,   327,   234,     0,   231,   232,     0, +     0,     0,   258,     0,   262,     0,   265,     0,   299,   298, +   284,     0,   296,     0,   318,     0,   393,     0,   381,   380, +   385,   384,   354,   362,   351,   432,   426,   434,   429,   369, +   368,   391,     0,   356,   357,   489,   486,     0,   148,     0, +     0,     0,   246,     0,   199,     0,   206,   207,     0,   208, +   209,     0,   257,   330,     0,   235,     0,     0,   233,   271, +   268,   269,   500,     0,   260,   263,     0,   259,     0,   266, +     0,     0,   283,     0,   316,   315,   394,   353,   392,   358, +     0,   149,     0,     0,     0,   225,   277,     0,   331,   328, +   238,   236,     0,   270,   267,   261,     0,   281,     0,     0,       0,   150,     0,   250,     0,     0,   237,   279,   280,   152,       0,     0,     0,     0,   151,     0,     0,     0,     0,   286,       0,   251,   285,     0,     0,     0 @@ -792,1209 +792,1238 @@ static const short yydefact[] = {     0,  static const short yydefgoto[] = {   774,     210,   278,   211,    85,    86,    68,    60,    87,   212,    22,      23,    24,     8,     9,    10,    11,    12,    13,    14,    15, -    16,    17,   132,   105,    47,    70,   104,   130,   162,   163, +   282,   283,   132,   105,    47,    70,   104,   130,   162,   163,     164,    91,   114,   115,   116,   213,   166,   258,    92,   111,     181,   182,   136,   185,   398,   168,   169,   170,   260,   171, -   172,   402,   554,   284,    18,    43,    72,    65,   107,    44, +   172,   402,   553,   284,    18,    43,    72,    65,   107,    44,      63,    94,    95,    96,    97,   214,   358,   285,   175,   437, -   286,   287,   288,   289,   290,   705,   291,   292,   293,   294, -   708,   295,   296,   297,   298,   709,   299,   300,   445,   588, -   589,   590,   591,   592,   301,   302,   711,   303,   304,   305, -   712,   306,   307,   452,   673,   674,   308,   309,   310,   311, -   312,   313,   314,   572,   573,   574,   575,   215,   216,   217, -   218,   491,   219,   471,   472,   473,   220,   221,   222,   223, +   719,   287,   288,   289,   290,   694,   291,   292,   293,   294, +   697,   295,   296,   297,   298,   698,   299,   444,   300,   585, +   654,   655,   656,   657,   301,   302,   700,   303,   304,   305, +   701,   306,   307,   451,   662,   663,   308,   309,   310,   311, +   312,   313,   314,   571,   572,   573,   574,   215,   216,   217, +   218,   490,   219,   470,   471,   472,   220,   221,   222,   223,     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,     234,   235,   236,   237,   238,   239,   240,   241,   242,   243, -   244,   393,   492,   662 +   244,   393,   491,   714  }; -static const short yypact[] = {   466, --32768,-32768,   432,   -55,   484,   498,-32768,-32768,   425,    21, -   576,-32768,-32768,-32768,-32768,   594,-32768,-32768,-32768,-32768, -    13,-32768,-32768,-32768,   348,-32768,   361,-32768,    28,   143, --32768,-32768,   592,   618,-32768,   -55,   505,-32768,-32768,   478, --32768,   510,   -46,   -30,-32768,   514,    23,-32768,-32768,   -55, -   633,   360,-32768,   413,-32768,    95,-32768,-32768,-32768,-32768, -   -11,  1145,-32768,   521,   -46,-32768,-32768,    67,   525,-32768, --32768,   -46,   -30,-32768,    23,-32768,-32768,-32768,   542,-32768, --32768,-32768,   554,     4,-32768,-32768,    48,   184,   791,-32768, --32768,   212,-32768,  1241,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,   107,   126,-32768,   -46,-32768,-32768,   156, -     9,-32768,   235,   435,-32768,   790,     9,    34,    37,   182, --32768,   580,   582,-32768,-32768,-32768,-32768,   588,   861,-32768, --32768,   126,   434,   620,    56,-32768,-32768,-32768,   625,  1878, -    72,   328,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     9, --32768,   448,     9,-32768,-32768,   311,   342,-32768,   384,   791, --32768,  1029,-32768,-32768,-32768,-32768,   174,-32768,   373,-32768, --32768,   437,-32768,-32768,  1600,-32768,-32768,-32768,   628,   901, -   -67,-32768,-32768,-32768,   395,-32768,-32768,-32768,   167,-32768, --32768,  2625,  2690,  2741,  2806,   489,    16,   572,-32768,  2857, -  2922,  2973,  5113,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -   500,   949,    49,-32768,   509,   461,-32768,   641,-32768,   810, --32768,   823,   881,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -   995,   926,  1016,   918,   932,   613,   629,   637,   659,    10, --32768,-32768,-32768,   887,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,   839,   437,-32768,-32768,-32768,   341,   590,   586, --32768,   811,   305,   335,  3038,-32768,   141,  1929,    12,   352, -   357,    98,   430,   255,   609,  5410,-32768,   -55,   701,   902, -   511,   873,-32768,   627,-32768,  1532,-32768,-32768,   649,-32768, --32768,-32768,  1673,-32768,-32768,   664,-32768,-32768,-32768,   674, -  1673,-32768,  1673,-32768,-32768,  5461,   704,-32768,-32768,-32768, --32768,-32768,   447,-32768,   693,   834,   881,   939,   944,-32768, --32768,-32768,-32768,   899,   644,-32768,   692,   647,-32768,   416, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    27, --32768,   655,   954,   631,   631,   452,-32768,-32768,-32768,-32768, --32768,   624,  1046,    22,-32768,   717,-32768,   603,    31,  5178, -  3089,   604,-32768,    -8,  3154,-32768,   457,-32768,-32768,  3205, -  3270,  3321,  3386,  3437,  3502,  3553,  3618,  3669,  3734,  3785, -  3850,   760,  3901,  3966,  4017,  4082,  4133,  4198,  4249,  1994, --32768,-32768,  4314,-32768,   176,-32768,-32768,-32768,   718,-32768, --32768,-32768,  1532,-32768,-32768,-32768,-32768,  4365,-32768,   217, --32768,-32768,   219,-32768,-32768,   227,-32768,  4430,-32768,  4481, --32768,   751,-32768,  4895,-32768,-32768,   238,    59,   682,  2045, -   686,-32768,-32768,   -55,  2110,-32768,-32768,-32768,-32768,-32768, -  1061,-32768,-32768,   602,-32768,-32768,   723,  1000,   901,-32768, --32768,-32768,   117,  2161,-32768,  4546,-32768,   899,-32768,-32768, --32768,-32768,-32768,-32768,   121,   738,-32768,-32768,-32768,  2226, -   631,-32768,   362,   631,   362,-32768,  2277,  4597,   204,   690, -  2342,   711,-32768,   973,-32768,-32768,  1813,-32768,-32768,-32768, -   308,-32768,-32768,   240,-32768,-32768,-32768,-32768,-32768,   744, --32768,   244,-32768,  5229,-32768,-32768,-32768,-32768,-32768,-32768, --32768,   995,-32768,   995,-32768,   926,-32768,   926,-32768,   926, --32768,  1016,-32768,  1016,-32768,  1016,-32768,  1016,-32768,     4, --32768,-32768,   918,-32768,   918,-32768,   932,-32768,   613,-32768, -   629,-32768,   637,-32768,   659,-32768,   846,   761,-32768,-32768, --32768,-32768,  1043,  1532,   758,-32768,  1532,-32768,   271,-32768, --32768,-32768,-32768,-32768,-32768,-32768,   316,-32768,   759,   460, -   257,   751,-32768,   373,-32768,-32768,-32768,-32768,-32768,   469, -   682,-32768,   868,    86,   205,  4662,-32768,   605,-32768,  1600, -   635,-32768,   778,-32768,  5029,-32768,  4920,   775,   792,   796, --32768,-32768,  5294,-32768,-32768,   247,-32768,   787,   261,-32768, -   787,-32768,-32768,   126,    88,-32768,-32768,-32768,  4713,  5071, --32768,-32768,-32768,-32768,-32768,  4778,-32768,-32768,  5345,-32768, --32768,   126,   474,-32768,  4829,   827,-32768,  1532,  2393,-32768, --32768,  1739,-32768,-32768,   294,-32768,   736,-32768,-32768,-32768, --32768,-32768,-32768,  2458,-32768,-32768,   894,-32768,-32768,-32768, --32768,   400,-32768,-32768,   713,  1441,-32768,-32768,  5410,-32768, --32768,-32768,   803,   812,  4962,-32768,   309,-32768,   515,-32768, --32768,-32768,-32768,-32768,-32768,   126,-32768,-32768,-32768,-32768, --32768,-32768,-32768,   584,-32768,   126,-32768,-32768,   486,-32768, -   256,   102,   495,-32768,   863,   878,  1739,-32768,-32768,  1739, --32768,-32768,   843,-32768,   850,   858,-32768,   959,   135,-32768, --32768,-32768,-32768,   876,  1673,-32768,   888,-32768,-32768,-32768, --32768,-32768,-32768,  2509,-32768,   293,  4365,  1673,-32768,-32768, -  2574,-32768,-32768,-32768,-32768,   961,   907,-32768,  1673,   296, -   138,-32768,   322,-32768,  4920,   909,-32768,-32768,-32768,-32768, -   300,  1739,   915,  4962,-32768,   911,  1739,   917,  1739,-32768, -  1739,-32768,-32768,  1017,  1019,-32768 +static const short yypact[] = {   465, +-32768,-32768,   172,   -63,   391,   416,-32768,-32768,   463,   205, +   546,-32768,-32768,-32768,-32768,   535,-32768,-32768,-32768,-32768, +    11,-32768,-32768,-32768,   295,-32768,   353,-32768,    15,   560, +-32768,-32768,   551,   630,-32768,   -63,   443,-32768,-32768,   500, +-32768,   450,   -51,   -27,-32768,   453,    40,-32768,-32768,   -63, +   654,   395,-32768,   358,-32768,    24,-32768,-32768,-32768,-32768, +   167,   921,-32768,   486,   -51,-32768,-32768,   247,   512,-32768, +-32768,   -51,   -27,-32768,    40,-32768,-32768,-32768,   554,-32768, +-32768,-32768,   556,   150,-32768,-32768,   187,   -44,   741,-32768, +-32768,    29,-32768,  1997,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,   220,   262,-32768,   -51,-32768,-32768,   313, +     5,-32768,   484,   679,-32768,   570,     5,    66,    88,   325, +-32768,   562,   566,-32768,-32768,-32768,-32768,   637,  1188,-32768, +-32768,   262,   707,   657,   210,-32768,-32768,-32768,   662,  2015, +   242,   446,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     5, +-32768,   732,     5,-32768,-32768,   366,   372,-32768,   411,   741, +-32768,  1592,-32768,-32768,-32768,-32768,    59,-32768,   448,-32768, +-32768,   466,-32768,-32768,  1807,-32768,-32768,-32768,   674,   775, +   -22,-32768,-32768,-32768,   469,-32768,-32768,-32768,   579,-32768, +-32768,  2762,  2827,  2878,  2943,   473,    18,   685,-32768,  2994, +  3059,  3110,  5187,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +   522,   908,    81,-32768,   534,   547,-32768,   688,-32768,   621, +-32768,   743,   813,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +   885,   860,   949,   891,   857,   635,   671,   656,   703,   194, +-32768,-32768,-32768,   786,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,   843,   466,-32768,-32768,-32768,   357,   625,   650, +-32768,   449,   162,   219,  3175,-32768,   177,  2066,    20,   294, +   364,    73,   390,   207,   665,  5484,-32768,   -63,   378,   869, +   424,   954,-32768,   706,-32768,  1739,-32768,-32768,   651,-32768, +-32768,-32768,  1875,-32768,-32768,   684,-32768,-32768,-32768,-32768, +  1875,-32768,  1875,-32768,-32768,  5535,   730,-32768,-32768,-32768, +-32768,-32768,   396,-32768,   716,   751,   813,   849,   852,-32768, +-32768,-32768,-32768,   829,   691,-32768,   754,   698,-32768,   434, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    21, +-32768,   708,   876,   710,   710,   401,-32768,-32768,-32768,-32768, +-32768,   609,   956,   268,-32768,   719,-32768,   470,    32,  5252, +  3226,   584,-32768,   -40,  3291,-32768,   413,-32768,-32768,  3342, +  3407,  3458,  3523,  3574,  3639,  3690,  3755,  3806,  3871,  3922, +  3987,   736,  4038,  4103,  4154,  4219,  4270,  4335,  4386,  2131, +-32768,-32768,  4451,-32768,     0,-32768,-32768,-32768,   744,-32768, +-32768,-32768,  1739,-32768,-32768,-32768,-32768,  4502,-32768,    36, +-32768,-32768,    48,-32768,-32768,    89,-32768,  4567,-32768,  4618, +-32768,   641,-32768,  1328,-32768,-32768,    94,   300,   737,  2182, +   557,-32768,-32768,   -63,  2247,-32768,-32768,-32768,-32768,-32768, +   979,-32768,-32768,   755,-32768,   780,   893,   775,-32768,-32768, +-32768,   119,  2298,-32768,  4683,-32768,   829,-32768,-32768,-32768, +-32768,-32768,-32768,   130,   761,-32768,-32768,-32768,  2363,   710, +-32768,   139,   710,   139,-32768,  2414,  4734,   250,   -42,  2479, +   628,-32768,  5560,-32768,-32768,  1126,-32768,-32768,-32768,   514, +-32768,-32768,   251,-32768,-32768,-32768,-32768,-32768,   773,-32768, +   253,-32768,  5303,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +   885,-32768,   885,-32768,   860,-32768,   860,-32768,   860,-32768, +   949,-32768,   949,-32768,   949,-32768,   949,-32768,   150,-32768, +-32768,   891,-32768,   891,-32768,   857,-32768,   635,-32768,   671, +-32768,   656,-32768,   703,-32768,   867,   797,-32768,-32768,-32768, +-32768,   933,  1739,   789,-32768,  1739,-32768,   304,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,   345,-32768,   806,   421,   202, +   641,-32768,   448,-32768,-32768,-32768,-32768,-32768,   430,   737, +-32768,   917,   116,   371,-32768,   831,-32768,  5075,-32768,  5008, +   823,   836,   839,-32768,-32768,  5368,-32768,-32768,   263,-32768, +   848,   266,-32768,   848,-32768,-32768,   262,   222,-32768,-32768, +-32768,  4799,  5122,-32768,-32768,-32768,-32768,-32768,  4850,-32768, +-32768,  5419,-32768,-32768,   262,   517,-32768,  4915,   738,-32768, +  1739,  2530,-32768,-32768,  1941,-32768,-32768,   231,-32768,   794, +-32768,-32768,-32768,-32768,-32768,-32768,  2595,-32768,-32768,   935, +    30,  4966,-32768,   509,-32768,  1489,-32768,  5484,-32768,-32768, +-32768,   859,   846,  5033,-32768,   237,-32768,   633,-32768,-32768, +-32768,-32768,-32768,-32768,   262,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,   687,-32768,   262,-32768,-32768,   440,-32768,    97, +   227,   441,-32768,   907,   931,  1941,-32768,-32768,  1941,-32768, +-32768,   878,-32768,   914,   918,-32768,  1001,   236,-32768,-32768, +-32768,-32768,-32768,   342,-32768,-32768,  1562,-32768,  1671,-32768, +   926,  1875,-32768,   928,-32768,-32768,-32768,-32768,-32768,-32768, +  2646,-32768,   105,  4502,  1875,-32768,-32768,  2711,-32768,-32768, +-32768,-32768,  1010,-32768,-32768,-32768,   924,-32768,  1875,   136, +   245,-32768,   398,-32768,  5008,   929,-32768,-32768,-32768,-32768, +   160,  1941,   939,  5033,-32768,   971,  1941,   943,  1941,-32768, +  1941,-32768,-32768,  1038,  1041,-32768  };  static const short yypgoto[] = {-32768, --32768,   -22,   -52,   634,   109,  -119,   375,-32768,    -3,   583, --32768,   129,-32768,  1011,   746,-32768,   663,-32768,-32768,   814, -   -53,   -60,-32768,-32768,   977,   952,-32768,  -125,-32768,   867, --32768,   -99,  -115,   895,  -173,  -191,-32768,-32768,   115,   -39, -   783,  -326,   -98,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -   879,-32768,-32768,   640,   -58,-32768,-32768,-32768,-32768,   996, -   643,-32768,   960,-32768,-32768,   354,-32768,  -111,   800,  -383, -  -387,  -275,-32768,   766,    63,    97,  -586,-32768,  -423,-32768, --32768,-32768,  -282,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -   476,-32768,   496,  -565,  -350,-32768,-32768,-32768,-32768,-32768, --32768,-32768,  -320,-32768,  -335,   768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,   522,-32768,   523,-32768,-32768,   -15, --32768,  -340,-32768,   754,   386,  -260,   975,   243,  1095,   266, -   423,   490,  -147,   513,   569,  -479,-32768,   683,   729,   585, -   685,   698,   714,   715,   719,   720,-32768,   477,   724,   668, --32768,-32768,    44,-32768 +-32768,     7,   -53,   660,    87,  -121,   -35,-32768,    -3,   -75, +-32768,   134,-32768,  1033,   582,-32768,     9,-32768,-32768,   837, +    17,   132,-32768,-32768,   992,   976,-32768,  -126,-32768,   892, +-32768,   153,  -103,   920,  -172,  -199,-32768,-32768,   311,   689, +   808,  -326,   -69,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +   902,-32768,-32768,   661,   -54,-32768,-32768,-32768,-32768,  1014, +   623,-32768,   975,-32768,-32768,   120,-32768,  -124,   814,  -401, +  -164,  -276,-32768,   767,   296,   146,  -434,-32768,  -358,-32768, +-32768,-32768,  -271,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,   423,   429,  -442,  -343,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,  -333,-32768,  -640,   781,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,   508,-32768,   519,-32768,-32768,   -15, +-32768,  -420,-32768,   746,   336,  -248,  1100,   185,  1122,   333, +   379,   425,  -130,   569,   613,  -469,-32768,   565,   709,   563, +   567,   714,   717,   705,   718,   720,-32768,   477,   701,   690, +-32768,-32768,    42,-32768  }; -#define	YYLAST		5570 +#define	YYLAST		5669  static const short yytable[] = {    21, -   460,    90,    29,    93,   621,   324,   176,   152,    89,    84, -   438,   357,   341,    38,   184,   557,   341,   174,   143,   556, -   -31,     1,   483,   451,   389,   668,   326,   463,    48,   165, -    20,   488,   327,    90,   144,    93,    84,   146,    61,    83, -    89,    84,    61,   117,   333,   335,   337,   339,    62,   363, -   174,   249,   348,   350,   251,   706,   186,   259,    88,   483, -    61,   134,   165,   499,     2,    61,   123,   101,   161,    64, -   173,    83,   246,   261,    69,   160,    84,    20,   346,   180, -    84,     4,   150,   153,   475,    88,   656,     5,   685,    50, -    88,   480,   482,   464,   584,    76,   390,   489,   421,   668, -   118,   161,   656,   173,  -154,   135,    83,    84,   160,    84, -   179,    39,   342,    40,   283,   484,   342,   594,   -66,     7, -   706,   282,   279,   706,    61,    88,    49,    84,    50,    88, -    61,   145,    25,    27,   147,   745,   615,   123,   745,    83, -   690,   411,   -34,     1,   119,   344,   399,   -93,   -93,   352, -    59,   458,   579,   187,    67,   396,    88,   325,    88,   315, -   422,   -66,   429,   633,    52,    54,   638,   137,    57,   247, -   637,   280,    59,   640,   257,   706,    88,    59,    57,   657, -   706,   686,   706,   245,   706,   626,     2,   626,   330,   330, -   330,   330,   157,    77,    61,   736,   330,   330,   353,   180, -    84,   626,   666,     4,   618,   658,   128,   110,   462,     5, -   608,   113,   124,   611,   601,  -292,   595,   560,   707,   562, -   129,   602,   506,   508,   510,   283,    20,   564,   746,    84, -   179,   761,   282,   279,   626,   137,    59,   626,   577,   412, -   627,     7,    67,   167,   630,   354,   245,   680,   133,    88, -   110,   113,   449,   279,   700,   425,   655,   648,   -96,   434, -   -96,   682,   679,   -96,   -96,   -96,   -96,   189,  -103,   551, -   315,   641,  -103,   180,    84,   327,   167,   315,    88,   148, -   120,   438,   280,   707,    50,   315,   707,   315,   694,   441, -   315,   710,   659,   720,   714,   624,   744,   441,   702,   441, -   757,   605,   448,   281,   179,  -320,   345,   189,   410,   728, -   125,   416,   671,   719,   451,   561,   643,   563,   581,   428, -   716,   713,   641,    88,    61,   565,   -96,   133,   248,   530, -   617,   -96,   -96,   -96,   -96,   407,   578,   628,   707,   727, -    20,   631,   283,   707,   681,   707,   367,   707,    41,   282, -   279,   157,   417,   426,   735,   442,   710,   419,   683,   710, -    71,    45,   438,   446,   642,   447,   330,   330,   330,   330, +   459,   555,    29,   357,   174,   176,   324,    93,    84,   438, +   286,    38,   184,   614,   583,    48,    16,    31,   341,   152, +   341,   462,    20,   724,    76,    16,    16,    16,    99,   124, +   710,   498,   487,   103,   450,    84,   559,   174,    61,    93, +    84,    31,    61,    62,   259,    20,    16,   143,   561,    16, +    16,   612,   120,   159,   602,   608,    50,   134,    88,   257, +    61,   333,   335,   337,   339,    61,   144,    16,    83,   348, +   350,   326,    64,   421,   173,    84,   346,   327,    89,    84, +   249,   363,   626,   251,   159,    88,   159,   463,   146,   563, +    88,    69,   155,   550,   576,   123,   474,   648,   488,   327, +    83,   135,   261,   479,   481,   709,    84,   173,    84,    39, +    89,    40,  -154,    49,   763,    50,   649,   711,   342,   587, +   342,   279,    77,   768,    61,    88,    84,   125,    59,    88, +    61,    17,    67,   399,   560,    83,   741,    25,    27,   179, +    17,    17,    17,   679,   344,   160,   562,   422,   352,   180, +    59,   630,   457,  -103,   633,    59,    88,  -103,    88,   315, +   757,    17,  -320,   145,    17,    17,   123,   157,    83,    52, +    54,   280,    19,    57,   429,   668,    88,   411,   160,   -93, +   -93,   245,    17,    57,   396,   147,   325,   564,   330,   330, +   330,   330,   577,    90,    61,   732,   330,   330,   353,    84, +   695,   683,   641,   752,   -31,     1,   461,   425,   389,   650, +   186,   691,   110,   720,    59,   619,   113,  -292,   588,   407, +    67,   601,   674,   594,   604,    90,   708,   649,    84,   689, +   595,   703,   279,   203,   760,   602,   742,   725,   556,   505, +   507,   509,   246,   354,   245,   742,   118,   101,     2,    88, +   611,   620,   279,   623,  -320,   110,   113,    20,   765,   179, +   161,   695,    20,   669,   695,     4,   671,    50,   482,   180, +   315,     5,   189,    84,   720,   412,   696,   315,    88,   438, +   390,   165,   280,   119,   345,   315,   617,   315,   434,   441, +   315,   699,    20,   161,   417,    41,   157,   441,   -66,   441, +   482,   702,   447,     7,   634,   426,   410,   187,   281,   416, +   751,   408,   189,   705,   165,   675,   660,   428,   450,   128, +   733,   619,   448,    88,    61,  -254,   619,   695,   529,   743, +   580,   157,   695,   179,   695,   619,   695,   696,   761,   247, +   696,   -66,   744,   180,   619,   636,   610,   598,   621,   279, +   624,   367,   699,    45,   438,   699,   129,    42,    74,   316, +   670,   483,   702,   672,   419,   702,   330,   330,   330,   330,     330,   330,   330,   330,   330,   330,   330,   330,    88,   330, -   330,   330,   330,   330,   330,   330,   713,   315,  -253,   713, -   438,   752,   451,   751,   760,   413,    84,  -320,   765,   553, -   721,   625,   427,   157,   494,  -138,   189,   626,   502,   644, -    42,   710,   -65,    74,   281,   762,   710,   316,   710,   763, -   710,   281,    42,    46,   -30,     1,   434,   408,   768,   281, -   423,   281,    19,   548,   177,   157,    67,   252,    99,   397, -   317,   713,  -155,   103,   418,    88,   713,   455,   713,   420, -   713,   559,   476,   189,  -157,   -65,   203,   503,   609,   649, -   646,   567,   652,   569,   -65,   -28,     1,   157,     2,   653, -   466,   688,   451,   494,   330,    46,   253,     2,    55,     3, -   330,   451,    56,    78,    26,     4,   653,   722,   684,   134, -    57,     5,   500,   283,   328,   407,   283,   598,    28,   600, -   282,   279,   155,   282,   279,    53,   695,   -65,   360,     2, -    58,   432,   361,   606,    66,    80,   362,    20,    81,    20, -     3,    98,   424,     7,   494,   102,     4,   178,   316,   283, -   245,   281,     5,   138,   139,   316,   282,   279,   315,   456, -     6,   315,   109,   316,   477,   316,   250,   139,   316,   504, -   280,   317,   647,   280,   112,   -25,   -25,   365,   317,    57, -   731,   654,   189,    20,     7,   729,   317,   696,   317,    20, -   733,   317,   343,   626,   315,   -29,     1,   283,   734,   315, -   149,   315,   151,    20,   282,   279,   280,   737,   154,   340, -    20,   -32,     1,   180,    84,    20,   -25,   318,   433,    20, -   359,   -25,   -25,   -25,   495,   283,    20,   -25,   730,   364, -    20,   -25,   282,   279,   626,   330,   330,   -33,     1,     2, -   183,    78,   315,   385,   179,   188,   315,    20,   323,   661, -     3,   330,   -35,     1,   280,     2,     4,    35,   441,    20, -   386,   366,     5,    88,   457,   316,     3,   461,   585,   387, -   315,   585,     4,    80,    36,   465,    81,    20,     5,   315, -    37,     2,   280,   586,   319,    20,   586,    20,   317,   692, -   496,    31,   388,    20,     7,   497,     2,   732,     4,   498, -   401,   585,   281,   626,     5,   281,   495,   320,   400,    20, -     7,   315,   459,     4,   315,    31,   586,   587,   486,     5, -   663,  -153,   487,   441,   704,    20,   441,   100,   318,   315, -    20,   159,   724,    20,   106,   318,     7,   478,   281,   435, -   479,   441,   315,   318,   359,   318,    20,   470,   318,    20, -   667,     7,    20,   315,   441,     2,   715,  -339,  -339,   315, -    20,    78,   159,   321,   159,   441,   315,   439,   315,   131, -   580,   315,   496,   315,    30,   315,    34,   497,   441,   585, -   529,   498,   443,   441,    57,   441,   281,   441,   444,   442, -   281,    20,   446,    80,   586,   319,    81,    20,    51,     2, -   753,   139,   319,   619,   756,    78,   609,   748,   593,  -339, -   319,   121,   319,  -339,   281,   319,   316,   118,   320,   316, -   754,   359,   454,   739,   620,   320,   740,   609,   723,    78, -   570,   759,   485,   320,   571,   320,   552,    80,   320,   317, -    81,    20,   317,    32,   704,   318,   610,   495,   612,   748, -   603,   754,   316,   759,    35,   281,   629,   316,   281,   316, -    78,    80,   322,    32,    81,    20,   634,    32,   635,   122, -   639,    36,   645,   281,   321,   317,   607,    37,   766,   607, -   317,   321,   317,   770,    32,   772,   281,   773,   655,   321, -   669,   321,    80,   675,   321,    81,    20,   281,  -341,  -341, -   316,   140,     2,   609,   316,   676,   141,   142,    78,   677, -   281,   699,   319,   496,   720,   281,   725,   281,   497,   281, -  -495,  -495,   498,   317,   156,   404,   405,   317,   316,   406, -    78,   595,    20,  -496,  -496,   320,    35,   316,   738,    79, -    80,     4,    78,    81,    20,   368,   369,     5,   373,   374, -  -341,   317,   394,  -205,  -341,   378,   379,   380,   381,    37, -   317,   741,    80,   742,    35,    81,    20,   383,   384,   316, -    78,   743,   316,   322,    80,   157,   158,    81,    20,   744, -   322,   757,   522,   524,   526,   528,   769,   316,   322,   747, -   322,   321,   317,   322,   382,   317,   318,   391,   392,   318, -   316,   749,    80,  -405,  -405,    81,    20,   -15,  -406,  -406, -   317,   316,  -494,  -494,   360,   141,   142,   316,   430,   370, -   371,   372,   431,   317,   316,   758,   316,   764,   767,   316, -   771,   316,   318,   316,   317,   531,   775,   318,   776,   318, -   317,    33,    78,   375,   376,   377,   108,   317,   256,   317, -    75,   196,   317,   190,   317,   395,   317,   197,   254,  -494, -  -494,   360,   555,   319,   198,   361,   319,    73,   199,   362, -   467,   468,   469,   127,    80,   512,   514,    81,    20,   403, -   318,   200,   201,   664,   318,   202,   320,   533,   535,   320, -   322,   450,   156,   453,   204,   205,   206,   207,    78,   319, -   208,   209,   537,   665,   319,   -15,   319,    79,   318,     4, -  -494,  -494,   360,   650,   651,     5,   430,   318,   474,   539, -   362,   541,   320,   516,   518,   520,   543,   320,   545,   320, -    80,   698,     0,    81,    20,     0,   550,     0,     0,     0, -     0,     0,   321,   157,   255,   321,     0,   319,   -15,   318, -     0,   319,   318,  -494,  -494,   360,  -494,  -494,   360,   430, -     0,     0,   481,   636,     0,     0,   362,   318,     0,     0, -   320,  -494,  -494,   360,   320,   319,     0,   361,   321,     0, -   318,   431,     0,   321,   319,   321,   331,   331,   331,   331, -     0,   318,     0,     0,   331,   331,     0,   318,   320,     0, -     0,     0,     0,     0,   318,     0,   318,   320,     2,   318, -     0,   318,     0,   318,    78,     0,   319,     0,     0,   319, -     0,     0,     0,    79,     0,     4,   321,     0,     0,     0, -   321,     5,     0,     0,   319,     0,     0,     0,     0,   320, -     0,   322,   320,     0,   322,     0,    80,   319,     0,    81, -    20,     0,     0,     0,   321,     0,     0,   320,   319,     0, -    82,     0,     0,   321,   319,     0,     0,     0,     0,     0, -   320,   319,     0,   319,     0,     0,   319,   322,   319,     0, -   319,   320,   322,     0,   322,     0,     0,   320,     0,     0, -     0,     0,     0,     0,   320,   321,   320,     0,   321,   320, -     0,   320,     0,   320,     2,     0,   332,   332,   332,   332, -    78,     0,     0,   321,   332,   332,     0,     0,     0,    79, -     0,     4,     0,     0,     0,   322,   321,     5,     0,   322, -     0,     0,     0,     0,     0,     0,     0,   321,     0,     0, -     0,     0,    80,   321,     0,    81,    20,     0,     0,     0, -   321,     0,   321,   322,     0,   321,   126,   321,     0,   321, -     0,     0,   322,     0,   331,   331,   331,   331,   331,   331, -   331,   331,   331,   331,   331,   331,     0,   331,   331,   331, -   331,   331,   331,   331,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,   322,     0,     0,   322,     0,     0, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,   322,     0,     0,     0,     0,     0,     0,     0, -     0,     0,     0,     0,     0,   322,     0,     0,     0,     0, -     0,     0,     0,     0,     0,     0,   322,     0,     0,     0, -     0,     0,   322,     0,     0,     0,     0,     0,     0,   322, -     0,   322,     0,     0,   322,     0,   322,     0,   322,     0, -     0,   262,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,   331,     0,     0,     0,     0,     0,   331,     0, -     0,     0,     0,     0,   332,   332,   332,   332,   332,   332, -   332,   332,   332,   332,   332,   332,     0,   332,   332,   332, -   332,   332,   332,   332,   263,   194,   195,  -263,   264,   265, -    78,   266,     0,     0,   267,     0,     0,     0,   268,   196, -     0,     0,  -263,     0,     0,   269,   270,     5,   271,     0, -   272,   273,   198,   274,     0,     0,   275,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,     0, -     0,     0,   262,   276,     0,   157,  -263,     0,     0,   277, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +   330,   330,   330,   330,   330,   330,   418,   315,   631,  -155, +   423,    26,   450,   578,    84,    71,   454,   635,   634,   552, +   413,   475,   493,   696,   -65,   133,   501,   427,   696,   -65, +   696,   189,   696,   502,    67,    46,    28,   651,   699,   281, +    46,   639,   148,   699,   432,   699,   281,   699,   702,   745, +   646,   547,   652,   702,   281,   702,   281,   702,   637,   167, +   646,   407,   438,    53,    88,   642,   248,   -65,   645,   558, +    58,   157,   -65,    66,   434,   397,   420,    42,   189,   566, +  -138,   568,   -30,     1,   -28,     1,   653,   252,   -25,   -25, +   316,   493,   167,   330,   118,   465,    20,   316,   359,   330, +   673,   677,   424,   450,   137,   316,    98,   316,   455,  -157, +   316,   762,   450,   476,   591,    57,   593,   499,   684,   279, +    55,    20,   279,   253,    56,   503,     2,   317,     2,   -25, +   599,   433,   102,   640,   -25,   -25,   -25,     3,   134,     3, +   -25,   493,   647,     4,   -25,     4,   360,   245,    20,     5, +   361,     5,   731,   734,   362,    20,   281,   315,    20,     6, +   315,   726,   157,   404,   405,   -29,     1,   406,   728,   280, +   -32,     1,   280,   318,   109,   651,   112,   494,   730,   -34, +     1,     7,   149,     7,    57,   485,   151,   189,   328,   486, +   652,    20,   315,   340,   315,   -96,   133,   279,    35,   137, +   -96,   -96,   -96,   -96,   494,    20,    84,   316,   442,     2, +    30,   603,    34,   605,     2,    36,   445,    20,   446,   319, +     3,    37,   279,     2,   715,     3,     4,   618,   330,   330, +   685,     4,     5,   619,    51,   315,   619,     5,   317,   315, +     4,   579,   359,   495,   330,   317,     5,   280,   496,   -33, +     1,   441,   497,   317,   364,   317,    88,   154,   317,    20, +   315,    20,    20,   365,     7,   385,   179,    20,   315,     7, +   495,    20,   280,   -35,     1,   496,   180,   183,     7,   497, +   681,   140,   188,   279,   318,   279,   141,   142,   387,    20, +   -96,   318,   -96,     2,   323,   -96,   -96,   -96,   -96,   318, +   315,   318,   386,   315,   318,   343,   281,   100,   366,   281, +     4,   456,   441,   713,   106,   441,     5,     2,   460,   721, +   569,   315,   477,   315,   570,   478,   315,   177,   464,   359, +   319,  -495,  -495,   280,     4,   280,   388,   319,   441,   315, +     5,   613,    20,   400,   602,   319,   727,   319,     7,   131, +   319,   441,   619,   315,    78,   317,   528,   316,   494,   315, +   316,   121,    20,   320,   401,   441,   315,    20,   315,   439, +     2,   315,     7,   315,   458,   315,    78,  -153,   441,    20, +  -339,  -339,    57,   441,   281,   441,    80,   441,   281,    81, +    20,   117,   316,    20,   316,   753,    20,   138,   139,   756, +   729,   318,   443,    20,    35,    78,   619,   321,    80,   281, +    78,    81,    20,    20,   704,  -341,  -341,     2,   435,   122, +   178,    36,   688,    78,   495,   600,   469,    37,   600,   496, +   150,   153,  -339,   497,   484,   316,  -339,    80,    35,   316, +    81,    20,    80,    20,    78,    81,    20,   319,   453,   281, +   250,   139,   281,  -496,  -496,    80,   139,     2,    81,    20, +   316,   736,   551,    78,   737,   586,    32,  -341,   316,   584, +   281,  -341,   281,   596,   320,   281,    80,   368,   369,    81, +    20,   320,   373,   374,   322,   622,    32,   627,   281,   320, +    32,   320,   383,   384,   320,    80,   391,   392,    81,    20, +   316,   632,   281,   316,   628,   317,     2,    32,   317,   370, +   371,   372,    78,  -405,  -405,   281,  -406,  -406,   321,   638, +   281,   316,   281,   316,   281,   321,   316,   766,   378,   379, +   380,   381,   770,   321,   772,   321,   773,   648,   321,   316, +   317,   664,   317,   658,    80,   141,   142,    81,    20,   665, +   693,   318,   666,   316,   318,   709,   394,   511,   513,   316, +   521,   523,   525,   527,   602,   588,   316,   382,   316,   532, +   534,   316,   722,   316,   -15,   316,   375,   376,   377,  -494, +  -494,   360,   735,   317,     2,   430,   318,   317,   318,   431, +    78,   320,   466,   467,   468,   322,   738,   319,   -15,    79, +   319,     4,   322,  -494,  -494,   360,  -205,     5,   317,   430, +   322,   442,   322,   362,   445,   322,   317,    35,  -494,  -494, +   360,   741,    80,    78,   361,    81,    20,   739,   362,   318, +   757,   740,   319,   318,   319,   321,    82,   748,   -15,   747, +    37,   749,   758,  -494,  -494,   360,   769,   764,   317,   430, +   754,   317,   767,   629,   318,    80,   771,   775,    81,    20, +   776,   530,   318,    33,   759,    75,  -494,  -494,   360,   317, +   108,   317,   480,   256,   317,   319,   362,   693,   190,   319, +   395,   254,   748,   554,   754,    73,   759,   317,   127,  -494, +  -494,   360,   449,   403,   318,   361,   716,   318,   643,   431, +   319,   317,   717,   515,   517,   519,   452,   317,   319,   644, +   473,   540,   322,   549,   317,   318,   317,   318,   536,   317, +   318,   317,   538,   317,   687,   542,     0,     0,   544,     0, +     0,     0,     0,   318,     0,     0,     0,     0,     0,     0, +   319,   320,     0,   319,   320,     0,   615,   318,   192,   193, +     0,     0,     0,   318,     0,     0,     0,     0,     0,     0, +   318,   319,   318,   319,     0,   318,   319,   318,     0,   318, +     0,     0,     0,     0,     0,     0,   320,     0,   320,   319, +     0,     0,     0,     0,     0,   321,     0,     0,   321,     0, +   194,   195,     0,   319,     0,    78,     0,     0,     0,   319, +     0,     0,     0,     0,   196,     0,   319,     0,   319,     0, +   197,   319,     0,   319,     0,   319,     0,   198,     0,   320, +   321,   199,   321,   320,     0,     0,     0,    80,     0,     0, +    81,    20,     0,     0,   200,   201,     0,     0,   202,     0, +   203,   616,     0,     0,   320,     0,     0,   204,   205,   206, +   207,   156,   320,   208,   209,     0,     0,    78,     0,     0, +     0,     0,   322,   321,     0,   322,    79,   321,     4,     0, +     0,     0,     0,     0,     5,     0,     0,     0,     0,     0, +     0,     0,     0,     0,   320,     0,     0,   320,   321,    80, +     0,     0,    81,    20,     0,     0,   321,   322,     0,   322, +     0,     0,   157,   158,     0,   320,     0,   320,     0,     0, +   320,   331,   331,   331,   331,     0,     0,     0,     0,   331, +   331,     0,     0,   320,     0,     0,     0,     0,   321,     0, +     0,   321,     0,   332,   332,   332,   332,   320,     0,     0, +   322,   332,   332,   320,   322,     0,     0,     0,   575,   321, +   320,   321,   320,     0,   321,   320,     0,   320,     0,   320, +     0,     0,     0,     0,     0,   322,     0,   321,     0,     0, +     0,     0,     0,   322,     0,     0,     0,     0,     0,     0, +     0,   321,     0,     0,     0,     0,     0,   321,     0,     0, +     0,  -287,  -287,  -287,   321,     0,   321,  -287,     0,   321, +     0,   321,     0,   321,     0,   322,  -287,     0,   322,     0, +     0,     0,  -287,     0,     0,     0,     0,     0,     0,  -287, +     0,     0,     0,  -287,     0,     0,   322,     0,   322,  -287, +     0,   322,  -287,  -287,     0,     0,     0,     0,     0,     0, +  -287,     0,     0,     0,   322,     0,  -287,     0,     0,  -287, +  -287,  -287,  -287,     0,     0,  -287,  -287,     0,   322,     0, +     0,     0,     0,     0,   322,     0,     0,     0,     0,     0, +     0,   322,     0,   322,     0,     0,   322,     0,   322,     0, +   322,     0,     0,     0,     0,     0,     0,     0,     0,   331, +   331,   331,   331,   331,   331,   331,   331,   331,   331,   331, +   331,     0,   331,   331,   331,   331,   331,   331,   331,   262, +     0,   332,   332,   332,   332,   332,   332,   332,   332,   332, +   332,   332,   332,     0,   332,   332,   332,   332,   332,   332, +   332,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     0,     0,   332,     0,     0,   263,   194,   195,   332,   264, +     0,     0,   263,   194,   195,   651,   264,   265,    78,   266, +     0,     0,   267,     0,     0,     0,   268,   196,     0,     0, +   652,     0,     0,   269,   270,     5,   271,     0,   272,   273, +   198,   274,   262,     0,   275,     0,     0,     0,     0,     0, +    80,     0,     0,    81,    20,     0,   331,     0,     0,     0, +     0,   276,   331,   157,   718,     0,     0,   277,     0,     0, +   204,   205,   206,   207,     0,     0,   208,   209,   332,     0, +     0,     0,     0,     0,   332,   263,   194,   195,   651,   264,     265,    78,   266,     0,     0,   267,     0,     0,     0,   268, -   196,     0,     0,   331,   331,     0,   269,   270,     5,   271, -   262,   272,   273,   198,   274,     0,     0,   275,     0,   331, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -     0,     0,     0,     0,   276,     0,   157,   436,     0,     0, +   196,     0,     0,   652,     0,     0,   269,   270,     5,   271, +     0,   272,   273,   198,   274,   156,     0,   275,     0,     0, +     0,    78,     0,    80,     0,     0,    81,    20,     0,     0, +    79,     0,     4,     0,   276,     0,   157,   746,     5,     0,     277,     0,     0,   204,   205,   206,   207,     0,     0,   208, -   209,     0,     0,   263,   194,   195,     0,   264,   265,    78, -   266,     0,     0,   267,     0,     0,     0,   268,   196,     0, -     0,     0,     0,     0,   269,   270,     5,   271,     0,   272, -   273,   198,   274,   262,     0,   275,     0,     0,     0,     0, -     0,    80,     0,     0,    81,    20,     0,     0,     0,     0, -     0,     0,   276,     0,   157,     0,     0,     0,   277,     0, -     0,   204,   205,   206,   207,     0,     0,   208,   209,     0, -     0,     0,     0,   332,   332,     0,   440,   194,   195,     0, -   264,   265,    78,   266,     0,     0,   267,     0,     0,   332, -   268,   196,     0,     0,     0,     0,     0,   269,   270,   262, -   271,     0,   272,   273,   198,   274,     0,     0,   275,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,     0,     0,     0,     0,   276,     0,   157,     0,     0, -     0,   277,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   440,   194,   195,     0,   703,   265,    78,   266, +   209,   262,     0,    80,     0,     0,    81,    20,     0,     0, +     0,     0,     0,     0,     0,     0,   157,   255,     0,     0, +     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +     0,   331,   331,     0,   263,   194,   195,  -264,   264,   265, +    78,   266,     0,     0,   267,     0,     0,   331,   268,   196, +     0,     0,  -264,   332,   332,   269,   270,     5,   271,   262, +   272,   273,   198,   274,     0,     0,   275,     0,     0,   332, +     0,     0,    80,     0,     0,    81,    20,     0,     0,     0, +     0,     0,     0,   276,     0,   157,  -264,     0,     0,   277, +     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, +     0,     0,   263,   194,   195,     0,   264,   265,    78,   266,       0,     0,   267,     0,     0,     0,   268,   196,     0,     0, -     0,     0,     0,   269,   270,     0,   271,     0,   272,   273, -   198,   274,     0,   622,   275,   192,   193,     0,     0,     0, +     0,     0,     0,   269,   270,     5,   271,   262,   272,   273, +   198,   274,     0,     0,   275,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,     0,     0,     0, -     0,   276,     0,   157,     0,     0,     0,   277,     0,     0, +     0,   276,     0,   157,   436,     0,     0,   277,     0,     0,     204,   205,   206,   207,     0,     0,   208,   209,     0,     0, -     0,     0,     0,     0,     0,     0,     0,   194,   195,     0, -     0,     0,    78,     0,     0,     0,     0,     0,     0,     0, -     0,   196,     0,     0,     0,     0,     0,   197,   191,     0, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,   203,   623,     0, -     0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   414, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, +   263,   194,   195,     0,   264,   265,    78,   266,     0,     0, +   267,     0,     0,     0,   268,   196,     0,     0,     0,     0, +     0,   269,   270,     5,   271,   262,   272,   273,   198,   274, +     0,     0,   275,     0,     0,     0,     0,     0,    80,     0, +     0,    81,    20,     0,     0,     0,     0,     0,     0,   276, +     0,   157,     0,     0,     0,   277,     0,     0,   204,   205, +   206,   207,     0,     0,   208,   209,     0,     0,   440,   194, +   195,     0,   264,   265,    78,   266,     0,     0,   267,     0, +     0,     0,   268,   196,     0,     0,     0,     0,     0,   269, +   270,   262,   271,     0,   272,   273,   198,   274,     0,     0, +   275,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,     0,     0,     0,     0,   276,     0,   157, +     0,     0,     0,   277,     0,     0,   204,   205,   206,   207, +     0,     0,   208,   209,   440,   194,   195,     0,   692,   265, +    78,   266,     0,     0,   267,     0,     0,     0,   268,   196, +     0,     0,     0,     0,     0,   269,   270,     0,   271,     0, +   272,   273,   198,   274,     0,   191,   275,   192,   193,     0, +     0,     0,    80,     0,     0,    81,    20,     0,     0,     0, +     0,     0,     0,   276,     0,   157,     0,     0,     0,   277, +     2,     0,   204,   205,   206,   207,    78,     0,   208,   209, +     0,     0,     0,     0,     0,    79,     0,     4,     0,   194, +   195,     0,     0,     5,    78,     0,   414,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,    80,   197, +     0,    81,    20,     0,     0,     0,   198,     0,     0,     0, +   199,     0,   126,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,     0,   203, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,   545,     0,   192,   193,     0,     0,   198,     0,     0, +     0,   199,     0,     0,     0,     0,     0,    80,     0,     0, +    81,    20,     0,     0,   200,   201,     0,     0,   202,     0, +     0,     0,     0,     0,   415,     0,     0,   204,   205,   206, +   207,     0,     0,   208,   209,   194,   195,     0,     0,     0, +    78,     0,   492,     0,   192,   193,     0,     0,     0,   196, +     0,     0,     0,     0,     0,   197,     0,     0,     0,     0, +     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, +     0,     0,    80,     0,     0,    81,    20,     0,   546,   200, +   201,     0,     0,   202,     0,     0,   194,   195,     0,     0, +     0,    78,   204,   205,   206,   207,     0,     0,   208,   209, +   196,     0,     0,     0,     0,     0,   197,   581,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,   148, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,   589,     0, +   192,   193,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,     0,     0,     0,     0,   198,     0, +     0,     0,   199,     0,     0,     0,     0,     0,    80,     0, +     0,    81,    20,     0,     0,   200,   201,     0,     0,   202, +   582,     0,   194,   195,     0,     0,     0,    78,   204,   205, +   206,   207,     0,     0,   208,   209,   196,     0,     0,     0, +     0,     0,   197,   597,     0,   192,   193,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,     0,   203,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,   546,     0,   192,   193,     0,     0, +   202,     0,     0,     0,     0,     0,   590,     0,     0,   204, +   205,   206,   207,     0,     0,   208,   209,   194,   195,     0, +     0,     0,    78,     0,   606,     0,   192,   193,     0,     0, +     0,   196,     0,     0,     0,     0,     0,   197,     0,     0, +     0,     0,     0,     0,   198,     0,     0,     0,   199,     0, +     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, +     0,   200,   201,     0,     0,   202,     0,     0,   194,   195, +   598,     0,     0,    78,   204,   205,   206,   207,     0,     0, +   208,   209,   196,     0,     0,     0,     0,     0,   197,   492, +     0,   192,   193,     0,     0,   198,     0,     0,     0,   199, +     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, +     0,     0,   200,   201,     0,     0,   202,   607,     0,     0, +     0,     0,     0,     0,     0,   204,   205,   206,   207,     0, +     0,   208,   209,   194,   195,     0,     0,     0,    78,     0, +   581,     0,   192,   193,     0,     0,     0,   196,     0,     0, +     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,     0,     0,     0,     0,     0,   415,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,   493,     0,   192,   193,     0, -     0,     0,   196,     0,     0,     0,     0,     0,   197,     0, -     0,     0,     0,     0,     0,   198,     0,     0,     0,   199, -     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,   547,   200,   201,     0,     0,   202,     0,     0,   194, -   195,     0,     0,     0,    78,   204,   205,   206,   207,     0, -     0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -   582,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, -     0,     0,   148,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,   596,     0,   192,   193,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, +     0,   202,     0,     0,   194,   195,   598,     0,     0,    78, +   204,   205,   206,   207,     0,     0,   208,   209,   196,     0, +     0,     0,     0,     0,   197,   706,     0,   192,   193,     0,       0,   198,     0,     0,     0,   199,     0,     0,     0,     0,       0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,   583,     0,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,   604,     0,   192,   193, +     0,     0,   202,   690,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209,   194, +   195,     0,     0,     0,    78,     0,   706,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,     0,   197, +     0,     0,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,   707,     0, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,   589,     0,   192,   193,     0,     0,   198,     0,     0, +     0,   199,     0,     0,     0,     0,     0,    80,     0,     0, +    81,    20,     0,     0,   200,   201,     0,     0,   202,   750, +     0,     0,     0,     0,     0,     0,     0,   204,   205,   206, +   207,     0,     0,   208,   209,   194,   195,     0,     0,     0, +    78,     0,   329,     0,   192,   193,     0,     0,     0,   196, +     0,     0,     0,     0,     0,   197,     0,     0,     0,     0,       0,     0,   198,     0,     0,     0,   199,     0,     0,     0,       0,     0,    80,     0,     0,    81,    20,     0,     0,   200, -   201,     0,     0,   202,     0,     0,     0,     0,     0,   597, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -   194,   195,     0,     0,     0,    78,     0,   613,     0,   192, -   193,     0,     0,     0,   196,     0,     0,     0,     0,     0, -   197,     0,     0,     0,     0,     0,     0,   198,     0,     0, -     0,   199,     0,     0,     0,     0,     0,    80,     0,     0, -    81,    20,     0,     0,   200,   201,     0,     0,   202,     0, -     0,   194,   195,   605,     0,     0,    78,   204,   205,   206, -   207,     0,     0,   208,   209,   196,     0,     0,     0,     0, -     0,   197,   493,     0,   192,   193,     0,     0,   198,     0, +   201,     0,     0,   202,     0,     0,   194,   195,     0,   755, +     0,    78,   204,   205,   206,   207,     0,     0,   208,   209, +   196,     0,     0,     0,     0,     0,   197,   334,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,     0, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,   336,     0, +   192,   193,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,       0,     0,   199,     0,     0,     0,     0,     0,    80,     0,       0,    81,    20,     0,     0,   200,   201,     0,     0,   202, -   614,     0,     0,     0,     0,     0,     0,     0,   204,   205, -   206,   207,     0,     0,   208,   209,   194,   195,     0,     0, -     0,    78,     0,   582,     0,   192,   193,     0,     0,     0, -   196,     0,     0,     0,     0,     0,   197,     0,     0,     0, -     0,     0,     0,   198,     0,     0,     0,   199,     0,     0, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -   200,   201,     0,     0,   202,     0,     0,   194,   195,   605, -     0,     0,    78,   204,   205,   206,   207,     0,     0,   208, -   209,   196,     0,     0,     0,     0,     0,   197,   717,     0, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,   701,     0,     0,     0, -     0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   717, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, +     0,     0,   194,   195,     0,     0,     0,    78,   204,   205, +   206,   207,     0,     0,   208,   209,   196,     0,     0,     0, +     0,     0,   197,   338,     0,   192,   193,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,   718,     0,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,   596,     0,   192,   193,     0,     0, +   202,     0,     0,     0,     0,     0,     0,     0,     0,   204, +   205,   206,   207,     0,     0,   208,   209,   194,   195,     0, +     0,     0,    78,     0,   347,     0,   192,   193,     0,     0, +     0,   196,     0,     0,     0,     0,     0,   197,     0,     0, +     0,     0,     0,     0,   198,     0,     0,     0,   199,     0, +     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, +     0,   200,   201,     0,     0,   202,     0,     0,   194,   195, +     0,     0,     0,    78,   204,   205,   206,   207,     0,     0, +   208,   209,   196,     0,     0,     0,     0,     0,   197,   349, +     0,   192,   193,     0,     0,   198,     0,     0,     0,   199, +     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, +     0,     0,   200,   201,     0,     0,   202,     0,     0,     0, +     0,     0,     0,     0,     0,   204,   205,   206,   207,     0, +     0,   208,   209,   194,   195,     0,     0,     0,    78,     0, +   351,     0,   192,   193,     0,     0,     0,   196,     0,     0, +     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,   750,     0,     0,     0,     0,     0,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,   329,     0,   192,   193,     0, -     0,     0,   196,     0,     0,     0,     0,     0,   197,     0, -     0,     0,     0,     0,     0,   198,     0,     0,     0,   199, -     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,     0,   200,   201,     0,     0,   202,     0,     0,   194, -   195,     0,   755,     0,    78,   204,   205,   206,   207,     0, -     0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -   334,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, -     0,     0,     0,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,   336,     0,   192,   193,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, +     0,   202,     0,     0,   194,   195,     0,     0,     0,    78, +   204,   205,   206,   207,     0,     0,   208,   209,   196,     0, +     0,     0,     0,     0,   197,   409,     0,   192,   193,     0,       0,   198,     0,     0,     0,   199,     0,     0,     0,     0,       0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,     0,     0,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,   338,     0,   192,   193, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, -   201,     0,     0,   202,     0,     0,     0,     0,     0,     0, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -   194,   195,     0,     0,     0,    78,     0,   347,     0,   192, -   193,     0,     0,     0,   196,     0,     0,     0,     0,     0, -   197,     0,     0,     0,     0,     0,     0,   198,     0,     0, +     0,     0,   202,     0,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209,   194, +   195,     0,     0,     0,    78,     0,   492,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,     0,   197, +     0,     0,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,   500,     0,   192,   193,     0,     0,   198,     0,     0,       0,   199,     0,     0,     0,     0,     0,    80,     0,     0,      81,    20,     0,     0,   200,   201,     0,     0,   202,     0, -     0,   194,   195,     0,     0,     0,    78,   204,   205,   206, -   207,     0,     0,   208,   209,   196,     0,     0,     0,     0, -     0,   197,   349,     0,   192,   193,     0,     0,   198,     0, +     0,     0,     0,     0,     0,     0,     0,   204,   205,   206, +   207,     0,     0,   208,   209,   194,   195,     0,     0,     0, +    78,     0,   504,     0,   192,   193,     0,     0,     0,   196, +     0,     0,     0,     0,     0,   197,     0,     0,     0,     0, +     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, +     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, +   201,     0,     0,   202,     0,     0,   194,   195,     0,     0, +     0,    78,   204,   205,   206,   207,     0,     0,   208,   209, +   196,     0,     0,     0,     0,     0,   197,   506,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,     0, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,   508,     0, +   192,   193,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,       0,     0,   199,     0,     0,     0,     0,     0,    80,     0,       0,    81,    20,     0,     0,   200,   201,     0,     0,   202, -     0,     0,     0,     0,     0,     0,     0,     0,   204,   205, -   206,   207,     0,     0,   208,   209,   194,   195,     0,     0, -     0,    78,     0,   351,     0,   192,   193,     0,     0,     0, -   196,     0,     0,     0,     0,     0,   197,     0,     0,     0, -     0,     0,     0,   198,     0,     0,     0,   199,     0,     0, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -   200,   201,     0,     0,   202,     0,     0,   194,   195,     0, -     0,     0,    78,   204,   205,   206,   207,     0,     0,   208, -   209,   196,     0,     0,     0,     0,     0,   197,   409,     0, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,     0,     0,     0, -     0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   493, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, +     0,     0,   194,   195,     0,     0,     0,    78,   204,   205, +   206,   207,     0,     0,   208,   209,   196,     0,     0,     0, +     0,     0,   197,   510,     0,   192,   193,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,     0,     0,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,   501,     0,   192,   193,     0,     0, +   202,     0,     0,     0,     0,     0,     0,     0,     0,   204, +   205,   206,   207,     0,     0,   208,   209,   194,   195,     0, +     0,     0,    78,     0,   512,     0,   192,   193,     0,     0, +     0,   196,     0,     0,     0,     0,     0,   197,     0,     0, +     0,     0,     0,     0,   198,     0,     0,     0,   199,     0, +     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, +     0,   200,   201,     0,     0,   202,     0,     0,   194,   195, +     0,     0,     0,    78,   204,   205,   206,   207,     0,     0, +   208,   209,   196,     0,     0,     0,     0,     0,   197,   514, +     0,   192,   193,     0,     0,   198,     0,     0,     0,   199, +     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, +     0,     0,   200,   201,     0,     0,   202,     0,     0,     0, +     0,     0,     0,     0,     0,   204,   205,   206,   207,     0, +     0,   208,   209,   194,   195,     0,     0,     0,    78,     0, +   516,     0,   192,   193,     0,     0,     0,   196,     0,     0, +     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,     0,     0,     0,     0,     0,     0,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,   505,     0,   192,   193,     0, -     0,     0,   196,     0,     0,     0,     0,     0,   197,     0, -     0,     0,     0,     0,     0,   198,     0,     0,     0,   199, -     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,     0,   200,   201,     0,     0,   202,     0,     0,   194, -   195,     0,     0,     0,    78,   204,   205,   206,   207,     0, -     0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -   507,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, -     0,     0,     0,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,   509,     0,   192,   193,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, +     0,   202,     0,     0,   194,   195,     0,     0,     0,    78, +   204,   205,   206,   207,     0,     0,   208,   209,   196,     0, +     0,     0,     0,     0,   197,   518,     0,   192,   193,     0,       0,   198,     0,     0,     0,   199,     0,     0,     0,     0,       0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,     0,     0,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,   511,     0,   192,   193, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, -   201,     0,     0,   202,     0,     0,     0,     0,     0,     0, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -   194,   195,     0,     0,     0,    78,     0,   513,     0,   192, -   193,     0,     0,     0,   196,     0,     0,     0,     0,     0, -   197,     0,     0,     0,     0,     0,     0,   198,     0,     0, +     0,     0,   202,     0,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209,   194, +   195,     0,     0,     0,    78,     0,   520,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,     0,   197, +     0,     0,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,   522,     0,   192,   193,     0,     0,   198,     0,     0,       0,   199,     0,     0,     0,     0,     0,    80,     0,     0,      81,    20,     0,     0,   200,   201,     0,     0,   202,     0, -     0,   194,   195,     0,     0,     0,    78,   204,   205,   206, -   207,     0,     0,   208,   209,   196,     0,     0,     0,     0, -     0,   197,   515,     0,   192,   193,     0,     0,   198,     0, +     0,     0,     0,     0,     0,     0,     0,   204,   205,   206, +   207,     0,     0,   208,   209,   194,   195,     0,     0,     0, +    78,     0,   524,     0,   192,   193,     0,     0,     0,   196, +     0,     0,     0,     0,     0,   197,     0,     0,     0,     0, +     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, +     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, +   201,     0,     0,   202,     0,     0,   194,   195,     0,     0, +     0,    78,   204,   205,   206,   207,     0,     0,   208,   209, +   196,     0,     0,     0,     0,     0,   197,   526,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,     0, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,   531,     0, +   192,   193,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,       0,     0,   199,     0,     0,     0,     0,     0,    80,     0,       0,    81,    20,     0,     0,   200,   201,     0,     0,   202, -     0,     0,     0,     0,     0,     0,     0,     0,   204,   205, -   206,   207,     0,     0,   208,   209,   194,   195,     0,     0, -     0,    78,     0,   517,     0,   192,   193,     0,     0,     0, -   196,     0,     0,     0,     0,     0,   197,     0,     0,     0, -     0,     0,     0,   198,     0,     0,     0,   199,     0,     0, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -   200,   201,     0,     0,   202,     0,     0,   194,   195,     0, -     0,     0,    78,   204,   205,   206,   207,     0,     0,   208, -   209,   196,     0,     0,     0,     0,     0,   197,   519,     0, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,     0,     0,     0, -     0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   521, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, +     0,     0,   194,   195,     0,     0,     0,    78,   204,   205, +   206,   207,     0,     0,   208,   209,   196,     0,     0,     0, +     0,     0,   197,   533,     0,   192,   193,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,     0,     0,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,   523,     0,   192,   193,     0,     0, +   202,     0,     0,     0,     0,     0,     0,     0,     0,   204, +   205,   206,   207,     0,     0,   208,   209,   194,   195,     0, +     0,     0,    78,     0,   535,     0,   192,   193,     0,     0, +     0,   196,     0,     0,     0,     0,     0,   197,     0,     0, +     0,     0,     0,     0,   198,     0,     0,     0,   199,     0, +     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, +     0,   200,   201,     0,     0,   202,     0,     0,   194,   195, +     0,     0,     0,    78,   204,   205,   206,   207,     0,     0, +   208,   209,   196,     0,     0,     0,     0,     0,   197,   537, +     0,   192,   193,     0,     0,   198,     0,     0,     0,   199, +     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, +     0,     0,   200,   201,     0,     0,   202,     0,     0,     0, +     0,     0,     0,     0,     0,   204,   205,   206,   207,     0, +     0,   208,   209,   194,   195,     0,     0,     0,    78,     0, +   539,     0,   192,   193,     0,     0,     0,   196,     0,     0, +     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,     0,     0,     0,     0,     0,     0,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,   525,     0,   192,   193,     0, -     0,     0,   196,     0,     0,     0,     0,     0,   197,     0, -     0,     0,     0,     0,     0,   198,     0,     0,     0,   199, -     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,     0,   200,   201,     0,     0,   202,     0,     0,   194, -   195,     0,     0,     0,    78,   204,   205,   206,   207,     0, -     0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -   527,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, -     0,     0,     0,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,   532,     0,   192,   193,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, +     0,   202,     0,     0,   194,   195,     0,     0,     0,    78, +   204,   205,   206,   207,     0,     0,   208,   209,   196,     0, +     0,     0,     0,     0,   197,   541,     0,   192,   193,     0,       0,   198,     0,     0,     0,   199,     0,     0,     0,     0,       0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,     0,     0,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,   534,     0,   192,   193, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, -   201,     0,     0,   202,     0,     0,     0,     0,     0,     0, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -   194,   195,     0,     0,     0,    78,     0,   536,     0,   192, -   193,     0,     0,     0,   196,     0,     0,     0,     0,     0, -   197,     0,     0,     0,     0,     0,     0,   198,     0,     0, +     0,     0,   202,     0,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209,   194, +   195,     0,     0,     0,    78,     0,   543,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,     0,   197, +     0,     0,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,   548,     0,   192,   193,     0,     0,   198,     0,     0,       0,   199,     0,     0,     0,     0,     0,    80,     0,     0,      81,    20,     0,     0,   200,   201,     0,     0,   202,     0, -     0,   194,   195,     0,     0,     0,    78,   204,   205,   206, -   207,     0,     0,   208,   209,   196,     0,     0,     0,     0, -     0,   197,   538,     0,   192,   193,     0,     0,   198,     0, +     0,     0,     0,     0,     0,     0,     0,   204,   205,   206, +   207,     0,     0,   208,   209,   194,   195,     0,     0,     0, +    78,     0,   557,     0,   192,   193,     0,     0,     0,   196, +     0,     0,     0,     0,     0,   197,     0,     0,     0,     0, +     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, +     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, +   201,     0,     0,   202,     0,     0,   194,   195,     0,     0, +     0,    78,   204,   205,   206,   207,     0,     0,   208,   209, +   196,     0,     0,     0,     0,     0,   197,   565,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,     0, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,   567,     0, +   192,   193,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,     0,     0,     0,     0,   198,     0,       0,     0,   199,     0,     0,     0,     0,     0,    80,     0,       0,    81,    20,     0,     0,   200,   201,     0,     0,   202, -     0,     0,     0,     0,     0,     0,     0,     0,   204,   205, -   206,   207,     0,     0,   208,   209,   194,   195,     0,     0, -     0,    78,     0,   540,     0,   192,   193,     0,     0,     0, -   196,     0,     0,     0,     0,     0,   197,     0,     0,     0, -     0,     0,     0,   198,     0,     0,     0,   199,     0,     0, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -   200,   201,     0,     0,   202,     0,     0,   194,   195,     0, -     0,     0,    78,   204,   205,   206,   207,     0,     0,   208, -   209,   196,     0,     0,     0,     0,     0,   197,   542,     0, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,     0,     0,     0, -     0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   544, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, +     0,     0,   194,   195,     0,     0,     0,    78,   204,   205, +   206,   207,     0,     0,   208,   209,   196,     0,     0,     0, +     0,     0,   197,   592,     0,   192,   193,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,     0,     0,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,   549,     0,   192,   193,     0,     0, +   202,     0,     0,     0,     0,     0,     0,     0,     0,   204, +   205,   206,   207,     0,     0,   208,   209,   194,   195,     0, +     0,     0,    78,     0,   609,     0,   192,   193,     0,     0, +     0,   196,     0,     0,     0,     0,     0,   197,     0,     0, +     0,     0,     0,     0,   198,     0,     0,     0,   199,     0, +     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, +     0,   200,   201,     0,     0,   202,     0,     0,   194,   195, +     0,     0,     0,    78,   204,   205,   206,   207,     0,     0, +   208,   209,   196,     0,     0,     0,     0,     0,   197,   676, +     0,   192,   193,     0,     0,   198,     0,     0,     0,   199, +     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, +     0,     0,   200,   201,     0,     0,   202,     0,     0,     0, +     0,     0,     0,     0,     0,   204,   205,   206,   207,     0, +     0,   208,   209,   194,   195,     0,     0,     0,    78,     0, +   680,     0,   192,   193,     0,     0,     0,   196,     0,     0, +     0,     0,     0,   197,     0,     0,     0,     0,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,     0,     0,     0,     0,     0,     0,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,   558,     0,   192,   193,     0, -     0,     0,   196,     0,     0,     0,     0,     0,   197,     0, -     0,     0,     0,     0,     0,   198,     0,     0,     0,   199, -     0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,     0,   200,   201,     0,     0,   202,     0,     0,   194, -   195,     0,     0,     0,    78,   204,   205,   206,   207,     0, -     0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -   566,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,     0,     0, -     0,     0,     0,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,   568,     0,   192,   193,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, +     0,   202,     0,     0,   194,   195,     0,     0,     0,    78, +   204,   205,   206,   207,     0,     0,   208,   209,   196,     0, +     0,     0,     0,     0,   197,   686,     0,   192,   193,     0,       0,   198,     0,     0,     0,   199,     0,     0,     0,     0,       0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,     0,     0,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,   599,     0,   192,   193, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,   200, -   201,     0,     0,   202,     0,     0,     0,     0,     0,     0, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209, -   194,   195,     0,     0,     0,    78,     0,   616,     0,   192, -   193,     0,     0,     0,   196,     0,     0,     0,     0,     0, -   197,     0,     0,     0,     0,     0,     0,   198,     0,     0, +     0,     0,   202,     0,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209,   194, +   195,     0,     0,     0,    78,     0,   712,     0,   192,   193, +     0,     0,     0,   196,     0,     0,     0,     0,     0,   197, +     0,     0,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,   200,   201,     0,     0,   202,   661,     0, +   194,   195,     0,     0,     0,    78,   204,   205,   206,   207, +     0,     0,   208,   209,   196,     0,     0,     0,     0,     0, +   197,     0,     0,   723,     0,     0,     0,   198,     0,     0,       0,   199,     0,     0,     0,     0,     0,    80,     0,     0, -    81,    20,     0,     0,   200,   201,     0,     0,   202,     0, -     0,   194,   195,     0,     0,     0,    78,   204,   205,   206, -   207,     0,     0,   208,   209,   196,     0,     0,     0,     0, -     0,   197,   660,     0,   192,   193,     0,     0,   198,     0, +    81,    20,   194,   195,   200,   201,     0,    78,   202,     0, +     0,     0,     0,     0,     0,     0,   196,   204,   205,   206, +   207,     0,   197,   208,   209,   659,     0,   194,   195,   198, +     0,     0,    78,   199,     0,     0,     0,     0,     0,    80, +     0,   196,    81,    20,     0,     0,     0,   197,     0,     0, +   276,  -295,     0,     0,   198,     0,     0,     0,   199,   204, +   205,   206,   207,     0,    80,   208,   209,    81,    20,   194, +   195,     0,   678,     0,    78,   276,  -295,     0,     0,     0, +     0,     0,     0,   196,   204,   205,   206,   207,     0,   197, +   208,   209,     0,     0,     0,     0,   198,     0,     0,     0, +   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, +    20,     0,     0,     0,     0,     0,     0,   276,     0,     0, +     0,    78,     0,     0,     0,     0,   204,   205,   206,   207, +   196,     0,   208,   209,     0,     0,   197,     0,     0,   192, +   193,     0,     0,   198,     0,     0,     0,   199,     0,     0, +     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, +   200,   201,     0,     0,   202,     0,     0,     0,     0,     0, +     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, +   209,   194,   195,     0,     0,     0,    78,     0,     0,     0, +     0,     0,     0,     0,     0,   196,     0,     0,     0,     0, +     0,   197,     0,     0,   192,   193,     0,     0,   198,     0,       0,     0,   199,     0,     0,     0,     0,     0,    80,     0,       0,    81,    20,     0,     0,   200,   201,     0,     0,   202, -     0,     0,     0,     0,     0,     0,     0,     0,   204,   205, +     0,   203,   355,     0,     0,     0,   356,     0,   204,   205,     206,   207,     0,     0,   208,   209,   194,   195,     0,     0, -     0,    78,     0,   687,     0,   192,   193,     0,     0,     0, +     0,    78,     0,     0,     0,   192,   193,     0,     0,     0,     196,     0,     0,     0,     0,     0,   197,     0,     0,     0,       0,     0,     0,   198,     0,     0,     0,   199,     0,     0,       0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -   200,   201,     0,     0,   202,     0,     0,   194,   195,     0, +   200,   201,     0,     0,   202,   489,     0,   194,   195,     0,       0,     0,    78,   204,   205,   206,   207,     0,     0,   208, -   209,   196,     0,     0,     0,     0,     0,   197,   691,     0, +   209,   196,     0,     0,     0,     0,     0,   197,     0,     0,     192,   193,     0,     0,   198,     0,     0,     0,   199,     0,       0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,     0,     0,     0, +     0,   200,   201,     0,     0,   202,   625,     0,     0,     0,       0,     0,     0,     0,   204,   205,   206,   207,     0,     0, -   208,   209,   194,   195,     0,     0,     0,    78,     0,   697, -     0,   192,   193,     0,     0,     0,   196,     0,     0,     0, -     0,     0,   197,     0,     0,     0,     0,     0,     0,   198, -     0,     0,     0,   199,     0,     0,     0,     0,     0,    80, -     0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,     0,     0,   194,   195,     0,     0,     0,    78,   204, -   205,   206,   207,     0,     0,   208,   209,   196,     0,     0, -     0,     0,     0,   197,     0,   576,     0,     0,     0,     0, -   198,     0,     0,     0,   199,     0,     0,     0,     0,     0, -    80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -   672,   202,     0,     0,     0,     0,     0,     0,     0,     0, -   204,   205,   206,   207,     0,     0,   208,   209,  -287,  -287, -  -287,     0,     0,     0,  -287,     0,     0,     0,     0,     0, -     0,     0,     0,  -287,     0,     0,     0,     0,     0,  -287, -     0,     0,   726,     0,   194,   195,  -287,     0,     0,    78, -  -287,     0,     0,     0,     0,     0,  -287,     0,   196,  -287, -  -287,     0,     0,     0,   197,     0,     0,  -287,     0,     0, -     0,   198,     0,  -287,     0,   199,  -287,  -287,  -287,  -287, -     0,    80,  -287,  -287,    81,    20,   194,   195,     0,     0, -     0,    78,   276,  -295,     0,     0,     0,     0,     0,     0, -   196,   204,   205,   206,   207,     0,   197,   208,   209,   670, -     0,     0,     0,   198,     0,     0,     0,   199,     0,     0, -     0,     0,     0,    80,     0,     0,    81,    20,     0,     0, -     0,     0,     0,     0,   276,  -295,     0,     0,     0,     0, -     0,     0,     0,   204,   205,   206,   207,     0,     0,   208, -   209,   689,     0,   194,   195,     0,     0,     0,    78,     0, -     0,     0,     0,     0,     0,     0,     0,   196,     0,     0, -     0,     0,     0,   197,     0,     0,     0,     0,     0,     0, -   198,     0,     0,     0,   199,     0,     0,     0,     0,     0, -    80,     0,     0,    81,    20,   192,   193,     0,     0,     0, -    78,   276,     0,     0,     0,     0,     0,     0,     0,   196, -   204,   205,   206,   207,     0,   197,   208,   209,     0,     0, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,   194,   195,   200, -   201,     0,    78,   202,     0,     0,     0,     0,     0,     0, -     0,   196,   204,   205,   206,   207,     0,   197,   208,   209, -   192,   193,     0,     0,   198,     0,     0,     0,   199,     0, -     0,     0,     0,     0,    80,     0,     0,    81,    20,     0, -     0,   200,   201,     0,     0,   202,     0,   203,   355,     0, -     0,     0,   356,     0,   204,   205,   206,   207,     0,     0,     208,   209,   194,   195,     0,     0,     0,    78,     0,     0,       0,   192,   193,     0,     0,     0,   196,     0,     0,     0,       0,     0,   197,     0,     0,     0,     0,     0,     0,   198,       0,     0,     0,   199,     0,     0,     0,     0,     0,    80,       0,     0,    81,    20,     0,     0,   200,   201,     0,     0, -   202,   490,     0,   194,   195,     0,     0,     0,    78,   204, +   202,   667,     0,   194,   195,     0,     0,     0,    78,   204,     205,   206,   207,     0,     0,   208,   209,   196,     0,     0,       0,     0,     0,   197,     0,     0,   192,   193,     0,     0,     198,     0,     0,     0,   199,     0,     0,     0,     0,     0,      80,     0,     0,    81,    20,     0,     0,   200,   201,     0, -     0,   202,   632,     0,     0,     0,     0,     0,     0,     0, +     0,   202,   682,     0,     0,     0,     0,     0,     0,     0,     204,   205,   206,   207,     0,     0,   208,   209,   194,   195, -     0,     0,     0,    78,     0,     0,     0,   192,   193,     0, +     0,     0,     0,    78,     0,     0,     0,     0,     0,     0,       0,     0,   196,     0,     0,     0,     0,     0,   197,     0,       0,     0,     0,     0,     0,   198,     0,     0,     0,   199,       0,     0,     0,     0,     0,    80,     0,     0,    81,    20, -     0,     0,   200,   201,     0,     0,   202,   678,     0,   194, +     0,     0,   200,   201,     0,     0,   202,     0,     2,   194,     195,     0,     0,     0,    78,   204,   205,   206,   207,     0,       0,   208,   209,   196,     0,     0,     0,     0,     0,   197, -     0,     0,   192,   193,     0,     0,   198,     0,     0,     0, -   199,     0,     0,     0,     0,     0,    80,     0,     0,    81, -    20,     0,     0,   200,   201,     0,     0,   202,   693,     0, -     0,     0,     0,     0,     0,     0,   204,   205,   206,   207, -     0,     0,   208,   209,   194,   195,     0,     0,     0,    78, -     0,     0,     0,     0,     0,     0,     0,     0,   196,     0, -     0,     0,     0,     0,   197,     0,     0,     0,     0,     0, -     0,   198,     0,     0,     0,   199,     0,     0,     0,     0, -     0,    80,     0,     0,    81,    20,     0,     0,   200,   201, -     0,     0,   202,     0,     2,   194,   195,     0,     0,     0, -    78,   204,   205,   206,   207,     0,     0,   208,   209,   196, -     0,     0,     0,     0,     0,   197,     0,     0,     0,     0, -     0,     0,   198,     0,     0,     0,   199,     0,     0,     0, -     0,     0,    80,     0,     0,    81,    20,     0,     0,     0, -     0,     0,     0,   276,     0,     0,     0,     0,     0,     0, -     0,     0,   204,   205,   206,   207,     0,     0,   208,   209 +     0,     0,     0,     0,     0,     0,   198,     0,     0,    78, +   199,     0,     0,     0,     0,     0,    80,     0,   196,    81, +    20,     0,     0,     0,   197,     0,     0,   276,     0,     0, +     0,   198,     0,     0,     0,   199,   204,   205,   206,   207, +     0,    80,   208,   209,    81,    20,     0,     0,   200,   201, +     0,     0,   202,     0,     0,     0,     0,     0,     0,     0, +     0,   204,   205,   206,   207,     0,     0,   208,   209  };  static const short yycheck[] = {     3, -   327,    62,     6,    62,   484,   179,   132,   123,    62,    62, -   286,   203,     1,     1,   134,   403,     1,   129,   117,   403, -     0,     1,     1,   306,    15,   591,    94,     1,     1,   129, -    86,     1,   100,    94,     1,    94,    89,     1,    42,    62, -    94,    94,    46,    83,   192,   193,   194,   195,    95,     1, -   162,   150,   200,   201,   153,   642,     1,   169,    62,     1, -    64,    53,   162,    72,    44,    69,    89,     1,   129,   100, -   129,    94,     1,   172,    52,   129,   129,    86,   198,   133, -   133,    61,   122,   123,   345,    89,     1,    67,     1,   101, -    94,   352,   353,    67,   435,     1,    87,    67,     1,   665, -    97,   162,     1,   162,    93,    97,   129,   160,   162,   162, -   133,    99,   101,   101,   175,    94,   101,     1,    52,    99, -   707,   175,   175,   710,   128,   129,    99,   180,   101,   133, -   134,    98,     4,     5,    98,     1,   477,   160,     1,   162, -   620,     1,     0,     1,    97,   198,   258,    99,   100,   202, -    42,   325,    94,    98,    46,   254,   160,   180,   162,   175, -   272,    95,   278,   504,    36,    37,   554,     1,    40,    98, -   554,   175,    64,   557,     1,   762,   180,    69,    50,    94, -   767,    94,   769,   140,   771,   100,    44,   100,   192,   193, -   194,   195,    95,    99,   198,    94,   200,   201,   202,   253, -   253,   100,   590,    61,     1,     1,   100,    79,   328,    67, -   471,    83,     1,   474,    94,    99,   100,     1,   642,     1, -    95,   101,   370,   371,   372,   286,    86,     1,    94,   282, -   253,    94,   286,   286,   100,     1,   128,   100,     1,    99, -     1,    99,   134,   129,     1,   202,   203,     1,    93,   253, -   122,   123,   306,   306,   638,     1,     1,     1,    92,   282, -    94,     1,   603,    97,    98,    99,   100,   139,    95,    94, -   286,     1,    99,   327,   327,   100,   162,   293,   282,    98, -    97,   557,   286,   707,   101,   301,   710,   303,   629,   293, -   306,   642,    88,     1,     1,   487,     1,   301,   639,   303, -     1,    98,   306,   175,   327,     1,   198,   179,   265,     1, -    99,   268,   595,   654,   597,    99,     1,    99,   434,   276, -   647,   642,     1,   327,   328,    99,    92,    93,     1,   382, -   478,    97,    98,    99,   100,     1,    99,    98,   762,   675, -    86,    98,   403,   767,    98,   769,   218,   771,     1,   403, -   403,    95,     1,    99,    99,   293,   707,     1,    98,   710, -     1,     1,   638,   301,    94,   303,   370,   371,   372,   373, +   327,   403,     6,   203,   129,   132,   179,    62,    62,   286, +   175,     1,   134,   483,   435,     1,     0,     9,     1,   123, +     1,     1,    86,   664,     1,     9,    10,    11,    64,     1, +     1,    72,     1,    69,   306,    89,     1,   162,    42,    94, +    94,    33,    46,    95,   169,    86,    30,   117,     1,    33, +    34,    94,    97,   129,    97,   476,   101,    53,    62,     1, +    64,   192,   193,   194,   195,    69,     1,    51,    62,   200, +   201,    94,   100,     1,   129,   129,   198,   100,    62,   133, +   150,     1,   503,   153,   160,    89,   162,    67,     1,     1, +    94,    52,   128,    94,     1,    89,   345,     1,    67,   100, +    94,    97,   172,   352,   353,     1,   160,   162,   162,    99, +    94,   101,    93,    99,   755,   101,     1,    88,   101,     1, +   101,   175,    99,   764,   128,   129,   180,    99,    42,   133, +   134,     0,    46,   258,    99,   129,     1,     4,     5,   133, +     9,    10,    11,   613,   198,   129,    99,   272,   202,   133, +    64,   553,   325,    95,   556,    69,   160,    99,   162,   175, +     1,    30,     1,    98,    33,    34,   160,    95,   162,    36, +    37,   175,     1,    40,   278,   596,   180,     1,   162,    99, +   100,   140,    51,    50,   254,    98,   180,    99,   192,   193, +   194,   195,    99,    62,   198,    99,   200,   201,   202,   253, +   635,   622,     1,    99,     0,     1,   328,     1,    15,    94, +     1,   632,    79,   656,   128,   100,    83,    99,   100,     1, +   134,   470,     1,    94,   473,    94,   647,     1,   282,   631, +   101,     1,   286,    95,    99,    97,     1,     1,   403,   370, +   371,   372,     1,   202,   203,     1,    97,     1,    44,   253, +     1,     1,   306,     1,    93,   122,   123,    86,    99,   253, +   129,   696,    86,     1,   699,    61,     1,   101,     1,   253, +   286,    67,   139,   327,   717,    99,   635,   293,   282,   556, +    87,   129,   286,    97,   198,   301,   486,   303,   282,   293, +   306,   635,    86,   162,     1,     1,    95,   301,    52,   303, +     1,   635,   306,    99,     1,    99,   265,    98,   175,   268, +   731,    93,   179,   640,   162,    94,   588,   276,   590,   100, +    94,   100,   306,   327,   328,    95,   100,   762,   382,    94, +   434,    95,   767,   327,   769,   100,   771,   696,    94,    98, +   699,    95,     1,   327,   100,     1,   477,    98,    98,   403, +    98,   218,   696,     1,   631,   699,    95,    63,     1,   175, +    98,    94,   696,    98,     1,   699,   370,   371,   372,   373,     374,   375,   376,   377,   378,   379,   380,   381,   382,   383, -   384,   385,   386,   387,   388,   389,   707,   403,    95,   710, -   666,    99,   675,   734,    99,   267,   449,    93,    99,   403, -     1,    94,   274,    95,   361,    95,   278,   100,   365,    94, -    63,   762,    52,     1,   286,    94,   767,   175,   769,   755, -   771,   293,    63,    63,     0,     1,   449,    93,   764,   301, -     1,   303,     1,   390,     1,    95,   328,    96,    64,    99, -   175,   762,    95,    69,    93,   449,   767,     1,   769,    93, -   771,   408,     1,   325,    95,    95,    95,     1,    97,   571, -     1,   418,   574,   420,    52,     0,     1,    95,    44,     1, -   342,   619,   755,   430,   478,    63,    93,    44,     1,    55, -   484,   764,     5,    50,     1,    61,     1,    88,   614,    53, -   362,    67,   364,   554,   100,     1,   557,   454,     1,   456, -   554,   554,   128,   557,   557,     1,   632,    95,    93,    44, -     1,     1,    97,   470,     1,    82,   101,    86,    85,    86, -    55,     1,    93,    99,   481,     1,    61,    94,   286,   590, -   487,   403,    67,    99,   100,   293,   590,   590,   554,    93, -    75,   557,     1,   301,    93,   303,    99,   100,   306,    93, -   554,   286,    93,   557,     1,    45,    46,    97,   293,   431, -   686,    93,   434,    86,    99,   677,   301,    94,   303,    86, -   696,   306,     1,   100,   590,     0,     1,   638,    93,   595, -     1,   597,     1,    86,   638,   638,   590,    93,     1,   101, -    86,     0,     1,   647,   647,    86,    86,   175,    88,    86, -   101,    91,    92,    93,     1,   666,    86,    97,    94,   101, -    86,   101,   666,   666,   100,   619,   620,     0,     1,    44, -     1,    50,   638,    11,   647,     1,   642,    86,     1,   586, -    55,   635,     0,     1,   638,    44,    61,    44,   642,    86, -    12,     1,    67,   647,     1,   403,    55,     1,    47,    13, -   666,    47,    61,    82,    61,     1,    85,    86,    67,   675, -    67,    44,   666,    62,   175,    86,    62,    86,   403,   626, -    67,     9,    14,    86,    99,    72,    44,    94,    61,    76, -    95,    47,   554,   100,    67,   557,     1,   175,    99,    86, -    99,   707,     1,    61,   710,    33,    62,    96,    96,    67, -    96,    93,   100,   707,   642,    86,   710,    65,   286,   725, -    86,   129,   669,    86,    72,   293,    99,    94,   590,    93, -    97,   725,   738,   301,   101,   303,    86,    97,   306,    86, -    96,    99,    86,   749,   738,    44,     1,    45,    46,   755, -    86,    50,   160,   175,   162,   749,   762,    99,   764,   107, -    65,   767,    67,   769,     9,   771,    11,    72,   762,    47, -     1,    76,    99,   767,   636,   769,   638,   771,    95,   707, -   642,    86,   710,    82,    62,   286,    85,    86,    33,    44, -   737,   100,   293,    94,   741,    50,    97,   725,    66,    97, -   301,     1,   303,   101,   666,   306,   554,    97,   286,   557, -   738,   101,    99,   707,    94,   293,   710,    97,    96,    50, -    60,   749,    96,   301,    64,   303,    99,    82,   306,   554, -    85,    86,   557,    10,   762,   403,   473,     1,   475,   767, -    93,   769,   590,   771,    44,   707,    93,   595,   710,   597, -    50,    82,   175,    30,    85,    86,     1,    34,    88,    59, -    93,    61,    94,   725,   286,   590,   471,    67,   762,   474, -   595,   293,   597,   767,    51,   769,   738,   771,     1,   301, -    93,   303,    82,    99,   306,    85,    86,   749,    45,    46, -   638,    92,    44,    97,   642,    94,    97,    98,    50,    94, -   762,    65,   403,    67,     1,   767,    94,   769,    72,   771, -    91,    92,    76,   638,    44,    95,    96,   642,   666,    99, -    50,   100,    86,    91,    92,   403,    44,   675,    56,    59, -    82,    61,    50,    85,    86,    45,    46,    67,     3,     4, -    97,   666,    94,    56,   101,    18,    19,    20,    21,    67, -   675,    99,    82,    94,    44,    85,    86,    16,    17,   707, -    50,    94,   710,   286,    82,    95,    96,    85,    86,     1, -   293,     1,   378,   379,   380,   381,    56,   725,   301,    94, -   303,   403,   707,   306,    57,   710,   554,    91,    92,   557, -   738,    94,    82,    45,    46,    85,    86,    86,    45,    46, -   725,   749,    91,    92,    93,    97,    98,   755,    97,     5, -     6,     7,   101,   738,   762,    99,   764,    99,    94,   767, -    94,   769,   590,   771,   749,   382,     0,   595,     0,   597, -   755,    11,    50,     8,     9,    10,    75,   762,   162,   764, -    54,    59,   767,   139,   769,   253,   771,    65,   160,    91, -    92,    93,   403,   554,    72,    97,   557,    52,    76,   101, -    97,    98,    99,    94,    82,   373,   374,    85,    86,   260, -   638,    89,    90,   588,   642,    93,   554,   383,   384,   557, -   403,   306,    44,   306,   102,   103,   104,   105,    50,   590, -   108,   109,   385,   588,   595,    86,   597,    59,   666,    61, -    91,    92,    93,   572,   572,    67,    97,   675,   345,   386, -   101,   387,   590,   375,   376,   377,   388,   595,   389,   597, -    82,   635,    -1,    85,    86,    -1,   393,    -1,    -1,    -1, -    -1,    -1,   554,    95,    96,   557,    -1,   638,    86,   707, -    -1,   642,   710,    91,    92,    93,    91,    92,    93,    97, -    -1,    -1,    97,   101,    -1,    -1,   101,   725,    -1,    -1, -   638,    91,    92,    93,   642,   666,    -1,    97,   590,    -1, -   738,   101,    -1,   595,   675,   597,   192,   193,   194,   195, -    -1,   749,    -1,    -1,   200,   201,    -1,   755,   666,    -1, -    -1,    -1,    -1,    -1,   762,    -1,   764,   675,    44,   767, -    -1,   769,    -1,   771,    50,    -1,   707,    -1,    -1,   710, -    -1,    -1,    -1,    59,    -1,    61,   638,    -1,    -1,    -1, -   642,    67,    -1,    -1,   725,    -1,    -1,    -1,    -1,   707, -    -1,   554,   710,    -1,   557,    -1,    82,   738,    -1,    85, -    86,    -1,    -1,    -1,   666,    -1,    -1,   725,   749,    -1, -    96,    -1,    -1,   675,   755,    -1,    -1,    -1,    -1,    -1, -   738,   762,    -1,   764,    -1,    -1,   767,   590,   769,    -1, -   771,   749,   595,    -1,   597,    -1,    -1,   755,    -1,    -1, -    -1,    -1,    -1,    -1,   762,   707,   764,    -1,   710,   767, -    -1,   769,    -1,   771,    44,    -1,   192,   193,   194,   195, -    50,    -1,    -1,   725,   200,   201,    -1,    -1,    -1,    59, -    -1,    61,    -1,    -1,    -1,   638,   738,    67,    -1,   642, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,   749,    -1,    -1, -    -1,    -1,    82,   755,    -1,    85,    86,    -1,    -1,    -1, -   762,    -1,   764,   666,    -1,   767,    96,   769,    -1,   771, -    -1,    -1,   675,    -1,   370,   371,   372,   373,   374,   375, -   376,   377,   378,   379,   380,   381,    -1,   383,   384,   385, -   386,   387,   388,   389,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   707,    -1,    -1,   710,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   725,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,   738,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   749,    -1,    -1,    -1, -    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,    -1,   762, -    -1,   764,    -1,    -1,   767,    -1,   769,    -1,   771,    -1, -    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   478,    -1,    -1,    -1,    -1,    -1,   484,    -1, -    -1,    -1,    -1,    -1,   370,   371,   372,   373,   374,   375, -   376,   377,   378,   379,   380,   381,    -1,   383,   384,   385, -   386,   387,   388,   389,    44,    45,    46,    47,    48,    49, -    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59, -    -1,    -1,    62,    -1,    -1,    65,    66,    67,    68,    -1, -    70,    71,    72,    73,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1, -    -1,    -1,     1,    93,    -1,    95,    96,    -1,    -1,    99, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +   384,   385,   386,   387,   388,   389,    93,   403,   553,    95, +     1,     1,   664,    94,   448,     1,     1,    94,     1,   403, +   267,     1,   361,   762,    52,    93,   365,   274,   767,    52, +   769,   278,   771,     1,   328,    63,     1,    47,   762,   286, +    63,     1,    98,   767,     1,   769,   293,   771,   762,    88, +     1,   390,    62,   767,   301,   769,   303,   771,    94,   129, +     1,     1,   719,     1,   448,   570,     1,    95,   573,   408, +     1,    95,    95,     1,   448,    99,    93,    63,   325,   418, +    95,   420,     0,     1,     0,     1,    96,    96,    45,    46, +   286,   430,   162,   477,    97,   342,    86,   293,   101,   483, +   607,   612,    93,   755,     1,   301,     1,   303,    93,    95, +   306,    94,   764,    93,   453,   362,   455,   364,   625,   553, +     1,    86,   556,    93,     5,    93,    44,   175,    44,    86, +   469,    88,     1,    93,    91,    92,    93,    55,    53,    55, +    97,   480,    93,    61,   101,    61,    93,   486,    86,    67, +    97,    67,    93,    93,   101,    86,   403,   553,    86,    75, +   556,   666,    95,    95,    96,     0,     1,    99,   675,   553, +     0,     1,   556,   175,     1,    47,     1,     1,   685,     0, +     1,    99,     1,    99,   431,    96,     1,   434,   100,   100, +    62,    86,   588,   101,   590,    92,    93,   631,    44,     1, +    97,    98,    99,   100,     1,    86,   640,   403,   293,    44, +     9,   472,    11,   474,    44,    61,   301,    86,   303,   175, +    55,    67,   656,    44,    96,    55,    61,    94,   612,   613, +    94,    61,    67,   100,    33,   631,   100,    67,   286,   635, +    61,    65,   101,    67,   628,   293,    67,   631,    72,     0, +     1,   635,    76,   301,   101,   303,   640,     1,   306,    86, +   656,    86,    86,    97,    99,    11,   640,    86,   664,    99, +    67,    86,   656,     0,     1,    72,   640,     1,    99,    76, +   619,    92,     1,   717,   286,   719,    97,    98,    13,    86, +    92,   293,    94,    44,     1,    97,    98,    99,   100,   301, +   696,   303,    12,   699,   306,     1,   553,    65,     1,   556, +    61,     1,   696,   652,    72,   699,    67,    44,     1,   658, +    60,   717,    94,   719,    64,    97,   722,     1,     1,   101, +   286,    91,    92,   717,    61,   719,    14,   293,   722,   735, +    67,    94,    86,    99,    97,   301,    94,   303,    99,   107, +   306,   735,   100,   749,    50,   403,     1,   553,     1,   755, +   556,     1,    86,   175,    95,   749,   762,    86,   764,    99, +    44,   767,    99,   769,     1,   771,    50,    93,   762,    86, +    45,    46,   629,   767,   631,   769,    82,   771,   635,    85, +    86,    83,   588,    86,   590,   734,    86,    99,   100,   738, +    94,   403,    99,    86,    44,    50,   100,   175,    82,   656, +    50,    85,    86,    86,     1,    45,    46,    44,    93,    59, +    94,    61,    65,    50,    67,   470,    97,    67,   473,    72, +   122,   123,    97,    76,    96,   631,   101,    82,    44,   635, +    85,    86,    82,    86,    50,    85,    86,   403,    99,   696, +    99,   100,   699,    91,    92,    82,   100,    44,    85,    86, +   656,   696,    99,    50,   699,    66,    10,    97,   664,    95, +   717,   101,   719,    93,   286,   722,    82,    45,    46,    85, +    86,   293,     3,     4,   175,    93,    30,     1,   735,   301, +    34,   303,    16,    17,   306,    82,    91,    92,    85,    86, +   696,    93,   749,   699,    88,   553,    44,    51,   556,     5, +     6,     7,    50,    45,    46,   762,    45,    46,   286,    94, +   767,   717,   769,   719,   771,   293,   722,   762,    18,    19, +    20,    21,   767,   301,   769,   303,   771,     1,   306,   735, +   588,    99,   590,    93,    82,    97,    98,    85,    86,    94, +   635,   553,    94,   749,   556,     1,    94,   373,   374,   755, +   378,   379,   380,   381,    97,   100,   762,    57,   764,   383, +   384,   767,    94,   769,    86,   771,     8,     9,    10,    91, +    92,    93,    56,   631,    44,    97,   588,   635,   590,   101, +    50,   403,    97,    98,    99,   286,    99,   553,    86,    59, +   556,    61,   293,    91,    92,    93,    56,    67,   656,    97, +   301,   696,   303,   101,   699,   306,   664,    44,    91,    92, +    93,     1,    82,    50,    97,    85,    86,    94,   101,   631, +     1,    94,   588,   635,   590,   403,    96,   722,    86,    94, +    67,    94,    99,    91,    92,    93,    56,    99,   696,    97, +   735,   699,    94,   101,   656,    82,    94,     0,    85,    86, +     0,   382,   664,    11,   749,    54,    91,    92,    93,   717, +    75,   719,    97,   162,   722,   631,   101,   762,   139,   635, +   253,   160,   767,   403,   769,    52,   771,   735,    94,    91, +    92,    93,   306,   260,   696,    97,   654,   699,   571,   101, +   656,   749,   654,   375,   376,   377,   306,   755,   664,   571, +   345,   387,   403,   393,   762,   717,   764,   719,   385,   767, +   722,   769,   386,   771,   628,   388,    -1,    -1,   389,    -1, +    -1,    -1,    -1,   735,    -1,    -1,    -1,    -1,    -1,    -1, +   696,   553,    -1,   699,   556,    -1,     1,   749,     3,     4, +    -1,    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1,    -1, +   762,   717,   764,   719,    -1,   767,   722,   769,    -1,   771, +    -1,    -1,    -1,    -1,    -1,    -1,   588,    -1,   590,   735, +    -1,    -1,    -1,    -1,    -1,   553,    -1,    -1,   556,    -1, +    45,    46,    -1,   749,    -1,    50,    -1,    -1,    -1,   755, +    -1,    -1,    -1,    -1,    59,    -1,   762,    -1,   764,    -1, +    65,   767,    -1,   769,    -1,   771,    -1,    72,    -1,   631, +   588,    76,   590,   635,    -1,    -1,    -1,    82,    -1,    -1, +    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, +    95,    96,    -1,    -1,   656,    -1,    -1,   102,   103,   104, +   105,    44,   664,   108,   109,    -1,    -1,    50,    -1,    -1, +    -1,    -1,   553,   631,    -1,   556,    59,   635,    61,    -1, +    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,   696,    -1,    -1,   699,   656,    82, +    -1,    -1,    85,    86,    -1,    -1,   664,   588,    -1,   590, +    -1,    -1,    95,    96,    -1,   717,    -1,   719,    -1,    -1, +   722,   192,   193,   194,   195,    -1,    -1,    -1,    -1,   200, +   201,    -1,    -1,   735,    -1,    -1,    -1,    -1,   696,    -1, +    -1,   699,    -1,   192,   193,   194,   195,   749,    -1,    -1, +   631,   200,   201,   755,   635,    -1,    -1,    -1,     1,   717, +   762,   719,   764,    -1,   722,   767,    -1,   769,    -1,   771, +    -1,    -1,    -1,    -1,    -1,   656,    -1,   735,    -1,    -1, +    -1,    -1,    -1,   664,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   749,    -1,    -1,    -1,    -1,    -1,   755,    -1,    -1, +    -1,    44,    45,    46,   762,    -1,   764,    50,    -1,   767, +    -1,   769,    -1,   771,    -1,   696,    59,    -1,   699,    -1, +    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    -1,    -1,    -1,    76,    -1,    -1,   717,    -1,   719,    82, +    -1,   722,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1, +    93,    -1,    -1,    -1,   735,    -1,    99,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    -1,   749,    -1, +    -1,    -1,    -1,    -1,   755,    -1,    -1,    -1,    -1,    -1, +    -1,   762,    -1,   764,    -1,    -1,   767,    -1,   769,    -1, +   771,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   370, +   371,   372,   373,   374,   375,   376,   377,   378,   379,   380, +   381,    -1,   383,   384,   385,   386,   387,   388,   389,     1, +    -1,   370,   371,   372,   373,   374,   375,   376,   377,   378, +   379,   380,   381,    -1,   383,   384,   385,   386,   387,   388, +   389,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   478,    -1,    -1,    44,    45,    46,   484,    48, +    -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51, +    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1,    -1, +    62,    -1,    -1,    65,    66,    67,    68,    -1,    70,    71, +    72,    73,     1,    -1,    76,    -1,    -1,    -1,    -1,    -1, +    82,    -1,    -1,    85,    86,    -1,   477,    -1,    -1,    -1, +    -1,    93,   483,    95,    96,    -1,    -1,    99,    -1,    -1, +   102,   103,   104,   105,    -1,    -1,   108,   109,   477,    -1, +    -1,    -1,    -1,    -1,   483,    44,    45,    46,    47,    48,      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58, -    59,    -1,    -1,   619,   620,    -1,    65,    66,    67,    68, -     1,    70,    71,    72,    73,    -1,    -1,    76,    -1,   635, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    -1,    -1,    -1,    -1,    93,    -1,    95,    96,    -1,    -1, +    59,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    68, +    -1,    70,    71,    72,    73,    44,    -1,    76,    -1,    -1, +    -1,    50,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    59,    -1,    61,    -1,    93,    -1,    95,    96,    67,    -1,      99,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, -   109,    -1,    -1,    44,    45,    46,    -1,    48,    49,    50, -    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1, -    -1,    -1,    -1,    -1,    65,    66,    67,    68,    -1,    70, -    71,    72,    73,     1,    -1,    76,    -1,    -1,    -1,    -1, -    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1, -    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    99,    -1, -    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    -1, -    -1,    -1,    -1,   619,   620,    -1,    44,    45,    46,    -1, -    48,    49,    50,    51,    -1,    -1,    54,    -1,    -1,   635, -    58,    59,    -1,    -1,    -1,    -1,    -1,    65,    66,     1, -    68,    -1,    70,    71,    72,    73,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    -1,    -1,    -1,    -1,    93,    -1,    95,    -1,    -1, -    -1,    99,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    44,    45,    46,    -1,    48,    49,    50,    51, +   109,     1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   612,   613,    -1,    44,    45,    46,    47,    48,    49, +    50,    51,    -1,    -1,    54,    -1,    -1,   628,    58,    59, +    -1,    -1,    62,   612,   613,    65,    66,    67,    68,     1, +    70,    71,    72,    73,    -1,    -1,    76,    -1,    -1,   628, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1, +    -1,    -1,    -1,    93,    -1,    95,    96,    -1,    -1,    99, +    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, +    -1,    -1,    44,    45,    46,    -1,    48,    49,    50,    51,      -1,    -1,    54,    -1,    -1,    -1,    58,    59,    -1,    -1, -    -1,    -1,    -1,    65,    66,    -1,    68,    -1,    70,    71, -    72,    73,    -1,     1,    76,     3,     4,    -1,    -1,    -1, +    -1,    -1,    -1,    65,    66,    67,    68,     1,    70,    71, +    72,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1, -    -1,    93,    -1,    95,    -1,    -1,    -1,    99,    -1,    -1, +    -1,    93,    -1,    95,    96,    -1,    -1,    99,    -1,    -1,     102,   103,   104,   105,    -1,    -1,   108,   109,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    -1, -    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    95,    96,    -1, -    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    44,    45,    46,    -1,    48,    49,    50,    51,    -1,    -1, +    54,    -1,    -1,    -1,    58,    59,    -1,    -1,    -1,    -1, +    -1,    65,    66,    67,    68,     1,    70,    71,    72,    73, +    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1, +    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93, +    -1,    95,    -1,    -1,    -1,    99,    -1,    -1,   102,   103, +   104,   105,    -1,    -1,   108,   109,    -1,    -1,    44,    45, +    46,    -1,    48,    49,    50,    51,    -1,    -1,    54,    -1, +    -1,    -1,    58,    59,    -1,    -1,    -1,    -1,    -1,    65, +    66,     1,    68,    -1,    70,    71,    72,    73,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    95, +    -1,    -1,    -1,    99,    -1,    -1,   102,   103,   104,   105, +    -1,    -1,   108,   109,    44,    45,    46,    -1,    48,    49, +    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59, +    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,    68,    -1, +    70,    71,    72,    73,    -1,     1,    76,     3,     4,    -1, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1, +    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    99, +    44,    -1,   102,   103,   104,   105,    50,    -1,   108,   109, +    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    45, +    46,    -1,    -1,    67,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    82,    65, +    -1,    85,    86,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    96,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    95, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1, +    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1, +    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, +    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,   103,   104, +   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1, +    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59, +    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, +    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,    89, +    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1, +    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109, +    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    98, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1, +     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1, +    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1, +    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, +    94,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103, +   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1, +    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,      -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    -1,    95,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1, +    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1, +    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1, +    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1, +    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, +    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, +    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46, +    98,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1, +   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1, +    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76, +    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, +    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1, +    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1, +     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1, +    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1, -    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1, -    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76, -    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    88,    89,    90,    -1,    -1,    93,    -1,    -1,    45, -    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1, -    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, -    -1,    -1,    98,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, +    -1,    93,    -1,    -1,    45,    46,    98,    -1,    -1,    50, +   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1, +    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    94,    -1,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4, +    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45, +    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1, +    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1, +    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104, +   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1, +    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59, +    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,      -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, -    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    99, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3, -     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1, -    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1, -    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1, -    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, -    -1,    45,    46,    98,    -1,    -1,    50,   102,   103,   104, -   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1, -    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1, +    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    99, +    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109, +    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1, +     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,      -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, -    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103, -   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1, -    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1, -    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1, -    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    98, -    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108, -   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103, +   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1, +    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,      -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    94,    -1,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1, +    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1, +    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1, +    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1, +    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, +    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, +    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46, +    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1, +   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1, +    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76, +    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, +    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1, +    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1, +     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1, +    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1, -    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1, -    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76, -    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45, -    46,    -1,    99,    -1,    50,   102,   103,   104,   105,    -1, -    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, +    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50, +   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1, +    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, -    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3, -     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1, -    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1, +    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45, +    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,      85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, -    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104, -   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1, -    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104, +   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1, +    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59, +    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, +    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, +    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1, +    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109, +    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1, +     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,      -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103, -   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1, -    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1, -    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1, -    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1, -    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108, -   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103, +   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1, +    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,      -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1, +    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1, +    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1, +    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1, +    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, +    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, +    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46, +    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1, +   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1, +    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76, +    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, +    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1, +    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1, +     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1, +    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1, -    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1, -    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76, -    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45, -    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1, -    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, +    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50, +   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1, +    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, -    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3, -     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1, -    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1, +    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45, +    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,      85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, -    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104, -   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1, -    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104, +   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1, +    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59, +    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, +    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, +    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1, +    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109, +    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1, +     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,      -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103, -   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1, -    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1, -    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1, -    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1, -    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108, -   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103, +   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1, +    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,      -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1, +    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1, +    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1, +    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1, +    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, +    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, +    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46, +    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1, +   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1, +    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76, +    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, +    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1, +    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1, +     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1, +    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1, -    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1, -    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76, -    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45, -    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1, -    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, +    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50, +   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1, +    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, -    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3, -     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1, -    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1, +    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45, +    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,      85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, -    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104, -   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1, -    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104, +   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1, +    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59, +    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, +    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, +    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, +    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1, +    -1,    50,   102,   103,   104,   105,    -1,    -1,   108,   109, +    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1, +     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,      -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103, -   104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1, -    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1, -    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1, -    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1, -    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108, -   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103, +   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1, +    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,      -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,    -1, +    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102, +   103,   104,   105,    -1,    -1,   108,   109,    45,    46,    -1, +    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1, +    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1, +    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, +    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, +    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46, +    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,    -1, +   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1, +    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76, +    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, +    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1, +    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1, +     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1, +    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4,    -1, -    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1, -    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76, -    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    45, -    46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1, -    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -     1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,     1,    -1,     3,     4,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, +    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50, +   102,   103,   104,   105,    -1,    -1,   108,   109,    59,    -1, +    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4,    -1,      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,      -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    -1,    -1,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,     1,    -1,     3,     4, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89, -    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109, -    45,    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3, -     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1, -    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1, +    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109,    45, +    46,    -1,    -1,    -1,    50,    -1,     1,    -1,     3,     4, +    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    89,    90,    -1,    -1,    93,     1,    -1, +    45,    46,    -1,    -1,    -1,    50,   102,   103,   104,   105, +    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1, +    65,    -1,    -1,     1,    -1,    -1,    -1,    72,    -1,    -1,      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1, -    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1, -    -1,    45,    46,    -1,    -1,    -1,    50,   102,   103,   104, -   105,    -1,    -1,   108,   109,    59,    -1,    -1,    -1,    -1, -    -1,    65,     1,    -1,     3,     4,    -1,    -1,    72,    -1, +    85,    86,    45,    46,    89,    90,    -1,    50,    93,    -1, +    -1,    -1,    -1,    -1,    -1,    -1,    59,   102,   103,   104, +   105,    -1,    65,   108,   109,     1,    -1,    45,    46,    72, +    -1,    -1,    50,    76,    -1,    -1,    -1,    -1,    -1,    82, +    -1,    59,    85,    86,    -1,    -1,    -1,    65,    -1,    -1, +    93,    94,    -1,    -1,    72,    -1,    -1,    -1,    76,   102, +   103,   104,   105,    -1,    82,   108,   109,    85,    86,    45, +    46,    -1,     1,    -1,    50,    93,    94,    -1,    -1,    -1, +    -1,    -1,    -1,    59,   102,   103,   104,   105,    -1,    65, +   108,   109,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, +    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1, +    -1,    50,    -1,    -1,    -1,    -1,   102,   103,   104,   105, +    59,    -1,   108,   109,    -1,    -1,    65,    -1,    -1,     3, +     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, +    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, +    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1, +    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, +   109,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,    -1, +    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1, +    -1,    65,    -1,    -1,     3,     4,    -1,    -1,    72,    -1,      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,      -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1,    93, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,   103, +    -1,    95,    96,    -1,    -1,    -1,   100,    -1,   102,   103,     104,   105,    -1,    -1,   108,   109,    45,    46,    -1,    -1, -    -1,    50,    -1,     1,    -1,     3,     4,    -1,    -1,    -1, +    -1,    50,    -1,    -1,    -1,     3,     4,    -1,    -1,    -1,      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    89,    90,    -1,    -1,    93,    -1,    -1,    45,    46,    -1, +    89,    90,    -1,    -1,    93,    94,    -1,    45,    46,    -1,      -1,    -1,    50,   102,   103,   104,   105,    -1,    -1,   108, -   109,    59,    -1,    -1,    -1,    -1,    -1,    65,     1,    -1, +   109,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,       3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,      -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1, +    -1,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,      -1,    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1, -   108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,     1, -    -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1, -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, -    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82, -    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,    -1, -    93,    -1,    -1,    45,    46,    -1,    -1,    -1,    50,   102, -   103,   104,   105,    -1,    -1,   108,   109,    59,    -1,    -1, -    -1,    -1,    -1,    65,    -1,     1,    -1,    -1,    -1,    -1, -    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1, -    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1, -     1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -   102,   103,   104,   105,    -1,    -1,   108,   109,    44,    45, -    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65, -    -1,    -1,     1,    -1,    45,    46,    72,    -1,    -1,    50, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    59,    85, -    86,    -1,    -1,    -1,    65,    -1,    -1,    93,    -1,    -1, -    -1,    72,    -1,    99,    -1,    76,   102,   103,   104,   105, -    -1,    82,   108,   109,    85,    86,    45,    46,    -1,    -1, -    -1,    50,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1, -    59,   102,   103,   104,   105,    -1,    65,   108,   109,     1, -    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1, -    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1, -    -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1, -    -1,    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108, -   109,     1,    -1,    45,    46,    -1,    -1,    -1,    50,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1, -    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1, -    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1, -    82,    -1,    -1,    85,    86,     3,     4,    -1,    -1,    -1, -    50,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59, -   102,   103,   104,   105,    -1,    65,   108,   109,    -1,    -1, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    45,    46,    89, -    90,    -1,    50,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    59,   102,   103,   104,   105,    -1,    65,   108,   109, -     3,     4,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1, -    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1, -    -1,    89,    90,    -1,    -1,    93,    -1,    95,    96,    -1, -    -1,    -1,   100,    -1,   102,   103,   104,   105,    -1,    -1,     108,   109,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,      -1,     3,     4,    -1,    -1,    -1,    59,    -1,    -1,    -1,      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, @@ -2007,29 +2036,20 @@ static const short yycheck[] = {     3,      82,    -1,    -1,    85,    86,    -1,    -1,    89,    90,    -1,      -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     102,   103,   104,   105,    -1,    -1,   108,   109,    45,    46, -    -1,    -1,    -1,    50,    -1,    -1,    -1,     3,     4,    -1, +    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86, -    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1,    45, +    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    44,    45,      46,    -1,    -1,    -1,    50,   102,   103,   104,   105,    -1,      -1,   108,   109,    59,    -1,    -1,    -1,    -1,    -1,    65, -    -1,    -1,     3,     4,    -1,    -1,    72,    -1,    -1,    -1, -    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -    86,    -1,    -1,    89,    90,    -1,    -1,    93,    94,    -1, -    -1,    -1,    -1,    -1,    -1,    -1,   102,   103,   104,   105, -    -1,    -1,   108,   109,    45,    46,    -1,    -1,    -1,    50, -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1, -    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, -    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1, -    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    89,    90, -    -1,    -1,    93,    -1,    44,    45,    46,    -1,    -1,    -1, -    50,   102,   103,   104,   105,    -1,    -1,   108,   109,    59, -    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, -    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1, -    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    -1,    -1, -    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1, -    -1,    -1,   102,   103,   104,   105,    -1,    -1,   108,   109 +    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    50, +    76,    -1,    -1,    -1,    -1,    -1,    82,    -1,    59,    85, +    86,    -1,    -1,    -1,    65,    -1,    -1,    93,    -1,    -1, +    -1,    72,    -1,    -1,    -1,    76,   102,   103,   104,   105, +    -1,    82,   108,   109,    85,    86,    -1,    -1,    89,    90, +    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +    -1,   102,   103,   104,   105,    -1,    -1,   108,   109  };  #define YYPURE 1 @@ -2532,66 +2552,66 @@ yyreduce:    switch (yyn) {  case 1: -#line 273 "./parse.y" +#line 268 "./parse.y"  {;      break;}  case 18: -#line 317 "./parse.y" +#line 312 "./parse.y"  {   		  yyval.node = build_java_array_type (yyvsp[-2].node, -1);  		  CLASS_LOADED_P (yyval.node) = 1;  		;      break;}  case 19: -#line 322 "./parse.y" +#line 317 "./parse.y"  { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;      break;}  case 20: -#line 324 "./parse.y" +#line 319 "./parse.y"  { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;      break;}  case 21: -#line 326 "./parse.y" +#line 321 "./parse.y"  {RULE ("']' expected"); RECOVER;;      break;}  case 22: -#line 328 "./parse.y" +#line 323 "./parse.y"  {RULE ("']' expected"); RECOVER;;      break;}  case 26: -#line 343 "./parse.y" +#line 338 "./parse.y"  { yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;      break;}  case 28: -#line 352 "./parse.y" +#line 347 "./parse.y"  {yyval.node = NULL;;      break;}  case 36: -#line 364 "./parse.y" +#line 359 "./parse.y"  {  		  yyval.node = NULL;  		;      break;}  case 37: -#line 368 "./parse.y" +#line 363 "./parse.y"  {  		  yyval.node = NULL;  		;      break;}  case 40: -#line 380 "./parse.y" +#line 375 "./parse.y"  { ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node); ;      break;}  case 41: -#line 382 "./parse.y" +#line 377 "./parse.y"  {yyerror ("Missing name"); RECOVER;;      break;}  case 42: -#line 384 "./parse.y" +#line 379 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 45: -#line 394 "./parse.y" +#line 389 "./parse.y"  {  		  tree name = EXPR_WFL_NODE (yyvsp[-1].node), node, last_name;  		  int   i = IDENTIFIER_LENGTH (name)-1; @@ -2619,15 +2639,15 @@ case 45:  		;      break;}  case 46: -#line 420 "./parse.y" +#line 415 "./parse.y"  {yyerror ("Missing name"); RECOVER;;      break;}  case 47: -#line 422 "./parse.y" +#line 417 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 48: -#line 427 "./parse.y" +#line 422 "./parse.y"  {  		  tree name = EXPR_WFL_NODE (yyvsp[-3].node);  		  tree node = build_tree_list (yyvsp[-3].node, NULL_TREE); @@ -2641,15 +2661,15 @@ case 48:  		;      break;}  case 49: -#line 439 "./parse.y" +#line 434 "./parse.y"  {yyerror ("'*' expected"); RECOVER;;      break;}  case 50: -#line 441 "./parse.y" +#line 436 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 51: -#line 446 "./parse.y" +#line 441 "./parse.y"  {  		  maybe_generate_clinit ();  		  maybe_generate_finit (); @@ -2657,24 +2677,24 @@ case 51:  		;      break;}  case 53: -#line 453 "./parse.y" +#line 448 "./parse.y"  { yyval.node = NULL; ;      break;}  case 54: -#line 455 "./parse.y" +#line 450 "./parse.y"  {  		  YYERROR_NOW;  		  yyerror ("Class or interface declaration expected");  		;      break;}  case 55: -#line 466 "./parse.y" +#line 461 "./parse.y"  {  		  yyval.value = (1 << yyvsp[0].value);  		;      break;}  case 56: -#line 470 "./parse.y" +#line 465 "./parse.y"  {  		  int acc = (1 << yyvsp[0].value);  		  if (yyval.value & acc) @@ -2688,116 +2708,116 @@ case 56:  		;      break;}  case 57: -#line 486 "./parse.y" +#line 481 "./parse.y"  { create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 58: -#line 488 "./parse.y" +#line 483 "./parse.y"  {   		  yyval.node = yyvsp[0].node;  		;      break;}  case 59: -#line 492 "./parse.y" +#line 487 "./parse.y"  { create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 60: -#line 494 "./parse.y" +#line 489 "./parse.y"  { 	  		  yyval.node = yyvsp[0].node;  		;      break;}  case 61: -#line 498 "./parse.y" +#line 493 "./parse.y"  {yyerror ("Missing class name"); RECOVER;;      break;}  case 62: -#line 500 "./parse.y" +#line 495 "./parse.y"  {yyerror ("Missing class name"); RECOVER;;      break;}  case 63: -#line 502 "./parse.y" +#line 497 "./parse.y"  {if (!ctxp->class_err) yyerror ("'{' expected"); DRECOVER(class1);;      break;}  case 64: -#line 504 "./parse.y" +#line 499 "./parse.y"  {if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;      break;}  case 65: -#line 508 "./parse.y" +#line 503 "./parse.y"  { yyval.node = NULL; ;      break;}  case 66: -#line 510 "./parse.y" +#line 505 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 67: -#line 512 "./parse.y" +#line 507 "./parse.y"  {yyerror ("'{' expected"); ctxp->class_err=1;;      break;}  case 68: -#line 514 "./parse.y" +#line 509 "./parse.y"  {yyerror ("Missing super class name"); ctxp->class_err=1;;      break;}  case 69: -#line 518 "./parse.y" +#line 513 "./parse.y"  { yyval.node = NULL_TREE; ;      break;}  case 70: -#line 520 "./parse.y" +#line 515 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 71: -#line 522 "./parse.y" +#line 517 "./parse.y"  {  		  ctxp->class_err=1;  		  yyerror ("Missing interface name");   		;      break;}  case 72: -#line 530 "./parse.y" +#line 525 "./parse.y"  {   		  ctxp->interface_number = 1;  		  yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);  		;      break;}  case 73: -#line 535 "./parse.y" +#line 530 "./parse.y"  {   		  ctxp->interface_number++;  		  yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));  		;      break;}  case 74: -#line 540 "./parse.y" +#line 535 "./parse.y"  {yyerror ("Missing interface name"); RECOVER;;      break;}  case 75: -#line 545 "./parse.y" +#line 540 "./parse.y"  { yyval.node = ctxp->current_parsed_class; ;      break;}  case 76: -#line 547 "./parse.y" +#line 542 "./parse.y"  { yyval.node = ctxp->current_parsed_class; ;      break;}  case 82: -#line 560 "./parse.y" +#line 555 "./parse.y"  { yyval.node = parse_jdk1_1_error ("instance initializer"); ;      break;}  case 85: -#line 567 "./parse.y" +#line 562 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner classe declaration"); ;      break;}  case 86: -#line 569 "./parse.y" +#line 564 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;      break;}  case 87: -#line 575 "./parse.y" +#line 570 "./parse.y"  { register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;      break;}  case 88: -#line 577 "./parse.y" +#line 572 "./parse.y"  {  		  check_modifiers   		    ("Illegal modifier `%s' for field declaration", @@ -2807,19 +2827,19 @@ case 88:  		;      break;}  case 90: -#line 590 "./parse.y" +#line 585 "./parse.y"  { yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 91: -#line 592 "./parse.y" +#line 587 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 92: -#line 597 "./parse.y" +#line 592 "./parse.y"  { yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;      break;}  case 93: -#line 599 "./parse.y" +#line 594 "./parse.y"  {   		  if (java_error_count)  		    yyvsp[0].node = NULL_TREE; @@ -2828,7 +2848,7 @@ case 93:  		;      break;}  case 94: -#line 606 "./parse.y" +#line 601 "./parse.y"  {  		  yyerror ("Missing variable initializer");  		  yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE); @@ -2836,7 +2856,7 @@ case 94:  		;      break;}  case 95: -#line 612 "./parse.y" +#line 607 "./parse.y"  {  		  yyerror ("';' expected");  		  yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE); @@ -2844,234 +2864,234 @@ case 95:  		;      break;}  case 97: -#line 622 "./parse.y" +#line 617 "./parse.y"  { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;      break;}  case 98: -#line 624 "./parse.y" +#line 619 "./parse.y"  {yyerror ("Invalid declaration"); DRECOVER(vdi);;      break;}  case 99: -#line 626 "./parse.y" +#line 621 "./parse.y"  {yyerror ("']' expected"); DRECOVER(vdi);;      break;}  case 100: -#line 628 "./parse.y" +#line 623 "./parse.y"  {yyerror ("Unbalanced ']'"); DRECOVER(vdi);;      break;}  case 102: -#line 634 "./parse.y" +#line 629 "./parse.y"  { yyval.node = NULL; ;      break;}  case 103: -#line 640 "./parse.y" +#line 635 "./parse.y"  {  		  current_function_decl = yyvsp[0].node;  		  source_start_java_method (current_function_decl);  		;      break;}  case 104: -#line 645 "./parse.y" +#line 640 "./parse.y"  { complete_method_declaration (yyvsp[0].node); ;      break;}  case 105: -#line 647 "./parse.y" +#line 642 "./parse.y"  {YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;      break;}  case 106: -#line 652 "./parse.y" +#line 647 "./parse.y"  { yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 107: -#line 654 "./parse.y" +#line 649 "./parse.y"  { yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 108: -#line 656 "./parse.y" +#line 651 "./parse.y"  { yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 109: -#line 658 "./parse.y" +#line 653 "./parse.y"  { yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 110: -#line 660 "./parse.y" +#line 655 "./parse.y"  {RECOVER;;      break;}  case 111: -#line 662 "./parse.y" +#line 657 "./parse.y"  {RECOVER;;      break;}  case 112: -#line 664 "./parse.y" +#line 659 "./parse.y"  {yyerror ("Identifier expected"); RECOVER;;      break;}  case 113: -#line 666 "./parse.y" +#line 661 "./parse.y"  {yyerror ("Identifier expected"); RECOVER;;      break;}  case 114: -#line 668 "./parse.y" +#line 663 "./parse.y"  {  		  yyerror ("Invalid method declaration, return type required");  		  RECOVER;  		;      break;}  case 115: -#line 676 "./parse.y" +#line 671 "./parse.y"  { yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;      break;}  case 116: -#line 678 "./parse.y" +#line 673 "./parse.y"  { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 117: -#line 680 "./parse.y" +#line 675 "./parse.y"  {  		  /* Issue a warning here: obsolete declaration. FIXME */  		  yyval.node = NULL;	/* FIXME */  		;      break;}  case 118: -#line 685 "./parse.y" +#line 680 "./parse.y"  {yyerror ("')' expected"); DRECOVER(method_declarator);;      break;}  case 119: -#line 687 "./parse.y" +#line 682 "./parse.y"  {yyerror ("']' expected"); RECOVER;;      break;}  case 120: -#line 692 "./parse.y" +#line 687 "./parse.y"  {  		  ctxp->formal_parameter_number = 1;  		;      break;}  case 121: -#line 696 "./parse.y" +#line 691 "./parse.y"  {  		  ctxp->formal_parameter_number += 1;  		  yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);  		;      break;}  case 122: -#line 701 "./parse.y" +#line 696 "./parse.y"  {yyerror ("Missing formal parameter term"); RECOVER;;      break;}  case 123: -#line 706 "./parse.y" +#line 701 "./parse.y"  {  		  yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);  		;      break;}  case 124: -#line 710 "./parse.y" +#line 705 "./parse.y"  { yyval.node = parse_jdk1_1_error ("final local"); ;      break;}  case 125: -#line 712 "./parse.y" +#line 707 "./parse.y"  {yyerror ("Missing identifier"); RECOVER;;      break;}  case 126: -#line 714 "./parse.y" +#line 709 "./parse.y"  {  		  SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[-2].value));  		  yyerror ("Missing identifier"); RECOVER;  		;      break;}  case 127: -#line 721 "./parse.y" +#line 716 "./parse.y"  { yyval.node = NULL_TREE; ;      break;}  case 128: -#line 723 "./parse.y" +#line 718 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 129: -#line 725 "./parse.y" +#line 720 "./parse.y"  {yyerror ("Missing class type term"); RECOVER;;      break;}  case 130: -#line 730 "./parse.y" +#line 725 "./parse.y"  { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;      break;}  case 131: -#line 732 "./parse.y" +#line 727 "./parse.y"  { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node); ;      break;}  case 132: -#line 734 "./parse.y" +#line 729 "./parse.y"  {yyerror ("Missing class type term"); RECOVER;;      break;}  case 135: -#line 741 "./parse.y" +#line 736 "./parse.y"  { yyval.node = NULL_TREE; ;      break;}  case 136: -#line 747 "./parse.y" +#line 742 "./parse.y"  {  		  RULE ("STATIC_INITIALIZER");  		;      break;}  case 137: -#line 751 "./parse.y" +#line 746 "./parse.y"  {  		  RULE ("STATIC_INITIALIZER");  		;      break;}  case 138: -#line 758 "./parse.y" +#line 753 "./parse.y"  {  		  SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[0].value));  		;      break;}  case 139: -#line 766 "./parse.y" +#line 761 "./parse.y"  {  		  current_function_decl = yyvsp[0].node;  		  source_start_java_method (current_function_decl);  		;      break;}  case 140: -#line 771 "./parse.y" +#line 766 "./parse.y"  { complete_method_declaration (yyvsp[0].node); ;      break;}  case 141: -#line 776 "./parse.y" +#line 771 "./parse.y"  { yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 142: -#line 778 "./parse.y" +#line 773 "./parse.y"  { yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 143: -#line 783 "./parse.y" +#line 778 "./parse.y"  { yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;      break;}  case 144: -#line 785 "./parse.y" +#line 780 "./parse.y"  { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 145: -#line 793 "./parse.y" +#line 788 "./parse.y"  {   		  BLOCK_EXPR_BODY (yyvsp[0].node) = size_zero_node;  		  yyval.node = yyvsp[0].node;  		;      break;}  case 146: -#line 798 "./parse.y" +#line 793 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 147: -#line 800 "./parse.y" +#line 795 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 148: -#line 802 "./parse.y" +#line 797 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 149: -#line 808 "./parse.y" +#line 803 "./parse.y"  {   		  yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE);   		  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node); @@ -3079,7 +3099,7 @@ case 149:  		;      break;}  case 150: -#line 814 "./parse.y" +#line 809 "./parse.y"  {   		  yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node);   		  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node); @@ -3087,15 +3107,15 @@ case 150:  		;      break;}  case 151: -#line 822 "./parse.y" +#line 817 "./parse.y"  {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;      break;}  case 152: -#line 824 "./parse.y" +#line 819 "./parse.y"  {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;      break;}  case 153: -#line 829 "./parse.y" +#line 824 "./parse.y"  {  		  tree wfl = build_wfl_node (this_identifier_node,   					     input_filename, 0, 0); @@ -3104,7 +3124,7 @@ case 153:  		;      break;}  case 154: -#line 836 "./parse.y" +#line 831 "./parse.y"  {  		  tree wfl = build_wfl_node (super_identifier_node,  					     input_filename, 0, 0); @@ -3113,167 +3133,167 @@ case 154:  		;      break;}  case 155: -#line 848 "./parse.y" +#line 843 "./parse.y"  { create_interface (0, yyvsp[0].node, NULL_TREE); ;      break;}  case 156: -#line 850 "./parse.y" +#line 845 "./parse.y"  {  		  yyval.node = yyvsp[0].node;  		;      break;}  case 157: -#line 854 "./parse.y" +#line 849 "./parse.y"  { create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;      break;}  case 158: -#line 856 "./parse.y" +#line 851 "./parse.y"  {  		  yyval.node = yyvsp[0].node;  		;      break;}  case 159: -#line 860 "./parse.y" +#line 855 "./parse.y"  { create_interface (0, yyvsp[-1].node, yyvsp[0].node);	;      break;}  case 160: -#line 862 "./parse.y" +#line 857 "./parse.y"  {  		  yyval.node = yyvsp[0].node;  		;      break;}  case 161: -#line 866 "./parse.y" +#line 861 "./parse.y"  { create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 162: -#line 868 "./parse.y" +#line 863 "./parse.y"  {  		  yyval.node = yyvsp[0].node;  		;      break;}  case 163: -#line 872 "./parse.y" +#line 867 "./parse.y"  {yyerror ("(here)'{' expected"); RECOVER;;      break;}  case 164: -#line 874 "./parse.y" +#line 869 "./parse.y"  {yyerror ("(there)'{' expected"); RECOVER;;      break;}  case 165: -#line 879 "./parse.y" +#line 874 "./parse.y"  {   		  ctxp->interface_number = 1;  		  yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);  		;      break;}  case 166: -#line 884 "./parse.y" +#line 879 "./parse.y"  {   		  ctxp->interface_number++;  		  yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));  		;      break;}  case 167: -#line 889 "./parse.y" +#line 884 "./parse.y"  {yyerror ("Invalid interface type"); RECOVER;;      break;}  case 168: -#line 891 "./parse.y" +#line 886 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 169: -#line 896 "./parse.y" +#line 891 "./parse.y"  { yyval.node = NULL_TREE; ;      break;}  case 170: -#line 898 "./parse.y" +#line 893 "./parse.y"  { yyval.node = NULL_TREE; ;      break;}  case 175: -#line 910 "./parse.y" +#line 905 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner class declaration"); ;      break;}  case 176: -#line 912 "./parse.y" +#line 907 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;      break;}  case 178: -#line 921 "./parse.y" +#line 916 "./parse.y"  {   		  check_abstract_method_header (yyvsp[-1].node);  		  current_function_decl = NULL_TREE; /* FIXME ? */  		;      break;}  case 179: -#line 926 "./parse.y" +#line 921 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 180: -#line 932 "./parse.y" +#line 927 "./parse.y"  {  		  RULE ("ARRAY_INITIALIZER (empty)");  		;      break;}  case 181: -#line 936 "./parse.y" +#line 931 "./parse.y"  {  		  RULE ("ARRAY_INITIALIZER (variable)");  		;      break;}  case 182: -#line 940 "./parse.y" +#line 935 "./parse.y"  {  		  RULE ("ARRAY_INITIALIZER (,)");  		;      break;}  case 183: -#line 944 "./parse.y" +#line 939 "./parse.y"  {  		  RULE ("ARRAY_INITIALIZER (variable, ,)");  		;      break;}  case 186: -#line 953 "./parse.y" +#line 948 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 187: -#line 959 "./parse.y" +#line 954 "./parse.y"  { yyval.node = size_zero_node; ;      break;}  case 188: -#line 961 "./parse.y" +#line 956 "./parse.y"  { yyval.node = yyvsp[0].node; ;      break;}  case 189: -#line 966 "./parse.y" +#line 961 "./parse.y"  { enter_block (); ;      break;}  case 190: -#line 971 "./parse.y" +#line 966 "./parse.y"  {   		  maybe_absorb_scoping_blocks ();  		  yyval.node = exit_block ();  		;      break;}  case 194: -#line 985 "./parse.y" -{ yyval.node = java_method_add_stmt (current_function_decl, yyvsp[0].node); ; +#line 980 "./parse.y" +{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;      break;}  case 195: -#line 987 "./parse.y" -{ yyval.node = parse_jdk1_1_error ("inner class declaration"); ; +#line 982 "./parse.y" +{ parse_jdk1_1_error ("inner class declaration"); ;      break;}  case 197: -#line 996 "./parse.y" +#line 991 "./parse.y"  { declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 198: -#line 998 "./parse.y" +#line 993 "./parse.y"  { declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 204: -#line 1008 "./parse.y" +#line 1003 "./parse.y"  {   		  /* If the for loop is unlabeled, we must return the  		     block it was defined it. It our last chance to @@ -3283,11 +3303,11 @@ case 204:  		;      break;}  case 221: -#line 1041 "./parse.y" +#line 1036 "./parse.y"  { yyval.node = size_zero_node; ;      break;}  case 222: -#line 1046 "./parse.y" +#line 1041 "./parse.y"  {  		  yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node),   					    EXPR_WFL_NODE (yyvsp[-1].node)); @@ -3297,7 +3317,7 @@ case 222:  		;      break;}  case 223: -#line 1057 "./parse.y" +#line 1052 "./parse.y"  {   		  yyval.node = complete_labeled_statement (yyvsp[-1].node, yyvsp[0].node);  		  pop_labeled_block (); @@ -3305,11 +3325,11 @@ case 223:  		;      break;}  case 224: -#line 1063 "./parse.y" +#line 1058 "./parse.y"  {yyerror ("':' expected"); RECOVER;;      break;}  case 225: -#line 1068 "./parse.y" +#line 1063 "./parse.y"  {   		  yyval.node = complete_labeled_statement (yyvsp[-1].node, yyvsp[0].node);  		  pop_labeled_block (); @@ -3317,7 +3337,7 @@ case 225:  		;      break;}  case 226: -#line 1079 "./parse.y" +#line 1074 "./parse.y"  {  		  /* We have a statement. Generate a WFL around it so  		     we can debug it */ @@ -3328,7 +3348,7 @@ case 226:  		;      break;}  case 227: -#line 1088 "./parse.y" +#line 1083 "./parse.y"  {  		  if (ctxp->prevent_ese != lineno)  		    yyerror ("Invalid expression statement"); @@ -3336,7 +3356,7 @@ case 227:  		;      break;}  case 228: -#line 1094 "./parse.y" +#line 1089 "./parse.y"  {  		  if (ctxp->prevent_ese != lineno)  		    yyerror ("Invalid expression statement"); @@ -3344,7 +3364,7 @@ case 228:  		;      break;}  case 229: -#line 1100 "./parse.y" +#line 1095 "./parse.y"  {  		  if (ctxp->prevent_ese != lineno)  		    yyerror ("Invalid expression statement"); @@ -3352,11 +3372,11 @@ case 229:  		;      break;}  case 230: -#line 1106 "./parse.y" +#line 1101 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 231: -#line 1108 "./parse.y" +#line 1103 "./parse.y"  {  		  yyerror ("Constructor invocation must be first "  			   "thing in a constructor");  @@ -3364,11 +3384,11 @@ case 231:  		;      break;}  case 232: -#line 1114 "./parse.y" +#line 1109 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 233: -#line 1116 "./parse.y" +#line 1111 "./parse.y"  {  		  yyerror ("Constructor invocation must be first "  			   "thing in a constructor");  @@ -3376,193 +3396,156 @@ case 233:  		;      break;}  case 234: -#line 1122 "./parse.y" +#line 1117 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 235: -#line 1124 "./parse.y" +#line 1119 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 236: -#line 1126 "./parse.y" +#line 1121 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 237: -#line 1128 "./parse.y" +#line 1123 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 238: -#line 1130 "./parse.y" +#line 1125 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 246: -#line 1145 "./parse.y" +#line 1140 "./parse.y"  { yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node, NULL_TREE); ;      break;}  case 247: -#line 1147 "./parse.y" +#line 1142 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 248: -#line 1149 "./parse.y" +#line 1144 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 249: -#line 1151 "./parse.y" +#line 1146 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 250: -#line 1156 "./parse.y" +#line 1151 "./parse.y"  { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 251: -#line 1161 "./parse.y" +#line 1156 "./parse.y"  { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 252: -#line 1166 "./parse.y" -{  -		  TREE_OPERAND (yyvsp[-1].node, 1) = yyvsp[0].node; -		  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-1].node), yyvsp[-1].node); +#line 1161 "./parse.y" +{ +		  enter_block ();  		;      break;}  case 253: -#line 1174 "./parse.y" +#line 1165 "./parse.y"  {  -		  yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE); -		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; +		  /* Make into "proper list" of COMPOUND_EXPRs. +		     I.e. make the last statment also have its own COMPOUND_EXPR. */ +		  maybe_absorb_scoping_blocks (); +		  TREE_OPERAND (yyvsp[-2].node, 1) = exit_block (); +		  yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-2].node), yyvsp[-2].node);  		;      break;}  case 254: -#line 1179 "./parse.y" -{yyerror ("'(' expected"); RECOVER;; +#line 1176 "./parse.y" +{  +		  yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE); +		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; +		;      break;}  case 255:  #line 1181 "./parse.y" -{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);; +{yyerror ("'(' expected"); RECOVER;;      break;}  case 256:  #line 1183 "./parse.y" -{yyerror ("'{' expected"); RECOVER;; +{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;      break;}  case 257: -#line 1188 "./parse.y" -{ yyval.node = NULL_TREE; ; -    break;} -case 258: -#line 1190 "./parse.y" -{ yyval.node = build_tree_list (yyvsp[-1].node, NULL_TREE); ; -    break;} -case 259: -#line 1192 "./parse.y" -{ yyval.node = yyvsp[-1].node; ; -    break;} -case 260: -#line 1194 "./parse.y" -{  -		  /* Switch labels alone are empty switch statements */ -		  tree sl = build_tree_list (yyvsp[-1].node, NULL_TREE); -		  TREE_CHAIN (sl) = yyvsp[-2].node; -		  yyval.node = sl; -		; -    break;} -case 262: -#line 1205 "./parse.y" -{  -		  TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node; -		  yyval.node = yyvsp[0].node; -		; -    break;} -case 263: -#line 1213 "./parse.y" -{ yyval.node = build_tree_list (yyvsp[-1].node, exit_block ()); ; -    break;} -case 264: -#line 1218 "./parse.y" -{  -		  /* All statements attached to this group of cases -		     will be stored in a block */ -		  enter_block (); -		  yyval.node = yyvsp[0].node; -		; -    break;} -case 266: -#line 1228 "./parse.y" -{ -		  TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node; -		  yyval.node = yyvsp[0].node; -		; +#line 1185 "./parse.y" +{yyerror ("'{' expected"); RECOVER;;      break;}  case 267: -#line 1236 "./parse.y" +#line 1211 "./parse.y"  {  -		  yyval.node = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node); -		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; +		  tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node); +		  EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location; +		  java_method_add_stmt (current_function_decl, lab);  		;      break;}  case 268: -#line 1241 "./parse.y" +#line 1217 "./parse.y"  {  -		  yyval.node = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE); -		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-1].operator.location; +		  tree lab = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE); +		  EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location; +		  java_method_add_stmt (current_function_decl, lab);  		;      break;}  case 269: -#line 1246 "./parse.y" +#line 1223 "./parse.y"  {yyerror ("Missing or invalid constant expression"); RECOVER;;      break;}  case 270: -#line 1248 "./parse.y" +#line 1225 "./parse.y"  {yyerror ("':' expected"); RECOVER;;      break;}  case 271: -#line 1250 "./parse.y" +#line 1227 "./parse.y"  {yyerror ("':' expected"); RECOVER;;      break;}  case 272: -#line 1255 "./parse.y" +#line 1232 "./parse.y"  {   		  tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);  		  yyval.node = build_new_loop (body);  		;      break;}  case 273: -#line 1263 "./parse.y" +#line 1240 "./parse.y"  { yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;      break;}  case 274: -#line 1265 "./parse.y" +#line 1242 "./parse.y"  {YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;      break;}  case 275: -#line 1267 "./parse.y" +#line 1244 "./parse.y"  {yyerror ("Missing term and ')' expected"); RECOVER;;      break;}  case 276: -#line 1269 "./parse.y" +#line 1246 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 277: -#line 1274 "./parse.y" +#line 1251 "./parse.y"  { yyval.node = complete_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;      break;}  case 278: -#line 1279 "./parse.y" +#line 1256 "./parse.y"  {   		  tree body = build_loop_body (0, NULL_TREE, 1);  		  yyval.node = build_new_loop (body);  		;      break;}  case 279: -#line 1288 "./parse.y" +#line 1265 "./parse.y"  { yyval.node = complete_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;      break;}  case 280: -#line 1293 "./parse.y" +#line 1270 "./parse.y"  { yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;      break;}  case 281: -#line 1295 "./parse.y" +#line 1272 "./parse.y"  {   		  yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);  		  /* We have not condition, so we get rid of the EXIT_EXPR */ @@ -3571,23 +3554,23 @@ case 281:  		;      break;}  case 282: -#line 1302 "./parse.y" +#line 1279 "./parse.y"  {yyerror ("Invalid control expression"); RECOVER;;      break;}  case 283: -#line 1304 "./parse.y" +#line 1281 "./parse.y"  {yyerror ("Invalid update expression"); RECOVER;;      break;}  case 284: -#line 1306 "./parse.y" +#line 1283 "./parse.y"  {yyerror ("Invalid update expression"); RECOVER;;      break;}  case 285: -#line 1311 "./parse.y" +#line 1288 "./parse.y"  { yyval.node = complete_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;      break;}  case 286: -#line 1313 "./parse.y" +#line 1290 "./parse.y"  {   		  yyval.node = complete_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);  		  /* We have not condition, so we get rid of the EXIT_EXPR */ @@ -3596,7 +3579,7 @@ case 286:  		;      break;}  case 287: -#line 1323 "./parse.y" +#line 1300 "./parse.y"  {   		  /* This scope defined for local variable that may be                       defined within the scope of the for loop */ @@ -3604,15 +3587,15 @@ case 287:  		;      break;}  case 288: -#line 1329 "./parse.y" +#line 1306 "./parse.y"  {yyerror ("'(' expected"); DRECOVER(for_1);;      break;}  case 289: -#line 1331 "./parse.y" +#line 1308 "./parse.y"  {yyerror ("Invalid init statement"); RECOVER;;      break;}  case 290: -#line 1336 "./parse.y" +#line 1313 "./parse.y"  {   		  /* We now declare the loop body. The loop is                       declared as a for loop. */ @@ -3625,11 +3608,11 @@ case 290:  		;      break;}  case 291: -#line 1348 "./parse.y" +#line 1325 "./parse.y"  { yyval.node = size_zero_node; ;      break;}  case 292: -#line 1350 "./parse.y" +#line 1327 "./parse.y"  {   		  /* Init statement recorded within the previously                       defined block scope */ @@ -3637,7 +3620,7 @@ case 292:  		;      break;}  case 293: -#line 1356 "./parse.y" +#line 1333 "./parse.y"  {   		  /* Local variable are recorded within the previously  		     defined block scope */ @@ -3645,94 +3628,94 @@ case 293:  		;      break;}  case 294: -#line 1362 "./parse.y" +#line 1339 "./parse.y"  {yyerror ("';' expected"); DRECOVER(for_init_1);;      break;}  case 295: -#line 1366 "./parse.y" +#line 1343 "./parse.y"  {yyval.node = size_zero_node;;      break;}  case 296: -#line 1368 "./parse.y" +#line 1345 "./parse.y"  { yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;      break;}  case 297: -#line 1373 "./parse.y" +#line 1350 "./parse.y"  { yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;      break;}  case 298: -#line 1375 "./parse.y" +#line 1352 "./parse.y"  { yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;      break;}  case 299: -#line 1377 "./parse.y" +#line 1354 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 300: -#line 1382 "./parse.y" +#line 1359 "./parse.y"  { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;      break;}  case 301: -#line 1384 "./parse.y" +#line 1361 "./parse.y"  { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;      break;}  case 302: -#line 1386 "./parse.y" +#line 1363 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 303: -#line 1388 "./parse.y" +#line 1365 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 304: -#line 1393 "./parse.y" +#line 1370 "./parse.y"  { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;      break;}  case 305: -#line 1395 "./parse.y" +#line 1372 "./parse.y"  { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;      break;}  case 306: -#line 1397 "./parse.y" +#line 1374 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 307: -#line 1399 "./parse.y" +#line 1376 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 308: -#line 1404 "./parse.y" +#line 1381 "./parse.y"  { yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;      break;}  case 309: -#line 1406 "./parse.y" +#line 1383 "./parse.y"  { yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;      break;}  case 310: -#line 1408 "./parse.y" +#line 1385 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 311: -#line 1410 "./parse.y" +#line 1387 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 312: -#line 1415 "./parse.y" +#line 1392 "./parse.y"  {   		  yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);  		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;  		;      break;}  case 313: -#line 1420 "./parse.y" +#line 1397 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 314: -#line 1422 "./parse.y" +#line 1399 "./parse.y"  {yyerror ("';' expected"); RECOVER;;      break;}  case 315: -#line 1427 "./parse.y" +#line 1404 "./parse.y"  {   		  yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);  		  EXPR_WFL_LINECOL (yyval.node) =  @@ -3740,53 +3723,53 @@ case 315:  		;      break;}  case 316: -#line 1433 "./parse.y" +#line 1410 "./parse.y"  {yyerror ("'{' expected"); RECOVER;;      break;}  case 317: -#line 1435 "./parse.y" +#line 1412 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 318: -#line 1437 "./parse.y" +#line 1414 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 319: -#line 1439 "./parse.y" +#line 1416 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 320: -#line 1444 "./parse.y" +#line 1421 "./parse.y"  {  		  if ((1 << yyvsp[0].value) != ACC_SYNCHRONIZED)  		    fatal ("synchronized was '%d' - yyparse", (1 << yyvsp[0].value));  		;      break;}  case 321: -#line 1452 "./parse.y" +#line 1429 "./parse.y"  { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node, NULL_TREE); ;      break;}  case 322: -#line 1454 "./parse.y" +#line 1431 "./parse.y"  { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, NULL_TREE, yyvsp[0].node); ;      break;}  case 323: -#line 1456 "./parse.y" +#line 1433 "./parse.y"  { yyval.node = build_try_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;      break;}  case 324: -#line 1458 "./parse.y" +#line 1435 "./parse.y"  {yyerror ("'{' expected"); DRECOVER (try_statement);;      break;}  case 326: -#line 1464 "./parse.y" +#line 1441 "./parse.y"  {   		  TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;  		  yyval.node = yyvsp[0].node;  		;      break;}  case 327: -#line 1472 "./parse.y" +#line 1449 "./parse.y"  {   		  java_method_add_stmt (current_function_decl, yyvsp[0].node);  		  exit_block (); @@ -3794,16 +3777,17 @@ case 327:  		;      break;}  case 328: -#line 1480 "./parse.y" +#line 1457 "./parse.y"  {   		  /* We add a block to define a scope for  		     formal_parameter (CCBP). The formal parameter is  		     declared initialized by the appropriate function  		     call */  		  tree ccpb = enter_block (); -		  tree init = build_assignment (ASSIGN_TK, yyvsp[-2].operator.location,  -						TREE_PURPOSE (yyvsp[-1].node),  -						soft_exceptioninfo_call_node); +		  tree init = /* flag_emit_class_files ? NULL_TREE +				 : */ build_assignment (ASSIGN_TK, yyvsp[-2].operator.location, +					TREE_PURPOSE (yyvsp[-1].node),  +					soft_exceptioninfo_call_node);  		  declare_local_variables (0, TREE_VALUE (yyvsp[-1].node),  					   build_tree_list (TREE_PURPOSE (yyvsp[-1].node),  							    init)); @@ -3812,179 +3796,179 @@ case 328:  		;      break;}  case 329: -#line 1496 "./parse.y" +#line 1474 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 330: -#line 1498 "./parse.y" +#line 1476 "./parse.y"  {yyerror ("Missing term or ')' expected"); DRECOVER (2);;      break;}  case 331: -#line 1500 "./parse.y" +#line 1478 "./parse.y"  {yyerror ("')' expected"); DRECOVER (1);;      break;}  case 332: -#line 1505 "./parse.y" +#line 1483 "./parse.y"  {   		  yyval.node = build (FINALLY_EXPR, NULL_TREE,  			      create_label_decl (generate_name ()), yyvsp[0].node);  		;      break;}  case 333: -#line 1510 "./parse.y" +#line 1488 "./parse.y"  {yyerror ("'{' expected"); RECOVER; ;      break;}  case 337: -#line 1522 "./parse.y" +#line 1500 "./parse.y"  { yyval.node = build_this (yyvsp[0].operator.location); ;      break;}  case 338: -#line 1524 "./parse.y" +#line 1502 "./parse.y"  {yyval.node = yyvsp[-1].node;;      break;}  case 343: -#line 1533 "./parse.y" +#line 1511 "./parse.y"  { yyval.node = parse_jdk1_1_error ("class literals"); ;      break;}  case 344: -#line 1535 "./parse.y" +#line 1513 "./parse.y"  { yyval.node = parse_jdk1_1_error ("class literals"); ;      break;}  case 345: -#line 1537 "./parse.y" +#line 1515 "./parse.y"  { yyval.node = parse_jdk1_1_error ("class literals"); ;      break;}  case 346: -#line 1542 "./parse.y" +#line 1520 "./parse.y"  { yyval.node = parse_jdk1_1_error ("class literals"); ;      break;}  case 347: -#line 1544 "./parse.y" +#line 1522 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 348: -#line 1546 "./parse.y" +#line 1524 "./parse.y"  {yyerror ("'class' or 'this' expected" ); RECOVER;;      break;}  case 349: -#line 1548 "./parse.y" +#line 1526 "./parse.y"  {yyerror ("'class' expected" ); RECOVER;;      break;}  case 350: -#line 1550 "./parse.y" +#line 1528 "./parse.y"  {yyerror ("'class' expected" ); RECOVER;;      break;}  case 351: -#line 1555 "./parse.y" +#line 1533 "./parse.y"  { yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 352: -#line 1557 "./parse.y" +#line 1535 "./parse.y"  { yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;      break;}  case 353: -#line 1562 "./parse.y" +#line 1540 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;      break;}  case 354: -#line 1564 "./parse.y" +#line 1542 "./parse.y"  { yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;      break;}  case 359: -#line 1573 "./parse.y" +#line 1551 "./parse.y"  {yyerror ("'(' expected"); DRECOVER(new_1);;      break;}  case 360: -#line 1575 "./parse.y" +#line 1553 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 361: -#line 1577 "./parse.y" +#line 1555 "./parse.y"  {yyerror ("')' or term expected"); RECOVER;;      break;}  case 362: -#line 1579 "./parse.y" +#line 1557 "./parse.y"  {yyerror ("')' expected"); RECOVER;;      break;}  case 363: -#line 1581 "./parse.y" +#line 1559 "./parse.y"  {YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;      break;}  case 364: -#line 1583 "./parse.y" +#line 1561 "./parse.y"  {yyerror ("'(' expected"); RECOVER;;      break;}  case 367: -#line 1593 "./parse.y" +#line 1571 "./parse.y"  {   		  yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);  		  ctxp->formal_parameter_number = 1;   		;      break;}  case 368: -#line 1598 "./parse.y" +#line 1576 "./parse.y"  {  		  ctxp->formal_parameter_number += 1;  		  yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);  		;      break;}  case 369: -#line 1603 "./parse.y" +#line 1581 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 370: -#line 1608 "./parse.y" +#line 1586 "./parse.y"  { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;      break;}  case 371: -#line 1610 "./parse.y" +#line 1588 "./parse.y"  { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;      break;}  case 372: -#line 1612 "./parse.y" +#line 1590 "./parse.y"  { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, ctxp->osb_number); ;      break;}  case 373: -#line 1614 "./parse.y" +#line 1592 "./parse.y"  { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, ctxp->osb_number); ;      break;}  case 374: -#line 1618 "./parse.y" +#line 1596 "./parse.y"  { yyval.node = parse_jdk1_1_error ("anonymous array"); ;      break;}  case 375: -#line 1620 "./parse.y" +#line 1598 "./parse.y"  { yyval.node = parse_jdk1_1_error ("anonymous array"); ;      break;}  case 376: -#line 1622 "./parse.y" +#line 1600 "./parse.y"  {yyerror ("'[' expected"); DRECOVER ("]");;      break;}  case 377: -#line 1624 "./parse.y" +#line 1602 "./parse.y"  {yyerror ("']' expected"); RECOVER;;      break;}  case 378: -#line 1629 "./parse.y" +#line 1607 "./parse.y"  { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;      break;}  case 379: -#line 1631 "./parse.y" +#line 1609 "./parse.y"  { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;      break;}  case 380: -#line 1636 "./parse.y" +#line 1614 "./parse.y"  {   		  EXPR_WFL_LINECOL (yyvsp[-1].node) = yyvsp[-2].operator.location;  		  yyval.node = yyvsp[-1].node;  		;      break;}  case 381: -#line 1641 "./parse.y" +#line 1619 "./parse.y"  {yyerror ("']' expected"); RECOVER;;      break;}  case 382: -#line 1643 "./parse.y" +#line 1621 "./parse.y"  {  		  yyerror ("Missing term");  		  yyerror ("']' expected"); @@ -3992,23 +3976,23 @@ case 382:  		;      break;}  case 383: -#line 1652 "./parse.y" +#line 1630 "./parse.y"  { ctxp->osb_number = 1; ;      break;}  case 384: -#line 1654 "./parse.y" +#line 1632 "./parse.y"  { ctxp->osb_number++; ;      break;}  case 385: -#line 1656 "./parse.y" +#line 1634 "./parse.y"  { yyerror ("']' expected"); RECOVER;;      break;}  case 386: -#line 1661 "./parse.y" +#line 1639 "./parse.y"  { yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;      break;}  case 387: -#line 1663 "./parse.y" +#line 1641 "./parse.y"  {  		  tree super_wfl =   		    build_wfl_node (super_identifier_node,  @@ -4018,19 +4002,19 @@ case 387:  		;      break;}  case 388: -#line 1671 "./parse.y" +#line 1649 "./parse.y"  {yyerror ("Field expected"); DRECOVER (super_field_acces);;      break;}  case 389: -#line 1676 "./parse.y" +#line 1654 "./parse.y"  { yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;      break;}  case 390: -#line 1678 "./parse.y" +#line 1656 "./parse.y"  { yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 391: -#line 1680 "./parse.y" +#line 1658 "./parse.y"  {   		  if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)  		    yyval.node = build_this_super_qualified_invocation  @@ -4043,7 +4027,7 @@ case 391:  		;      break;}  case 392: -#line 1691 "./parse.y" +#line 1669 "./parse.y"  {   		  if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)  		    yyval.node = build_this_super_qualified_invocation  @@ -4056,121 +4040,121 @@ case 392:  		;      break;}  case 393: -#line 1702 "./parse.y" +#line 1680 "./parse.y"  {   		  yyval.node = build_this_super_qualified_invocation   		    (0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);  		;      break;}  case 394: -#line 1707 "./parse.y" +#line 1685 "./parse.y"  {  		  yyval.node = build_this_super_qualified_invocation   		    (0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);  		;      break;}  case 395: -#line 1716 "./parse.y" +#line 1694 "./parse.y"  { yyerror ("'(' expected"); DRECOVER (method_invocation); ;      break;}  case 396: -#line 1718 "./parse.y" +#line 1696 "./parse.y"  { yyerror ("'(' expected"); DRECOVER (method_invocation); ;      break;}  case 397: -#line 1723 "./parse.y" +#line 1701 "./parse.y"  { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 398: -#line 1725 "./parse.y" +#line 1703 "./parse.y"  { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;      break;}  case 399: -#line 1727 "./parse.y" +#line 1705 "./parse.y"  {  		  yyerror ("Missing term and ']' expected");  		  DRECOVER(array_access);  		;      break;}  case 400: -#line 1732 "./parse.y" +#line 1710 "./parse.y"  {  		  yyerror ("']' expected");  		  DRECOVER(array_access);  		;      break;}  case 401: -#line 1737 "./parse.y" +#line 1715 "./parse.y"  {  		  yyerror ("Missing term and ']' expected");  		  DRECOVER(array_access);  		;      break;}  case 402: -#line 1742 "./parse.y" +#line 1720 "./parse.y"  {  		  yyerror ("']' expected");  		  DRECOVER(array_access);  		;      break;}  case 407: -#line 1757 "./parse.y" +#line 1735 "./parse.y"  { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;      break;}  case 408: -#line 1762 "./parse.y" +#line 1740 "./parse.y"  { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;      break;}  case 411: -#line 1769 "./parse.y" +#line 1747 "./parse.y"  {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;      break;}  case 412: -#line 1771 "./parse.y" +#line 1749 "./parse.y"  {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;      break;}  case 414: -#line 1774 "./parse.y" +#line 1752 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 415: -#line 1776 "./parse.y" +#line 1754 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 416: -#line 1781 "./parse.y" +#line 1759 "./parse.y"  {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;      break;}  case 417: -#line 1783 "./parse.y" +#line 1761 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 418: -#line 1788 "./parse.y" +#line 1766 "./parse.y"  {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;      break;}  case 419: -#line 1790 "./parse.y" +#line 1768 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 421: -#line 1796 "./parse.y" +#line 1774 "./parse.y"  {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;      break;}  case 422: -#line 1798 "./parse.y" +#line 1776 "./parse.y"  {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;      break;}  case 424: -#line 1801 "./parse.y" +#line 1779 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 425: -#line 1803 "./parse.y" +#line 1781 "./parse.y"  {yyerror ("Missing term"); RECOVER;      break;}  case 426: -#line 1808 "./parse.y" +#line 1786 "./parse.y"  {   		  tree type = yyvsp[-3].node;  		  while (ctxp->osb_number--) @@ -4179,15 +4163,15 @@ case 426:  		;      break;}  case 427: -#line 1815 "./parse.y" +#line 1793 "./parse.y"  { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 428: -#line 1817 "./parse.y" +#line 1795 "./parse.y"  { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 429: -#line 1819 "./parse.y" +#line 1797 "./parse.y"  {   		  char *ptr;  		  while (ctxp->osb_number--) @@ -4201,11 +4185,11 @@ case 429:  		;      break;}  case 430: -#line 1831 "./parse.y" +#line 1809 "./parse.y"  {yyerror ("']' expected, invalid type expression");;      break;}  case 431: -#line 1833 "./parse.y" +#line 1811 "./parse.y"  {  	          if (ctxp->prevent_ese != lineno)  		    yyerror ("Invalid type expression"); RECOVER; @@ -4213,243 +4197,243 @@ case 431:  		;      break;}  case 432: -#line 1839 "./parse.y" +#line 1817 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 433: -#line 1841 "./parse.y" +#line 1819 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 434: -#line 1843 "./parse.y" +#line 1821 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 436: -#line 1849 "./parse.y" +#line 1827 "./parse.y"  {   		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),   				    yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);  		;      break;}  case 437: -#line 1854 "./parse.y" +#line 1832 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 438: -#line 1859 "./parse.y" +#line 1837 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 439: -#line 1864 "./parse.y" +#line 1842 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 440: -#line 1866 "./parse.y" +#line 1844 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 441: -#line 1868 "./parse.y" +#line 1846 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 443: -#line 1874 "./parse.y" +#line 1852 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 444: -#line 1879 "./parse.y" +#line 1857 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 445: -#line 1884 "./parse.y" +#line 1862 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 446: -#line 1886 "./parse.y" +#line 1864 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 448: -#line 1892 "./parse.y" +#line 1870 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 449: -#line 1897 "./parse.y" +#line 1875 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 450: -#line 1902 "./parse.y" +#line 1880 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 451: -#line 1907 "./parse.y" +#line 1885 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 452: -#line 1909 "./parse.y" +#line 1887 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 453: -#line 1911 "./parse.y" +#line 1889 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 455: -#line 1917 "./parse.y" +#line 1895 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 456: -#line 1922 "./parse.y" +#line 1900 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 457: -#line 1927 "./parse.y" +#line 1905 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 458: -#line 1932 "./parse.y" +#line 1910 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 459: -#line 1937 "./parse.y" +#line 1915 "./parse.y"  { yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 460: -#line 1939 "./parse.y" +#line 1917 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 461: -#line 1941 "./parse.y" +#line 1919 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 462: -#line 1943 "./parse.y" +#line 1921 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 463: -#line 1945 "./parse.y" +#line 1923 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 464: -#line 1947 "./parse.y" +#line 1925 "./parse.y"  {yyerror ("Invalid reference type"); RECOVER;;      break;}  case 466: -#line 1953 "./parse.y" +#line 1931 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 467: -#line 1958 "./parse.y" +#line 1936 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 468: -#line 1963 "./parse.y" +#line 1941 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 469: -#line 1965 "./parse.y" +#line 1943 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 471: -#line 1971 "./parse.y" +#line 1949 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 472: -#line 1976 "./parse.y" +#line 1954 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 474: -#line 1982 "./parse.y" +#line 1960 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 475: -#line 1987 "./parse.y" +#line 1965 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 477: -#line 1993 "./parse.y" +#line 1971 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 478: -#line 1998 "./parse.y" +#line 1976 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 480: -#line 2004 "./parse.y" +#line 1982 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 481: -#line 2009 "./parse.y" +#line 1987 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 483: -#line 2015 "./parse.y" +#line 1993 "./parse.y"  {  		  yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,  				    yyvsp[-2].node, yyvsp[0].node);   		;      break;}  case 484: -#line 2020 "./parse.y" +#line 1998 "./parse.y"  {yyerror ("Missing term"); RECOVER;;      break;}  case 486: -#line 2026 "./parse.y" +#line 2004 "./parse.y"  {  		  yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);  		  EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;  		;      break;}  case 487: -#line 2031 "./parse.y" +#line 2009 "./parse.y"  {  		  YYERROR_NOW;  		  yyerror ("Missing term"); @@ -4457,19 +4441,19 @@ case 487:  		;      break;}  case 488: -#line 2037 "./parse.y" +#line 2015 "./parse.y"  {yyerror ("Missing term"); DRECOVER (2);;      break;}  case 489: -#line 2039 "./parse.y" +#line 2017 "./parse.y"  {yyerror ("Missing term"); DRECOVER (3);;      break;}  case 492: -#line 2049 "./parse.y" +#line 2027 "./parse.y"  { yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;      break;}  case 493: -#line 2051 "./parse.y" +#line 2029 "./parse.y"  {  		  if (ctxp->prevent_ese != lineno)  		    yyerror ("Missing term"); @@ -4674,7 +4658,7 @@ yyerrhandle:    yystate = yyn;    goto yynewstate;  } -#line 2077 "./parse.y" +#line 2055 "./parse.y" @@ -4860,19 +4844,15 @@ yyerror (msg)  }  static void -parse_error (msg) -     char *msg; -{ -  java_error (NULL); -  java_error (msg); -} - -static void -issue_warning_error_from_context (cl, msg) +issue_warning_error_from_context (cl, msg, ap)       tree cl;       char *msg; +     va_list ap;  {    char *saved; +  char buffer [4096]; +  vsprintf (buffer, msg, ap); +  force_error = 1;    ctxp->elc.line = EXPR_WFL_LINENO (cl);    ctxp->elc.col  = (EXPR_WFL_COLNO (cl) == 0xfff ? -1 : EXPR_WFL_COLNO (cl)); @@ -4881,20 +4861,21 @@ issue_warning_error_from_context (cl, msg)    saved = ctxp->filename;    if (TREE_CODE (cl) == EXPR_WITH_FILE_LOCATION && EXPR_WFL_FILENAME_NODE (cl))      ctxp->filename = EXPR_WFL_FILENAME (cl); -  parse_error (msg); +  java_error (NULL); +  java_error (buffer);    ctxp->filename = saved; +  force_error = 0;  }  /* Issue an error message at a current source line CL */ -static void +void  parse_error_context VPROTO ((tree cl, char *msg, ...))  {  #ifndef __STDC__    tree cl;    char *msg;  #endif -  char buffer [4096];    va_list ap;    VA_START (ap, msg); @@ -4902,11 +4883,8 @@ parse_error_context VPROTO ((tree cl, char *msg, ...))    cl = va_arg (ap, tree);    msg = va_arg (ap, char *);  #endif -  vsprintf (buffer, msg, ap); - -  force_error = 1; -  issue_warning_error_from_context (cl, buffer); -  force_error = 0; +  issue_warning_error_from_context (cl, msg, ap); +  va_end (ap);  }  /* Issue a warning at a current source line CL */ @@ -4918,7 +4896,6 @@ parse_warning_context VPROTO ((tree cl, char *msg, ...))    tree cl;    char *msg;  #endif -  char buffer [4096];    va_list ap;    VA_START (ap, msg); @@ -4926,11 +4903,11 @@ parse_warning_context VPROTO ((tree cl, char *msg, ...))    cl = va_arg (ap, tree);    msg = va_arg (ap, char *);  #endif -  vsprintf (buffer, msg, ap); -  force_error = do_warning = 1; -  issue_warning_error_from_context (cl, buffer); -  do_warning = force_error = 0; +  do_warning = 1; +  issue_warning_error_from_context (cl, msg, ap); +  force_error = 0; +  va_end (ap);  }  void @@ -7750,21 +7727,10 @@ static tree  add_stmt_to_compound (existing, type, stmt)       tree existing, type, stmt;  { -  tree node; - -  if (existing && (TREE_CODE (existing) == COMPOUND_EXPR) -      && TREE_OPERAND (existing, 1) == size_zero_node) -    { -      TREE_OPERAND (existing, 1) = stmt; -      TREE_TYPE (existing) = type; -      return existing; -    } -  else if (existing) -    node = build (COMPOUND_EXPR, type, existing, stmt); +  if (existing) +    return build (COMPOUND_EXPR, type, existing, stmt);    else -    node = build (COMPOUND_EXPR, type, stmt, size_zero_node); -   -  return node; +    return stmt;  }  /* Hold THIS for the scope of the current public method decl.  */ @@ -8323,7 +8289,8 @@ resolve_field_access (qual_wfl, field_decl, field_type)  				     type_found, DECL_NAME (decl));        if (field_ref == error_mark_node)  	return error_mark_node; -      if (is_static && !static_final_found) +      if (is_static && !static_final_found +	  && ! flag_emit_class_files)  	{  	  field_ref = build_class_init (type_found, field_ref);  	  /* If the static field was identified by an expression that @@ -8382,8 +8349,8 @@ resolve_qualified_expression_name (wfl, found_decl, where_found, type_found)  	  if (complete_function_arguments (qual_wfl))  	    return 1;  	  *where_found =  -	    patch_method_invocation_stmt (qual_wfl, decl, type, -					  &is_static, NULL, from_super); +	    patch_method_invocation (qual_wfl, decl, type, +				     &is_static, NULL, from_super);  	  if (*where_found == error_mark_node)  	    return 1;  	  *type_found = type = QUAL_DECL_TYPE (*where_found); @@ -8806,12 +8773,12 @@ maybe_access_field (decl, where, type)    return decl;  } -/* Build a method invocation statement, by patching PATCH. If non NULL +/* Build a method invocation, by patching PATCH. If non NULL     and according to the situation, PRIMARY and WHERE may be     used. IS_STATIC is set to 1 if the invoked function is static. */  static tree -patch_method_invocation_stmt (patch, primary, where, is_static, ret_decl, super) +patch_method_invocation (patch, primary, where, is_static, ret_decl, super)       tree patch, primary, where;       int *is_static;       tree *ret_decl; @@ -9084,7 +9051,6 @@ patch_invoke (patch, method, args, from_super)  {    int im;    tree dtable, func; -  tree signature = build_java_signature (TREE_TYPE (method));    tree original_call, t, ta;    /* Last step for args: convert build-in types. If we're dealing with @@ -9099,31 +9065,39 @@ patch_invoke (patch, method, args, from_super)  	TREE_TYPE (TREE_VALUE (ta)) != TREE_VALUE (t))        TREE_VALUE (ta) = convert (TREE_VALUE (t), TREE_VALUE (ta)); -  switch ((im = invocation_mode (method, from_super))) +  if (flag_emit_class_files) +    func = method; +  else      { -    case INVOKE_VIRTUAL: -      dtable = invoke_build_dtable (0, args); -      func = build_invokevirtual (dtable, method); -      break; +      tree signature = build_java_signature (TREE_TYPE (method)); +      switch ((im = invocation_mode (method, from_super))) +	{ +	case INVOKE_VIRTUAL: +	  dtable = invoke_build_dtable (0, args); +	  func = build_invokevirtual (dtable, method); +	  break; -    case INVOKE_SUPER: -    case INVOKE_STATIC: -      func = build_known_method_ref (method, TREE_TYPE (method), -				     DECL_CONTEXT (method), signature, args); -      break; +	case INVOKE_SUPER: +	case INVOKE_STATIC: +	  func = build_known_method_ref (method, TREE_TYPE (method), +					 DECL_CONTEXT (method), +					 signature, args); +	  break; -    case INVOKE_INTERFACE: -      dtable = invoke_build_dtable (1, args); -      func = build_invokeinterface (dtable, DECL_NAME (method), signature); -      break; +	case INVOKE_INTERFACE: +	  dtable = invoke_build_dtable (1, args); +	  func = build_invokeinterface (dtable, DECL_NAME (method), signature); +	  break; -    default: -      fatal ("Unknown invocation mode `%d' - build_invoke", im); -      return NULL_TREE; +	default: +	  fatal ("Unknown invocation mode `%d' - build_invoke", im); +	  return NULL_TREE; +	} + +      /* Ensure self_type is initialized, (invokestatic). FIXME */ +      func = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (method)), func);      } -  /* Ensure self_type is initialized, (invokestatic). FIXME */ -  func = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (method)), func);    TREE_TYPE (patch) = TREE_TYPE (TREE_TYPE (method));    TREE_OPERAND (patch, 0) = func;    TREE_OPERAND (patch, 1) = args; @@ -9138,6 +9112,11 @@ patch_invoke (patch, method, args, from_super)      {        tree class = DECL_CONTEXT (method);        tree c1, saved_new, size, new; +      if (flag_emit_class_files) +	{ +	  TREE_TYPE (patch) = build_pointer_type (class); +	  return patch; +	}        if (!TYPE_SIZE (class))  	safe_layout_class (class);        size = size_in_bytes (class); @@ -9622,11 +9601,66 @@ java_complete_tree (node)  	  IDENTIFIER_LOCAL_VALUE (DECL_NAME (cn)) = cn;  	  INITIALIZED_P (cn) = 0;  	} -      if (BLOCK_EXPR_BODY (node)) +      if (BLOCK_EXPR_BODY (node) == NULL_TREE) +	  CAN_COMPLETE_NORMALLY (node) = 1; +      else  	{ -	  BLOCK_EXPR_BODY (node) = java_complete_tree (BLOCK_EXPR_BODY (node)); -	  if (BLOCK_EXPR_BODY (node) == error_mark_node) +	  tree stmt = BLOCK_EXPR_BODY (node); +	  tree *ptr; +	  int error_seen = 0; +	  if (TREE_CODE (stmt) == COMPOUND_EXPR) +	    { +	      /* Re-order from (((A; B); C); ...; Z) to (A; (B; (C ; (...; Z)))). +		 This makes it easier to scan the statements left-to-right +		 without using recursion (which might overflow the stack +		 if the block has many statements. */ +	      for (;;) +		{ +		  tree left = TREE_OPERAND (stmt, 0); +		  if (TREE_CODE (left) != COMPOUND_EXPR) +		    break; +		  TREE_OPERAND (stmt, 0) = TREE_OPERAND (left, 1); +		  TREE_OPERAND (left, 1) = stmt; +		  stmt = left; +		} +	      BLOCK_EXPR_BODY (node) = stmt; +	    } + +	  /* Now do the actual complete, without deep recursion for long blocks. */ +	  ptr = &BLOCK_EXPR_BODY (node); +	  while (TREE_CODE (*ptr) == COMPOUND_EXPR) +	    { +	      tree cur = java_complete_tree (TREE_OPERAND (*ptr, 0)); +	      tree *next = &TREE_OPERAND (*ptr, 1); +	      TREE_OPERAND (*ptr, 0) = cur; +	      if (TREE_CODE (cur) == ERROR_MARK) +		error_seen++; +	      else if (! CAN_COMPLETE_NORMALLY (cur)) +		{ +		  wfl_op2 = *next; +		  for (;;) +		    { +		      if (TREE_CODE (wfl_op2) == BLOCK) +			wfl_op2 = BLOCK_EXPR_BODY (wfl_op2); +		      else if (TREE_CODE (wfl_op2) == COMPOUND_EXPR) +			wfl_op2 = TREE_OPERAND (wfl_op2, 0); +		      else +			break; +		    } +		  if (TREE_CODE (wfl_op2) != CASE_EXPR +		      && TREE_CODE (wfl_op2) != DEFAULT_EXPR) +		    { +		      SET_WFL_OPERATOR (wfl_operator, *ptr, wfl_op2); +		      parse_error_context (wfl_operator, "Unreachable statement"); +		    } +		} +	      ptr = next; +	    } +	  *ptr = java_complete_tree (*ptr); + +	  if (TREE_CODE (*ptr) == ERROR_MARK || error_seen > 0)  	    return error_mark_node; +	  CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (*ptr);  	}        /* Turn local bindings to null */        for (cn = BLOCK_EXPR_DECLS (node); cn; cn = TREE_CHAIN (cn)) @@ -9640,6 +9674,7 @@ java_complete_tree (node)      case THROW_EXPR:        wfl_op1 = TREE_OPERAND (node, 0);        COMPLETE_CHECK_OP_0 (node); +      /* CAN_COMPLETE_NORMALLY (node) = 0; */        return patch_throw_statement (node, wfl_op1);      case SYNCHRONIZED_EXPR: @@ -9657,6 +9692,8 @@ java_complete_tree (node)  	COMPLETE_CHECK_OP_1 (node);        TREE_TYPE (node) = void_type_node;        POP_LABELED_BLOCK (); +      if (CAN_COMPLETE_NORMALLY (LABELED_BLOCK_BODY (node))) +	CAN_COMPLETE_NORMALLY (node) = 1;        return node;      case EXIT_BLOCK_EXPR: @@ -9664,6 +9701,58 @@ java_complete_tree (node)           the EXIT_BLOCK_EXPR which doesn't exist it Java */        return patch_bc_statement (node); +    case CASE_EXPR: +      cn = java_complete_tree (TREE_OPERAND (node, 0)); +      if (cn == error_mark_node) +	return cn; + +      /* First, the case expression must be constant */ +      cn = fold (cn); + +      if (!TREE_CONSTANT (cn)) +	{ +	  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node); +	  parse_error_context (node, "Constant expression required"); +	  return error_mark_node; +	} + +      nn = ctxp->current_loop; + +      /* It must be assignable to the type of the switch expression. */ +      if (!try_builtin_assignconv (NULL_TREE, TREE_TYPE (TREE_OPERAND (nn, 0)), cn)) +	{ +	  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node); +	  parse_error_context  +	    (wfl_operator, +	     "Incompatible type for case. Can't convert `%s' to `int'", +	     lang_printable_name (TREE_TYPE (cn), 0)); +	  return error_mark_node; +	} + +      cn = fold (convert (int_type_node, cn)); + +      /* Multiple instance of a case label bearing the same +	 value is checked during code generation. The case +	 expression is allright so far. */ +      TREE_OPERAND (node, 0) = cn; +      CAN_COMPLETE_NORMALLY (node) = 1; +      break; + +    case DEFAULT_EXPR: +      nn = ctxp->current_loop; +      /* Only one default label is allowed per switch statement */ +      if (SWITCH_HAS_DEFAULT (nn)) +	{ +	  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node); +	  parse_error_context (wfl_operator,  +			       "Duplicate case label: `default'"); +	  return error_mark_node; +	} +      else +	SWITCH_HAS_DEFAULT (nn) = 1; +      CAN_COMPLETE_NORMALLY (node) = 1; +      break; +      case SWITCH_EXPR:      case LOOP_EXPR:        PUSH_LOOP (node); @@ -9685,7 +9774,11 @@ java_complete_tree (node)        /* If we returned something different, that's because we           inserted a label. Pop the label too. */        if (nn != node) -	POP_LABELED_BLOCK (); +	{ +	  if (CAN_COMPLETE_NORMALLY (node)) +	    CAN_COMPLETE_NORMALLY (nn) = 1; +	  POP_LABELED_BLOCK (); +	}        POP_LOOP ();        return nn; @@ -9720,24 +9813,38 @@ java_complete_tree (node)        /* 3- Expression section */      case COMPOUND_EXPR: -      TREE_OPERAND (node, 0) = java_complete_tree (TREE_OPERAND (node, 0)); +      wfl_op2 = TREE_OPERAND (node, 1); +      TREE_OPERAND (node, 0) = nn = java_complete_tree (TREE_OPERAND (node, 0)); +      if (! CAN_COMPLETE_NORMALLY (nn) && TREE_CODE (nn) != ERROR_MARK) +	{ +	  SET_WFL_OPERATOR (wfl_operator, node, wfl_op2); +	  parse_error_context (wfl_operator, "Unreachable statement"); +	}        TREE_OPERAND (node, 1) = java_complete_tree (TREE_OPERAND (node, 1));        if (TREE_OPERAND (node, 1) == error_mark_node)  	return error_mark_node;        TREE_TYPE (node) = TREE_TYPE (TREE_OPERAND (node, 1)); +      CAN_COMPLETE_NORMALLY (node) +	= CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1));        break;      case RETURN_EXPR: +      /* CAN_COMPLETE_NORMALLY (node) = 0; */        return patch_return (node);      case EXPR_WITH_FILE_LOCATION:        if (!EXPR_WFL_NODE (node) /* Or a PRIMARY flag ? */  	  || TREE_CODE (EXPR_WFL_NODE (node)) == IDENTIFIER_NODE) -        return resolve_expression_name (node, NULL); +	{ +	  node = resolve_expression_name (node, NULL); +	  CAN_COMPLETE_NORMALLY (node) = 1; +	}        else  	{ -	  EXPR_WFL_NODE (node) = java_complete_tree (EXPR_WFL_NODE (node)); +	  tree body = java_complete_tree (EXPR_WFL_NODE (node)); +	  EXPR_WFL_NODE (node) = body;  	  TREE_SIDE_EFFECTS (node) = 1; +	  CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (body);  	  if (EXPR_WFL_NODE (node) == error_mark_node)  	    {  	      /* Its important for the evaluation of assignment that @@ -9747,6 +9854,7 @@ java_complete_tree (node)  	    }  	  else  	    TREE_TYPE (node) = TREE_TYPE (EXPR_WFL_NODE (node)); +	    	}        break; @@ -9774,10 +9882,12 @@ java_complete_tree (node)  	}        /* They complete the array creation expression, if no errors           were found. */ +      CAN_COMPLETE_NORMALLY (node) = 1;        return (flag ? error_mark_node : patch_newarray (node));      case NEW_CLASS_EXPR:      case CALL_EXPR: +      CAN_COMPLETE_NORMALLY (node) = 1;        /* Complete function's argument(s) first */        if (complete_function_arguments (node))  	return error_mark_node; @@ -9786,8 +9896,8 @@ java_complete_tree (node)  	  tree decl, wfl = TREE_OPERAND (node, 0);  	  int in_this = CALL_THIS_CONSTRUCTOR_P (node); -	  node = patch_method_invocation_stmt (node, NULL_TREE,  -					       NULL_TREE, 0, &decl, 0); +	  node = patch_method_invocation (node, NULL_TREE, +					  NULL_TREE, 0, &decl, 0);  	  if (node != error_mark_node)  	    {  	      check_thrown_exceptions (EXPR_WFL_LINECOL (node), decl); @@ -9827,14 +9937,6 @@ java_complete_tree (node)        nn = java_complete_tree (TREE_OPERAND (node, 1));        if (nn == error_mark_node)  	{ -	  /* It's hopeless, but we can further things on to discover -	     an error during the assignment. In any cases, the -	     assignment operation fails. */ -	  if (TREE_CODE (TREE_OPERAND (node, 1)) != EXPR_WITH_FILE_LOCATION -	      && TREE_TYPE (TREE_OPERAND (node, 1)) != error_mark_node -	      && TREE_TYPE (TREE_OPERAND (node, 1))) -	    patch_assignment (node, wfl_op1, wfl_op2); -  	  /* Now, we still mark the lhs as initialized */  	  if (DECL_P (TREE_OPERAND (node, 0)))  	    INITIALIZED_P (TREE_OPERAND (node, 0)) = 1; @@ -9848,7 +9950,9 @@ java_complete_tree (node)  	 STRING_CST or a StringBuffer at this stage */        if ((nn = patch_string (TREE_OPERAND (node, 1))))  	TREE_OPERAND (node, 1) = nn; -      return patch_assignment (node, wfl_op1, wfl_op2); +      node = patch_assignment (node, wfl_op1, wfl_op2); +      CAN_COMPLETE_NORMALLY (node) = 1; +      return node;      case MULT_EXPR:      case PLUS_EXPR: @@ -9874,6 +9978,7 @@ java_complete_tree (node)        wfl_op1 = TREE_OPERAND (node, 0);        wfl_op2 = TREE_OPERAND (node, 1); +      CAN_COMPLETE_NORMALLY (node) = 1;        /* Don't complete string nodes if dealing with the PLUS operand. */        if (TREE_CODE (node) != PLUS_EXPR || !JSTRING_P (wfl_op1))  	{ @@ -9906,6 +10011,7 @@ java_complete_tree (node)        /* There are cases were wfl_op1 is a WFL. patch_unaryop knows  	 how to handle those cases. */        wfl_op1 = TREE_OPERAND (node, 0); +      CAN_COMPLETE_NORMALLY (node) = 1;        TREE_OPERAND (node, 0) = java_complete_tree (wfl_op1);        if (TREE_OPERAND (node, 0) == error_mark_node)  	return error_mark_node; @@ -9951,6 +10057,7 @@ java_complete_tree (node)        return current_this;      default: +      CAN_COMPLETE_NORMALLY (node) = 1;        /* Ok: may be we have a STRING_CST or a crafted `StringBuffer'  	 and it's time to turn it into the appropriate String object  	 */ @@ -10206,7 +10313,7 @@ build_assignment (op, op_location, lhs, rhs)  /* Print an INTEGER_CST node in a static buffer, and return the buffer. */ -static char * +char *  print_int_node (node)      tree node;  { @@ -10671,6 +10778,17 @@ valid_cast_to_p (source, dest)     converted to type DEST through the methond invocation conversion     process (5.3) */ +static tree +do_unary_numeric_promotion (arg) +     tree arg; +{ +  tree type = TREE_TYPE (arg); +  if (TREE_CODE (type) == INTEGER_TYPE ? TYPE_PRECISION (type) < 32 +      : TREE_CODE (type) == CHAR_TYPE) +    arg = convert (int_type_node, arg); +  return arg; +} +  static int  valid_method_invocation_conversion_p (dest, source)       tree dest, source; @@ -10874,8 +10992,8 @@ patch_binop (node, wfl_op1, wfl_op2)        /* Unary numeric promotion (5.6.1) is performed on each operand           separatly */ -      op1 = convert (promote_type (op1_type), op1); -      op2 = convert (promote_type (op2_type), op2); +      op1 = do_unary_numeric_promotion (op1); +      op2 = do_unary_numeric_promotion (op2);        /* The type of the shift expression is the type of the promoted           type of the left-hand operand */ @@ -10890,7 +11008,7 @@ patch_binop (node, wfl_op1, wfl_op2)  			   build_int_2 (0x3f, 0)));        /* The >>> operator is a >> operating on unsigned quantities */ -      if (code == URSHIFT_EXPR) +      if (code == URSHIFT_EXPR && ! flag_emit_class_files)  	{  	  op1 = convert (unsigned_type (prom_type), op1);  	  TREE_SET_CODE (node, RSHIFT_EXPR); @@ -10924,6 +11042,11 @@ patch_binop (node, wfl_op1, wfl_op2)  	  /* If the first operand is null, the result is always false */  	  if (op1 == null_pointer_node)  	    return boolean_false_node; +	  else if (flag_emit_class_files) +	    { +	      TREE_OPERAND (node, 1) = op2_type; +	      return node; +	    }  	  /* Otherwise we have to invoke instance of to figure it out */  	  else  	    { @@ -11264,10 +11387,13 @@ patch_string_cst (node)       tree node;  {    int location; -  push_obstacks (&permanent_obstack, &permanent_obstack); -  node = get_identifier (TREE_STRING_POINTER (node)); -  location = alloc_name_constant (CONSTANT_String, node); -  node = build_ref_from_constant_pool (location); +  if (! flag_emit_class_files) +    { +      push_obstacks (&permanent_obstack, &permanent_obstack); +      node = get_identifier (TREE_STRING_POINTER (node)); +      location = alloc_name_constant (CONSTANT_String, node); +      node = build_ref_from_constant_pool (location); +    }    TREE_TYPE (node) = promote_type (string_type_node);    TREE_CONSTANT (node) = 1;    return node; @@ -11420,8 +11546,8 @@ patch_unaryop (node, wfl_op)        /* Unary numeric promotion is performed on operand */        else  	{ -	  prom_type = promote_type (op_type); -	  op = convert (prom_type, op); +	  op = do_unary_numeric_promotion (op); +	  prom_type = TREE_TYPE (op);  	  if (code == UNARY_PLUS_EXPR)  	    node = op;  	} @@ -11437,8 +11563,8 @@ patch_unaryop (node, wfl_op)  	}        else  	{ -	  prom_type = promote_type (op_type); -	  op = convert (prom_type, op); +	  op = do_unary_numeric_promotion (op); +	  prom_type = TREE_TYPE (op);  	}        break; @@ -11458,22 +11584,11 @@ patch_unaryop (node, wfl_op)      case CONVERT_EXPR:        value = patch_cast (node, wfl_operator);        if (value == error_mark_node) -	{ -	  TREE_TYPE (node) = error_mark_node; -	  error_found = 1; -	} -      else -	node = value; +	return value; +      node = value;        break;      } -  /* Check variable initialization */ -  if (not_initialized_as_it_should_p (op)) -    { -      ERROR_VARIABLE_NOT_INITIALIZED (wfl_op, DECL_NAME (op)); -      INITIALIZED_P (op) = 1; -    } -      if (error_found)      return error_mark_node;    /* In the case of UNARY_PLUS_EXPR, we replaced NODE by a new one */ @@ -11557,7 +11672,16 @@ patch_cast (node, wfl_operator)           conversion (5.2) */        if (valid_ref_assignconv_cast_p (op_type, cast_type, 0)) -	return node; +	{ +	  TREE_SET_CODE (node, NOP_EXPR); +	  return node; +	} + +      if (flag_emit_class_files) +	{ +	  TREE_SET_CODE (node, CONVERT_EXPR); +	  return node; +	}        /* The cast requires a run-time check */        return build (CALL_EXPR, promote_type (cast_type), @@ -11608,17 +11732,10 @@ patch_array_ref (node, wfl_array, wfl_index)    tree array_type  = TREE_TYPE (array);    tree index = TREE_OPERAND (node, 1);    tree index_type = TREE_TYPE (index); -  tree promoted_index_type;    int error_found = 0;    EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (node); -  if (not_initialized_as_it_should_p (array)) -    { -      ERROR_VARIABLE_NOT_INITIALIZED (wfl_array, DECL_NAME (array)); -      INITIALIZED_P (array) = 1; -    } -    if (TREE_CODE (array_type) == POINTER_TYPE)      array_type = TREE_TYPE (array_type); @@ -11634,8 +11751,8 @@ patch_array_ref (node, wfl_array, wfl_index)    /* The array index underdoes unary numeric promotion. The promoted       type must be int */ -  promoted_index_type = promote_type (index_type); -  if (promoted_index_type != int_type_node) +  index = do_unary_numeric_promotion (index); +  if (TREE_TYPE (index) != int_type_node)      {        int could_cast = valid_cast_to_p (index_type, int_type_node);        parse_error_context  @@ -11648,26 +11765,15 @@ patch_array_ref (node, wfl_array, wfl_index)        error_found = 1;      } -  /* Now if the index is a var/parm decl, check on its initialization */ -  if (not_initialized_as_it_should_p (index)) -    { -      ERROR_VARIABLE_NOT_INITIALIZED (wfl_index, DECL_NAME (index)); -      INITIALIZED_P (index) = 1; -    } -    if (error_found)      return error_mark_node; -  index = convert (promoted_index_type, index);    array_type = TYPE_ARRAY_ELEMENT (array_type); -  if (TREE_CODE (array_type) == RECORD_TYPE  -      && !JPRIMITIVE_TYPE_P (TREE_TYPE (array_type))) -    array_type = promote_type (array_type);    if (flag_emit_class_files)      { -      TREE_OPERAND (node, 0)= array; -      TREE_OPERAND (node, 1)= index; +      TREE_OPERAND (node, 0) = array; +      TREE_OPERAND (node, 1) = index;      }    else      node = build_java_arrayaccess (array, array_type, index); @@ -11699,7 +11805,6 @@ patch_newarray (node)    int error_found = 0;    int ndims = 0;    int xdims = TREE_INT_CST_LOW (TREE_OPERAND (node, 2)); -  int total_dims;    /* Dimension types are verified. It's better for the types to be       verified in order. */ @@ -11719,7 +11824,7 @@ patch_newarray (node)  	 promoted type must be int. */        else  	{ -	  dim = convert (promote_type (TREE_TYPE (dim)), dim); +	  dim = do_unary_numeric_promotion (dim);  	  if (TREE_TYPE (dim) != int_type_node)  	    dim_error = 1;  	} @@ -11737,15 +11842,6 @@ patch_newarray (node)  	  error_found = 1;  	} -      /* Check for uninitialized variables */ -      if (not_initialized_as_it_should_p (dim)) -	{ -	  ERROR_VARIABLE_NOT_INITIALIZED (TREE_PURPOSE (cdim),  -					  DECL_NAME (dim)); -	  INITIALIZED_P (dim) = 1; -	  error_found = 1; -	} -        TREE_PURPOSE (cdim) = NULL_TREE;      } @@ -11761,12 +11857,30 @@ patch_newarray (node)        return error_mark_node;      } +  /* Set array_type to the actual (promoted) array type of the result. */ +  if (TREE_CODE (type) == RECORD_TYPE) +    type = build_pointer_type (type); +  while (--xdims >= 0) +    { +      type = promote_type (build_java_array_type (type, -1)); +    } +  dims = nreverse (dims); +  array_type = type; +  for (cdim = dims; cdim; cdim = TREE_CHAIN (cdim)) +    { +      type = array_type; +      array_type = build_java_array_type (type, +					  TREE_CODE (cdim) == INTEGER_CST ? +					  TREE_INT_CST_LOW (cdim) : -1); +      array_type = promote_type (array_type); +    } +  dims = nreverse (dims); +    /* The node is transformed into a function call. Things are done       differently according to the number of dimensions. If the number       of dimension is equal to 1, then the nature of the base type       (primitive or not) matters. */ -  total_dims = xdims + ndims; -  if (total_dims == 1) +  if (ndims == 1)      {        if (JPRIMITIVE_TYPE_P (type))  	{ @@ -11792,28 +11906,16 @@ patch_newarray (node)  	  return build_newarray (type_code, TREE_VALUE (dims));  	}        else -	return build_anewarray (type, TREE_VALUE (dims)); +	return build_anewarray (TREE_TYPE (type), TREE_VALUE (dims));      } -  /* Add extra dimensions as unknown dimensions */ -  while (xdims--) -    dims =  -      chainon (dims, build_tree_list (NULL_TREE, integer_negative_one_node)); -  dims = chainon (dims, build_tree_list (NULL_TREE, integer_zero_node)); -    /* Can't reuse what's already written in expr.c because it uses the       JVM stack representation. Provide a build_multianewarray. FIXME */ -  array_type = type; -  for (cdim = TREE_CHAIN (dims); cdim; cdim = TREE_CHAIN (cdim)) -    array_type = build_java_array_type (promote_type (array_type),  -					TREE_CODE (cdim) == INTEGER_CST ? -					TREE_INT_CST_LOW (cdim) : -1); -  return build (CALL_EXPR, -		promote_type (array_type), +  return build (CALL_EXPR, array_type,  		build_address_of (soft_multianewarray_node), -		tree_cons (NULL_TREE, build_class_ref (array_type), +		tree_cons (NULL_TREE, build_class_ref (TREE_TYPE (array_type)),  			   tree_cons (NULL_TREE,  -				      build_int_2 (total_dims, 0), dims )), +				      build_int_2 (ndims, 0), dims )),  		NULL_TREE);  } @@ -11962,6 +12064,9 @@ patch_if_else_statement (node)    TREE_TYPE (node) = void_type_node;    TREE_SIDE_EFFECTS (node) = 1; +  CAN_COMPLETE_NORMALLY (node) +    = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0)) +    | CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1));    return node;  } @@ -12275,9 +12380,11 @@ patch_bc_statement (node)        /* Everything looks good. We can fix the `continue' jump to go           at the place in the loop were the continue is. The continue  	 is the current labeled block, by construction. */ -      EXIT_BLOCK_LABELED_BLOCK (node) = ctxp->current_labeled_block; +      EXIT_BLOCK_LABELED_BLOCK (node) = bc_label = ctxp->current_labeled_block;      } +  CAN_COMPLETE_NORMALLY (bc_label) = 1; +    /* Our break/continue don't return values. */    TREE_TYPE (node) = void_type_node;    /* Encapsulate the break within a compound statement so that it's @@ -12313,6 +12420,15 @@ patch_exit_expr (node)       return */    TREE_OPERAND (node, 0) =       fold (build1 (TRUTH_NOT_EXPR, boolean_type_node, expression)); + +  if (! integer_zerop (TREE_OPERAND (node, 0)) +      && ctxp->current_loop != NULL_TREE +      && TREE_CODE (ctxp->current_loop) == LOOP_EXPR) +    CAN_COMPLETE_NORMALLY (ctxp->current_loop) = 1; +  if (! integer_onep (TREE_OPERAND (node, 0))) +    CAN_COMPLETE_NORMALLY (node) = 1; + +    TREE_TYPE (node) = void_type_node;    return node;  } @@ -12323,9 +12439,7 @@ static tree  patch_switch_statement (node)       tree node;  { -  int error_found = 0;    tree se = TREE_OPERAND (node, 0), se_type, sb; -  tree default_found = NULL_TREE;    /* Complete the switch expression */    se = TREE_OPERAND (node, 0) = java_complete_tree (se); @@ -12343,150 +12457,21 @@ patch_switch_statement (node)        return error_mark_node;      } -  /* Process the switch body. We should have a list of TREE_LIST. The -     PURPOSE of each node should be a list of case values, VALUE -     should be the associated block. We try to process all cases and -     defaults before returning, possibly finding errors.  */ -  TREE_OPERAND (node, 1) = nreverse (TREE_OPERAND (node, 1)); -  for (sb = TREE_OPERAND (node, 1); sb; sb = TREE_CHAIN (sb)) -    { -      tree label; - -      /* If we don't have a TREE_LIST here, we have a statement inside -	 the switch that isn't tied to a label. This error is caught -	 by the parser and we don't have to report it here. */ - -      TREE_PURPOSE (sb) = nreverse (TREE_PURPOSE (sb)); -      for (label = TREE_PURPOSE (sb); label; label = TREE_CHAIN (label)) -	{ -	  tree case_expr; -	   -	  /* Verification of the default label */ -	  if (TREE_CODE (label) == DEFAULT_EXPR) -	    { -	      /* Only one default label is allowed per switch -                 statement */ -	      if (default_found) -		{ -		  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label); -		  parse_error_context (wfl_operator,  -				       "Duplicate case label: `default'"); -		  error_found = 1; -		} -	      else -		default_found = label; -	      continue; -	    } -	  /* Verification of case labels */ -	  else -	    { -	      case_expr = java_complete_tree (TREE_OPERAND (label, 0)); -	      if (case_expr == error_mark_node) -		continue; - -	      /* First, the case expression must be constant */ -	      case_expr = fold (case_expr); -	      if (!TREE_CONSTANT (case_expr)) -		{ -		  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label); -		  parse_error_context (label, "Constant expression required"); -		  error_found = 1; -		  break; -		} -	       -	      /* It must be assignable to the type of the switch -		 expression. */ -	      if (!try_builtin_assignconv (NULL_TREE, se_type, case_expr)) -		{ -		  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label); -		  parse_error_context  -		    (wfl_operator, -		     "Incompatible type for case. Can't convert `%s' to `int'", -		     lang_printable_name (TREE_TYPE (case_expr), 0)); -		  error_found = 1; -		  break; -		} - -	      /* Multiple instance of a case label bearing the same -                 value is checked during code generation. The case -                 expression is allright so far. */ -	      TREE_OPERAND (label, 0) = case_expr; -	    } -	} - -      /* First TREE_VALUE should be the block tied to this list of -         cases. Check that this block exists and the walk it */ -      if (TREE_VALUE (sb)) -	{ -	  TREE_VALUE (sb) = java_complete_tree (TREE_VALUE (sb)); -	  if (TREE_VALUE (sb) == error_mark_node) -	    error_found = 1; -	} -    } +  TREE_OPERAND (node, 1) = java_complete_tree (TREE_OPERAND (node, 1));    /* Ready to return */ -  if (error_found) +  if (TREE_CODE (TREE_OPERAND (node, 1)) == ERROR_MARK)      {        TREE_TYPE (node) = error_mark_node;        return error_mark_node;      }    TREE_TYPE (node) = void_type_node;    TREE_SIDE_EFFECTS (node) = 1; +  CAN_COMPLETE_NORMALLY (node) +    = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 1)) ||	! SWITCH_HAS_DEFAULT (node);    return node;  } -/* Do the expansion of a Java switch. With Gcc, switches are front-end -   dependant things, but they rely on gcc routines. This function is -   placed here because it uses things defined locally in parse.y. */ - -static tree case_identity (t, v) -     tree t __attribute__ ((__unused__)); -     tree v; -{ -  return v; -} - -void -java_expand_switch (exp) -     tree exp; -{ -  tree sb; -  expand_start_case (0, TREE_OPERAND (exp, 0), int_type_node, "switch"); - -  for (sb = TREE_OPERAND (exp, 1); sb; sb = TREE_CHAIN (sb)) -    { -      /* We have a list of TREE_LIST. PURPOSE is the case value, and -	 when it exists, VALUE is the associated block */ -       -      /* The first CASE element should contain the associated block, -	 if any. All other should be case statements related to the -	 same block */ -      tree label; -      for (label = TREE_PURPOSE (sb); label; label = TREE_CHAIN (label)) -	{ -	  tree label_decl = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); -	  if (TREE_CODE (label) == CASE_EXPR) -	    { -	      tree duplicate; -	      if (pushcase (TREE_OPERAND (label, 0), case_identity, -			    label_decl, &duplicate) == 2) -		{ -		  EXPR_WFL_LINECOL (wfl_operator) = EXPR_WFL_LINECOL (label); -		  parse_error_context -		    (wfl_operator, "Duplicate case label: `%s'", -		     print_int_node (TREE_OPERAND (label, 0))); -		} -	    } -	  else -	    pushcase (NULL_TREE, 0, label_decl, NULL); -	} -      /* Expand the associated block, if any */ -      if (TREE_VALUE (sb)) -	expand_expr_stmt (TREE_VALUE (sb)); -    }  -  expand_end_case (TREE_OPERAND (exp, 0)); -} -  /* 14.18 The try statement */  /* Wrap BLOCK around a LABELED_BLOCK, set DECL to the newly generated @@ -12525,7 +12510,7 @@ build_try_statement (location, try_block, catches, finally)  {    tree node, rff; -  if (finally) +  if (finally && ! flag_emit_class_files)      {        /* This block defines a scope for the entire try[-catch]-finally  	 sequence. It hold a local variable used to return from the @@ -12592,7 +12577,8 @@ build_try_statement (location, try_block, catches, finally)    /* If we have a finally, surround this whole thing by a block where       the RFF local variable is defined. */ -  return (finally ? build_expr_block (node, rff) : node); +  return (finally && ! flag_emit_class_files ? build_expr_block (node, rff) +	  : node);  }  /* Get the catch clause block from an element of the catch clause @@ -12699,13 +12685,6 @@ patch_try_statement (node)  	      break;  	    }  	} -      if (unreachable) -	continue; - -      /* Things to do here: the exception must be thrown */ - -      /* Link this type to the caught type list */ -      caught_type_list = tree_cons (NULL_TREE, carg_type, caught_type_list);        /* Complete the catch clause block */        catch_block = java_complete_tree (TREE_OPERAND (current, 0)); @@ -12714,21 +12693,36 @@ patch_try_statement (node)  	  error_found = 1;  	  continue;  	} +      if (CAN_COMPLETE_NORMALLY (catch_block)) +	CAN_COMPLETE_NORMALLY (node) = 1;        TREE_OPERAND (current, 0) = catch_block; + +      if (unreachable) +	continue; + +      /* Things to do here: the exception must be thrown */ + +      /* Link this type to the caught type list */ +      caught_type_list = tree_cons (NULL_TREE, carg_type, caught_type_list); +      }    PUSH_EXCEPTIONS (caught_type_list);    if ((try = java_complete_tree (try)) == error_mark_node)      error_found = 1; +  if (CAN_COMPLETE_NORMALLY (try)) +    CAN_COMPLETE_NORMALLY (node) = 1;    POP_EXCEPTIONS ();    /* Process finally */    if (finally)      { -      FINALLY_EXPR_BLOCK (finally) =  -	java_complete_tree (FINALLY_EXPR_BLOCK (finally)); -      if (FINALLY_EXPR_BLOCK (finally) == error_mark_node) +      current = java_complete_tree (FINALLY_EXPR_BLOCK (finally)); +      FINALLY_EXPR_BLOCK (finally) = current; +      if (current == error_mark_node)  	error_found = 1; +      if (! CAN_COMPLETE_NORMALLY (current)) +	CAN_COMPLETE_NORMALLY (node) = 0;      }    /* Verification ends here */ @@ -12875,7 +12869,8 @@ patch_throw_statement (node, wfl_op1)       unchecked exception or its value is always caught by some try       statement that contains it. FIXME, static initializer. */ -  BUILD_THROW (node, expr); +  if (! flag_emit_class_files) +    BUILD_THROW (node, expr);    return node;  } @@ -13046,5 +13041,6 @@ patch_conditional_expr (node, wfl_cond, wfl_op1)    TREE_TYPE (node) = resulting_type;    TREE_SET_CODE (node, COND_EXPR); +  CAN_COMPLETE_NORMALLY (node) = 1;    return node;  } | 

