From: evans1629 Date: Thu, 3 Jan 2002 19:45:44 +0000 (+0000) Subject: Changed checking of complete descruction so +strictdestroy is no X-Git-Tag: splint-3_0_1_2~39 X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/commitdiff_plain/2e127cb83d8e599677e0b6b04635bc34ba874fa0 Changed checking of complete descruction so +strictdestroy is no necessary for struct fields. --- diff --git a/src/Headers/exprNode.h b/src/Headers/exprNode.h index 6d93a91..327fada 100644 --- a/src/Headers/exprNode.h +++ b/src/Headers/exprNode.h @@ -302,6 +302,9 @@ extern exprNode exprNode_concat (/*@only@*/ exprNode p_e1, /*@only@*/ exprNode p extern exprNode exprNode_createTok (/*@only@*/ lltok p_t) /*@*/ ; extern exprNode exprNode_statement (/*@only@*/ exprNode p_e, /*@only@*/ lltok p_t); extern exprNode exprNode_makeBlock (/*@only@*/ exprNode p_e); + +extern void exprNode_checkIfPred (exprNode p_pred) /*@modifies g_msgstream@*/ ; + extern exprNode exprNode_if (/*@only@*/ exprNode p_pred, /*@only@*/ exprNode p_tclause); extern exprNode exprNode_ifelse (/*@only@*/ exprNode p_pred, /*@only@*/ exprNode p_tclause, diff --git a/src/Headers/sRef.h b/src/Headers/sRef.h index 13bb3f1..c251c39 100644 --- a/src/Headers/sRef.h +++ b/src/Headers/sRef.h @@ -288,8 +288,12 @@ extern /*@only@*/ cstring sRef_unparseDebug (sRef p_s) /*@*/ ; extern void sRef_killComplete (sRef p_s, fileloc p_loc) /*@modifies p_s@*/ ; extern int sRef_getIndex (sRef p_arr) /*@*/ ; extern /*@dependent@*/ sRef sRef_fixOuterRef (/*@returned@*/ sRef p_s); -extern void sRef_setDefinedComplete (sRef p_s, fileloc p_loc); -extern void sRef_setDefinedNCComplete (sRef p_s, fileloc p_loc); + +/* Use this one to clear after error */ +extern void sRef_setDefinedCompleteDirect (sRef p_s, fileloc p_loc) ; + +extern void sRef_setDefinedComplete (sRef p_s, fileloc p_loc) ; +extern void sRef_setDefinedNCComplete (sRef p_s, fileloc p_loc) ; extern int sRef_getParam (sRef p_s) /*@*/ ; extern int sRef_lexLevel (sRef p_s) /*@*/ ; extern void sRef_setOrigAliasKind (sRef p_s, alkind p_kind); diff --git a/src/Headers/transferChecks.h b/src/Headers/transferChecks.h index 7e41133..e797819 100644 --- a/src/Headers/transferChecks.h +++ b/src/Headers/transferChecks.h @@ -2,34 +2,23 @@ ** transferChecks.h */ -extern alkind alkind_resolve (alkind p_a1, alkind p_a2) /*@*/ ; -extern bool checkGlobalDestroyed (sRef p_fref, fileloc p_loc) +extern bool transferChecks_globalDestroyed (sRef p_fref, fileloc p_loc) /*@modifies g_msgstream@*/ ; -extern void checkLocalDestroyed (sRef p_fref, fileloc p_loc) +extern void transferChecks_localDestroyed (sRef p_fref, fileloc p_loc) /*@modifies g_msgstream@*/ ; +extern void transferChecks_structDestroyed (sRef p_fref, fileloc p_loc) + /*@modifies g_msgstream@*/ ; + +extern void transferChecks_assign (exprNode p_lhs, exprNode p_rhs); +extern void transferChecks_initialization (exprNode p_lhs, exprNode p_rhs); -extern void checkAssignTransfer (exprNode p_lhs, exprNode p_rhs); -extern void checkPassTransfer (exprNode p_fexp, uentry p_arg, bool p_isSpec, - /*@dependent@*/ exprNode p_fcn, int p_argno, int p_totargs); -extern void checkReturnTransfer (exprNode p_fexp, uentry p_rval); -extern void checkGlobReturn (uentry p_glob); -extern void checkParamReturn (uentry p_actual); -extern void checkLoseRef (uentry p_actual); -extern bool canLoseReference (/*@dependent@*/ sRef p_sr, fileloc p_loc); -extern void checkInitTransfer (exprNode p_lhs, exprNode p_rhs); -extern void checkStructDestroyed (sRef p_fref, fileloc p_loc); +extern void transferChecks_passParam + (exprNode p_fexp, uentry p_arg, bool p_isSpec, + /*@dependent@*/ exprNode p_fcn, int p_argno, int p_totargs); -/* transfer types: */ +extern void transferChecks_return (exprNode p_fexp, uentry p_rval); +extern void transferChecks_globalReturn (uentry p_glob); +extern void transferChecks_paramReturn (uentry p_actual); -typedef enum -{ - TT_FCNRETURN, - TT_DOASSIGN, - TT_FIELDASSIGN, - TT_FCNPASS, - TT_GLOBPASS, - TT_GLOBRETURN, - TT_PARAMRETURN, - TT_LEAVETRANS, - TT_GLOBINIT -} transferKind; +extern void transferChecks_loseReference (uentry p_actual); +extern bool transferChecks_canLoseReference (/*@dependent@*/ sRef p_sr, fileloc p_loc); diff --git a/src/Headers/varKinds.h b/src/Headers/varKinds.h index 8b804d0..dbff679 100644 --- a/src/Headers/varKinds.h +++ b/src/Headers/varKinds.h @@ -151,6 +151,8 @@ extern /*@unused@*/ bool alkind_isRefs (alkind p_a) /*@*/ ; extern bool alkind_isNewRef (alkind p_a) /*@*/ ; extern bool alkind_isKillRef (alkind p_a) /*@*/ ; +extern alkind alkind_resolve (alkind p_a1, alkind p_a2) /*@*/ ; + # define alkind_isOwned(a) ((a) == AK_OWNED) # define alkind_isStack(a) ((a) == AK_STACK) # define alkind_isStatic(a) ((a) == AK_STATIC) diff --git a/src/cgrammar.c.der b/src/cgrammar.c.der index 776659c..75c886f 100644 --- a/src/cgrammar.c.der +++ b/src/cgrammar.c.der @@ -41,6 +41,9 @@ /*@-dependenttrans@*/ /*@-unqualifiedtrans@*/ /*@-nullassign@*/ +/*@-nullpass@*/ +/*@-nullptrarith*/ +/*@-usereleased@*/ /*@-declundef@*/ /*drl added 11/27/2001*/ @@ -363,11 +366,11 @@ typedef union -#define YYFINAL 1192 +#define YYFINAL 1193 #define YYFLAG -32768 #define YYNTBASE 192 -#define YYTRANSLATE(x) ((unsigned)(x) <= 445 ? yytranslate[x] : 447) +#define YYTRANSLATE(x) ((unsigned)(x) <= 445 ? yytranslate[x] : 448) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -468,43 +471,43 @@ static const short yyprhs[] = { 0, 1419, 1424, 1430, 1432, 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1457, 1460, 1468, 1475, 1478, 1479, 1480, 1491, 1492, 1499, 1501, 1503, 1505, 1507, 1510, - 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1528, 1530, 1533, - 1536, 1539, 1541, 1543, 1545, 1547, 1549, 1551, 1553, 1555, - 1557, 1559, 1563, 1565, 1567, 1570, 1573, 1574, 1577, 1578, - 1583, 1584, 1591, 1592, 1596, 1597, 1603, 1607, 1610, 1614, - 1615, 1616, 1617, 1618, 1619, 1621, 1624, 1627, 1631, 1634, - 1638, 1642, 1647, 1650, 1653, 1657, 1661, 1666, 1668, 1671, - 1673, 1676, 1678, 1681, 1683, 1686, 1688, 1691, 1693, 1698, - 1701, 1702, 1708, 1709, 1716, 1721, 1726, 1727, 1728, 1739, - 1741, 1742, 1747, 1749, 1751, 1753, 1755, 1757, 1760, 1762, - 1766, 1768, 1773, 1777, 1782, 1789, 1795, 1801, 1804, 1807, - 1809, 1812, 1815, 1818, 1821, 1824, 1827, 1830, 1833, 1835, - 1837, 1842, 1844, 1848, 1852, 1856, 1858, 1862, 1866, 1868, - 1872, 1876, 1878, 1882, 1886, 1890, 1894, 1896, 1900, 1904, - 1906, 1910, 1912, 1916, 1918, 1922, 1924, 1928, 1930, 1934, - 1936, 1937, 1938, 1946, 1948, 1952, 1956, 1960, 1964, 1968, - 1972, 1976, 1980, 1984, 1988, 1992, 1994, 1995, 1997, 2000, - 2008, 2011, 2014, 2022, 2029, 2032, 2036, 2039, 2043, 2046, - 2050, 2054, 2058, 2062, 2065, 2069, 2070, 2072, 2074, 2076, - 2078, 2080, 2082, 2084, 2086 + 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1528, 1530, 1531, + 1535, 1538, 1541, 1543, 1545, 1547, 1549, 1551, 1553, 1555, + 1557, 1559, 1561, 1565, 1567, 1569, 1572, 1575, 1576, 1579, + 1580, 1585, 1586, 1593, 1594, 1598, 1599, 1605, 1609, 1612, + 1616, 1617, 1618, 1619, 1620, 1621, 1623, 1626, 1629, 1633, + 1636, 1640, 1644, 1649, 1652, 1655, 1659, 1663, 1668, 1670, + 1673, 1675, 1678, 1680, 1683, 1685, 1688, 1690, 1693, 1695, + 1700, 1703, 1704, 1710, 1711, 1718, 1723, 1728, 1729, 1730, + 1741, 1743, 1744, 1749, 1751, 1753, 1755, 1757, 1759, 1762, + 1764, 1768, 1770, 1775, 1779, 1784, 1791, 1797, 1803, 1806, + 1809, 1811, 1814, 1817, 1820, 1823, 1826, 1829, 1832, 1835, + 1837, 1839, 1844, 1846, 1850, 1854, 1858, 1860, 1864, 1868, + 1870, 1874, 1878, 1880, 1884, 1888, 1892, 1896, 1898, 1902, + 1906, 1908, 1912, 1914, 1918, 1920, 1924, 1926, 1930, 1932, + 1936, 1938, 1939, 1940, 1948, 1950, 1954, 1958, 1962, 1966, + 1970, 1974, 1978, 1982, 1986, 1990, 1994, 1996, 1997, 1999, + 2002, 2010, 2013, 2016, 2024, 2031, 2034, 2038, 2041, 2045, + 2048, 2052, 2056, 2060, 2064, 2067, 2071, 2072, 2074, 2076, + 2078, 2080, 2082, 2084, 2086, 2088 }; static const short yyrhs[] = { -1, - 193, 0, 194, 0, 193, 194, 0, 254, 443, 0, + 193, 0, 194, 0, 193, 194, 0, 254, 444, 0, 195, 0, 196, 0, 206, 0, 209, 0, 291, 0, - 1, 0, 76, 329, 342, 352, 342, 443, 299, 89, + 1, 0, 76, 329, 342, 352, 342, 444, 299, 89, 0, 76, 329, 342, 352, 342, 23, 299, 304, 303, - 443, 89, 0, 0, 77, 197, 198, 443, 89, 0, + 444, 89, 0, 0, 77, 197, 198, 444, 89, 0, 199, 0, 329, 342, 199, 0, 203, 0, 356, 203, - 0, 445, 0, 299, 24, 342, 352, 299, 25, 0, + 0, 446, 0, 299, 24, 342, 352, 299, 25, 0, 200, 26, 27, 0, 200, 26, 299, 290, 27, 342, 0, 0, 200, 300, 24, 25, 201, 226, 0, 0, - 200, 300, 24, 353, 25, 202, 226, 0, 445, 0, + 200, 300, 24, 353, 25, 202, 226, 0, 446, 0, 299, 24, 342, 199, 299, 25, 0, 203, 26, 27, 0, 203, 26, 299, 290, 27, 342, 0, 0, 203, 300, 24, 25, 204, 227, 0, 0, 203, 300, 24, - 353, 25, 205, 227, 0, 0, 0, 78, 445, 24, - 353, 25, 207, 227, 208, 443, 89, 0, 90, 382, + 353, 25, 205, 227, 0, 0, 0, 78, 446, 24, + 353, 25, 207, 227, 208, 444, 89, 0, 90, 383, 93, 0, 91, 369, 93, 0, 92, 370, 93, 0, 90, 93, 0, 249, 0, 212, 23, 215, 0, 0, 223, 213, 22, 216, 0, 0, 5, 214, 22, 216, @@ -512,42 +515,42 @@ static const short yyrhs[] = { -1, 182, 217, 0, 218, 0, 221, 220, 221, 0, 179, 0, 180, 0, 52, 0, 51, 0, 53, 0, 222, 0, 224, 24, 221, 25, 0, 24, 221, 225, 221, - 25, 0, 223, 0, 187, 0, 444, 0, 184, 0, + 25, 0, 223, 0, 187, 0, 445, 0, 184, 0, 223, 26, 27, 0, 223, 26, 187, 27, 0, 34, - 223, 0, 24, 223, 25, 0, 223, 28, 445, 0, - 223, 44, 445, 0, 219, 0, 33, 0, 32, 0, + 223, 0, 24, 223, 25, 0, 223, 28, 446, 0, + 223, 44, 446, 0, 219, 0, 33, 0, 32, 0, 0, 228, 226, 0, 0, 229, 227, 0, 230, 0, 234, 0, 233, 0, 307, 0, 310, 0, 240, 0, 231, 0, 235, 0, 233, 0, 308, 0, 312, 0, - 241, 0, 231, 89, 0, 0, 73, 232, 242, 443, + 241, 0, 231, 89, 0, 0, 73, 232, 242, 444, 0, 75, 0, 235, 89, 0, 0, 74, 236, 255, 0, 238, 0, 238, 40, 237, 0, 184, 0, 240, - 0, 0, 241, 89, 0, 72, 237, 419, 0, 72, + 0, 0, 241, 89, 0, 72, 237, 420, 0, 72, 237, 0, 243, 0, 242, 21, 243, 0, 244, 245, - 0, 0, 246, 244, 0, 444, 0, 184, 0, 291, + 0, 0, 246, 244, 0, 445, 0, 184, 0, 291, 0, 87, 0, 88, 0, 117, 0, 118, 0, 131, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 352, 0, 329, 342, 352, - 0, 0, 19, 251, 399, 0, 0, 0, 252, 403, - 253, 392, 0, 210, 250, 0, 258, 443, 0, 443, - 0, 444, 0, 184, 0, 256, 26, 27, 0, 256, + 0, 0, 19, 251, 400, 0, 0, 0, 252, 404, + 253, 393, 0, 210, 250, 0, 258, 444, 0, 444, + 0, 445, 0, 184, 0, 256, 26, 27, 0, 256, 26, 257, 27, 0, 34, 256, 0, 24, 256, 25, - 0, 256, 28, 445, 0, 256, 44, 445, 0, 256, - 0, 419, 0, 256, 0, 258, 21, 256, 0, 444, + 0, 256, 28, 446, 0, 256, 44, 446, 0, 256, + 0, 420, 0, 256, 0, 258, 21, 256, 0, 445, 0, 184, 0, 259, 26, 27, 0, 259, 26, 257, 27, 0, 34, 259, 0, 24, 259, 25, 0, 259, - 28, 445, 0, 259, 44, 445, 0, 0, 261, 0, - 259, 0, 261, 21, 259, 0, 444, 0, 184, 0, - 419, 0, 24, 288, 25, 0, 185, 0, 112, 0, + 28, 446, 0, 259, 44, 446, 0, 0, 261, 0, + 259, 0, 261, 21, 259, 0, 445, 0, 184, 0, + 420, 0, 24, 288, 25, 0, 185, 0, 112, 0, 262, 0, 263, 26, 288, 27, 0, 263, 24, 25, 0, 263, 24, 264, 25, 0, 70, 24, 287, 21, - 364, 25, 0, 263, 342, 28, 445, 299, 0, 263, - 342, 44, 445, 299, 0, 263, 47, 0, 263, 48, + 364, 25, 0, 263, 342, 28, 446, 299, 0, 263, + 342, 44, 446, 299, 0, 263, 47, 0, 263, 48, 0, 287, 0, 264, 21, 287, 0, 263, 0, 47, 265, 0, 48, 265, 0, 29, 271, 0, 34, 271, 0, 33, 271, 0, 32, 271, 0, 31, 271, 0, - 30, 271, 0, 268, 0, 267, 0, 266, 28, 445, - 0, 445, 0, 46, 299, 24, 364, 342, 21, 266, + 30, 271, 0, 268, 0, 267, 0, 266, 28, 446, + 0, 446, 0, 46, 299, 24, 364, 342, 21, 266, 25, 299, 0, 0, 299, 269, 270, 0, 42, 24, 364, 25, 0, 42, 265, 0, 43, 24, 364, 25, 0, 43, 265, 0, 265, 0, 24, 364, 25, 271, @@ -579,9 +582,9 @@ static const short yyrhs[] = { -1, 0, 19, 305, 20, 0, 19, 305, 21, 20, 0, 304, 0, 305, 21, 304, 0, 113, 0, 111, 0, 114, 0, 115, 0, 116, 0, 176, 299, 0, 308, - 89, 0, 0, 247, 342, 309, 261, 443, 299, 0, + 89, 0, 0, 247, 342, 309, 261, 444, 299, 0, 312, 89, 0, 248, 342, 0, 0, 311, 318, 313, - 260, 443, 299, 0, 0, 311, 314, 315, 443, 299, + 260, 444, 299, 0, 0, 311, 314, 315, 444, 299, 0, 217, 0, 211, 0, 140, 0, 141, 0, 143, 0, 144, 0, 142, 0, 125, 0, 128, 0, 126, 0, 127, 0, 133, 0, 134, 0, 119, 0, 121, @@ -598,107 +601,107 @@ static const short yyrhs[] = { -1, 299, 0, 322, 299, 0, 323, 299, 0, 166, 342, 0, 168, 342, 0, 167, 342, 0, 169, 342, 0, 170, 342, 0, 171, 342, 0, 172, 342, 0, 173, - 342, 0, 174, 342, 0, 175, 342, 0, 446, 342, + 342, 0, 174, 342, 0, 175, 342, 0, 447, 342, 0, 333, 342, 0, 347, 342, 0, 324, 342, 0, 299, 329, 299, 0, 331, 0, 331, 86, 330, 89, 0, 364, 0, 364, 21, 330, 0, 306, 332, 0, 326, 332, 0, 327, 332, 0, 0, 329, 0, 0, - 0, 342, 67, 445, 299, 19, 334, 396, 343, 397, - 335, 20, 0, 0, 0, 342, 68, 445, 299, 19, - 336, 396, 343, 397, 337, 20, 0, 342, 67, 445, - 299, 19, 20, 0, 342, 68, 445, 299, 19, 20, - 0, 0, 0, 342, 67, 299, 19, 338, 396, 343, - 397, 339, 20, 0, 0, 0, 342, 68, 299, 19, - 340, 396, 343, 397, 341, 20, 0, 342, 67, 299, + 0, 342, 67, 446, 299, 19, 334, 397, 343, 398, + 335, 20, 0, 0, 0, 342, 68, 446, 299, 19, + 336, 397, 343, 398, 337, 20, 0, 342, 67, 446, + 299, 19, 20, 0, 342, 68, 446, 299, 19, 20, + 0, 0, 0, 342, 67, 299, 19, 338, 397, 343, + 398, 339, 20, 0, 0, 0, 342, 68, 299, 19, + 340, 397, 343, 398, 341, 20, 0, 342, 67, 299, 19, 20, 0, 342, 68, 299, 19, 20, 0, 342, - 67, 445, 342, 0, 342, 68, 445, 342, 0, 0, + 67, 446, 342, 0, 342, 68, 446, 342, 0, 0, 344, 0, 209, 0, 343, 344, 0, 329, 342, 345, 299, 18, 0, 329, 299, 18, 0, 346, 342, 0, 345, 21, 346, 342, 0, 352, 0, 22, 299, 290, 0, 352, 22, 299, 290, 0, 342, 69, 19, 349, - 20, 299, 0, 0, 342, 69, 445, 19, 348, 349, - 20, 299, 0, 342, 69, 445, 299, 0, 350, 0, - 349, 21, 350, 0, 349, 21, 0, 445, 0, 445, + 20, 299, 0, 0, 342, 69, 446, 19, 348, 349, + 20, 299, 0, 342, 69, 446, 299, 0, 350, 0, + 349, 21, 350, 0, 349, 21, 0, 446, 0, 446, 23, 299, 290, 0, 200, 0, 366, 0, 356, 190, 0, 356, 351, 0, 200, 0, 356, 200, 0, 359, 0, 342, 357, 0, 109, 0, 110, 0, 354, 0, 355, 354, 0, 34, 0, 34, 355, 0, 34, 356, 0, 34, 355, 356, 0, 358, 0, 358, 21, 5, - 0, 445, 0, 358, 21, 445, 0, 5, 0, 360, + 0, 446, 0, 358, 21, 446, 0, 5, 0, 360, 0, 360, 21, 5, 0, 0, 361, 363, 0, 0, 360, 21, 362, 363, 0, 299, 329, 351, 299, 0, - 445, 0, 328, 0, 328, 365, 0, 356, 0, 367, + 446, 0, 328, 0, 328, 365, 0, 356, 0, 367, 0, 356, 367, 0, 0, 367, 0, 299, 24, 342, 365, 25, 0, 26, 27, 0, 26, 290, 27, 0, 367, 26, 27, 0, 367, 26, 290, 27, 0, 299, 24, 25, 0, 299, 24, 359, 25, 0, 367, 299, - 24, 25, 0, 367, 299, 24, 359, 25, 0, 384, - 0, 386, 0, 389, 0, 392, 0, 405, 0, 408, - 0, 440, 0, 413, 0, 442, 0, 371, 0, 369, - 0, 378, 0, 371, 378, 0, 412, 371, 0, 439, - 383, 11, 24, 288, 25, 18, 0, 439, 383, 11, + 24, 25, 0, 367, 299, 24, 359, 25, 0, 385, + 0, 387, 0, 390, 0, 393, 0, 406, 0, 409, + 0, 441, 0, 414, 0, 443, 0, 371, 0, 369, + 0, 378, 0, 371, 378, 0, 413, 371, 0, 440, + 384, 11, 24, 288, 25, 18, 0, 440, 384, 11, 24, 288, 25, 0, 373, 378, 0, 0, 0, 13, 24, 289, 18, 289, 18, 374, 289, 375, 25, 0, - 0, 188, 394, 24, 377, 416, 25, 0, 189, 0, - 384, 0, 386, 0, 389, 0, 380, 403, 0, 380, - 0, 381, 0, 405, 0, 379, 0, 372, 0, 376, - 0, 442, 0, 24, 378, 25, 0, 1, 0, 407, - 378, 0, 394, 19, 0, 398, 20, 0, 383, 0, - 402, 0, 384, 0, 386, 0, 389, 0, 393, 0, - 406, 0, 408, 0, 413, 0, 441, 0, 24, 383, - 25, 0, 442, 0, 1, 0, 445, 22, 0, 108, - 368, 0, 0, 99, 385, 0, 0, 6, 290, 387, - 22, 0, 0, 99, 385, 6, 290, 388, 22, 0, - 0, 7, 390, 22, 0, 0, 99, 385, 7, 391, - 22, 0, 24, 392, 25, 0, 394, 400, 0, 394, - 401, 395, 0, 0, 0, 0, 0, 0, 20, 0, - 108, 20, 0, 404, 20, 0, 404, 108, 20, 0, - 403, 20, 0, 403, 108, 20, 0, 403, 404, 20, - 0, 403, 404, 108, 20, 0, 19, 399, 0, 19, - 20, 0, 19, 402, 20, 0, 19, 403, 20, 0, - 19, 403, 404, 20, 0, 383, 0, 402, 383, 0, - 291, 0, 403, 291, 0, 368, 0, 404, 368, 0, - 18, 0, 288, 18, 0, 18, 0, 288, 18, 0, - 288, 0, 8, 24, 288, 25, 0, 407, 368, 0, - 0, 407, 368, 9, 409, 368, 0, 0, 10, 24, - 288, 410, 25, 368, 0, 11, 24, 288, 25, 0, - 11, 24, 288, 25, 0, 0, 0, 188, 414, 394, - 24, 415, 416, 25, 392, 438, 395, 0, 418, 0, - 0, 416, 417, 21, 418, 0, 437, 0, 444, 0, - 185, 0, 184, 0, 187, 0, 419, 187, 0, 419, - 0, 24, 288, 25, 0, 420, 0, 263, 26, 288, - 27, 0, 263, 24, 25, 0, 263, 24, 264, 25, - 0, 70, 24, 287, 21, 364, 25, 0, 263, 342, - 28, 445, 299, 0, 263, 342, 44, 445, 299, 0, - 263, 47, 0, 263, 48, 0, 421, 0, 47, 265, - 0, 48, 265, 0, 29, 271, 0, 34, 271, 0, - 33, 271, 0, 32, 271, 0, 31, 271, 0, 30, - 271, 0, 268, 0, 422, 0, 24, 364, 25, 271, - 0, 423, 0, 272, 34, 271, 0, 272, 35, 271, - 0, 272, 36, 271, 0, 424, 0, 273, 33, 272, - 0, 273, 32, 272, 0, 425, 0, 274, 49, 273, - 0, 274, 50, 273, 0, 426, 0, 275, 37, 274, - 0, 275, 38, 274, 0, 275, 51, 274, 0, 275, - 52, 274, 0, 427, 0, 276, 53, 275, 0, 276, - 54, 275, 0, 428, 0, 277, 29, 276, 0, 429, - 0, 278, 39, 277, 0, 430, 0, 279, 40, 278, - 0, 431, 0, 280, 55, 279, 0, 432, 0, 282, - 56, 280, 0, 433, 0, 0, 0, 282, 41, 435, - 288, 22, 436, 284, 0, 434, 0, 265, 23, 287, - 0, 265, 57, 287, 0, 265, 58, 287, 0, 265, - 59, 287, 0, 265, 60, 287, 0, 265, 61, 287, - 0, 265, 62, 287, 0, 265, 63, 287, 0, 265, - 64, 287, 0, 265, 65, 287, 0, 265, 66, 287, - 0, 189, 0, 0, 12, 0, 411, 368, 0, 439, - 368, 11, 24, 288, 25, 18, 0, 373, 368, 0, - 411, 383, 0, 439, 383, 11, 24, 288, 25, 18, - 0, 439, 383, 11, 24, 288, 25, 0, 373, 383, - 0, 14, 445, 18, 0, 15, 18, 0, 98, 15, - 18, 0, 16, 18, 0, 94, 16, 18, 0, 95, - 16, 18, 0, 96, 16, 18, 0, 97, 16, 18, - 0, 17, 18, 0, 17, 288, 18, 0, 0, 18, - 0, 183, 0, 184, 0, 188, 0, 189, 0, 444, - 0, 185, 0, 190, 0, 185, 0 + 0, 188, 395, 24, 377, 417, 25, 0, 189, 0, + 385, 0, 387, 0, 390, 0, 381, 404, 0, 381, + 0, 382, 0, 406, 0, 379, 0, 372, 0, 376, + 0, 443, 0, 24, 378, 25, 0, 1, 0, 0, + 408, 380, 378, 0, 395, 19, 0, 399, 20, 0, + 384, 0, 403, 0, 385, 0, 387, 0, 390, 0, + 394, 0, 407, 0, 409, 0, 414, 0, 442, 0, + 24, 384, 25, 0, 443, 0, 1, 0, 446, 22, + 0, 108, 368, 0, 0, 99, 386, 0, 0, 6, + 290, 388, 22, 0, 0, 99, 386, 6, 290, 389, + 22, 0, 0, 7, 391, 22, 0, 0, 99, 386, + 7, 392, 22, 0, 24, 393, 25, 0, 395, 401, + 0, 395, 402, 396, 0, 0, 0, 0, 0, 0, + 20, 0, 108, 20, 0, 405, 20, 0, 405, 108, + 20, 0, 404, 20, 0, 404, 108, 20, 0, 404, + 405, 20, 0, 404, 405, 108, 20, 0, 19, 400, + 0, 19, 20, 0, 19, 403, 20, 0, 19, 404, + 20, 0, 19, 404, 405, 20, 0, 384, 0, 403, + 384, 0, 291, 0, 404, 291, 0, 368, 0, 405, + 368, 0, 18, 0, 288, 18, 0, 18, 0, 288, + 18, 0, 288, 0, 8, 24, 288, 25, 0, 408, + 368, 0, 0, 408, 368, 9, 410, 368, 0, 0, + 10, 24, 288, 411, 25, 368, 0, 11, 24, 288, + 25, 0, 11, 24, 288, 25, 0, 0, 0, 188, + 415, 395, 24, 416, 417, 25, 393, 439, 396, 0, + 419, 0, 0, 417, 418, 21, 419, 0, 438, 0, + 445, 0, 185, 0, 184, 0, 187, 0, 420, 187, + 0, 420, 0, 24, 288, 25, 0, 421, 0, 263, + 26, 288, 27, 0, 263, 24, 25, 0, 263, 24, + 264, 25, 0, 70, 24, 287, 21, 364, 25, 0, + 263, 342, 28, 446, 299, 0, 263, 342, 44, 446, + 299, 0, 263, 47, 0, 263, 48, 0, 422, 0, + 47, 265, 0, 48, 265, 0, 29, 271, 0, 34, + 271, 0, 33, 271, 0, 32, 271, 0, 31, 271, + 0, 30, 271, 0, 268, 0, 423, 0, 24, 364, + 25, 271, 0, 424, 0, 272, 34, 271, 0, 272, + 35, 271, 0, 272, 36, 271, 0, 425, 0, 273, + 33, 272, 0, 273, 32, 272, 0, 426, 0, 274, + 49, 273, 0, 274, 50, 273, 0, 427, 0, 275, + 37, 274, 0, 275, 38, 274, 0, 275, 51, 274, + 0, 275, 52, 274, 0, 428, 0, 276, 53, 275, + 0, 276, 54, 275, 0, 429, 0, 277, 29, 276, + 0, 430, 0, 278, 39, 277, 0, 431, 0, 279, + 40, 278, 0, 432, 0, 280, 55, 279, 0, 433, + 0, 282, 56, 280, 0, 434, 0, 0, 0, 282, + 41, 436, 288, 22, 437, 284, 0, 435, 0, 265, + 23, 287, 0, 265, 57, 287, 0, 265, 58, 287, + 0, 265, 59, 287, 0, 265, 60, 287, 0, 265, + 61, 287, 0, 265, 62, 287, 0, 265, 63, 287, + 0, 265, 64, 287, 0, 265, 65, 287, 0, 265, + 66, 287, 0, 189, 0, 0, 12, 0, 412, 368, + 0, 440, 368, 11, 24, 288, 25, 18, 0, 373, + 368, 0, 412, 384, 0, 440, 384, 11, 24, 288, + 25, 18, 0, 440, 384, 11, 24, 288, 25, 0, + 373, 384, 0, 14, 446, 18, 0, 15, 18, 0, + 98, 15, 18, 0, 16, 18, 0, 94, 16, 18, + 0, 95, 16, 18, 0, 96, 16, 18, 0, 97, + 16, 18, 0, 17, 18, 0, 17, 288, 18, 0, + 0, 18, 0, 183, 0, 184, 0, 188, 0, 189, + 0, 445, 0, 185, 0, 190, 0, 185, 0 }; #endif @@ -754,25 +757,25 @@ static const short yyrline[] = { 0, 1424, 1426, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1455, 1458, 1461, 1462, 1466, 1468, 1470, 1472, 1476, 1477, 1479, 1483, 1485, 1487, 1490, 1491, 1492, 1493, 1494, - 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1505, 1511, - 1514, 1517, 1518, 1521, 1522, 1523, 1524, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1534, 1535, 1542, 1543, 1549, 1550, - 1551, 1552, 1555, 1556, 1557, 1558, 1561, 1562, 1566, 1569, - 1572, 1575, 1578, 1581, 1584, 1585, 1586, 1587, 1589, 1590, - 1592, 1594, 1600, 1604, 1606, 1608, 1610, 1614, 1615, 1618, - 1619, 1622, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1643, - 1648, 1649, 1653, 1654, 1657, 1662, 1665, 1666, 1667, 1675, - 1676, 1676, 1680, 1681, 1682, 1693, 1700, 1701, 1704, 1705, - 1708, 1709, 1710, 1711, 1712, 1714, 1715, 1716, 1717, 1720, - 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1732, - 1733, 1736, 1737, 1738, 1739, 1742, 1743, 1744, 1747, 1748, - 1749, 1752, 1753, 1754, 1755, 1756, 1759, 1760, 1761, 1764, - 1765, 1768, 1769, 1773, 1774, 1777, 1778, 1781, 1782, 1785, - 1786, 1787, 1788, 1791, 1792, 1793, 1794, 1795, 1796, 1797, - 1798, 1799, 1800, 1801, 1802, 1805, 1806, 1809, 1812, 1814, - 1816, 1820, 1821, 1823, 1825, 1828, 1829, 1830, 1832, 1833, - 1834, 1835, 1836, 1837, 1838, 1841, 1842, 1845, 1848, 1849, - 1850, 1851, 1852, 1855, 1856 + 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1505, 1506, + 1511, 1514, 1517, 1518, 1521, 1522, 1523, 1524, 1525, 1526, + 1527, 1528, 1529, 1530, 1531, 1534, 1535, 1542, 1543, 1549, + 1550, 1551, 1552, 1555, 1556, 1557, 1558, 1561, 1562, 1566, + 1569, 1572, 1575, 1578, 1581, 1584, 1585, 1586, 1587, 1589, + 1590, 1592, 1594, 1600, 1604, 1606, 1608, 1610, 1614, 1615, + 1618, 1619, 1622, 1623, 1626, 1627, 1630, 1631, 1632, 1635, + 1648, 1653, 1654, 1658, 1659, 1662, 1667, 1670, 1671, 1672, + 1680, 1681, 1681, 1685, 1686, 1687, 1698, 1705, 1706, 1709, + 1710, 1713, 1714, 1715, 1716, 1717, 1719, 1720, 1721, 1722, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, + 1737, 1738, 1741, 1742, 1743, 1744, 1747, 1748, 1749, 1752, + 1753, 1754, 1757, 1758, 1759, 1760, 1761, 1764, 1765, 1766, + 1769, 1770, 1773, 1774, 1778, 1779, 1782, 1783, 1786, 1787, + 1790, 1791, 1792, 1793, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 1804, 1805, 1806, 1807, 1810, 1811, 1814, 1817, + 1819, 1821, 1825, 1826, 1828, 1830, 1833, 1834, 1835, 1837, + 1838, 1839, 1840, 1841, 1842, 1843, 1846, 1847, 1850, 1853, + 1854, 1855, 1856, 1857, 1860, 1861 }; #endif @@ -836,16 +839,16 @@ static const char * const yytname[] = { "$","error","$undefined.","BADTOK", "paramList","@36","@37","paramDecl","typeExpression","abstractDecl","optAbstractDeclBase", "abstractDeclBase","stmt","iterBody","endBody","iterDefStmtList","iterDefIterationStmt", "forPred","@38","@39","partialIterStmt","@40","iterDefStmt","iterSelectionStmt", -"openScope","closeScope","macroBody","stmtErr","labeledStmt","optExtraFallThroughs", -"caseStmt","@41","@42","defaultStmt","@43","@44","compoundStmt","compoundStmtErr", +"@41","openScope","closeScope","macroBody","stmtErr","labeledStmt","optExtraFallThroughs", +"caseStmt","@42","@43","defaultStmt","@44","@45","compoundStmt","compoundStmtErr", "CreateInnerScope","DeleteInnerScope","CreateStructInnerScope","DeleteStructInnerScope", "DeleteInnerScopeSafe","compoundStmtRest","compoundStmtAux","compoundStmtAuxErr", "stmtListErr","initializerList","stmtList","expressionStmt","expressionStmtErr", -"ifPred","selectionStmt","@45","@46","whilePred","iterWhilePred","iterStmt", -"@47","@48","iterArgList","@49","iterArgExpr","cconstantExpr","primaryIterExpr", +"ifPred","selectionStmt","@46","@47","whilePred","iterWhilePred","iterStmt", +"@48","@49","iterArgList","@50","iterArgExpr","cconstantExpr","primaryIterExpr", "postfixIterExpr","unaryIterExpr","castIterExpr","timesIterExpr","plusIterExpr", "shiftIterExpr","relationalIterExpr","equalityIterExpr","bitandIterExpr","xorIterExpr", -"bitorIterExpr","andIterExpr","orIterExpr","conditionalIterExpr","@50","@51", +"bitorIterExpr","andIterExpr","orIterExpr","conditionalIterExpr","@51","@52", "assignIterExpr","endIter","doHeader","iterationStmt","iterationStmtErr","jumpStmt", "optSemi","id","newId","typeName", NULL }; @@ -901,25 +904,25 @@ static const short yyr1[] = { 0, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 369, 370, 371, 371, 372, 372, 372, 372, 374, 375, 373, 377, 376, 376, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 379, 380, - 381, 382, 382, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 384, 384, 385, 385, 387, 386, - 388, 386, 390, 389, 391, 389, 392, 392, 393, 394, - 395, 396, 397, 398, 399, 399, 399, 399, 399, 399, - 399, 399, 400, 401, 401, 401, 401, 402, 402, 403, - 403, 404, 404, 405, 405, 406, 406, 406, 407, 408, - 409, 408, 410, 408, 411, 412, 414, 415, 413, 416, - 417, 416, 418, 418, 418, 418, 419, 419, 420, 420, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 422, - 422, 422, 422, 422, 422, 422, 422, 422, 422, 423, - 423, 424, 424, 424, 424, 425, 425, 425, 426, 426, - 426, 427, 427, 427, 427, 427, 428, 428, 428, 429, - 429, 430, 430, 431, 431, 432, 432, 433, 433, 434, - 435, 436, 434, 437, 437, 437, 437, 437, 437, 437, - 437, 437, 437, 437, 437, 438, 438, 439, 440, 440, - 440, 441, 441, 441, 441, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 443, 443, 444, 445, 445, - 445, 445, 445, 446, 446 + 378, 378, 378, 378, 378, 378, 378, 378, 380, 379, + 381, 382, 383, 383, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 385, 385, 386, 386, 388, + 387, 389, 387, 391, 390, 392, 390, 393, 393, 394, + 395, 396, 397, 398, 399, 400, 400, 400, 400, 400, + 400, 400, 400, 401, 402, 402, 402, 402, 403, 403, + 404, 404, 405, 405, 406, 406, 407, 407, 407, 408, + 409, 410, 409, 411, 409, 412, 413, 415, 416, 414, + 417, 418, 417, 419, 419, 419, 419, 420, 420, 421, + 421, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 424, 424, 425, 425, 425, 425, 426, 426, 426, 427, + 427, 427, 428, 428, 428, 428, 428, 429, 429, 429, + 430, 430, 431, 431, 432, 432, 433, 433, 434, 434, + 435, 436, 437, 435, 438, 438, 438, 438, 438, 438, + 438, 438, 438, 438, 438, 438, 439, 439, 440, 441, + 441, 441, 442, 442, 442, 442, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 444, 444, 445, 446, + 446, 446, 446, 446, 447, 447 }; static const short yyr2[] = { 0, @@ -972,25 +975,25 @@ static const short yyr2[] = { 0, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 6, 2, 0, 0, 10, 0, 6, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 2, 2, 0, 2, 0, 4, - 0, 6, 0, 3, 0, 5, 3, 2, 3, 0, - 0, 0, 0, 0, 1, 2, 2, 3, 2, 3, - 3, 4, 2, 2, 3, 3, 4, 1, 2, 1, - 2, 1, 2, 1, 2, 1, 2, 1, 4, 2, - 0, 5, 0, 6, 4, 4, 0, 0, 10, 1, - 0, 4, 1, 1, 1, 1, 1, 2, 1, 3, - 1, 4, 3, 4, 6, 5, 5, 2, 2, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, - 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, - 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 0, 0, 7, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 0, 1, 2, 7, - 2, 2, 7, 6, 2, 3, 2, 3, 2, 3, - 3, 3, 3, 2, 3, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 3, 1, 0, 3, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 1, 2, 2, 0, 2, 0, + 4, 0, 6, 0, 3, 0, 5, 3, 2, 3, + 0, 0, 0, 0, 0, 1, 2, 2, 3, 2, + 3, 3, 4, 2, 2, 3, 3, 4, 1, 2, + 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, + 2, 0, 5, 0, 6, 4, 4, 0, 0, 10, + 1, 0, 4, 1, 1, 1, 1, 1, 2, 1, + 3, 1, 4, 3, 4, 6, 5, 5, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, + 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 0, 0, 7, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 0, 1, 2, + 7, 2, 2, 7, 6, 2, 3, 2, 3, 2, + 3, 3, 3, 3, 2, 3, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }; static const short yydefact[] = { 0, @@ -1001,530 +1004,555 @@ static const short yydefact[] = { 0, 296, 299, 297, 298, 338, 339, 340, 337, 323, 322, 316, 315, 327, 328, 329, 330, 325, 326, 324, 331, 332, 335, 336, 333, 334, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 319, 668, 669, 673, 320, - 670, 671, 674, 0, 3, 6, 7, 422, 8, 9, - 131, 43, 666, 10, 251, 253, 0, 378, 266, 266, + 398, 398, 398, 398, 398, 319, 669, 670, 674, 320, + 671, 672, 675, 0, 3, 6, 7, 422, 8, 9, + 131, 43, 667, 10, 251, 253, 0, 378, 266, 266, 266, 266, 266, 266, 266, 266, 398, 266, 378, 378, - 398, 371, 398, 0, 398, 127, 266, 672, 20, 398, + 398, 371, 398, 0, 398, 127, 266, 673, 20, 398, 426, 427, 428, 431, 432, 269, 266, 266, 262, 398, - 675, 398, 398, 673, 0, 514, 266, 523, 0, 0, - 0, 648, 0, 0, 0, 0, 266, 556, 0, 266, + 676, 398, 398, 674, 0, 515, 266, 524, 0, 0, + 0, 649, 0, 0, 0, 0, 266, 557, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 0, 42, - 0, 0, 0, 0, 0, 517, 266, 166, 162, 165, - 577, 567, 167, 178, 198, 188, 187, 200, 204, 207, + 0, 0, 0, 0, 0, 518, 266, 166, 162, 165, + 578, 568, 167, 178, 198, 188, 187, 200, 204, 207, 210, 215, 218, 220, 222, 224, 227, 230, 234, 246, - 558, 192, 0, 0, 548, 504, 505, 506, 507, 0, - 0, 508, 266, 509, 0, 510, 163, 0, 511, 513, - 161, 0, 498, 0, 554, 0, 530, 485, 0, 0, + 559, 192, 0, 0, 549, 505, 506, 507, 508, 0, + 0, 509, 266, 510, 0, 511, 163, 0, 512, 514, + 161, 0, 498, 0, 555, 0, 531, 485, 0, 0, 0, 494, 0, 495, 474, 493, 490, 491, 486, 487, - 488, 0, 0, 492, 0, 0, 0, 496, 473, 0, + 488, 0, 0, 492, 499, 0, 0, 496, 473, 0, 345, 346, 356, 358, 357, 359, 360, 361, 362, 363, - 364, 365, 4, 266, 0, 129, 134, 398, 667, 5, + 364, 365, 4, 266, 0, 129, 134, 398, 668, 5, 398, 379, 375, 349, 351, 348, 350, 353, 352, 354, 355, 369, 347, 376, 377, 0, 266, 266, 367, 266, 266, 0, 368, 423, 366, 429, 433, 398, 0, 268, - 398, 0, 259, 266, 666, 16, 18, 0, 398, 266, - 28, 441, 266, 162, 165, 198, 250, 519, 161, 0, - 266, 266, 266, 266, 0, 657, 659, 664, 0, 0, + 398, 0, 259, 266, 667, 16, 18, 0, 398, 266, + 28, 441, 266, 162, 165, 198, 250, 520, 161, 0, + 266, 266, 266, 266, 0, 658, 660, 665, 0, 0, 398, 447, 0, 0, 181, 186, 185, 184, 183, 182, 0, 266, 179, 180, 266, 0, 0, 0, 0, 0, - 517, 0, 266, 516, 266, 463, 464, 465, 466, 0, - 467, 468, 266, 470, 266, 469, 471, 530, 266, 266, + 518, 0, 266, 517, 266, 463, 464, 465, 466, 0, + 467, 468, 266, 470, 266, 469, 471, 531, 266, 266, 174, 175, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 225, 231, 228, 557, 266, 0, 655, 39, 0, 531, - 549, 560, 652, 578, 0, 515, 266, 0, 0, 0, - 555, 40, 475, 479, 550, 398, 489, 500, 501, 499, + 225, 231, 228, 558, 266, 0, 656, 39, 0, 532, + 550, 561, 653, 579, 0, 516, 266, 0, 0, 0, + 556, 40, 475, 479, 551, 398, 489, 501, 502, 0, 0, 0, 41, 22, 266, 441, 398, 398, 266, 254, 128, 398, 0, 373, 0, 398, 0, 398, 0, 266, 266, 265, 266, 264, 260, 398, 0, 266, 0, 398, 266, 19, 438, 0, 0, 424, 439, 266, 0, 0, - 524, 0, 563, 0, 249, 0, 656, 665, 164, 266, - 266, 0, 449, 448, 450, 266, 512, 266, 0, 660, - 661, 662, 663, 658, 518, 266, 525, 0, 651, 398, - 528, 649, 0, 0, 169, 0, 176, 0, 0, 0, + 525, 0, 564, 0, 249, 0, 657, 666, 164, 266, + 266, 0, 449, 448, 450, 266, 513, 266, 0, 661, + 662, 663, 664, 659, 519, 266, 526, 0, 652, 398, + 529, 650, 0, 0, 169, 0, 176, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 201, 202, 203, 206, 205, 208, 209, 211, 212, 213, 214, 216, 217, 219, 221, 223, 266, 266, 266, - 247, 266, 266, 193, 544, 165, 548, 0, 398, 529, - 561, 0, 0, 497, 483, 266, 551, 0, 0, 24, - 0, 535, 266, 552, 130, 398, 266, 530, 266, 255, - 372, 266, 388, 0, 396, 391, 0, 397, 0, 413, - 416, 410, 412, 270, 266, 266, 666, 15, 30, 266, - 441, 266, 17, 425, 434, 436, 36, 443, 398, 442, - 446, 520, 559, 0, 565, 266, 370, 455, 0, 441, - 451, 266, 0, 199, 398, 266, 521, 0, 527, 543, - 0, 568, 266, 170, 168, 266, 266, 226, 0, 229, - 266, 195, 266, 197, 545, 546, 266, 266, 266, 566, - 266, 398, 266, 398, 76, 26, 536, 539, 266, 266, - 537, 266, 553, 530, 133, 0, 257, 266, 374, 394, - 532, 380, 395, 532, 383, 266, 415, 266, 0, 103, - 266, 266, 266, 0, 32, 0, 266, 0, 78, 440, - 266, 452, 266, 0, 456, 459, 266, 0, 457, 0, - 441, 0, 0, 0, 526, 266, 266, 177, 172, 173, - 232, 0, 0, 547, 562, 0, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 0, 162, 165, 178, 198, - 187, 204, 207, 210, 215, 218, 220, 222, 224, 227, - 0, 571, 570, 163, 581, 590, 600, 602, 606, 609, - 612, 617, 620, 622, 624, 626, 628, 630, 634, 573, - 161, 0, 23, 0, 93, 97, 95, 120, 121, 122, - 123, 124, 125, 126, 25, 76, 80, 0, 82, 81, - 0, 85, 0, 398, 398, 83, 0, 84, 291, 0, - 76, 540, 541, 266, 538, 21, 266, 271, 398, 386, - 532, 398, 387, 532, 409, 414, 266, 0, 0, 102, - 266, 273, 261, 266, 0, 398, 78, 34, 0, 435, - 437, 37, 78, 86, 88, 87, 91, 89, 90, 444, - 418, 0, 266, 452, 419, 453, 564, 480, 0, 460, - 458, 461, 0, 0, 171, 522, 0, 571, 266, 194, - 196, 654, 0, 0, 181, 186, 185, 184, 183, 182, - 179, 180, 266, 266, 266, 174, 175, 0, 266, 266, + 247, 266, 266, 193, 545, 165, 549, 0, 398, 530, + 562, 0, 0, 497, 483, 266, 552, 500, 0, 0, + 24, 0, 536, 266, 553, 130, 398, 266, 531, 266, + 255, 372, 266, 388, 0, 396, 391, 0, 397, 0, + 413, 416, 410, 412, 270, 266, 266, 667, 15, 30, + 266, 441, 266, 17, 425, 434, 436, 36, 443, 398, + 442, 446, 521, 560, 0, 566, 266, 370, 455, 0, + 441, 451, 266, 0, 199, 398, 266, 522, 0, 528, + 544, 0, 569, 266, 170, 168, 266, 266, 226, 0, + 229, 266, 195, 266, 197, 546, 547, 266, 266, 266, + 567, 266, 398, 266, 398, 76, 26, 537, 540, 266, + 266, 538, 266, 554, 531, 133, 0, 257, 266, 374, + 394, 533, 380, 395, 533, 383, 266, 415, 266, 0, + 103, 266, 266, 266, 0, 32, 0, 266, 0, 78, + 440, 266, 452, 266, 0, 456, 459, 266, 0, 457, + 0, 441, 0, 0, 0, 527, 266, 266, 177, 172, + 173, 232, 0, 0, 548, 563, 0, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 0, 162, 165, 178, + 198, 187, 204, 207, 210, 215, 218, 220, 222, 224, + 227, 0, 572, 571, 163, 582, 591, 601, 603, 607, + 610, 613, 618, 621, 623, 625, 627, 629, 631, 635, + 574, 161, 0, 23, 0, 93, 97, 95, 120, 121, + 122, 123, 124, 125, 126, 25, 76, 80, 0, 82, + 81, 0, 85, 0, 398, 398, 83, 0, 84, 291, + 0, 76, 541, 542, 266, 539, 21, 266, 271, 398, + 386, 533, 398, 387, 533, 409, 414, 266, 0, 0, + 102, 266, 273, 261, 266, 0, 398, 78, 34, 0, + 435, 437, 37, 78, 86, 88, 87, 91, 89, 90, + 444, 418, 0, 266, 452, 419, 453, 565, 480, 0, + 460, 458, 461, 0, 0, 171, 523, 0, 572, 266, + 194, 196, 655, 0, 0, 181, 186, 185, 184, 183, + 182, 179, 180, 266, 266, 266, 174, 175, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 225, 631, 228, 484, 0, - 478, 101, 106, 99, 110, 666, 77, 92, 96, 104, - 285, 288, 284, 0, 289, 287, 27, 542, 266, 0, - 400, 398, 398, 399, 398, 398, 398, 417, 266, 263, - 276, 0, 271, 12, 31, 33, 78, 29, 666, 79, - 441, 445, 420, 421, 266, 454, 462, 0, 190, 0, - 530, 233, 653, 164, 266, 0, 169, 0, 0, 0, - 0, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 201, 202, 203, 206, 205, 208, 209, 211, - 212, 213, 214, 216, 217, 219, 221, 223, 627, 266, - 629, 266, 477, 105, 0, 115, 116, 117, 118, 119, - 666, 107, 398, 110, 0, 0, 138, 98, 147, 666, - 136, 137, 0, 47, 0, 0, 55, 56, 66, 64, - 294, 0, 293, 53, 73, 0, 60, 63, 0, 666, - 65, 157, 271, 266, 398, 0, 266, 401, 389, 398, - 392, 398, 411, 274, 266, 666, 35, 0, 266, 481, - 266, 0, 650, 647, 199, 266, 170, 168, 266, 266, - 0, 572, 100, 110, 94, 113, 109, 114, 112, 111, - 0, 141, 0, 0, 0, 0, 135, 0, 0, 150, - 159, 666, 149, 0, 0, 63, 0, 69, 0, 0, - 58, 57, 59, 0, 0, 0, 0, 0, 0, 266, - 666, 158, 0, 256, 266, 403, 266, 266, 398, 406, - 0, 381, 0, 384, 275, 277, 0, 38, 266, 0, - 191, 189, 646, 531, 0, 172, 173, 632, 108, 142, - 139, 145, 0, 146, 143, 144, 148, 0, 153, 0, - 0, 0, 0, 266, 0, 75, 74, 0, 70, 0, - 49, 44, 45, 52, 63, 54, 67, 0, 71, 72, - 0, 0, 292, 266, 266, 272, 266, 266, 0, 404, - 266, 390, 0, 393, 0, 13, 482, 569, 171, 266, - 140, 154, 151, 0, 155, 156, 160, 286, 51, 48, - 0, 0, 68, 46, 61, 290, 258, 407, 398, 402, - 266, 382, 385, 633, 152, 62, 50, 405, 408, 0, - 0, 0 + 266, 266, 266, 266, 266, 266, 225, 632, 228, 484, + 0, 478, 101, 106, 99, 110, 667, 77, 92, 96, + 104, 285, 288, 284, 0, 289, 287, 27, 543, 266, + 0, 400, 398, 398, 399, 398, 398, 398, 417, 266, + 263, 276, 0, 271, 12, 31, 33, 78, 29, 667, + 79, 441, 445, 420, 421, 266, 454, 462, 0, 190, + 0, 531, 233, 654, 164, 266, 0, 169, 0, 0, + 0, 0, 636, 637, 638, 639, 640, 641, 642, 643, + 644, 645, 646, 201, 202, 203, 206, 205, 208, 209, + 211, 212, 213, 214, 216, 217, 219, 221, 223, 628, + 266, 630, 266, 477, 105, 0, 115, 116, 117, 118, + 119, 667, 107, 398, 110, 0, 0, 138, 98, 147, + 667, 136, 137, 0, 47, 0, 0, 55, 56, 66, + 64, 294, 0, 293, 53, 73, 0, 60, 63, 0, + 667, 65, 157, 271, 266, 398, 0, 266, 401, 389, + 398, 392, 398, 411, 274, 266, 667, 35, 0, 266, + 481, 266, 0, 651, 648, 199, 266, 170, 168, 266, + 266, 0, 573, 100, 110, 94, 113, 109, 114, 112, + 111, 0, 141, 0, 0, 0, 0, 135, 0, 0, + 150, 159, 667, 149, 0, 0, 63, 0, 69, 0, + 0, 58, 57, 59, 0, 0, 0, 0, 0, 0, + 266, 667, 158, 0, 256, 266, 403, 266, 266, 398, + 406, 0, 381, 0, 384, 275, 277, 0, 38, 266, + 0, 191, 189, 647, 532, 0, 172, 173, 633, 108, + 142, 139, 145, 0, 146, 143, 144, 148, 0, 153, + 0, 0, 0, 0, 266, 0, 75, 74, 0, 70, + 0, 49, 44, 45, 52, 63, 54, 67, 0, 71, + 72, 0, 0, 292, 266, 266, 272, 266, 266, 0, + 404, 266, 390, 0, 393, 0, 13, 482, 570, 171, + 266, 140, 154, 151, 0, 155, 156, 160, 286, 51, + 48, 0, 0, 68, 46, 61, 290, 258, 407, 398, + 402, 266, 382, 385, 634, 152, 62, 50, 405, 408, + 0, 0, 0 }; -static const short yydefgoto[] = { 1190, - 84, 85, 86, 87, 133, 295, 296, 88, 635, 771, - 297, 797, 917, 89, 669, 919, 901, 91, 1001, 1131, - 1078, 1064, 1132, 1170, 1003, 1004, 1005, 1074, 1006, 1007, - 1135, 1009, 1128, 755, 802, 756, 803, 757, 804, 885, - 805, 760, 806, 886, 883, 884, 789, 762, 763, 981, - 982, 983, 1047, 984, 764, 765, 92, 257, 427, 258, - 558, 93, 988, 1112, 1113, 990, 1061, 1081, 1062, 173, - 174, 496, 175, 928, 176, 177, 396, 534, 178, 179, +static const short yydefgoto[] = { 1191, + 84, 85, 86, 87, 133, 295, 296, 88, 636, 772, + 297, 798, 918, 89, 670, 920, 902, 91, 1002, 1132, + 1079, 1065, 1133, 1171, 1004, 1005, 1006, 1075, 1007, 1008, + 1136, 1010, 1129, 756, 803, 757, 804, 758, 805, 886, + 806, 761, 807, 887, 884, 885, 790, 763, 764, 982, + 983, 984, 1048, 985, 765, 766, 92, 257, 427, 258, + 559, 93, 989, 1113, 1114, 991, 1062, 1082, 1063, 173, + 174, 496, 175, 929, 176, 177, 396, 534, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 528, 188, - 530, 189, 529, 829, 190, 219, 466, 308, 415, 95, - 648, 777, 126, 576, 96, 291, 192, 255, 127, 128, - 900, 793, 912, 98, 766, 808, 993, 768, 769, 809, - 1012, 894, 1010, 99, 100, 101, 102, 103, 104, 105, + 530, 189, 529, 830, 190, 219, 466, 308, 415, 95, + 649, 778, 126, 577, 96, 291, 192, 255, 127, 128, + 901, 794, 913, 98, 767, 809, 994, 769, 770, 810, + 1013, 895, 1011, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 322, 416, 433, 112, 263, - 113, 781, 1153, 784, 1155, 651, 1091, 654, 1093, 114, - 903, 904, 1088, 1089, 115, 659, 569, 570, 813, 130, - 455, 123, 124, 117, 584, 585, 456, 457, 458, 671, - 590, 323, 819, 815, 475, 344, 220, 240, 221, 222, - 345, 925, 1100, 224, 631, 225, 226, 227, 228, 194, - 401, 346, 342, 347, 460, 684, 348, 310, 608, 349, - 199, 350, 540, 779, 1019, 233, 555, 491, 400, 201, - 556, 557, 351, 202, 203, 352, 628, 594, 353, 236, - 354, 358, 687, 722, 880, 723, 207, 725, 726, 727, + 113, 782, 1154, 785, 1156, 652, 1092, 655, 1094, 114, + 904, 905, 1089, 1090, 115, 660, 570, 571, 814, 130, + 455, 123, 124, 117, 585, 586, 456, 457, 458, 672, + 591, 323, 820, 816, 475, 344, 220, 240, 221, 222, + 345, 926, 1101, 224, 632, 225, 226, 420, 227, 228, + 194, 401, 346, 342, 347, 460, 685, 348, 310, 609, + 349, 199, 350, 540, 780, 1020, 233, 556, 491, 400, + 201, 557, 558, 351, 202, 203, 352, 629, 595, 353, + 236, 354, 358, 688, 723, 881, 724, 207, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 738, 739, 970, 1160, 740, 1104, 355, 356, 209, 357, - 260, 309, 212, 120 + 738, 739, 740, 971, 1161, 741, 1105, 355, 356, 209, + 357, 260, 309, 212, 120 }; -static const short yypact[] = { 1940, --32768, 44, 5141,-32768, 6239,-32768, 777, 2916, 3298, 3298, +static const short yypact[] = { 1990, +-32768, 42, 5205,-32768, 6333,-32768, 714, 2980, 3362, 3362, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 618,-32768, --32768,-32768,-32768, 2117,-32768,-32768,-32768, 517,-32768,-32768, - 83,-32768, 119,-32768,-32768,-32768, 142, 6074,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 6074, 6074, - 133, 22,-32768, 931,-32768,-32768, 777,-32768,-32768,-32768, --32768,-32768,-32768, 44,-32768,-32768, 155,-32768, 133,-32768, --32768,-32768, 5141,-32768, 163,-32768, 5370,-32768, 200, 241, - 262,-32768, 279, 777, 293, 331, 1396,-32768, 2493, 5370, - 5370, 5370, 5370, 5370, 5370,-32768, 5399, 5399, 340,-32768, - 374, 388, 410, 417, 433, 351, 4585,-32768, 440, 446, --32768, 459,-32768, 810, 1052,-32768,-32768,-32768, 1005, 127, - 65, 514, 461, 428, 448, 456, 519, 84,-32768,-32768, - 302,-32768, 3446, 490, 495,-32768,-32768,-32768,-32768, 484, - 3064,-32768, 4585,-32768, 3446,-32768, 429, 3446,-32768,-32768, - 582, 589,-32768, 599,-32768, 2683, 459, 634, 336, 542, - 3107,-32768, 3298,-32768,-32768,-32768, 5700,-32768,-32768,-32768, --32768, 642, 647,-32768, 3298, 3298, 3446,-32768,-32768, 607, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 663,-32768, +-32768,-32768,-32768, 2181,-32768,-32768,-32768, 516,-32768,-32768, + 82,-32768, 39,-32768,-32768,-32768, 87, 6168,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 6168, 6168, + 113, 106,-32768, 510,-32768,-32768, 714,-32768,-32768,-32768, +-32768,-32768,-32768, 42,-32768,-32768, 144,-32768, 113,-32768, +-32768,-32768, 5205,-32768, 176,-32768, 5463,-32768, 223, 241, + 248,-32768, 275, 714, 292, 325, 929,-32768, 2557, 5463, + 5463, 5463, 5463, 5463, 5463,-32768, 5483, 5483, 378,-32768, + 395, 431, 443, 487, 519, 469, 4649,-32768, 570, 591, +-32768, 601,-32768, 739, 1269,-32768,-32768,-32768, 693, 36, + 375, 353, 426, 589, 521, 631, 581, 69,-32768,-32768, + 362,-32768, 3510, 600, 629,-32768,-32768,-32768,-32768, 717, + 3128,-32768, 4649,-32768, 3510,-32768, 495, 3510,-32768,-32768, + 695, 722,-32768, 730,-32768, 2747, 601, 740, 368, 705, + 3171,-32768, 3362,-32768,-32768,-32768, 5794,-32768,-32768,-32768, +-32768, 792, 809,-32768,-32768, 3362, 3510,-32768,-32768, 741, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 714, 689,-32768,-32768, 5964,-32768,-32768, +-32768,-32768,-32768, 838, 849,-32768,-32768, 6058,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 725, 667,-32768,-32768, 777, - 777, 11,-32768, 517,-32768,-32768,-32768,-32768, 747,-32768, --32768, 766, 767, 667, 119,-32768, 571, 763,-32768, 777, --32768, 287, 5370,-32768,-32768,-32768,-32768,-32768,-32768, 795, - 5370, 5370, 5370, 1711, 804,-32768,-32768,-32768, 391, 164, - 5568, 363, 800, 802,-32768,-32768,-32768,-32768,-32768,-32768, - 806, 5370,-32768,-32768, 5370, 814, 817, 835, 886, 893, - 351, 728, 3402,-32768, 4585,-32768,-32768,-32768,-32768, 898, --32768,-32768, 4585,-32768, 4585,-32768,-32768,-32768, 1859, 5370, --32768,-32768, 46, 5370, 5370, 5370, 5370, 5370, 5370, 5370, - 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, - 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, --32768,-32768,-32768,-32768, 5370, 635,-32768,-32768, 2303,-32768, --32768, 861,-32768,-32768, 945,-32768, 5370, 367, 938, 839, --32768,-32768,-32768,-32768,-32768, 133, 5700,-32768,-32768,-32768, - 2873, 997,-32768,-32768, 5370, 125, 3549, 4666, 667,-32768, - 319, 6239, 879, 992, 1001, 1006, 1014, 1006, 777, 1030, - 667,-32768, 667,-32768,-32768,-32768, 962, 1036, 1033,-32768, - 667, 571,-32768, 777, 1039,-32768, 1045, 777, 226, 1046, --32768, 266, 1057, 394, 1057, 1064,-32768,-32768,-32768,-32768, - 5152, 1060, 617,-32768, 695, 5370,-32768,-32768, 1065,-32768, --32768,-32768,-32768,-32768,-32768, 5370,-32768, 1067,-32768, 3549, --32768,-32768, 1078, 1066,-32768, 403,-32768, 58, 777, 777, +-32768,-32768,-32768,-32768,-32768, 863, 679,-32768,-32768, 714, + 714, 41,-32768, 516,-32768,-32768,-32768,-32768, 894,-32768, +-32768, 907, 920, 679, 39,-32768, 560, 925,-32768, 714, +-32768, 229, 5463,-32768,-32768,-32768,-32768,-32768,-32768, 932, + 5463, 5463, 5463, 1160, 946,-32768,-32768,-32768, 643, 319, + 5662, 509, 949, 965,-32768,-32768,-32768,-32768,-32768,-32768, + 955, 5463,-32768,-32768, 5463, 998, 999, 1001, 1007, 1008, + 469, 522, 1728,-32768, 4649,-32768,-32768,-32768,-32768, 1009, +-32768,-32768, 4649,-32768, 4649,-32768,-32768,-32768, 5216, 5463, +-32768,-32768, 194, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, +-32768,-32768,-32768,-32768, 5463, 508,-32768,-32768, 2367,-32768, +-32768, 1018,-32768,-32768, 1025,-32768, 5463, 442, 1017, 1005, +-32768,-32768,-32768,-32768,-32768, 113, 5794,-32768,-32768, 3362, + 2937, 1033,-32768,-32768, 5463, 410, 3613, 4730, 679,-32768, + 551, 6333, 957, 1013, 1028, 1029, 1030, 1029, 714, 1031, + 679,-32768, 679,-32768,-32768,-32768, 964, 1034, 1038,-32768, + 679, 560,-32768, 714, 1039,-32768, 1037, 714, 97, 1041, +-32768, 139, 1044, 193, 1044, 1048,-32768,-32768,-32768,-32768, + 5378, 1043, 622,-32768, 922, 5463,-32768,-32768, 1052,-32768, +-32768,-32768,-32768,-32768,-32768, 5463,-32768, 1051,-32768, 3613, +-32768,-32768, 1058, 1055,-32768, 409,-32768, 115, 714, 714, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1005, 1005, 127, 127, 65, 65, - 65, 65, 514, 514, 461, 428, 448, 5370, 5370, 5370, --32768, 5419, 5430,-32768,-32768, 4899,-32768, 3255, 3734,-32768, --32768, 1073, 424,-32768,-32768, 667,-32768, 1076, 1074,-32768, - 1077,-32768, 4104,-32768,-32768, 3919, 4147, 1079,-32768, 1081, --32768,-32768, 1085, 1087,-32768, 1088, 1100,-32768, 752,-32768, - 1101,-32768,-32768,-32768, 155,-32768, 225,-32768,-32768, 5370, - 481, 667,-32768,-32768, 1104,-32768,-32768, 1122, 6239,-32768, --32768,-32768,-32768, 1107,-32768, 1711,-32768,-32768, 1099, 67, - 695, 5314, 1109,-32768,-32768,-32768,-32768, 1112,-32768,-32768, - 1111,-32768, 5370,-32768,-32768,-32768,-32768, 456, 778, 519, - 5370,-32768, 5370,-32768,-32768,-32768, 4250, 4585, 5370,-32768, - 5489,-32768, 5370,-32768, 1083,-32768,-32768,-32768, 4293, 4396, --32768, 4439,-32768, 1079,-32768, 1113,-32768,-32768,-32768,-32768, --32768, 1116,-32768,-32768, 1119,-32768, 777,-32768, 777, 1068, - 5062,-32768,-32768, 1114,-32768, 1117,-32768, 496, 1083,-32768, - 777, 396, 4585, 1125,-32768,-32768, 204, 1129,-32768, 1120, - 82, 1123, 1134, 1124,-32768, 5370, 5489,-32768,-32768,-32768, --32768, 1145, 1146,-32768,-32768, 457, 5370, 5370, 5370, 5370, - 5370, 5370, 5370, 5399, 5399, 1126, 512, 537, 888, 1310, - 551, 1037, 779, 811, 840, 845, 1148, 1135, 1138, 1127, - 105, 1154,-32768, 10,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 693, 693, 36, 36, 375, 375, + 375, 375, 353, 353, 426, 589, 521, 5463, 5463, 5463, +-32768, 5494, 5557,-32768,-32768, 4963,-32768, 3319, 3798,-32768, +-32768, 1063, 550,-32768,-32768, 679,-32768,-32768, 1064, 1072, +-32768, 1076,-32768, 4168,-32768,-32768, 3983, 4211, 1078,-32768, + 1080,-32768,-32768, 1084, 1086,-32768, 1087, 1089,-32768, 585, +-32768, 1083,-32768,-32768,-32768, 144,-32768, 374,-32768,-32768, + 5463, 596, 679,-32768,-32768, 1090,-32768,-32768, 1110, 6333, +-32768,-32768,-32768,-32768, 1092,-32768, 1160,-32768,-32768, 1091, + 461, 922, 5389, 1095,-32768,-32768,-32768,-32768, 1098,-32768, +-32768, 1101,-32768, 5463,-32768,-32768,-32768,-32768, 631, 609, + 581, 5463,-32768, 5463,-32768,-32768,-32768, 4314, 4649, 5463, +-32768, 5583,-32768, 5463,-32768, 1383,-32768,-32768,-32768, 4357, + 4460,-32768, 4503,-32768, 1078,-32768, 1102,-32768,-32768,-32768, +-32768,-32768, 1106,-32768,-32768, 1108,-32768, 714,-32768, 714, + 1059, 5126,-32768,-32768, 1112,-32768, 1107,-32768, 293, 1383, +-32768, 714, 468, 4649, 1115,-32768,-32768, 79, 1116,-32768, + 1113, 67, 1114, 1119, 1123,-32768, 5463, 5583,-32768,-32768, +-32768,-32768, 1121, 1122,-32768,-32768, 587, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5483, 5483, 1124, 595, 624, 954, + 1323, 634, 754, 822, 649, 418, 853, 1125, 1111, 1097, + 1096, 250, 1127,-32768, 46,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 552, 584,-32768, 996,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 1083,-32768, 1094,-32768,-32768, - 1096,-32768, 1102,-32768,-32768,-32768, 1103,-32768, 1824, 1105, - 1083,-32768,-32768, 4542,-32768,-32768,-32768,-32768, 6161,-32768, --32768, 6161,-32768,-32768,-32768,-32768, 5370, 906, 1172,-32768, - 5062,-32768,-32768, 5062, 1106,-32768, 1083,-32768, 1168,-32768, --32768,-32768, 1083,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 517, 1174,-32768, 838,-32768, 695,-32768,-32768, 1171,-32768, --32768,-32768, 1175, 777,-32768,-32768, 673, 1177, 5370,-32768, --32768, 1185, 674, 1180, 723, 729, 730, 750, 764, 798, - 854, 855, 5370, 5325, 5370, 860, 872, 78, 5370, 5370, - 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, - 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, - 5370, 5370, 5370, 5370, 5370, 5370,-32768, 5370,-32768, 1186, - 1188,-32768, 1021, 1169, -7, 23,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 544,-32768,-32768,-32768,-32768, 5062, 585, --32768, 133, 4744,-32768, 6161, 4744, 6161,-32768,-32768,-32768, --32768, 922,-32768,-32768,-32768,-32768, 1083,-32768, 119,-32768, - 620,-32768,-32768,-32768, 5345,-32768,-32768, 593,-32768, 1193, - 1079,-32768,-32768, 897, 5370, 1191, 903, 928, 61, 777, - 777,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 933, 948, 950, 812, 912, 300, 875, 79, - 382, 505, 613, 701, 743, 102, 114, 147, 456, 5370, - 519, 5489,-32768, 429, 996,-32768,-32768,-32768,-32768,-32768, - 632,-32768, 5832, -7, 62, 62,-32768,-32768, 412, 637, --32768,-32768, 85,-32768, 797, 92,-32768,-32768,-32768,-32768, --32768, 1190,-32768, 1032,-32768, 1043,-32768, 77, 1202, 119, --32768, 85,-32768,-32768,-32768, 1225, 309,-32768,-32768, 4744, --32768, 4744,-32768,-32768, 1732, 671,-32768, 1155, 656,-32768, --32768, 777,-32768, 1056, 967,-32768, 976, 993,-32768,-32768, - 957,-32768,-32768, -7,-32768,-32768,-32768,-32768,-32768,-32768, - 435, 412, 682, 777, 777, 62,-32768, 85, 85,-32768, - 492, 711,-32768, 1226, 958, 506, 92, 543, 49, 797, --32768,-32768,-32768, 797, 15, 777, 777, 1227, 797,-32768, - 119, 1229, 745,-32768, 667,-32768,-32768, 1230,-32768, 1237, - 1240,-32768, 1241,-32768,-32768,-32768, 1176,-32768, 594, 1242, --32768,-32768,-32768,-32768, 1243, 1010, 1025,-32768,-32768,-32768, --32768, 412, 1239, 429,-32768,-32768, 412, 686, 492, 722, - 777, 777, 85,-32768, 1082,-32768,-32768, 797,-32768, 506, - 1232,-32768, 543,-32768, 543,-32768,-32768, 1247,-32768,-32768, - 1082, 1253,-32768,-32768,-32768,-32768, 5370, 309, 1251,-32768, --32768,-32768, 1259,-32768, 1260,-32768,-32768,-32768, 1027, 5370, --32768,-32768,-32768, 1255,-32768,-32768, 492,-32768,-32768,-32768, - 1258, 49,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 5370,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1285, - 1286,-32768 +-32768, 645, 718,-32768, 972,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1383,-32768, 1068,-32768, +-32768, 1069,-32768, 1070,-32768,-32768,-32768, 1071,-32768, 1694, + 1074, 1383,-32768,-32768, 4606,-32768,-32768,-32768,-32768, 6255, +-32768,-32768, 6255,-32768,-32768,-32768,-32768, 5463, 936, 1146, +-32768, 5126,-32768,-32768, 5126, 1077,-32768, 1383,-32768, 1140, +-32768,-32768,-32768, 1383,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 516, 1144,-32768, 744,-32768, 922,-32768,-32768, 1147, +-32768,-32768,-32768, 1149, 714,-32768,-32768, 734, 1151, 5463, +-32768,-32768, 1153, 748, 1155, 751, 770, 780, 789, 795, + 810, 845, 857, 5463, 5409, 5463, 865, 875, 357, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463,-32768, 5463,-32768, + 1161, 1163,-32768, 996, 1145, 401, 57,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 620,-32768,-32768,-32768,-32768, 5126, + 688,-32768, 113, 4808,-32768, 6255, 4808, 6255,-32768,-32768, +-32768,-32768, 951,-32768,-32768,-32768,-32768, 1383,-32768, 39, +-32768, 104,-32768,-32768,-32768, 5436,-32768,-32768, 394,-32768, + 1169, 1078,-32768,-32768, 883, 5463, 1167, 892, 898, 142, + 714, 714,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 930, 945, 960, 476, 666, 141, 828, + 338, 415, 531, 698, 771, 781, 62, 53, 65, 631, + 5463, 581, 5583,-32768, 495, 972,-32768,-32768,-32768,-32768, +-32768, 756,-32768, 5926, 401, 72, 72,-32768,-32768, 128, + 803,-32768,-32768, 119,-32768, 692, 226,-32768,-32768,-32768, +-32768,-32768, 1172,-32768, 1014,-32768, 885,-32768, 306, 1175, + 39,-32768, 119,-32768,-32768,-32768, 1182, 450,-32768,-32768, + 4808,-32768, 4808,-32768,-32768, 3466, 818,-32768, 1126, 726, +-32768,-32768, 714,-32768, 1015, 967,-32768, 970, 982,-32768, +-32768, 990,-32768,-32768, 401,-32768,-32768,-32768,-32768,-32768, +-32768, 538, 128, 61, 714, 714, 72,-32768, 119, 119, +-32768, 133, 824,-32768, 1180, 991, 637, 226, 310, 165, + 692,-32768,-32768,-32768, 692, 26, 714, 714, 1181, 692, +-32768, 39, 1191, 862,-32768, 679,-32768,-32768, 1193,-32768, + 1194, 1198,-32768, 1199,-32768,-32768,-32768, 1132,-32768, 501, + 1197,-32768,-32768,-32768,-32768, 1200, 983, 984,-32768,-32768, +-32768,-32768, 128, 1202, 495,-32768,-32768, 128, 651, 133, + 404, 714, 714, 119,-32768, 1035,-32768,-32768, 692,-32768, + 637, 1187,-32768, 310,-32768, 310,-32768,-32768, 1204,-32768, +-32768, 1035, 1209,-32768,-32768,-32768,-32768, 5463, 450, 1218, +-32768,-32768,-32768, 1217,-32768, 1219,-32768,-32768,-32768, 985, + 5463,-32768,-32768,-32768, 1211,-32768,-32768, 133,-32768,-32768, +-32768, 1215, 165,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 5463,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1241, 1244,-32768 }; static const short yypgoto[] = {-32768, --32768, 1204,-32768,-32768,-32768,-32768, -405, -112,-32768,-32768, - 989,-32768,-32768,-32768,-32768,-32768, 68,-32768,-32768, 397, --32768,-32768, 118, 151, 223,-32768,-32768,-32768, -661,-32768, - -825,-32768,-32768, -608, -744,-32768,-32768,-32768, -573,-32768, - -373,-32768, -287,-32768, 320,-32768,-32768, 639, -613,-32768, - 250, 313,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, -828, 180,-32768, -982,-32768, 289,-32768, - -616, 458, 852,-32768,-32768, -593,-32768,-32768, 59, -359, - -358, -357, -343, -382, -365, -335, -499, -513,-32768, -592, --32768, -136,-32768,-32768, 851, 944, -584, -411, 36,-32768, --32768,-32768, -437,-32768,-32768,-32768, 267, -230, 862,-32768, - -848, -754,-32768,-32768,-32768, -276,-32768,-32768,-32768, -254, --32768,-32768,-32768,-32768,-32768, 539,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 131, 748,-32768, 951, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 186, - -590, -495,-32768, 161,-32768,-32768, 652, 655, 499, 13, - -356, 1192,-32768, 14,-32768,-32768, -539,-32768,-32768,-32768, - 644, -260, 995,-32768, -452, 844, 1308,-32768, 1084,-32768, - 666,-32768,-32768,-32768,-32768, -171,-32768,-32768,-32768,-32768, - 90, 1121, 978, 1254,-32768,-32768, 1389,-32768,-32768, -332, --32768, 1244, 217, -603, -858,-32768, 834,-32768,-32768, 926, - -195, -490, 103,-32768, 170, 26,-32768,-32768, 209,-32768, - 393,-32768,-32768, 640,-32768, 359, -598,-32768,-32768,-32768, +-32768, 1166,-32768,-32768,-32768,-32768, -381, -111,-32768,-32768, + 947,-32768,-32768,-32768,-32768,-32768, 43,-32768,-32768, 356, +-32768,-32768, 80, 122, 181,-32768,-32768,-32768, -677,-32768, + -851,-32768,-32768, -658, -740,-32768,-32768,-32768, -577,-32768, + -563,-32768, -515,-32768, 285,-32768,-32768, 604, -607,-32768, + 221, 282,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, -847, 148,-32768, -966,-32768, 257,-32768, + -611, 428, 1105,-32768,-32768, -608,-32768,-32768, 31, -349, + -358, -346, -336, -383, -371, -370, -500, -498,-32768, -599, +-32768, -110,-32768,-32768, 1004, 545, -566, -424, 16,-32768, +-32768,-32768, -439,-32768,-32768,-32768, 267, -256, 831,-32768, + -859, -750,-32768,-32768,-32768, -499,-32768,-32768,-32768, -488, +-32768,-32768,-32768,-32768,-32768, 505,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 14, 708,-32768, 905, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1023, + -585, -525,-32768, 127,-32768,-32768, 617, 621, 463, 13, + -378, 1156,-32768, 2,-32768,-32768, -575,-32768,-32768,-32768, + 611, -266, 959,-32768, -458, 411, 1276,-32768, 1053,-32768, + 1012,-32768,-32768,-32768,-32768, -167,-32768,-32768,-32768,-32768, +-32768, 312, 1328, 952, 1352,-32768,-32768, 1418,-32768,-32768, + -332,-32768, 1201, 182, -514, -696,-32768, 798,-32768,-32768, + 895, -193, -478, 93,-32768, 110, 27,-32768,-32768, 38, +-32768, 58,-32768,-32768, 607,-32768, 323, -580,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 1398,-32768,-32768, 1642, - -293, 0, 516,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1466,-32768,-32768, + 1499, -270, 0, 168,-32768 }; -#define YYLAST 6429 +#define YYLAST 6523 static const short yytable[] = { 118, - 307, 447, 118, 574, 284, 525, 118, 211, 211, 211, - 488, 674, 116, 549, 709, 125, 620, 434, 515, 516, - 601, 517, 518, 526, 519, 520, 521, 522, 618, 439, - -579, 417, 724, 204, -579, 94, 911, 711, 721, 913, - 259, 1137, 523, 524, 409, 583, 985, 1021, 627, 413, - 782, 414, 916, 994, 527, 807, 986, 989, 920, 599, - 678, 758, 428, 420, 1026, 640, 449, 90, 1008, 551, - 709, 453, 1067, 499, 607, 1118, 1119, 2, 395, 976, - 977, 395, 996, 118, 615, 985, 453, 1038, 724, 500, - -398, 676, -398, 711, 721, 986, 116, 195, -45, -613, - -398, 256, 1075, -613, 1076, 940, 822, 278, 1058, 978, - 979, 234, 234, 380, 381, 1067, 118, 720, 1059, 94, - 1077, 941, -621, 980, 392, 996, -621, 380, 381, 453, - 111, 719, 118, 129, -623, 132, 259, 287, -623, 393, - 1167, 823, 388, 118, 1013, 877, 300, 887, 211, 550, - -266, 90, 121, 122, 386, 387, 1051, 1052, 378, 379, - 878, 1092, 897, 1094, 1083, 261, 211, -625, 664, 1066, - 1068, -625, 1027, 720, 204, 288, 667, 905, 235, 235, - 907, 394, 758, 807, 395, 389, 302, 719, 469, 807, - 680, 906, 211, 77, 78, 134, 404, 758, 81, 82, - 211, 1138, 211, 539, 211, 77, 987, 211, 325, 326, - 327, 328, 329, 330, 111, 211, 205, 605, 204, 816, - 211, 449, 211, 311, 666, 645, 204, 1117, 262, 471, - 204, 77, 999, 204, 211, 211, 211, 2, 324, 262, - 262, 1130, 259, 1133, 77, 987, 395, 662, 716, 413, - 469, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 759, 204, 299, 312, 717, 97, 77, 1060, 97, - 1096, 712, 713, 714, 77, 999, 118, 241, 242, 118, - 118, 118, 397, 663, 974, 313, 395, 715, 307, 431, - 593, 453, 272, 118, 403, 718, 277, 405, 279, 118, - 283, 434, 314, 807, 716, 285, 446, -398, -398, -398, - 316, 488, -398, -398, 1020, 293, 1022, 294, 234, 394, - -610, 717, 395, 234, -610, 234, 422, 712, 713, 714, - 1087, 378, 379, 1065, 307, 473, -398, 234, 234, -398, - 1030, -398, 2, 715, 211, 683, 1133, 761, 317, 307, - 97, 718, 211, 411, 211, 709, 395, 205, 767, 363, - 692, 816, 693, 335, 971, 264, 265, 266, 267, 268, - 269, 270, 271, 724, 273, 908, 969, 276, 711, 721, - 770, 678, 759, 97, 411, 235, -266, 395, 471, 336, - 235, 469, 235, 289, 290, 292, 2, 759, 211, 298, - 206, 205, -614, 337, 235, 235, -614, 1018, 468, 205, - 1018, 395, 1136, 205, 395, 321, 205, 1142, 595, -266, - 211, 471, 331, 613, 204, 338, 211, 614, 118, 2, - 380, 381, 339, 512, 513, 514, 834, 1053, 118, 1054, - 118, 559, 118, 307, 395, 205, 429, 340, 630, 341, - 118, 470, 547, 118, 1114, 1055, 388, 118, 720, 1110, - 1053, -669, 1054, 547, 300, 307, 1171, -673, 761, -398, - -398, -398, 719, 441, -398, -398, 443, 395, 1055, 767, - -670, 832, 321, 761, 451, 453, 389, 454, 537, 211, - 966, 77, 78, 134, 767, 390, 81, 82, 118, 118, - 800, 770, 399, 956, 957, 665, 958, 959, 967, 960, - 961, 962, 963, 386, 387, 119, 770, 1120, 119, 1121, - 425, 1114, 135, 234, 1018, -615, 1018, 964, 965, -615, - 1129, 1075, -576, 1076, 604, 1122, -576, 211, 211, 968, - -267, 206, 254, 97, 432, 118, 435, 437, 994, 1077, - 382, 383, 211, 380, 381, 211, 211, -575, 632, 811, - 97, -575, 470, 204, 384, 385, 298, 995, 1075, 321, - 1076, -599, -574, 391, 547, -599, -574, 996, 77, 78, - 134, 118, 398, 81, 82, 206, 1077, -502, 472, 716, - 235, 547, 991, 206, -267, 300, 448, 206, 1034, 119, - 206, 546, 1014, -672, 395, 1015, 717, 205, 881, 321, - 406, 454, 712, 713, 714, 404, 560, 1031, -449, 471, - 1032, 565, 407, 568, 453, 1028, 211, 211, 715, 206, - 741, 577, 119, -616, 412, 582, 718, -616, 211, 211, - -266, 211, 471, -398, 676, -398, 601, 1146, 301, 259, - 307, -675, 1044, -398, 259, -671, 118, 1056, 118, 315, - 418, 380, 381, -398, -398, -398, 419, 118, -398, -398, - 118, 118, 211, 193, 223, 223, 532, 533, 77, 78, - 134, 471, 276, 81, 82, 814, 741, 1045, 259, 2, - 473, 1015, 932, 395, 395, 97, 1057, 930, 934, 423, - 2, 811, 564, -675, 567, 985, 573, 97, 1111, 97, - 1162, 1120, 426, 1121, 580, 986, 1080, 298, -266, 672, - 602, -618, 997, 998, 589, -618, 77, 999, 259, 1122, - 1000, 1123, 1097, 486, 487, 1178, 597, 382, 383, 472, - 424, 603, 430, -593, 432, 985, 205, -593, 1163, -598, - -597, 384, 385, -598, -597, 986, 835, 836, 837, 838, - 839, 840, 1145, -619, 442, 1015, 454, -619, 1124, 1189, - -596, 656, 657, 211, -596, 1105, 77, 78, 134, 382, - 383, 81, 82, 444, -595, 677, 450, 1144, -595, 445, - 682, 206, 119, 384, 385, 436, 438, 440, 395, 691, - -675, -675, -398, -398, -398, -675, -675, -398, -398, 119, - 863, 864, 97, 118, 193, 301, 461, 560, -594, 743, - 995, 467, -594, 118, 476, 646, 477, 814, 432, 478, - 996, 480, -608, 359, 481, 360, -608, -398, 77, 78, - 134, 660, 661, 81, 82, 375, 376, 377, 298, 77, - 78, 134, 482, -398, 81, 82, 361, 362, 193, 865, - 866, -266, 545, 471, 77, 987, 193, 603, 171, 541, - 193, 2, 432, 193, -591, -592, 867, 868, -591, -592, - -588, 223, 689, 690, -588, 992, 223, 321, 223, 321, - 869, 870, -589, 1011, 848, -611, -589, 871, 872, -611, - 223, 223, 193, 483, 77, 987, 378, 379, 171, 902, - 484, 844, 902, 845, 778, -398, 490, -580, 953, 954, - 955, -580, 785, -583, 787, 909, 657, -583, 794, 795, - 206, -398, -607, 799, 846, 847, -607, 589, 812, 118, - 118, 1024, 1025, 472, 119, 375, 376, 377, 613, 891, - 892, 191, 1037, -603, 571, 542, 119, -603, 119, 77, - 78, 134, 544, 321, 81, 82, 301, 561, -604, 586, - -605, 741, -604, 591, -605, 997, 998, 395, 1108, 77, - 999, 915, 1049, 1000, 992, 992, 284, -601, 306, 1126, - 1127, -601, 1063, 1035, 1011, 1011, -584, 280, 281, 282, - -584, 306, 306, 306, 306, 306, 306, 548, 333, 334, - 307, 1063, 562, -582, 616, 617, 118, -582, 1048, 563, - 77, 78, 134, 1184, -266, 81, 82, 923, 118, 1090, - -586, 118, 566, 902, -586, 902, 902, 902, 375, 376, - 377, 559, 1099, 899, 307, -587, 402, -585, 572, -587, - 578, -585, 992, 118, 118, 992, 581, 1063, 1063, 274, - 275, 119, 579, 587, 193, 588, 1011, 592, 1011, 1011, - 860, 861, 862, 1011, 364, 118, 118, 395, 1011, 922, - 812, 596, 603, 600, 118, 606, 223, 1017, 611, 612, - 319, 609, 320, 1071, 1072, 1073, 629, 301, 118, 633, - 634, 636, 644, 647, 650, 652, 1029, 653, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 655, 992, - 118, 118, 1063, 658, 668, 675, 670, 1011, 196, 229, - 229, 673, 681, 685, 686, 780, 191, 776, 783, 744, - 796, 798, 818, 824, 191, 826, 821, 118, 191, 843, - 902, 191, 902, 820, 744, 745, 746, 747, 825, 408, - 1090, 748, 749, 750, 751, 752, 753, 754, 1016, 830, - 831, 1011, 571, 874, 571, 1023, 873, 875, 879, 882, - 191, 876, 888, 801, 889, 479, 591, 119, 489, 910, - 890, 893, 918, 896, 914, 926, 492, 921, 493, 927, - 1085, 931, 933, 193, 935, 973, 972, 171, 975, 497, - 1033, 1036, 1069, 1070, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 1079, 306, 306, 306, 306, + 550, 575, 118, 125, 525, 284, 118, 211, 211, 211, + 488, 434, 116, 111, 602, 94, 129, 526, 132, 527, + 710, 517, 518, 712, 447, 679, 307, 619, 515, 516, + 675, 621, 722, 417, 204, 519, 520, 521, 522, 990, + 449, 912, 90, 1009, 914, 205, 600, 552, 409, 523, + 524, 725, 1138, 413, 1027, 414, 259, 917, 759, 439, + 628, 608, 808, 921, 428, 206, -580, 378, 379, 584, + -580, 453, 760, -624, 259, 2, 710, -624, 641, 712, + 986, 388, -622, 118, 986, -626, -622, 1112, 722, -626, + 987, 823, 1119, 1120, 987, 986, 116, 111, 888, 94, + 256, 234, 234, 389, 471, 987, 824, 725, 453, 392, + 261, 262, 2, 898, 386, 387, 118, 395, 235, 235, + 762, 469, 262, 262, 393, 287, 90, -398, 677, -398, + -266, 720, 118, 721, 300, 395, 768, -398, 1052, 1053, + 783, 616, 1059, 118, 1067, 1069, 299, 771, 211, 1014, + 121, 122, 1060, 1054, 1084, 1055, 665, 1168, 1121, 395, + 1122, -611, 395, 594, 288, -611, 211, 119, 1039, 995, + 119, 1056, 378, 379, 135, 204, 1123, 1028, 681, 759, + 325, 326, 327, 328, 329, 330, 205, 720, 1068, 721, + 808, 278, 211, 760, 759, 449, 808, 907, 997, 302, + 211, 668, 211, 667, 211, 539, 206, 211, 760, 1118, + 1022, 606, 1139, 395, 817, 211, 1131, 596, 1134, 204, + 211, 499, 211, 77, 78, 134, 646, 204, 81, 82, + 205, 204, 404, 453, 204, 211, 211, 500, 205, 77, + 988, 762, 205, 77, 988, 205, 311, 171, 717, 1068, + 206, 119, 548, 413, 77, 988, 762, 768, 206, 997, + 718, 719, 206, 204, 312, 206, 97, 906, 771, 97, + 908, 313, 768, 714, 205, 1097, 118, 241, 242, 118, + 118, 118, 713, 771, 119, 715, -398, -398, -398, 431, + 878, -398, -398, 118, 206, 716, 434, 801, 314, 118, + 301, 77, 1061, 975, 717, 879, 446, 664, 234, 316, + 808, 315, 488, 234, 307, 234, 718, 719, 1066, 195, + 1021, 1134, 1023, 473, 1093, 235, 1095, -45, 234, 714, + 235, 1076, 235, 1077, 470, 1076, 394, 1077, 713, 395, + 684, 715, 317, 469, 211, 235, 679, 77, 1000, 1078, + 97, 716, 211, 1078, 211, 693, 817, 694, -614, 1031, + 307, 710, -614, 909, 712, 264, 265, 266, 267, 268, + 269, 270, 271, 722, 273, 307, 970, 276, 1019, 394, + 972, 1019, 395, 97, 941, 411, 380, 381, 395, 382, + 383, 259, 725, 289, 290, 292, 663, 1137, 211, 298, + 942, 335, 1143, 384, 385, 512, 513, 514, 77, 1000, + 336, -398, -398, -398, 453, 321, -398, -398, 1032, 211, + 211, 1033, 331, 380, 381, 204, 211, 986, 118, 614, + 1164, 835, 547, 615, 551, -615, 205, 987, 118, -615, + 118, 560, 118, 547, 119, 470, 337, 436, 438, 440, + 118, 1172, 300, 118, 868, 869, 206, 118, 338, 411, + 324, 119, 395, 380, 381, 453, 469, 301, 870, 871, + 307, 1088, 720, 1115, 721, 77, 78, 134, 386, 387, + 81, 82, 321, 2, -398, 677, -398, 977, 978, 211, + 967, -266, 307, 471, -398, 1019, -609, 1019, 118, 118, + -609, 2, 339, 968, 397, 969, 605, 959, 960, 375, + 376, 377, 234, 234, 957, 958, 403, 979, 980, 405, + 425, 961, 962, 963, 964, -449, 471, 486, 487, 235, + 235, 981, -266, 340, 471, 965, 966, 211, 211, -267, + 1115, 254, 2, 97, 432, 118, 435, 437, 422, 532, + 533, -616, 191, 211, 547, -616, 211, 211, 633, 389, + 97, 812, 1111, 1054, 204, 1055, 298, 341, -398, 321, + 395, -398, 547, -398, 631, 205, 280, 281, 282, 380, + 381, 1056, 118, -267, 300, 448, 77, 988, 472, 717, + 171, -670, -398, -398, -398, 206, 119, -398, -398, 1035, + 453, 718, 719, 673, 657, 658, 572, 395, 119, 321, + 119, 833, -674, 402, 714, -577, 992, 388, 301, -577, + 666, 587, -671, 713, 995, 592, 715, 211, 211, 395, + 692, 742, 77, 78, 134, 391, 716, 81, 82, 211, + 211, 602, 211, 996, -576, -266, 1147, 471, -576, 1029, + 77, 78, 134, 997, -600, 81, 82, 118, -600, 118, + 468, 1130, 1076, 395, 1077, -575, 617, 618, 118, -575, + 390, 118, 118, 211, 815, 1163, 1121, 307, 1122, 473, + 1078, 404, 276, 77, 78, 134, -608, 742, 81, 82, + -608, 319, 398, 320, 1123, 97, -676, 866, 867, 375, + 376, 377, 565, 812, 568, 1015, 574, 97, 1016, 97, + 537, 1046, 2, 119, 581, 996, -673, 298, -617, 933, + 1058, -503, -617, 1179, 590, 997, 375, 376, 377, 836, + 837, 838, 839, 840, 841, 399, 598, 191, 395, 472, + 1081, 604, 882, 406, 432, 191, 380, 381, -676, 191, + 301, 471, 191, 407, 395, 489, 1098, 1190, 931, 2, + 408, -672, 359, 492, 360, 493, -398, -266, 395, 471, + 1106, -594, 935, 259, 211, -594, 1045, 2, -398, -398, + -398, 191, -398, -398, -398, 361, 362, 861, 862, 863, + -599, -619, 1125, 903, -599, -619, 903, 412, 998, 999, + -598, -620, 77, 1000, -598, -620, 1001, 382, 383, -597, + 418, 1145, 97, -597, 118, -596, 815, 382, 383, -596, + 259, 384, 385, 1057, 118, 572, 647, 572, 419, 432, + -595, 384, 385, 423, -595, 259, 802, 555, 1016, 592, + 119, 259, 661, 662, 1124, -676, -676, 459, -612, 298, + -676, -676, -612, 864, 865, 462, 463, 464, 465, 378, + 379, 77, 78, 134, 424, -592, 81, 82, 604, -592, + 998, 999, 426, 432, 77, 1000, 459, -593, 1001, 1146, + 430, -593, 1016, 690, 691, -589, 993, 459, 321, -589, + 321, 954, 955, 956, 1012, -590, 77, 78, 134, -590, + 555, 81, 82, -581, 498, 872, 873, -581, 77, 78, + 134, 442, -584, 81, 82, 779, -584, 903, 614, 903, + 903, 903, 1038, 786, 444, 788, 77, 78, 134, 795, + 796, 81, 82, 924, 800, 1072, 1073, 1074, 590, 813, + 118, 118, 445, 191, 472, -266, 318, 603, 450, 555, + -604, 543, 303, 461, -604, 910, 658, 150, 151, 152, + 153, 154, 155, 467, 321, -605, 1036, 555, 644, -605, + 1025, 1026, 742, 476, 156, 157, 158, 845, 478, 846, + -606, -398, 119, 1050, -606, 993, 993, -602, 284, 477, + -585, -602, 930, 1064, -585, 1012, 1012, -398, 159, 1049, + 847, 848, -583, -587, -588, -586, -583, -587, -588, -586, + 395, 1109, 1064, 274, 275, 480, 481, 118, 482, 193, + 223, 223, 1127, 1128, 483, 484, 541, 490, 545, 118, + 1091, 1100, 118, 563, 903, 542, 903, 307, 644, 696, + 168, 544, 560, 549, 900, 562, 564, -266, 567, 573, + 1185, 644, 579, 993, 118, 118, 993, 589, 1064, 1064, + 580, 582, 593, 588, 395, 597, 601, 1012, 612, 1012, + 1012, 307, 607, 620, 1012, 610, 118, 118, 613, 1012, + 923, 813, 191, 604, 818, 118, 630, 634, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 635, 118, + 637, 645, 648, 651, 653, 659, 654, 656, 1040, 1041, + 669, 77, 304, 305, 671, 171, 674, 676, 682, 686, + 993, 118, 118, 1064, 687, 781, 777, 784, 1012, 272, + 745, 799, 819, 277, 825, 279, 876, 283, 797, 822, + 821, 465, 285, 826, 827, 831, 832, 844, 118, 875, + 877, 880, 293, 874, 294, 883, 889, 890, 891, 894, + 193, 1091, 897, 911, 919, 915, 459, 922, 459, 1017, + 934, 927, 1012, 928, 697, 932, 1024, -248, 743, 936, + 974, 973, 171, 303, 976, 119, 1034, 1037, 150, 151, + 152, 153, 154, 155, 1070, 1071, 363, 119, 1080, 1087, + 1103, 1126, 1142, 1104, 193, 156, 157, 158, 200, 232, + 232, 1124, 193, 1149, 1099, 1152, 193, 1153, 1155, 193, + 1157, 1158, 1116, 1117, 1160, 1170, 1173, 223, 1162, 159, + 1174, 828, 223, 1176, 223, 1181, 1183, 1186, 1184, 1187, + 1192, 306, 834, 1193, 1140, 1141, 452, 223, 193, 253, + 1003, 1135, 1188, 119, 306, 306, 306, 306, 306, 306, + 1044, 333, 334, 1175, 791, 1110, 1051, 119, 1165, 1083, + 650, 168, 939, 576, 896, 1180, 789, 925, 787, 286, + 474, 1085, 811, 429, 97, 239, 1159, 611, 421, 1166, + 1167, 364, 485, 538, 829, 1043, 813, 0, 1102, 0, + 0, 0, 0, 432, 0, 0, 1107, 1108, 0, 0, + 441, 0, 0, 443, 0, 0, 119, 0, 0, 0, + 0, 451, 0, 0, 454, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 196, 229, 229, 479, 0, + 0, 0, 77, 304, 305, 850, 171, 1144, 0, 200, + 0, 0, 97, 0, 1148, 1150, 0, 0, 0, 197, + 230, 230, 497, 0, 0, 0, 813, 501, 502, 503, + 504, 505, 506, 507, 508, 509, 510, 511, 0, 851, + 852, 853, 854, 855, 856, 857, 858, 859, 860, 0, + 940, 1169, 0, 200, 0, 0, 0, 0, 531, 0, + 0, 200, 0, 0, 0, 200, 0, 0, 200, 0, + 193, 1177, 1178, 0, 0, 97, 232, 410, 1182, 0, + 0, 232, 0, 232, 0, 198, 231, 231, 0, 0, + 0, 223, 223, 0, 0, 0, 232, 200, 546, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 454, 0, + 0, 0, 0, 561, 745, 746, 747, 748, 566, 0, + 569, 749, 750, 751, 752, 753, 754, 755, 578, 0, + 465, 0, 583, 208, 237, 237, 196, 0, 0, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 1086, 1098, 1103, 531, 459, 1125, 1141, 1123, - 1148, 200, 232, 232, 462, 463, 464, 465, 1151, 1152, - 1154, 197, 230, 230, 1156, 1161, 1157, 1159, 1180, 196, - 554, 1172, 1169, 1173, 1150, 459, 306, 1175, 1182, 1183, - 1084, 1185, 1186, 97, 1191, 1192, 459, 253, 452, 1187, - 1002, 1174, 1134, 1109, 1043, 812, 1050, 1101, 790, 1164, - 1082, 938, 432, 498, 575, 1106, 1107, 895, 1179, 649, - 788, 786, 924, 196, 810, 286, 474, 239, 485, 421, - 1158, 196, 306, 610, 538, 196, 828, 306, 196, 119, - 1042, 0, 849, 554, 0, 0, 229, 306, 0, 929, - 0, 229, 191, 229, 0, 0, 1143, 0, 0, 0, - 543, 97, 0, 1147, 1149, 229, 229, 196, 0, 0, - 0, 0, 0, 0, 1188, 812, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 0, 0, 0, 306, - 0, 306, 554, 622, 624, 0, 0, 0, 0, 0, - 1168, 0, 200, 0, 0, 0, 198, 231, 231, 554, - 643, 0, 197, 0, 0, 208, 237, 237, 0, 0, - 1176, 1177, 0, 318, 97, 0, 0, 1181, 0, 303, - 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, - 0, 306, 0, 0, 0, 0, 200, 0, 0, 0, - 0, 156, 157, 158, 200, 0, 197, 0, 200, 0, - 0, 200, 0, 306, 197, 1039, 1040, 0, 197, 232, - 410, 197, 0, 688, 232, 159, 232, 0, 0, 230, - 643, 695, 619, 0, 230, 0, 230, 0, 232, 232, - 200, 191, 710, 643, 0, 0, 0, 0, 230, 230, - 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, - 0, 792, 0, 0, 0, 0, 817, 0, 0, 196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 0, 0, 0, 0, 198, 710, 465, - 0, 229, 0, 0, 119, 0, 208, 1102, 0, 306, - 306, 306, 306, 306, 306, 841, 842, 0, 0, 0, - 0, 0, 0, 0, 459, 0, 459, 0, 0, 1115, - 1116, 0, 696, 0, 0, 0, 742, 0, 77, 304, - 305, 198, 171, 0, 0, 0, 0, 0, 0, 198, - 208, 1139, 1140, 198, 0, 0, 198, 0, 208, 0, - 119, 494, 208, 0, 231, 208, 0, 0, 0, 231, - 0, 231, 0, 237, 119, 0, 0, 0, 237, 0, - 237, 0, 0, 231, 231, 198, 0, 0, 0, 827, - 0, 0, 237, 237, 208, 0, 1165, 1166, 306, 0, - 833, 792, 200, 0, 792, 0, 0, 0, 0, 210, - 238, 238, 197, 0, 0, 0, 0, 0, 196, 0, - 0, 0, 0, 119, 232, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, - 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 936, 497, 0, 0, 0, 0, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 0, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, -248, 306, - 0, 0, 0, 0, 303, 0, 0, 0, 0, 150, - 151, 152, 153, 154, 155, 0, 0, 0, 0, 792, - 791, 1095, 0, 0, 0, 303, 156, 157, 158, 0, - 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 157, 158, - 159, 200, 0, 0, 0, 0, 306, 198, 939, 0, - 210, 197, 0, 0, 0, 0, 208, 0, 0, 0, - 0, 159, 0, 0, 0, 0, 0, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 168, 710, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, - 0, 0, 210, 168, 0, 0, 210, 0, 0, 210, - 0, 0, 0, 0, 0, 0, 0, 238, 0, 0, - 0, 0, 238, 0, 238, 0, 0, 0, 465, 0, - 0, 0, 0, 0, 0, 792, 238, 238, 210, 0, - 0, 0, 303, 495, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 77, 304, 305, 0, 171, 0, 0, - 0, 0, 0, 0, 156, 157, 158, 0, 0, 0, - 0, 0, 0, 1041, 77, 304, 305, 0, 171, 0, - 0, 0, 0, 0, 0, 0, 198, 0, 159, 0, - 0, 0, 0, 0, 0, 208, 0, 0, 0, -1, - 1, 0, 20, 21, 22, 23, 0, 24, 0, 0, + 306, 306, 306, 306, 306, 0, 0, 0, 0, 0, + 197, 0, 0, 0, 0, 0, 210, 238, 238, 0, + 0, 0, 0, 0, 0, 1042, 0, 0, 0, 0, + 196, 0, 0, 0, 0, 0, 0, 0, 196, 306, + 0, 0, 196, 0, 0, 196, 0, 0, 0, 0, + 0, 0, 0, 229, 197, 0, 0, 0, 229, 193, + 229, 0, 197, 0, 0, 0, 197, 0, 494, 197, + 0, 0, 0, 229, 196, 0, 198, 230, 0, 0, + 0, 0, 230, 0, 230, 306, 0, 0, 0, 0, + 306, 0, 0, 0, 0, 0, 0, 230, 197, 0, + 306, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 0, 0, 0, 0, 454, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 208, 0, 0, 689, 198, 0, + 232, 232, 198, 678, 0, 198, 0, 0, 683, 0, + 0, 0, 306, 231, 306, 0, 623, 625, 231, 0, + 231, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 0, 0, 0, 231, 198, 561, 0, 744, 208, 0, + 0, 0, 0, 0, 0, 793, 208, 0, 0, 0, + 208, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 306, 237, 0, 237, 0, + 0, 210, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 237, 208, 210, 0, 0, 210, 306, 0, 0, + 0, 0, 0, 0, 238, 0, 0, 0, 0, 238, + 0, 238, 0, 0, 0, 0, 196, 0, 0, 0, + 0, 0, 849, 0, 238, 210, 711, 0, 200, 0, + 0, 0, 0, 0, 0, 0, -531, 229, 229, 0, + 197, 343, 0, 0, 0, 0, 150, 151, 152, 153, + 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 230, 156, 157, 158, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 892, 893, 0, + 0, 0, 711, 0, 0, 793, 0, 159, 793, 0, + 0, 0, 0, 306, 306, 306, 306, 306, 306, 842, + 843, 0, 20, 21, 22, 23, 198, 24, 0, 916, 0, 0, 29, 30, 0, 0, 33, 34, 0, 36, - 37, 38, 39, -266, 0, 0, 0, 0, 0, 0, - 168, 0, 0, 2, 51, 52, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 306, 76, - 0, 0, 0, 0, 0, 0, -398, -398, -398, 80, - 4, 306, 0, 0, 0, 5, 6, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 9, 10, 306, 0, 0, 0, 0, 0, 0, 0, - 210, 77, 304, 305, 0, 171, 0, 0, 11, 12, + 37, 38, 39, 0, 0, 0, 0, 231, 231, 168, + 0, 0, 0, 0, 51, 52, 0, 937, 497, 0, + 0, 0, 0, 943, 944, 945, 946, 947, 948, 949, + 950, 951, 952, 953, 208, 196, 0, 0, 0, 76, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 237, 237, 0, 0, 197, + 0, 0, 306, 0, 0, 0, 0, 210, 0, 0, + 0, 0, 0, 793, 0, 0, 0, 0, 0, 0, + 77, 304, 305, 0, 171, 0, 0, 0, 238, 238, + 0, 0, 0, 0, 0, 1018, 0, 0, 0, 0, + 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1030, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 0, 306, 0, 0, 0, 0, 0, -1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -266, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 793, + 0, 0, 0, 0, 3, 0, 210, 0, 1086, 0, + 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -398, -398, -398, 0, + 4, 0, 0, 0, 0, 5, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 711, 0, 8, + 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 238, 24, 25, 26, 27, 28, 29, 30, + 22, 23, 1151, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, -2, 1, 0, 0, + 71, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 77, 78, 79, 80, 0, 81, 82, 83, + -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, - 0, 0, 0, -398, -398, -398, 0, 4, 0, 0, - 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 9, 10, 0, + 0, 0, 1189, 0, -266, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 13, 0, 14, + 0, 0, 0, 0, 0, 0, 0, -398, -398, -398, + 0, 4, 306, 0, 0, 0, 5, 6, 7, 0, + 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, + 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 306, 0, 0, 11, + 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, + 0, 0, 0, 77, 78, 79, 80, 136, 81, 82, + 83, 0, 137, 138, 139, 0, 140, 141, 142, 143, + 144, 145, 146, 147, 148, -531, 535, 0, 0, 0, + 149, 0, 0, 0, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, -266, -266, + 0, 3, 156, 157, 158, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -398, -398, -398, 159, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 11, 12, 13, 168, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, @@ -1532,370 +1560,328 @@ static const short yytable[] = { 118, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 77, - 78, 79, 80, 136, 81, 82, 83, 0, 137, 138, - 139, 0, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -530, 535, 0, 0, 0, 149, 0, 0, 0, - 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, - 0, 0, 0, 0, -266, -266, 0, 3, 156, 157, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, - -398, -398, 159, 4, 0, 0, 0, 0, 0, 0, + 169, 536, 80, 171, 172, 82, 83, 136, 0, 0, + 0, 0, 137, 138, 139, 0, 140, 141, 142, 143, + 144, 145, 146, 147, 148, -531, 0, 0, 0, 0, + 149, 0, 0, 0, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, -266, -266, + 0, 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 11, 12, 13, 168, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, - 0, 0, 0, 0, 0, 77, 169, 536, 80, 171, - 172, 82, 83, 136, 0, 0, 0, 0, 137, 138, - 139, 0, 140, 141, 142, 143, 144, 145, 146, 147, - 148, -530, 0, 0, 0, 0, 149, 0, 0, 0, - 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, - 0, 0, 0, 0, -266, -266, 0, 0, 156, 157, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -266, - -266, -266, 159, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -266, -266, -266, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 167, -266, -266, -266, 168, -266, -266, -266, -266, -266, - -266, -266, -266, -266, -266, 0, -266, -266, -266, -266, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 167, -266, -266, -266, 168, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, 0, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, - -266, -266, -266, -266, -266, -266, -266, -266, -266, 0, - 0, 0, 0, 0, 0, 77, 169, 170, -266, 171, - 172, 82, -266, 213, 0, 0, 0, 0, 137, 138, - 139, 0, 0, 214, 142, 143, 144, 145, 146, 147, - 215, -530, -534, 0, 0, 0, 216, 0, 0, 0, - 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, - 0, 0, 0, 0, -266, -266, 0, 0, 156, 157, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -266, - -266, -266, 159, 0, 0, 0, 0, 0, 0, 0, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, 0, 0, 0, 0, 0, 0, 77, + 169, 170, -266, 171, 172, 82, -266, 213, 0, 0, + 0, 0, 137, 138, 139, 0, 0, 214, 142, 143, + 144, 145, 146, 147, 215, -531, -535, 0, 0, 0, + 216, 0, 0, 0, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, -266, -266, + 0, 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 167, -266, -266, -266, 168, -266, -266, -266, -266, -266, - -266, -266, -266, -266, -266, 0, -266, -266, -266, -266, + 0, 0, 0, -266, -266, -266, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 167, -266, -266, -266, 168, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, 0, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, - -266, -266, -266, -266, -266, -266, -266, -266, -266, 0, - 0, 0, 0, 0, 0, 77, 169, 170, -266, 171, - 217, 218, -266, 213, 0, 0, 0, 0, 137, 138, - 139, 0, 0, 214, 142, 143, 144, 145, 146, 147, - 215, -476, -476, 0, 0, 0, 216, -476, 0, 0, - 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, - 0, 0, 0, 0, -266, -266, 136, 0, 156, 157, - 158, 137, 138, 139, 0, 140, 141, 142, 143, 144, - 145, 146, 147, 148, -530, 0, 0, 0, 0, 149, - 0, 0, 159, 0, 150, 151, 152, 153, 154, 155, - 0, 0, 0, 0, 0, 0, 0, -266, -266, 0, - 0, 156, 157, 158, 0, -476, 161, 162, 163, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 0, 0, 0, 168, 159, 0, 0, 0, 0, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, 0, 0, 0, 0, 0, 0, 77, + 169, 170, -266, 171, 217, 218, -266, 213, 0, 0, + 0, 0, 137, 138, 139, 0, 0, 214, 142, 143, + 144, 145, 146, 147, 215, -476, -476, 0, 0, 0, + 216, -476, 0, 0, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, -266, -266, + 136, 0, 156, 157, 158, 137, 138, 139, 0, 140, + 141, 142, 143, 144, 145, 146, 147, 148, -531, 0, + 0, 0, 0, 149, 0, 0, 159, 0, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, -266, -266, 0, 0, 156, 157, 158, 0, -476, + 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 0, 0, 0, 168, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 160, 161, - 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 161, 162, 163, 164, 165, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, + 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 169, 170, 0, 171, - 217, 218, 0, 0, 136, 0, 0, 0, 0, 137, - 138, 139, 0, 140, 141, 142, 143, 144, 145, 146, - 147, 148, -530, 0, 0, 0, 0, 149, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 77, 169, - 170, 0, 171, 172, 82, -266, -266, 213, 0, 156, - 157, 158, 137, 138, 139, 0, 0, 214, 142, 143, - 144, 145, 146, 147, 215, -530, -534, 0, 0, 0, - 216, 0, 0, 159, 0, 150, 151, 152, 153, 154, - 155, 0, 0, 0, 0, 0, 0, 0, -266, -266, - 0, 0, 156, 157, 158, 0, -503, 161, 162, 163, - 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 0, 0, 0, 168, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 169, 170, 0, 171, 217, 218, 0, 0, 136, 0, + 0, 0, 0, 137, 138, 139, 0, 140, 141, 142, + 143, 144, 145, 146, 147, 148, -531, 0, 0, 0, + 0, 149, 0, 0, 0, 0, 150, 151, 152, 153, + 154, 155, 77, 169, 170, 0, 171, 172, 82, -266, + -266, 213, 0, 156, 157, 158, 137, 138, 139, 0, + 0, 214, 142, 143, 144, 145, 146, 147, 215, -531, + -535, 0, 0, 0, 216, 0, 0, 159, 0, 150, + 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, + 0, 0, -266, -266, 0, 0, 156, 157, 158, 0, + -504, 161, 162, 163, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 0, 0, 0, 168, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, - 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, - 0, 0, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 0, 0, -472, 161, 162, 163, 164, 165, 166, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 169, 170, 0, - 171, 172, 82, 0, 0, 136, 0, 0, 0, 0, - 137, 138, 139, 0, 140, 141, 142, 143, 144, 145, - 146, 147, 148, -530, 625, 0, 0, 0, 149, 0, - 0, 0, 0, 150, 151, 152, 153, 154, 155, 77, - 169, 170, 0, 171, 217, 218, -266, -266, 213, 0, - 156, 157, 158, 137, 138, 139, 0, 0, 214, 142, - 143, 144, 145, 146, 147, 215, -530, -534, 0, 0, - 0, 216, 0, 0, 159, 0, 150, 151, 152, 153, - 154, 155, 0, 0, 0, 0, 0, 0, 0, -266, - -266, 0, 0, 156, 157, 158, 0, 0, 161, 162, - 163, 164, 165, 166, 0, 0, 0, 0, 0, 0, - 0, 0, 167, 0, 0, 0, 168, 159, 0, 0, + 77, 169, 170, 0, 171, 172, 82, 0, 0, 136, + 0, 0, 0, 0, 137, 138, 139, 0, 140, 141, + 142, 143, 144, 145, 146, 147, 148, -531, 626, 0, + 0, 0, 149, 0, 0, 0, 0, 150, 151, 152, + 153, 154, 155, 77, 169, 170, 0, 171, 217, 218, + -266, -266, 213, 0, 156, 157, 158, 137, 138, 139, + 0, 0, 214, 142, 143, 144, 145, 146, 147, 215, + -531, -535, 0, 0, 0, 216, 0, 0, 159, 0, + 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, + 0, 0, 0, -266, -266, 0, 0, 156, 157, 158, + 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 168, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 161, 162, 163, 164, 165, + 166, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 792, 1096, 0, 0, 0, 303, + 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, + 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, + 136, 156, 157, 158, 0, 137, 138, 139, 0, 140, + 141, 142, 143, 144, 145, 146, 147, 148, -531, 0, + 0, 0, 0, 149, 0, 159, 0, 0, 150, 151, + 152, 153, 154, 155, 77, 169, 170, 0, 171, 217, + 218, -266, -266, 0, 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 168, + 0, 0, 0, 0, 0, 0, 0, 168, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -530, 0, 0, 0, 0, 343, 0, 0, 0, 0, - 150, 151, 152, 153, 154, 155, 0, 77, 169, 170, - 0, 171, 172, 82, 0, 0, 136, 156, 157, 158, - 0, 137, 138, 139, 0, 140, 141, 142, 143, 144, - 145, 146, 147, 148, -530, 0, 0, 0, 0, 149, - 0, 159, 0, 0, 150, 151, 152, 153, 154, 155, - 77, 169, 170, 0, 171, 217, 218, -266, -266, 0, - 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 168, 0, 159, 0, 0, 0, 0, + 0, 0, 0, 161, 162, 163, 164, 165, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 137, 138, + 139, 168, 140, 141, 142, 143, 144, 145, 146, 147, + 215, -531, 553, 0, 0, 0, 343, 0, 0, 0, + 0, 150, 151, 152, 153, 154, 155, 0, 77, 304, + 305, 0, 171, 0, -266, -266, 0, 3, 156, 157, + 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 137, 138, 139, 168, 140, 141, - 142, 143, 144, 145, 146, 147, 215, -530, 552, 0, - 0, 0, 343, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 77, 304, 305, 0, 171, 0, - -266, -266, 0, 3, 156, 157, 158, 0, 0, 0, + 0, 0, 159, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, + 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, + 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, + 554, 11, 12, 13, 168, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, + 0, 0, 0, 0, 0, 77, 169, 536, 80, 171, + 172, 82, 83, 137, 138, 139, 0, 140, 141, 142, + 143, 144, 145, 146, 147, 215, -531, 627, 0, 0, + 0, 343, 0, 0, 0, 0, 150, 151, 152, 153, + 154, 155, 0, 0, 0, 0, 0, 0, 0, -266, + -266, 0, 3, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 159, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 169, - 170, 0, 171, 172, 82, 0, 0, 0, 0, 0, - 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 553, 11, 12, 13, - 168, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, - 0, 77, 169, 536, 80, 171, 172, 82, 83, 137, - 138, 139, 0, 140, 141, 142, 143, 144, 145, 146, - 147, 215, -530, 626, 0, 0, 0, 343, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, - 0, 0, 0, 0, 0, -266, -266, 0, 3, 156, - 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 159, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, - 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 11, 12, 13, 168, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 0, 0, 0, 0, 0, 0, 77, 169, 536, 80, - 171, 172, 82, 83, 137, 138, 139, 0, 140, 141, - 142, 143, 144, 145, 146, 147, 215, -530, 638, 0, - 0, 0, 343, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - -266, -266, 0, 3, 156, 157, 158, 0, 0, 0, + 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 11, 12, 13, 168, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, + 77, 169, 536, 80, 171, 172, 82, 83, 137, 138, + 139, 0, 140, 141, 142, 143, 144, 145, 146, 147, + 215, -531, 639, 0, 0, 0, 343, 0, 0, 0, + 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, + 0, 0, 0, 0, -266, -266, 0, 3, 156, 157, + 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 159, 4, + 0, 0, 159, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, + 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, + 640, 11, 12, 13, 168, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, + 0, 0, 0, 0, 0, 77, 169, 536, 80, 171, + 172, 82, 83, 137, 138, 139, 0, 140, 141, 142, + 143, 144, 145, 146, 147, 215, -531, 638, 0, 0, + 0, 343, 0, 0, 0, 0, 150, 151, 152, 153, + 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 156, 157, 158, 137, 138, 139, 0, + 140, 141, 142, 143, 144, 145, 146, 147, 215, -531, + 642, 0, 0, 0, 343, 0, 0, 159, 0, 150, + 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 156, 157, 158, 0, + 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 0, 0, 0, 168, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 639, 11, 12, 13, - 168, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, - 0, 77, 169, 536, 80, 171, 172, 82, 83, 137, - 138, 139, 0, 140, 141, 142, 143, 144, 145, 146, - 147, 215, -530, 637, 0, 0, 0, 343, 0, 0, + 0, 0, 0, 0, 161, 162, 163, 164, 165, 166, + 0, 0, 0, 0, 0, 0, 0, 0, 643, 137, + 138, 139, 168, 140, 141, 142, 143, 144, 145, 146, + 147, 215, -531, 695, 0, 0, 0, 343, 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, + 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 137, 138, 139, 0, 140, 141, 142, 143, - 144, 145, 146, 147, 215, -530, 641, 0, 0, 0, + 144, 145, 146, 147, 215, -531, 773, 0, 0, 0, 343, 0, 0, 159, 0, 150, 151, 152, 153, 154, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 168, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, - 0, 0, 0, 0, 642, 137, 138, 139, 168, 140, - 141, 142, 143, 144, 145, 146, 147, 215, -530, 694, + 0, 0, 0, 0, 167, 137, 138, 139, 168, 140, + 141, 142, 143, 144, 145, 146, 147, 215, -531, 774, 0, 0, 0, 343, 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 137, 138, 139, 0, 140, 141, 142, 143, 144, 145, 146, 147, - 215, -530, 772, 0, 0, 0, 343, 0, 0, 159, + 215, -531, 776, 0, 0, 0, 343, 0, 0, 159, 0, 150, 151, 152, 153, 154, 155, 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 0, 0, 161, 162, 163, 164, 165, 166, 0, - 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 775, 0, 0, 0, 168, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, 0, 167, 137, 138, 139, 168, 140, 141, 142, 143, 144, - 145, 146, 147, 215, -530, 773, 0, 0, 0, 343, + 145, 146, 147, 215, -531, 899, 0, 0, 0, 343, 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 137, 138, 139, 0, 140, 141, - 142, 143, 144, 145, 146, 147, 215, -530, 775, 0, + 142, 143, 144, 145, 146, 147, 215, -531, 0, 0, 0, 0, 343, 0, 0, 159, 0, 150, 151, 152, 153, 154, 155, 0, 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, - 0, 0, 0, 774, 0, 0, 0, 168, 159, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 161, 162, 163, 164, 165, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 137, 138, 139, - 168, 140, 141, 142, 143, 144, 145, 146, 147, 215, - -530, 898, 0, 0, 0, 343, 0, 0, 0, 0, - 150, 151, 152, 153, 154, 155, 0, 0, 77, 169, - 170, 0, 171, 172, 82, 0, 0, 156, 157, 158, - 137, 138, 139, 0, 140, 141, 142, 143, 144, 145, - 146, 147, 215, -530, 0, 0, 0, 0, 343, 0, - 0, 159, 0, 150, 151, 152, 153, 154, 155, 0, - 0, 77, 169, 170, 0, 171, 172, 82, 0, 0, - 156, 157, 158, 0, 0, 161, 162, 163, 164, 165, - 166, 0, 0, 0, 0, 0, 0, 0, 0, 167, - 0, 0, 0, 168, 159, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, - 163, 164, 165, 166, -132, 0, 0, 0, 0, -132, - 0, 0, 167, 0, 0, 0, 168, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 169, 170, 0, 171, 172, - 82, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -533, 0, 0, 0, 77, 169, 170, - 0, 171, 172, 82, 11, 12, 13, 0, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 80, 11, 12, 13, 83, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - -673, 0, 0, 0, 0, 0, 0, 0, 131, 80, - 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 0, 0, 0, 168, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -675, -675, -675, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -675, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -675, -675, -675, - 0, -675, -675, -675, -675, -675, -675, -675, -675, -675, - -675, 0, -675, -675, -675, -675, -675, -675, -675, -675, - -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, - -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, - -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, - -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, - -675, -675, -675, -675, -675, 0, 0, 0, 0, 0, - 791, 0, 0, 0, -675, 303, 0, 0, -675, 0, - 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 157, 158, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -266, 0, 0, 0, 0, 0, - 0, 0, 0, 168, 2, 303, 0, 0, 598, 0, - 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 157, 158, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 161, 162, 163, 164, 165, 166, -132, 0, + 0, 0, 0, -132, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 169, + 170, 0, 171, 172, 82, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 304, 305, 0, 171, 11, - 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 168, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, - 0, 0, 0, 77, 78, 79, 80, 0, 81, 82, - 83, 0, 0, 0, 77, 304, 305, 303, 171, 0, - 679, 0, 150, 151, 152, 153, 154, 155, 303, 937, - 0, 0, 0, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 0, 0, 0, 0, 0, 0, 303, -248, - 156, 157, 158, 150, 151, 152, 153, 154, 155, 0, - 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, - 156, 157, 158, 303, 159, 0, 0, 0, 150, 151, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 159, 156, 157, 158, 0, 0, - 0, 0, 332, 0, 0, 168, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 168, 0, 0, 159, - 0, 0, 621, 0, 156, 157, 158, 150, 151, 152, - 153, 154, 155, 623, 0, 0, 168, 0, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 0, 159, 0, - 0, 0, 0, 0, 0, 156, 157, 158, 0, 0, - 0, 168, 0, 0, 0, 0, 0, 0, 159, 0, - 0, 0, 0, 0, 0, 0, 77, 304, 305, 159, - 171, 0, 0, 0, 0, 0, 0, 77, 304, 305, - 168, 171, 697, 0, 0, 0, 0, 698, 699, 700, - 701, 702, 703, 0, 0, 0, 0, 77, 304, 305, - 168, 171, 0, 0, 156, 704, 705, 0, 0, 0, - 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 304, 305, 0, 171, 0, 706, 0, + 0, 0, 0, 0, 0, 0, 0, -534, 0, 0, + 0, 77, 169, 170, 0, 171, 172, 82, 11, 12, + 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 80, 11, 12, 13, 83, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, -674, 0, 0, 0, 0, 0, + 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 304, 305, 0, 171, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -676, + -676, -676, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 77, 304, 305, 0, 171, 0, 0, 0, -192, - -192, 0, 77, 304, 305, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -676, -676, -676, 0, -676, -676, -676, -676, -676, + -676, -676, -676, -676, -676, 0, -676, -676, -676, -676, + -676, -676, -676, -676, -676, -676, -676, -676, -676, -676, + -676, -676, -676, -676, -676, -676, -676, -676, -676, -676, + -676, -676, -676, -676, -676, -676, -676, -676, -676, -676, + -676, -676, -676, -676, -676, -676, -676, -676, -676, -676, + -676, -676, -676, -676, -676, -676, -676, -676, -676, 0, + 0, 0, 0, 0, 792, 0, 0, 0, -676, 303, + 0, 0, -676, 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 707, 708, 0, 171, 11, 12, 13, 0, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 3, 0, 0, 0, 0, 0, - 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 0, 0, -398, -398, -398, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -266, 0, + 0, 0, 0, 0, 0, 0, 0, 168, 2, 303, + 495, 0, 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 156, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, - 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 3, 0, 0, 0, - 0, 0, 0, 0, 131, 80, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 304, + 305, 0, 171, 11, 12, 13, 0, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 168, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 0, 0, 0, 0, 0, 0, 77, 78, 79, + 80, 0, 81, 82, 83, 0, 0, 0, 77, 304, + 305, 303, 171, 0, 599, 0, 150, 151, 152, 153, + 154, 155, 303, 0, 0, 680, 0, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 0, 0, 0, 0, + 0, 0, 303, 938, 156, 157, 158, 150, 151, 152, + 153, 154, 155, 0, 0, 0, 0, 159, 0, 0, + 0, 0, 0, 0, 156, 157, 158, 0, 159, 303, + -248, 0, 0, 0, 150, 151, 152, 153, 154, 155, + 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, + 0, 156, 157, 158, 0, 0, 303, 0, 0, 168, + 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, + 168, 0, 0, 0, 0, 159, 332, 0, 156, 157, + 158, 150, 151, 152, 153, 154, 155, 622, 0, 0, + 168, 0, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 0, 159, 0, 0, 0, 0, 0, 0, 156, + 157, 158, 0, 0, 0, 0, 0, 168, 0, 0, + 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, + 77, 304, 305, 159, 171, 0, 0, 0, 0, 0, + 0, 77, 304, 305, 168, 171, 0, 0, 0, 0, + 624, 0, 0, 0, 0, 150, 151, 152, 153, 154, + 155, 77, 304, 305, 168, 171, 0, 0, 0, 0, + 0, 0, 156, 157, 158, 168, 698, 0, 0, 0, + 0, 699, 700, 701, 702, 703, 704, 0, 77, 304, + 305, 0, 171, 0, 0, 0, 159, 0, 156, 705, + 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 304, 305, 0, 171, + 0, 0, 707, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 304, 305, 168, 171, + 0, 0, 0, 0, 0, 0, 77, 304, 305, 0, + 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, + 0, 0, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 304, 305, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 708, 709, 0, 171, 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -1903,9 +1889,9 @@ static const short yytable[] = { 118, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 3, 0, - 0, 0, 0, 0, 77, 1046, 131, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + -398, -398, -398, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1916,261 +1902,313 @@ static const short yytable[] = { 118, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - -398, -398, -398, 0, 0, 0, 0, 0, 131, 80, + 3, 0, 0, 0, 0, 0, 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 12, 13, 0, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 8, 9, 10, 0, 0, 0, 0, 0, 131, 80, - 0, 0, 0, 83, 0, 0, 0, 0, 0, 11, - 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 80, 11, 12, 13, - 83, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 80, 0, 0, 0, 83 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 3, 0, 0, 0, 0, 0, 77, 1047, + 131, 80, 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 0, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, -398, -398, -398, 0, 0, 0, + 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 0, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 8, 9, 10, 0, 0, 0, + 0, 0, 131, 80, 0, 0, 0, 83, 0, 0, + 0, 0, 0, 11, 12, 13, 0, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 80, 11, 12, 13, 83, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 80, 0, + 0, 0, 83 }; static const short yycheck[] = { 0, - 137, 295, 3, 441, 117, 388, 7, 8, 9, 10, - 343, 596, 0, 425, 631, 2, 530, 278, 378, 379, - 473, 380, 381, 389, 382, 383, 384, 385, 528, 19, - 21, 227, 631, 8, 25, 0, 791, 631, 631, 794, - 18, 27, 386, 387, 216, 451, 24, 906, 539, 221, - 654, 223, 797, 5, 390, 669, 34, 886, 803, 471, - 600, 635, 258, 235, 913, 556, 297, 0, 894, 426, - 687, 5, 24, 28, 486, 1058, 1059, 34, 21, 87, - 88, 21, 34, 84, 27, 24, 5, 27, 687, 44, - 24, 25, 26, 687, 687, 34, 84, 8, 22, 21, - 34, 19, 26, 25, 28, 28, 25, 86, 24, 117, - 118, 9, 10, 49, 50, 24, 117, 631, 34, 84, - 44, 44, 21, 131, 41, 34, 25, 49, 50, 5, - 0, 631, 133, 3, 21, 5, 18, 124, 25, 56, - 1123, 681, 29, 144, 899, 41, 133, 756, 149, 25, - 18, 84, 109, 110, 53, 54, 985, 986, 32, 33, - 56, 1020, 771, 1022, 1013, 24, 167, 21, 580, 995, - 996, 25, 917, 687, 149, 21, 582, 781, 9, 10, - 784, 18, 756, 797, 21, 39, 24, 687, 25, 803, - 602, 782, 193, 183, 184, 185, 187, 771, 188, 189, - 201, 187, 203, 399, 205, 183, 184, 208, 150, 151, - 152, 153, 154, 155, 84, 216, 8, 478, 193, 672, - 221, 452, 223, 24, 581, 558, 201, 1056, 98, 26, - 205, 183, 184, 208, 235, 236, 237, 34, 149, 109, - 110, 1067, 18, 1069, 183, 184, 21, 23, 631, 421, - 25, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 635, 237, 133, 24, 631, 0, 183, 184, 3, - 1025, 631, 631, 631, 183, 184, 277, 11, 12, 280, - 281, 282, 193, 577, 883, 24, 21, 631, 425, 277, - 25, 5, 107, 294, 205, 631, 111, 208, 113, 300, - 115, 562, 24, 917, 687, 120, 294, 183, 184, 185, - 18, 644, 188, 189, 905, 130, 907, 132, 216, 18, - 21, 687, 21, 221, 25, 223, 237, 687, 687, 687, - 22, 32, 33, 995, 471, 322, 18, 235, 236, 21, - 925, 23, 34, 687, 345, 606, 1172, 635, 18, 486, - 84, 687, 353, 18, 355, 972, 21, 149, 635, 174, - 621, 814, 623, 24, 878, 99, 100, 101, 102, 103, - 104, 105, 106, 972, 108, 787, 876, 111, 972, 972, - 635, 921, 756, 117, 18, 216, 24, 21, 26, 16, - 221, 25, 223, 127, 128, 129, 34, 771, 399, 133, - 8, 193, 21, 16, 235, 236, 25, 903, 18, 201, - 906, 21, 1074, 205, 21, 149, 208, 1079, 25, 24, - 421, 26, 156, 21, 399, 16, 427, 25, 429, 34, - 49, 50, 16, 375, 376, 377, 697, 26, 439, 28, - 441, 429, 443, 580, 21, 237, 261, 15, 25, 99, - 451, 321, 417, 454, 1053, 44, 29, 458, 972, 25, - 26, 22, 28, 428, 451, 602, 1128, 22, 756, 183, - 184, 185, 972, 288, 188, 189, 291, 21, 44, 756, - 22, 25, 216, 771, 299, 5, 39, 302, 399, 490, - 873, 183, 184, 185, 771, 40, 188, 189, 499, 500, - 5, 756, 19, 863, 864, 25, 865, 866, 874, 867, - 868, 869, 870, 53, 54, 0, 771, 26, 3, 28, - 254, 1120, 7, 421, 1020, 21, 1022, 871, 872, 25, - 25, 26, 21, 28, 476, 44, 25, 538, 539, 875, - 24, 149, 26, 277, 278, 546, 280, 281, 5, 44, - 37, 38, 553, 49, 50, 556, 557, 21, 546, 672, - 294, 25, 432, 538, 51, 52, 300, 24, 26, 303, - 28, 21, 21, 55, 539, 25, 25, 34, 183, 184, - 185, 582, 93, 188, 189, 193, 44, 93, 322, 972, - 421, 556, 886, 201, 24, 582, 26, 205, 931, 84, - 208, 416, 18, 22, 21, 21, 972, 399, 25, 343, - 22, 426, 972, 972, 972, 187, 431, 25, 25, 26, - 28, 436, 24, 438, 5, 919, 627, 628, 972, 237, - 631, 446, 117, 21, 93, 450, 972, 25, 639, 640, - 24, 642, 26, 24, 25, 26, 1099, 1085, 133, 18, - 787, 34, 21, 34, 18, 22, 657, 21, 659, 144, - 19, 49, 50, 183, 184, 185, 20, 668, 188, 189, - 671, 672, 673, 8, 9, 10, 42, 43, 183, 184, - 185, 26, 416, 188, 189, 672, 687, 981, 18, 34, - 677, 21, 829, 21, 21, 429, 990, 25, 25, 93, - 34, 814, 436, 86, 438, 24, 440, 441, 27, 443, - 25, 26, 24, 28, 448, 34, 1010, 451, 24, 589, - 26, 21, 179, 180, 458, 25, 183, 184, 18, 44, - 187, 21, 1026, 6, 7, 1147, 470, 37, 38, 473, - 27, 475, 18, 21, 478, 24, 538, 25, 27, 21, - 21, 51, 52, 25, 25, 34, 698, 699, 700, 701, - 702, 703, 18, 21, 18, 21, 581, 25, 1062, 1181, - 21, 20, 21, 774, 25, 1036, 183, 184, 185, 37, - 38, 188, 189, 18, 21, 600, 24, 1081, 25, 23, - 605, 399, 277, 51, 52, 280, 281, 282, 21, 22, - 183, 184, 183, 184, 185, 188, 189, 188, 189, 294, - 32, 33, 546, 814, 149, 300, 22, 632, 21, 634, - 24, 18, 25, 824, 25, 559, 25, 814, 562, 24, - 34, 18, 21, 24, 18, 26, 25, 28, 183, 184, - 185, 575, 576, 188, 189, 34, 35, 36, 582, 183, - 184, 185, 18, 44, 188, 189, 47, 48, 193, 49, - 50, 24, 24, 26, 183, 184, 201, 601, 187, 9, - 205, 34, 606, 208, 21, 21, 37, 38, 25, 25, - 21, 216, 616, 617, 25, 886, 221, 621, 223, 623, - 51, 52, 21, 894, 709, 21, 25, 53, 54, 25, - 235, 236, 237, 18, 183, 184, 32, 33, 187, 779, - 18, 24, 782, 26, 648, 28, 19, 21, 860, 861, - 862, 25, 656, 21, 658, 20, 21, 25, 662, 663, - 538, 44, 21, 667, 47, 48, 25, 671, 672, 940, - 941, 20, 21, 677, 429, 34, 35, 36, 21, 764, - 765, 8, 25, 21, 439, 11, 441, 25, 443, 183, - 184, 185, 25, 697, 188, 189, 451, 89, 21, 454, - 21, 972, 25, 458, 25, 179, 180, 21, 22, 183, - 184, 796, 983, 187, 985, 986, 1099, 21, 137, 32, - 33, 25, 993, 935, 995, 996, 21, 67, 68, 69, - 25, 150, 151, 152, 153, 154, 155, 11, 157, 158, - 1147, 1012, 21, 21, 499, 500, 1017, 25, 983, 19, - 183, 184, 185, 1160, 19, 188, 189, 190, 1029, 1017, - 21, 1032, 19, 903, 25, 905, 906, 907, 34, 35, - 36, 1029, 1029, 777, 1181, 21, 203, 21, 19, 25, - 89, 25, 1053, 1054, 1055, 1056, 24, 1058, 1059, 109, - 110, 546, 27, 25, 399, 21, 1067, 22, 1069, 1070, - 34, 35, 36, 1074, 23, 1076, 1077, 21, 1079, 813, - 814, 18, 816, 24, 1085, 21, 421, 902, 11, 24, - 147, 25, 149, 51, 52, 53, 24, 582, 1099, 24, - 27, 25, 24, 23, 20, 19, 921, 20, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 19, 1120, - 1121, 1122, 1123, 23, 21, 27, 5, 1128, 8, 9, - 10, 25, 24, 22, 24, 20, 193, 25, 20, 72, - 27, 25, 18, 21, 201, 22, 27, 1148, 205, 24, - 1020, 208, 1022, 25, 72, 73, 74, 75, 25, 216, - 1148, 79, 80, 81, 82, 83, 84, 85, 902, 25, - 25, 1172, 657, 39, 659, 909, 29, 40, 25, 184, - 237, 55, 89, 668, 89, 335, 671, 672, 345, 18, - 89, 89, 25, 89, 89, 25, 353, 24, 355, 25, - 1015, 25, 18, 538, 25, 18, 21, 187, 40, 359, - 18, 21, 23, 182, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 24, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 18, 89, 189, 395, 303, 22, 22, 21, - 21, 8, 9, 10, 311, 312, 313, 314, 22, 20, - 20, 8, 9, 10, 89, 27, 25, 25, 18, 149, - 427, 40, 191, 27, 1089, 332, 425, 25, 20, 20, - 1014, 27, 25, 1017, 0, 0, 343, 84, 300, 1172, - 894, 1141, 1070, 1044, 975, 1029, 984, 1031, 660, 1120, - 1012, 844, 1036, 360, 443, 1039, 1040, 769, 1148, 562, - 659, 657, 814, 193, 671, 124, 322, 10, 341, 236, - 1104, 201, 471, 490, 399, 205, 687, 476, 208, 814, - 972, -1, 23, 490, -1, -1, 216, 486, -1, 824, - -1, 221, 399, 223, -1, -1, 1080, -1, -1, -1, - 407, 1085, -1, 1087, 1088, 235, 236, 237, -1, -1, - -1, -1, -1, -1, 1179, 1099, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, -1, -1, -1, 528, - -1, 530, 539, 532, 533, -1, -1, -1, -1, -1, - 1124, -1, 149, -1, -1, -1, 8, 9, 10, 556, - 557, -1, 149, -1, -1, 8, 9, 10, -1, -1, - 1144, 1145, -1, 18, 1148, -1, -1, 1151, -1, 24, - -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, - -1, 580, -1, -1, -1, -1, 193, -1, -1, -1, - -1, 46, 47, 48, 201, -1, 193, -1, 205, -1, - -1, 208, -1, 602, 201, 940, 941, -1, 205, 216, - 217, 208, -1, 613, 221, 70, 223, -1, -1, 216, - 627, 628, 529, -1, 221, -1, 223, -1, 235, 236, - 237, 538, 631, 640, -1, -1, -1, -1, 235, 236, - 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, - -1, 661, -1, -1, -1, -1, 673, -1, -1, 399, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1017, -1, -1, -1, -1, 149, 687, 596, - -1, 421, -1, -1, 1029, -1, 149, 1032, -1, 698, - 699, 700, 701, 702, 703, 704, 705, -1, -1, -1, - -1, -1, -1, -1, 621, -1, 623, -1, -1, 1054, - 1055, -1, 629, -1, -1, -1, 633, -1, 183, 184, - 185, 193, 187, -1, -1, -1, -1, -1, -1, 201, - 193, 1076, 1077, 205, -1, -1, 208, -1, 201, -1, - 1085, 358, 205, -1, 216, 208, -1, -1, -1, 221, - -1, 223, -1, 216, 1099, -1, -1, -1, 221, -1, - 223, -1, -1, 235, 236, 237, -1, -1, -1, 686, - -1, -1, 235, 236, 237, -1, 1121, 1122, 787, -1, - 697, 791, 399, -1, 794, -1, -1, -1, -1, 8, - 9, 10, 399, -1, -1, -1, -1, -1, 538, -1, - -1, -1, -1, 1148, 421, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 421, -1, -1, -1, -1, -1, - 829, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 843, 844, -1, -1, -1, -1, 849, - 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, - -1, 860, 861, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 18, 878, - -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, 899, - 19, 20, -1, -1, -1, 24, 46, 47, 48, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, - 70, 538, -1, -1, -1, -1, 935, 399, 845, -1, - 149, 538, -1, -1, -1, -1, 399, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, 421, - -1, -1, -1, -1, -1, -1, -1, -1, 421, -1, - -1, -1, 112, 972, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 193, -1, -1, -1, -1, -1, - -1, -1, 201, 112, -1, -1, 205, -1, -1, 208, - -1, -1, -1, -1, -1, -1, -1, 216, -1, -1, - -1, -1, 221, -1, 223, -1, -1, -1, 925, -1, - -1, -1, -1, -1, -1, 1025, 235, 236, 237, -1, - -1, -1, 24, 25, -1, -1, -1, 29, 30, 31, - 32, 33, 34, 183, 184, 185, -1, 187, -1, -1, - -1, -1, -1, -1, 46, 47, 48, -1, -1, -1, - -1, -1, -1, 970, 183, 184, 185, -1, 187, -1, - -1, -1, -1, -1, -1, -1, 538, -1, 70, -1, - -1, -1, -1, -1, -1, 538, -1, -1, -1, 0, - 1, -1, 119, 120, 121, 122, -1, 124, -1, -1, + 425, 441, 3, 2, 388, 117, 7, 8, 9, 10, + 343, 278, 0, 0, 473, 0, 3, 389, 5, 390, + 632, 380, 381, 632, 295, 601, 137, 528, 378, 379, + 597, 530, 632, 227, 8, 382, 383, 384, 385, 887, + 297, 792, 0, 895, 795, 8, 471, 426, 216, 386, + 387, 632, 27, 221, 914, 223, 18, 798, 636, 19, + 539, 486, 670, 804, 258, 8, 21, 32, 33, 451, + 25, 5, 636, 21, 18, 34, 688, 25, 557, 688, + 24, 29, 21, 84, 24, 21, 25, 27, 688, 25, + 34, 25, 1059, 1060, 34, 24, 84, 84, 757, 84, + 19, 9, 10, 39, 26, 34, 682, 688, 5, 41, + 24, 98, 34, 772, 53, 54, 117, 21, 9, 10, + 636, 25, 109, 110, 56, 124, 84, 24, 25, 26, + 18, 632, 133, 632, 133, 21, 636, 34, 986, 987, + 655, 27, 24, 144, 996, 997, 133, 636, 149, 900, + 109, 110, 34, 26, 1014, 28, 581, 1124, 26, 21, + 28, 21, 21, 25, 21, 25, 167, 0, 27, 5, + 3, 44, 32, 33, 7, 149, 44, 918, 603, 757, + 150, 151, 152, 153, 154, 155, 149, 688, 24, 688, + 798, 86, 193, 757, 772, 452, 804, 783, 34, 24, + 201, 583, 203, 582, 205, 399, 149, 208, 772, 1057, + 907, 478, 187, 21, 673, 216, 1068, 25, 1070, 193, + 221, 28, 223, 183, 184, 185, 559, 201, 188, 189, + 193, 205, 187, 5, 208, 236, 237, 44, 201, 183, + 184, 757, 205, 183, 184, 208, 24, 187, 632, 24, + 193, 84, 420, 421, 183, 184, 772, 757, 201, 34, + 632, 632, 205, 237, 24, 208, 0, 782, 757, 3, + 785, 24, 772, 632, 237, 1026, 277, 11, 12, 280, + 281, 282, 632, 772, 117, 632, 183, 184, 185, 277, + 41, 188, 189, 294, 237, 632, 563, 5, 24, 300, + 133, 183, 184, 884, 688, 56, 294, 578, 216, 18, + 918, 144, 645, 221, 425, 223, 688, 688, 996, 8, + 906, 1173, 908, 322, 1021, 216, 1023, 22, 236, 688, + 221, 26, 223, 28, 321, 26, 18, 28, 688, 21, + 607, 688, 18, 25, 345, 236, 922, 183, 184, 44, + 84, 688, 353, 44, 355, 622, 815, 624, 21, 926, + 471, 973, 25, 788, 973, 99, 100, 101, 102, 103, + 104, 105, 106, 973, 108, 486, 877, 111, 904, 18, + 879, 907, 21, 117, 28, 18, 49, 50, 21, 37, + 38, 18, 973, 127, 128, 129, 23, 1075, 399, 133, + 44, 24, 1080, 51, 52, 375, 376, 377, 183, 184, + 16, 183, 184, 185, 5, 149, 188, 189, 25, 420, + 421, 28, 156, 49, 50, 399, 427, 24, 429, 21, + 27, 698, 417, 25, 25, 21, 399, 34, 439, 25, + 441, 429, 443, 428, 277, 432, 16, 280, 281, 282, + 451, 1129, 451, 454, 37, 38, 399, 458, 16, 18, + 149, 294, 21, 49, 50, 5, 25, 300, 51, 52, + 581, 22, 973, 1054, 973, 183, 184, 185, 53, 54, + 188, 189, 216, 34, 24, 25, 26, 87, 88, 490, + 874, 24, 603, 26, 34, 1021, 21, 1023, 499, 500, + 25, 34, 16, 875, 193, 876, 476, 866, 867, 34, + 35, 36, 420, 421, 864, 865, 205, 117, 118, 208, + 254, 868, 869, 870, 871, 25, 26, 6, 7, 420, + 421, 131, 24, 15, 26, 872, 873, 538, 539, 24, + 1121, 26, 34, 277, 278, 546, 280, 281, 237, 42, + 43, 21, 8, 554, 539, 25, 557, 558, 546, 39, + 294, 673, 25, 26, 538, 28, 300, 99, 18, 303, + 21, 21, 557, 23, 25, 538, 67, 68, 69, 49, + 50, 44, 583, 24, 583, 26, 183, 184, 322, 973, + 187, 22, 183, 184, 185, 538, 429, 188, 189, 932, + 5, 973, 973, 590, 20, 21, 439, 21, 441, 343, + 443, 25, 22, 203, 973, 21, 887, 29, 451, 25, + 25, 454, 22, 973, 5, 458, 973, 628, 629, 21, + 22, 632, 183, 184, 185, 55, 973, 188, 189, 640, + 641, 1100, 643, 24, 21, 24, 1086, 26, 25, 920, + 183, 184, 185, 34, 21, 188, 189, 658, 25, 660, + 18, 25, 26, 21, 28, 21, 499, 500, 669, 25, + 40, 672, 673, 674, 673, 25, 26, 788, 28, 678, + 44, 187, 416, 183, 184, 185, 21, 688, 188, 189, + 25, 147, 93, 149, 44, 429, 34, 49, 50, 34, + 35, 36, 436, 815, 438, 18, 440, 441, 21, 443, + 399, 982, 34, 546, 448, 24, 22, 451, 21, 830, + 991, 93, 25, 1148, 458, 34, 34, 35, 36, 699, + 700, 701, 702, 703, 704, 19, 470, 193, 21, 473, + 1011, 475, 25, 22, 478, 201, 49, 50, 86, 205, + 583, 26, 208, 24, 21, 345, 1027, 1182, 25, 34, + 216, 22, 24, 353, 26, 355, 28, 24, 21, 26, + 1037, 21, 25, 18, 775, 25, 21, 34, 183, 184, + 185, 237, 44, 188, 189, 47, 48, 34, 35, 36, + 21, 21, 1063, 780, 25, 25, 783, 93, 179, 180, + 21, 21, 183, 184, 25, 25, 187, 37, 38, 21, + 19, 1082, 546, 25, 815, 21, 815, 37, 38, 25, + 18, 51, 52, 21, 825, 658, 560, 660, 20, 563, + 21, 51, 52, 93, 25, 18, 669, 427, 21, 672, + 673, 18, 576, 577, 21, 183, 184, 303, 21, 583, + 188, 189, 25, 32, 33, 311, 312, 313, 314, 32, + 33, 183, 184, 185, 27, 21, 188, 189, 602, 25, + 179, 180, 24, 607, 183, 184, 332, 21, 187, 18, + 18, 25, 21, 617, 618, 21, 887, 343, 622, 25, + 624, 861, 862, 863, 895, 21, 183, 184, 185, 25, + 490, 188, 189, 21, 360, 53, 54, 25, 183, 184, + 185, 18, 21, 188, 189, 649, 25, 904, 21, 906, + 907, 908, 25, 657, 18, 659, 183, 184, 185, 663, + 664, 188, 189, 190, 668, 51, 52, 53, 672, 673, + 941, 942, 23, 399, 678, 24, 18, 26, 24, 539, + 21, 407, 24, 22, 25, 20, 21, 29, 30, 31, + 32, 33, 34, 18, 698, 21, 936, 557, 558, 25, + 20, 21, 973, 25, 46, 47, 48, 24, 24, 26, + 21, 28, 815, 984, 25, 986, 987, 21, 1100, 25, + 21, 25, 825, 994, 25, 996, 997, 44, 70, 984, + 47, 48, 21, 21, 21, 21, 25, 25, 25, 25, + 21, 22, 1013, 109, 110, 18, 18, 1018, 18, 8, + 9, 10, 32, 33, 18, 18, 9, 19, 24, 1030, + 1018, 1030, 1033, 21, 1021, 11, 1023, 1148, 628, 629, + 112, 25, 1030, 11, 778, 89, 19, 19, 19, 19, + 1161, 641, 89, 1054, 1055, 1056, 1057, 21, 1059, 1060, + 27, 24, 22, 25, 21, 18, 24, 1068, 11, 1070, + 1071, 1182, 21, 529, 1075, 25, 1077, 1078, 24, 1080, + 814, 815, 538, 817, 674, 1086, 24, 24, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 27, 1100, + 25, 24, 23, 20, 19, 23, 20, 19, 941, 942, + 21, 183, 184, 185, 5, 187, 25, 27, 24, 22, + 1121, 1122, 1123, 1124, 24, 20, 25, 20, 1129, 107, + 72, 25, 18, 111, 21, 113, 40, 115, 27, 27, + 25, 597, 120, 25, 22, 25, 25, 24, 1149, 39, + 55, 25, 130, 29, 132, 184, 89, 89, 89, 89, + 149, 1149, 89, 18, 25, 89, 622, 24, 624, 903, + 18, 25, 1173, 25, 630, 25, 910, 18, 634, 25, + 18, 21, 187, 24, 40, 1018, 18, 21, 29, 30, + 31, 32, 33, 34, 23, 182, 174, 1030, 24, 18, + 1033, 22, 22, 189, 193, 46, 47, 48, 8, 9, + 10, 21, 201, 21, 89, 22, 205, 20, 20, 208, + 89, 25, 1055, 1056, 25, 191, 40, 216, 27, 70, + 27, 687, 221, 25, 223, 18, 20, 27, 20, 25, + 0, 137, 698, 0, 1077, 1078, 300, 236, 237, 84, + 895, 1071, 1173, 1086, 150, 151, 152, 153, 154, 155, + 976, 157, 158, 1142, 661, 1045, 985, 1100, 1121, 1013, + 563, 112, 845, 443, 770, 1149, 660, 815, 658, 124, + 322, 1015, 672, 261, 1018, 10, 1105, 490, 236, 1122, + 1123, 23, 341, 399, 688, 973, 1030, -1, 1032, -1, + -1, -1, -1, 1037, -1, -1, 1040, 1041, -1, -1, + 288, -1, -1, 291, -1, -1, 1149, -1, -1, -1, + -1, 299, -1, -1, 302, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 8, 9, 10, 335, -1, + -1, -1, 183, 184, 185, 23, 187, 1081, -1, 149, + -1, -1, 1086, -1, 1088, 1089, -1, -1, -1, 8, + 9, 10, 359, -1, -1, -1, 1100, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + 846, 1125, -1, 193, -1, -1, -1, -1, 395, -1, + -1, 201, -1, -1, -1, 205, -1, -1, 208, -1, + 399, 1145, 1146, -1, -1, 1149, 216, 217, 1152, -1, + -1, 221, -1, 223, -1, 8, 9, 10, -1, -1, + -1, 420, 421, -1, -1, -1, 236, 237, 416, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 426, -1, + -1, -1, -1, 431, 72, 73, 74, 75, 436, -1, + 438, 79, 80, 81, 82, 83, 84, 85, 446, -1, + 926, -1, 450, 8, 9, 10, 149, -1, -1, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, -1, -1, -1, -1, -1, + 149, -1, -1, -1, -1, -1, 8, 9, 10, -1, + -1, -1, -1, -1, -1, 971, -1, -1, -1, -1, + 193, -1, -1, -1, -1, -1, -1, -1, 201, 425, + -1, -1, 205, -1, -1, 208, -1, -1, -1, -1, + -1, -1, -1, 216, 193, -1, -1, -1, 221, 538, + 223, -1, 201, -1, -1, -1, 205, -1, 358, 208, + -1, -1, -1, 236, 237, -1, 149, 216, -1, -1, + -1, -1, 221, -1, 223, 471, -1, -1, -1, -1, + 476, -1, -1, -1, -1, -1, -1, 236, 237, -1, + 486, -1, -1, -1, -1, -1, -1, -1, -1, 399, + -1, -1, -1, -1, 582, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 149, -1, -1, 614, 201, -1, + 420, 421, 205, 601, -1, 208, -1, -1, 606, -1, + -1, -1, 528, 216, 530, -1, 532, 533, 221, -1, + 223, -1, -1, -1, -1, -1, -1, 149, -1, -1, + -1, -1, -1, 236, 237, 633, -1, 635, 193, -1, + -1, -1, -1, -1, -1, 662, 201, -1, -1, -1, + 205, -1, -1, 208, -1, -1, -1, -1, -1, -1, + -1, 216, -1, -1, -1, 581, 221, -1, 223, -1, + -1, 193, -1, -1, -1, -1, -1, -1, -1, 201, + -1, 236, 237, 205, -1, -1, 208, 603, -1, -1, + -1, -1, -1, -1, 216, -1, -1, -1, -1, 221, + -1, 223, -1, -1, -1, -1, 399, -1, -1, -1, + -1, -1, 710, -1, 236, 237, 632, -1, 538, -1, + -1, -1, -1, -1, -1, -1, 19, 420, 421, -1, + 399, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 420, 421, 46, 47, 48, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 765, 766, -1, + -1, -1, 688, -1, -1, 792, -1, 70, 795, -1, + -1, -1, -1, 699, 700, 701, 702, 703, 704, 705, + 706, -1, 119, 120, 121, 122, 399, 124, -1, 797, -1, -1, 129, 130, -1, -1, 133, 134, -1, 136, - 137, 138, 139, 24, -1, -1, -1, -1, -1, -1, - 112, -1, -1, 34, 151, 152, -1, -1, -1, -1, - -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1147, 176, - -1, -1, -1, -1, -1, -1, 67, 68, 69, 186, - 71, 1160, -1, -1, -1, 76, 77, 78, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, - 91, 92, 1181, -1, -1, -1, -1, -1, -1, -1, - 399, 183, 184, 185, -1, 187, -1, -1, 109, 110, + 137, 138, 139, -1, -1, -1, -1, 420, 421, 112, + -1, -1, -1, -1, 151, 152, -1, 844, 845, -1, + -1, -1, -1, 850, 851, 852, 853, 854, 855, 856, + 857, 858, 859, 860, 399, 538, -1, -1, -1, 176, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, + -1, -1, -1, -1, -1, 420, 421, -1, -1, 538, + -1, -1, 788, -1, -1, -1, -1, 399, -1, -1, + -1, -1, -1, 900, -1, -1, -1, -1, -1, -1, + 183, 184, 185, -1, 187, -1, -1, -1, 420, 421, + -1, -1, -1, -1, -1, 903, -1, -1, -1, -1, + -1, -1, -1, -1, 830, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 922, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 538, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 861, 862, 863, 864, 865, + 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, -1, 879, -1, -1, -1, -1, -1, 0, + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 538, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 24, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 34, -1, -1, -1, -1, -1, 1026, + -1, -1, -1, -1, 45, -1, 538, -1, 1016, -1, + 936, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 67, 68, 69, -1, + 71, -1, -1, -1, -1, 76, 77, 78, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 973, -1, 90, + 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 109, 110, 111, -1, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 421, 124, 125, 126, 127, 128, 129, 130, + 121, 122, 1090, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 0, 1, -1, -1, + 171, 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 538, - -1, -1, -1, 67, 68, 69, -1, 71, -1, -1, - -1, -1, 76, 77, 78, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, 91, 92, -1, + -1, -1, 1180, -1, 24, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 109, 110, 111, -1, 113, + -1, -1, -1, -1, -1, -1, -1, 67, 68, 69, + -1, 71, 1148, -1, -1, -1, 76, 77, 78, -1, + -1, -1, -1, -1, -1, 1161, -1, -1, -1, -1, + 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1182, -1, -1, 109, + 110, 111, -1, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, + -1, -1, -1, 183, 184, 185, 186, 1, 188, 189, + 190, -1, 6, 7, 8, -1, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, 68, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, @@ -2178,15 +2216,121 @@ static const short yycheck[] = { 0, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, - 184, 185, 186, 1, 188, 189, 190, -1, 6, 7, - 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, + 184, 185, 186, 187, 188, 189, 190, 1, -1, -1, + -1, -1, 6, 7, 8, -1, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, -1, 46, 47, 48, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, 68, 69, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, + 184, 185, 186, 187, 188, 189, 190, 1, -1, -1, + -1, -1, 6, 7, 8, -1, -1, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, -1, 46, 47, 48, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, 68, 69, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, + 184, 185, 186, 187, 188, 189, 190, 1, -1, -1, + -1, -1, 6, 7, 8, -1, -1, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 24, 25, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + 1, -1, 46, 47, 48, 6, 7, 8, -1, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, + -1, -1, -1, 24, -1, -1, 70, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, 42, 43, -1, -1, 46, 47, 48, -1, 93, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, -1, 108, -1, -1, -1, 112, 70, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, 95, 96, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, + -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, + 184, 185, -1, 187, 188, 189, -1, -1, 1, -1, + -1, -1, -1, 6, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, 183, 184, 185, -1, 187, 188, 189, 42, + 43, 1, -1, 46, 47, 48, 6, 7, 8, -1, + -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 24, -1, -1, 70, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, 42, 43, -1, -1, 46, 47, 48, -1, + 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, -1, 108, -1, -1, -1, 112, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, + -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 183, 184, 185, -1, 187, 188, 189, -1, -1, 1, + -1, -1, -1, -1, 6, 7, 8, -1, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, + -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, + 32, 33, 34, 183, 184, 185, -1, 187, 188, 189, + 42, 43, 1, -1, 46, 47, 48, 6, 7, 8, + -1, -1, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, -1, -1, -1, 24, -1, -1, 70, -1, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, 42, 43, -1, -1, 46, 47, 48, + -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, + 112, 70, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, -1, 108, + -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 19, 20, -1, -1, -1, 24, + -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, + -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, + 1, 46, 47, 48, -1, 6, 7, 8, -1, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, + -1, -1, -1, 24, -1, 70, -1, -1, 29, 30, + 31, 32, 33, 34, 183, 184, 185, -1, 187, 188, + 189, 42, 43, -1, -1, 46, 47, 48, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 112, -1, 70, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 94, 95, 96, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, -1, 108, 6, 7, + 8, 112, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, 29, 30, 31, 32, 33, 34, -1, 183, 184, + 185, -1, 187, -1, 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, @@ -2197,33 +2341,32 @@ static const short yycheck[] = { 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, 184, 185, 186, 187, - 188, 189, 190, 1, -1, -1, -1, -1, 6, 7, - 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, -1, 46, 47, - 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, + 188, 189, 190, 6, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, + 43, -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 94, 95, 96, 97, - 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, - -1, -1, -1, -1, -1, 183, 184, 185, 186, 187, - 188, 189, 190, 1, -1, -1, -1, -1, 6, 7, - 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, + -1, -1, -1, -1, -1, -1, -1, 70, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 94, 95, 96, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, -1, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, -1, -1, -1, -1, -1, -1, + 183, 184, 185, 186, 187, 188, 189, 190, 6, 7, + 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, -1, 46, 47, + -1, -1, -1, -1, 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2235,138 +2378,29 @@ static const short yycheck[] = { 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, -1, 183, 184, 185, 186, 187, - 188, 189, 190, 1, -1, -1, -1, -1, 6, 7, - 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, -1, -1, 24, 25, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, 1, -1, 46, 47, - 48, 6, 7, 8, -1, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, - -1, -1, 70, -1, 29, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, -1, -1, 42, 43, -1, - -1, 46, 47, 48, -1, 93, 94, 95, 96, 97, - 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, - 108, -1, -1, -1, 112, 70, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, - -1, -1, -1, 108, -1, -1, -1, 112, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 183, 184, 185, -1, 187, - 188, 189, -1, -1, 1, -1, -1, -1, -1, 6, - 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, - -1, -1, 29, 30, 31, 32, 33, 34, 183, 184, - 185, -1, 187, 188, 189, 42, 43, 1, -1, 46, - 47, 48, 6, 7, 8, -1, -1, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, - 24, -1, -1, 70, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, - -1, -1, 46, 47, 48, -1, 93, 94, 95, 96, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 108, -1, -1, -1, 112, 70, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, - 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, - -1, -1, -1, -1, 108, -1, -1, -1, 112, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 183, 184, 185, -1, - 187, 188, 189, -1, -1, 1, -1, -1, -1, -1, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, 183, - 184, 185, -1, 187, 188, 189, 42, 43, 1, -1, - 46, 47, 48, 6, 7, 8, -1, -1, 11, 12, + 188, 189, 190, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, - -1, 24, -1, -1, 70, -1, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, - 43, -1, -1, 46, 47, 48, -1, -1, 94, 95, - 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, - -1, -1, 108, -1, -1, -1, 112, 70, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 46, 47, 48, 6, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 24, -1, -1, 70, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 46, 47, 48, -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, 112, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 19, -1, -1, -1, -1, 24, -1, -1, -1, -1, - 29, 30, 31, 32, 33, 34, -1, 183, 184, 185, - -1, 187, 188, 189, -1, -1, 1, 46, 47, 48, - -1, 6, 7, 8, -1, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, - -1, 70, -1, -1, 29, 30, 31, 32, 33, 34, - 183, 184, 185, -1, 187, 188, 189, 42, 43, -1, - -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 112, -1, 70, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, - 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, - -1, -1, -1, 108, 6, 7, 8, 112, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, -1, 183, 184, 185, -1, 187, -1, - 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, 183, 184, - 185, -1, 187, 188, 189, -1, -1, -1, -1, -1, - -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, - -1, -1, -1, -1, -1, -1, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, - -1, 183, 184, 185, 186, 187, 188, 189, 190, 6, - 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, - -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, 42, 43, -1, 45, 46, - 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - -1, -1, -1, -1, -1, -1, 183, 184, 185, 186, - 187, 188, 189, 190, 6, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, - 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, - -1, -1, -1, -1, -1, -1, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, - -1, 183, 184, 185, 186, 187, 188, 189, 190, 6, - 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, -1, 108, 6, + 7, 8, 112, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, + 183, 184, 185, -1, 187, 188, 189, -1, -1, 46, 47, 48, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, 70, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 34, -1, -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, 46, 47, 48, -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, 112, 70, -1, -1, -1, @@ -2393,7 +2427,7 @@ static const short yycheck[] = { 0, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, 46, 47, 48, 6, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, + 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, 70, -1, 29, 30, 31, 32, 33, 34, -1, -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, 46, 47, 48, -1, -1, 94, @@ -2401,147 +2435,109 @@ static const short yycheck[] = { 0, -1, -1, -1, 108, -1, -1, -1, 112, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 94, 95, 96, 97, 98, 99, -1, -1, - -1, -1, -1, -1, -1, -1, 108, 6, 7, 8, - 112, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, - 29, 30, 31, 32, 33, 34, -1, -1, 183, 184, - 185, -1, 187, 188, 189, -1, -1, 46, 47, 48, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, - -1, 70, -1, 29, 30, 31, 32, 33, 34, -1, - -1, 183, 184, 185, -1, 187, 188, 189, -1, -1, - 46, 47, 48, -1, -1, 94, 95, 96, 97, 98, - 99, -1, -1, -1, -1, -1, -1, -1, -1, 108, - -1, -1, -1, 112, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 94, 95, - 96, 97, 98, 99, 19, -1, -1, -1, -1, 24, - -1, -1, 108, -1, -1, -1, 112, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 183, 184, 185, -1, 187, 188, - 189, -1, -1, -1, -1, -1, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, -1, -1, 183, 184, 185, - -1, 187, 188, 189, 109, 110, 111, -1, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, -1, -1, -1, -1, -1, -1, -1, -1, - 185, 186, 109, 110, 111, 190, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 22, -1, -1, -1, -1, -1, -1, -1, 185, 186, - -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, 68, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 109, 110, 111, - -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, - 19, -1, -1, -1, 186, 24, -1, -1, 190, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, - -1, -1, -1, 112, 34, 24, -1, -1, 27, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 183, 184, 185, -1, 187, 109, - 110, 111, -1, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 112, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, - -1, -1, -1, 183, 184, 185, 186, -1, 188, 189, - 190, -1, -1, -1, 183, 184, 185, 24, 187, -1, - 27, -1, 29, 30, 31, 32, 33, 34, 24, 25, - -1, -1, -1, 29, 30, 31, 32, 33, 34, 46, - 47, 48, -1, -1, -1, -1, -1, -1, 24, 25, - 46, 47, 48, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, - 46, 47, 48, 24, 70, -1, -1, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 46, 47, 48, -1, -1, - -1, -1, 24, -1, -1, 112, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, 112, -1, -1, 70, - -1, -1, 24, -1, 46, 47, 48, 29, 30, 31, - 32, 33, 34, 24, -1, -1, 112, -1, 29, 30, - 31, 32, 33, 34, 46, 47, 48, -1, 70, -1, - -1, -1, -1, -1, -1, 46, 47, 48, -1, -1, - -1, 112, -1, -1, -1, -1, -1, -1, 70, -1, - -1, -1, -1, -1, -1, -1, 183, 184, 185, 70, - 187, -1, -1, -1, -1, -1, -1, 183, 184, 185, - 112, 187, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, 183, 184, 185, - 112, 187, -1, -1, 46, 47, 48, -1, -1, -1, - -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 183, 184, 185, -1, 187, -1, 70, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 183, 184, 185, -1, 187, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 112, 183, 184, 185, -1, 187, -1, -1, -1, 42, - 43, -1, 183, 184, 185, -1, 187, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 94, 95, 96, 97, 98, 99, 19, -1, + -1, -1, -1, 24, -1, -1, 108, -1, -1, -1, + 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 183, 184, + 185, -1, 187, 188, 189, -1, -1, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 183, 184, 185, -1, 187, 109, 110, 111, -1, + -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, + -1, 183, 184, 185, -1, 187, 188, 189, 109, 110, + 111, -1, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, -1, -1, -1, -1, + -1, -1, -1, -1, 185, 186, 109, 110, 111, 190, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 45, -1, -1, -1, -1, -1, + 173, 174, 175, 176, 22, -1, -1, -1, -1, -1, -1, -1, 185, 186, -1, -1, -1, 190, -1, -1, - -1, -1, -1, -1, -1, -1, 67, 68, 69, -1, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 109, 110, - 111, -1, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 45, -1, -1, -1, - -1, -1, -1, -1, 185, 186, -1, -1, -1, 190, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 109, 110, 111, -1, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, + -1, -1, -1, -1, 19, -1, -1, -1, 186, 24, + -1, -1, 190, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, + -1, -1, -1, -1, -1, -1, -1, 112, 34, 24, + 25, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 183, 184, + 185, -1, 187, 109, 110, 111, -1, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 112, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, -1, -1, -1, -1, -1, -1, 183, 184, 185, + 186, -1, 188, 189, 190, -1, -1, -1, 183, 184, + 185, 24, 187, -1, 27, -1, 29, 30, 31, 32, + 33, 34, 24, -1, -1, 27, -1, 29, 30, 31, + 32, 33, 34, 46, 47, 48, -1, -1, -1, -1, + -1, -1, 24, 25, 46, 47, 48, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, 70, -1, -1, + -1, -1, -1, -1, 46, 47, 48, -1, 70, 24, + 25, -1, -1, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, + -1, 46, 47, 48, -1, -1, 24, -1, -1, 112, + -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, + 112, -1, -1, -1, -1, 70, 24, -1, 46, 47, + 48, 29, 30, 31, 32, 33, 34, 24, -1, -1, + 112, -1, 29, 30, 31, 32, 33, 34, 46, 47, + 48, -1, 70, -1, -1, -1, -1, -1, -1, 46, + 47, 48, -1, -1, -1, -1, -1, 112, -1, -1, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 183, 184, 185, 70, 187, -1, -1, -1, -1, -1, + -1, 183, 184, 185, 112, 187, -1, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, 183, 184, 185, 112, 187, -1, -1, -1, -1, + -1, -1, 46, 47, 48, 112, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, 183, 184, + 185, -1, 187, -1, -1, -1, 70, -1, 46, 47, + 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 183, 184, 185, -1, 187, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 183, 184, 185, 112, 187, + -1, -1, -1, -1, -1, -1, 183, 184, 185, -1, + 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, + -1, -1, -1, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, + 184, 185, -1, 187, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 183, 184, 185, -1, 187, 109, 110, 111, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, @@ -2549,9 +2545,9 @@ static const short yycheck[] = { 0, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 45, -1, - -1, -1, -1, -1, 183, 184, 185, 186, -1, -1, + -1, -1, -1, -1, -1, -1, 185, 186, -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, + 67, 68, 69, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2562,35 +2558,62 @@ static const short yycheck[] = { 0, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 67, 68, 69, -1, -1, -1, -1, -1, 185, 186, + 45, -1, -1, -1, -1, -1, -1, -1, 185, 186, -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 109, 110, 111, -1, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 90, 91, 92, -1, -1, -1, -1, -1, 185, 186, - -1, -1, -1, 190, -1, -1, -1, -1, -1, 109, - 110, 111, -1, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, - -1, -1, -1, -1, -1, 185, 186, 109, 110, 111, - 190, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, -1, -1, -1, -1, -1, - -1, -1, -1, 185, 186, -1, -1, -1, 190 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 109, 110, 111, -1, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 45, -1, -1, -1, -1, -1, 183, 184, + 185, 186, -1, -1, -1, 190, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 109, 110, 111, -1, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 67, 68, 69, -1, -1, -1, + -1, -1, 185, 186, -1, -1, -1, 190, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 109, 110, 111, -1, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 90, 91, 92, -1, -1, -1, + -1, -1, 185, 186, -1, -1, -1, 190, -1, -1, + -1, -1, -1, 109, 110, 111, -1, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, -1, -1, -1, -1, -1, -1, -1, -1, 185, + 186, 109, 110, 111, 190, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, -1, + -1, -1, -1, -1, -1, -1, -1, 185, 186, -1, + -1, -1, 190 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ @@ -4596,211 +4619,218 @@ case 498: { yyval.expr = exprNode_makeError (); ; break;} case 499: +{ exprNode_checkIfPred (yyvsp[0].expr); ; + break;} +case 500: { /* don't: context_exitTrueClause ($1, $2); */ - yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); + yyval.expr = exprNode_if (yyvsp[-2].expr, yyvsp[0].expr); ; break;} -case 500: +case 501: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 501: +case 502: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 512: +case 513: { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 514: -{ yyval.expr = exprNode_makeError (); ; - break;} case 515: -{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_makeError (); ; break;} case 516: -{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; +{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; break;} case 517: -{ ; ; +{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; break;} case 518: { ; ; break;} case 519: -{ context_enterCaseClause (yyvsp[0].expr); ; +{ ; ; break;} case 520: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; +{ context_enterCaseClause (yyvsp[0].expr); ; break;} case 521: -{ context_enterCaseClause (yyvsp[0].expr); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; break;} case 522: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; +{ context_enterCaseClause (yyvsp[0].expr); ; break;} case 523: -{ context_enterCaseClause (exprNode_undefined); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; break;} case 524: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; +{ context_enterCaseClause (exprNode_undefined); ; break;} case 525: -{ context_enterCaseClause (exprNode_undefined); ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; break;} case 526: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; +{ context_enterCaseClause (exprNode_undefined); ; break;} case 527: -{ yyval.expr = yyvsp[-1].expr; ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; break;} case 528: -{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; +{ yyval.expr = yyvsp[-1].expr; ; break;} case 529: -{ yyval.expr = yyvsp[-1].expr; ; +{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; break;} case 530: -{ context_enterInnerContext (); ; +{ yyval.expr = yyvsp[-1].expr; ; break;} case 531: -{ context_exitInnerPlain (); ; +{ context_enterInnerContext (); ; break;} case 532: -{ context_enterStructInnerContext (); ; +{ context_exitInnerPlain (); ; break;} case 533: -{ context_exitStructInnerContext (); ; +{ context_enterStructInnerContext (); ; break;} case 534: -{ context_exitInnerSafe (); ; +{ context_exitStructInnerContext (); ; break;} case 535: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ context_exitInnerSafe (); ; break;} case 536: -{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 537: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; break;} case 538: -{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 539: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} case 540: -{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 541: -{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} case 542: +{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; + break;} +case 543: { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), lltok_getLoc (yyvsp[-1].tok))); ; break;} -case 543: -{ yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; - break;} case 544: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; break;} case 545: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 546: { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 547: -{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 549: -{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; +case 548: +{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; break;} case 550: -{ yyval.expr = yyvsp[0].expr; ; +{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 551: -{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = yyvsp[0].expr; ; break;} case 552: -{ yyval.expr = yyvsp[0].expr; ; +{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 553: -{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = yyvsp[0].expr; ; break;} case 554: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 555: -{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 556: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 557: -{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 558: -{ yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; +{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 559: -{ yyval.expr = yyvsp[-1].expr; exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ; +{ yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; break;} case 560: +{ + exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); + exprNode_checkIfPred (yyvsp[-1].expr); + yyval.expr = yyvsp[-1].expr; + ; + break;} +case 561: { context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr); yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 561: +case 562: { context_enterFalseClause (yyvsp[-2].expr); ; break;} -case 562: +case 563: { context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 563: +case 564: { context_enterSwitch (yyvsp[0].expr); ; break;} -case 564: +case 565: { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 565: +case 566: { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ; break;} -case 566: +case 567: { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ; break;} -case 567: +case 568: { context_enterIterClause (); ; break;} -case 568: +case 569: { setProcessingIterVars (yyvsp[-3].entry); ; break;} -case 569: +case 570: { yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].exprlist, yyvsp[-2].expr, yyvsp[-1].entry); ; break;} -case 570: +case 571: { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 571: +case 572: { nextIterParam (); ; break;} -case 572: +case 573: { yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ; break;} -case 573: +case 574: { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ; break;} -case 574: +case 575: { yyval.expr = exprNode_iterId (yyvsp[0].entry); ; break;} -case 575: +case 576: { uentry ue = coerceIterId (yyvsp[0].cname); if (uentry_isValid (ue)) @@ -4813,41 +4843,38 @@ case 575: } ; break;} -case 576: +case 577: { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ; break;} -case 578: +case 579: { yyval.expr = exprNode_combineLiterals (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 580: +case 581: { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 582: -{ yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; - break;} case 583: -{ yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; +{ yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; break;} case 584: -{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ; +{ yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; break;} case 585: -{ yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; +{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ; break;} case 586: -{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; +{ yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; break;} case 587: -{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; +{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} case 588: -{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; +{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} case 589: { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 591: -{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; +case 590: +{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 592: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; @@ -4871,33 +4898,33 @@ case 598: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 599: +{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; + break;} +case 600: { yyval.expr = yyvsp[0].expr; ; break;} -case 601: +case 602: { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; break;} -case 603: -{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; - break;} case 604: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 605: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 607: +case 606: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 608: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 610: +case 609: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 611: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 613: +case 612: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 614: @@ -4909,38 +4936,38 @@ case 615: case 616: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 618: +case 617: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 619: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 621: +case 620: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 623: +case 622: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 625: +case 624: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 627: +case 626: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 629: +case 628: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 631: -{ context_enterTrueClause (yyvsp[-1].expr); ; +case 630: +{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 632: -{ context_enterFalseClause (yyvsp[-4].expr); ; +{ context_enterTrueClause (yyvsp[-1].expr); ; break;} case 633: -{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; +{ context_enterFalseClause (yyvsp[-4].expr); ; break;} -case 635: -{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; +case 634: +{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} case 636: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; @@ -4973,71 +5000,71 @@ case 645: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 646: -{ yyval.entry = yyvsp[0].entry; ; +{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 647: -{ yyval.entry = uentry_undefined; ; +{ yyval.entry = yyvsp[0].entry; ; break;} case 648: -{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; +{ yyval.entry = uentry_undefined; ; break;} case 649: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; break;} case 650: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 651: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 652: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 653: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 654: -{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 655: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} case 656: -{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 657: -{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; break;} case 658: -{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; +{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; break;} case 659: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; break;} case 660: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; break;} case 661: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; break;} case 662: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; break;} case 663: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; break;} case 664: -{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; break;} case 665: +{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; + break;} +case 666: { yyval.expr = exprNode_return (yyvsp[-1].expr); ; break;} -case 667: +case 668: { ; ; break;} -case 670: -{ yyval.cname = uentry_getName (yyvsp[0].entry); ; - break;} case 671: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} @@ -5045,9 +5072,12 @@ case 672: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} case 673: +{ yyval.cname = uentry_getName (yyvsp[0].entry); ; + break;} +case 674: { yyval.cname = yyvsp[0].cname; ; break;} -case 675: +case 676: { yyval.ctyp = ctype_unknown; ; break;} } diff --git a/src/cgrammar.y b/src/cgrammar.y index 41fbca6..d2f428b 100644 --- a/src/cgrammar.y +++ b/src/cgrammar.y @@ -1502,9 +1502,9 @@ iterDefStmt | error { $$ = exprNode_makeError (); } iterSelectionStmt - : ifPred iterDefStmt + : ifPred { exprNode_checkIfPred ($1); } iterDefStmt { /* don't: context_exitTrueClause ($1, $2); */ - $$ = exprNode_if ($1, $2); + $$ = exprNode_if ($1, $3); } openScope @@ -1633,7 +1633,12 @@ expressionStmtErr ifPred : CIF TLPAREN expr TRPAREN - { $$ = $3; exprNode_produceGuards ($3); context_enterTrueClause ($3); } + { + exprNode_produceGuards ($3); context_enterTrueClause ($3); + exprNode_checkIfPred ($3); + $$ = $3; + } + /* ** not ANSI: | CIF TLPAREN compoundStmt TRPAREN ** { $$ = $3; context_enterTrueClause (); } @@ -1645,7 +1650,7 @@ selectionStmt context_exitTrueClause ($1, $2); $$ = exprNode_if ($1, $2); } - | ifPred stmt CELSE { context_enterFalseClause ($1); } stmt + | ifPred stmt CELSE { context_enterFalseClause ($1); } stmt { context_exitClause ($1, $2, $5); $$ = exprNode_ifelse ($1, $2, $5); diff --git a/src/context.c b/src/context.c index 23c66e1..7c1e480 100644 --- a/src/context.c +++ b/src/context.c @@ -1035,7 +1035,9 @@ context_setMode (cstring s) FLG_EXPORTLOCAL, FLG_USERELEASED, FLG_ALIASUNIQUE, FLG_MAYALIASUNIQUE, - FLG_MUSTFREE, FLG_MUSTDEFINE, FLG_GLOBSTATE, + FLG_MUSTFREEONLY, + FLG_MUSTFREEFRESH, + FLG_MUSTDEFINE, FLG_GLOBSTATE, FLG_COMPDESTROY, FLG_MUSTNOTALIAS, FLG_MEMIMPLICIT, FLG_BRANCHSTATE, @@ -1157,7 +1159,9 @@ context_setMode (cstring s) FLG_IMMEDIATETRANS, FLG_ONLYUNQGLOBALTRANS, FLG_USERELEASED, FLG_ALIASUNIQUE, FLG_MAYALIASUNIQUE, - FLG_MUSTFREE, FLG_MUSTDEFINE, FLG_GLOBSTATE, + FLG_MUSTFREEONLY, + FLG_MUSTFREEFRESH, + FLG_MUSTDEFINE, FLG_GLOBSTATE, FLG_COMPDESTROY, FLG_MUSTNOTALIAS, FLG_MEMIMPLICIT, FLG_BRANCHSTATE, @@ -1267,7 +1271,9 @@ context_setMode (cstring s) FLG_UNKNOWNINITTRANS, FLG_USERELEASED, FLG_ALIASUNIQUE, FLG_MAYALIASUNIQUE, - FLG_MUSTFREE, FLG_MUSTDEFINE, FLG_GLOBSTATE, + FLG_MUSTFREEONLY, + FLG_MUSTFREEFRESH, + FLG_MUSTDEFINE, FLG_GLOBSTATE, FLG_COMPDESTROY, FLG_MUSTNOTALIAS, FLG_MEMIMPLICIT, FLG_BRANCHSTATE, @@ -3984,6 +3990,10 @@ context_setFlagAux (flagcode f, bool b, bool inFile, DOSET (FLG_NULLPASS, b); DOSET (FLG_NULLRET, b); break; + case FLG_MUSTFREE: + DOSET (FLG_MUSTFREEONLY, b); + DOSET (FLG_MUSTFREEFRESH, b); + break; case FLG_MEMCHECKS: DOSET (FLG_NULLSTATE, b); DOSET (FLG_NULLDEREF, b); @@ -3997,7 +4007,8 @@ context_setFlagAux (flagcode f, bool b, bool inFile, DOSET (FLG_USERELEASED, b); DOSET (FLG_ALIASUNIQUE, b); DOSET (FLG_MAYALIASUNIQUE, b); - DOSET (FLG_MUSTFREE, b); + DOSET (FLG_MUSTFREEONLY, b); + DOSET (FLG_MUSTFREEFRESH, b); DOSET (FLG_MUSTDEFINE, b); DOSET (FLG_GLOBSTATE, b); DOSET (FLG_COMPDESTROY, b); diff --git a/src/exprChecks.c b/src/exprChecks.c index 0072539..ce36b71 100644 --- a/src/exprChecks.c +++ b/src/exprChecks.c @@ -822,7 +822,7 @@ void exprNode_checkMacroBody (/*@only@*/ exprNode e) case XPR_STRINGLITERAL: case XPR_NUMLIT: case XPR_FACCESS: case XPR_OFFSETOF: - checkReturnTransfer (e, hdr); + transferChecks_return (e, hdr); break; /* these expressions don't */ @@ -1551,7 +1551,7 @@ static void checkSafeReturnExpr (/*@notnull@*/ exprNode e) sRef_unparseFull (e->sref), uentry_unparse (rval))); - checkReturnTransfer (e, rval); + transferChecks_return (e, rval); DPRINTF (("After return: %s / %s / %s", exprNode_unparse (e), diff --git a/src/exprNode.c b/src/exprNode.c index 29d0e56..60ed442 100644 --- a/src/exprNode.c +++ b/src/exprNode.c @@ -6773,6 +6773,11 @@ bool exprNode_isEmptyStatement (exprNode e) && (lltok_isSemi (exprData_getTok (e->edata)))); } +void exprNode_checkIfPred (exprNode pred) +{ + exprNode_checkPred (cstring_makeLiteralTemp ("if"), pred); +} + exprNode exprNode_if (/*@only@*/ exprNode pred, /*@only@*/ exprNode tclause) { exprNode ret; @@ -6822,8 +6827,8 @@ exprNode exprNode_if (/*@only@*/ exprNode pred, /*@only@*/ exprNode tclause) message ("Predicate always exits: %s", exprNode_unparse (pred)), exprNode_loc (pred)); } - - exprNode_checkPred (cstring_makeLiteralTemp ("if"), pred); + + /*! exprNode_checkPred (cstring_makeLiteralTemp ("if"), pred); */ /*@i523@*/ exprNode_checkUse (pred, pred->sref, pred->loc); if (!exprNode_isError (tclause)) @@ -6952,7 +6957,7 @@ exprNode exprNode_ifelse (/*@only@*/ exprNode pred, exprNode_loc (pred)); } - exprNode_checkPred (cstring_makeLiteralTemp ("if"), pred); + /*@i3423 exprNode_checkPred (cstring_makeLiteralTemp ("if"), pred);*/ exprNode_checkUse (ret, pred->sref, pred->loc); exprNode_mergeCondUSs (ret, tclause, eclause); @@ -10262,7 +10267,7 @@ checkOneArg (uentry ucurrent, /*@notnull@*/ exprNode current, } } - checkPassTransfer (current, ucurrent, isSpec, fcn, argno, totargs); + transferChecks_passParam (current, ucurrent, isSpec, fcn, argno, totargs); exprNode_mergeUSs (fcn, current); } } @@ -10856,11 +10861,11 @@ doAssign (/*@notnull@*/ exprNode e1, /*@notnull@*/ exprNode e2, bool isInit) { DPRINTF (("Check init: %s / %s", exprNode_unparse (e1), exprNode_unparse (e2))); - checkInitTransfer (e1, e2); + transferChecks_initialization (e1, e2); } else { - checkAssignTransfer (e1, e2); + transferChecks_assign (e1, e2); } } else diff --git a/src/flags.def b/src/flags.def index 51bc426..3f453e6 100644 --- a/src/flags.def +++ b/src/flags.def @@ -1939,14 +1939,30 @@ static flaglist flags = }, { FK_MEMORY, FK_LEAK, modeFlag, - "mustfree", - FLG_MUSTFREE, + "mustfreefresh", + FLG_MUSTFREEFRESH, + "freshly allocated storage not released before return or scope exit", + "A memory leak has been detected. Storage allocated locally " + "is not released before the last reference to it is lost.", + 0, 0 + }, + { + FK_MEMORY, FK_LEAK, modeFlag, + "mustfreeonly", + FLG_MUSTFREEONLY, "only storage not released before return or scope exit", - "A memory leak has been detected. Newly-allocated or " - "only-qualified storage is not released before the last " + "A memory leak has been detected. Only-qualified storage is not released before the last " "reference to it is lost.", 0, 0 }, + { + FK_MEMORY, FK_LEAK, specialFlag, + "mustfree", + FLG_MUSTFREE, + "fresh or only storage not released before return or scope exit (sets mustfreefresh and mustfreeonly)", + "A memory leak has been detected.", + 0, 0 + }, { FK_MEMORY, FK_NONE, modeFlag, "branchstate", diff --git a/src/llerror.c b/src/llerror.c index 9123004..a223d15 100644 --- a/src/llerror.c +++ b/src/llerror.c @@ -252,13 +252,13 @@ llsuppresshint2 (char c, flagcode f1, flagcode f2) { if (cstring_isDefined (desc)) { - llgenhint (message ("%s (Setting %h%s will suppress message)", desc, + llgenhint (message ("%s (Use %h%s to inhibit warning)", desc, c, flagcode_unparse (f1))); } else { - llgenhint (message ("(Setting %h%s will suppress message)", + llgenhint (message ("(Use %h%s to inhibit warning)", c, flagcode_unparse (f1))); } } @@ -266,7 +266,7 @@ llsuppresshint2 (char c, flagcode f1, flagcode f2) { if (cstring_isDefined (desc)) { - llgenhint (message ("%s (Setting either %h%s or %h%s will suppress message)", desc, + llgenhint (message ("%s (Use either %h%s or %h%s to inhibit warning)", desc, c, flagcode_unparse (f1), c, @@ -274,7 +274,7 @@ llsuppresshint2 (char c, flagcode f1, flagcode f2) } else { - llgenhint (message ("(Setting either %h%s or %h%s will suppress message)", c, + llgenhint (message ("(Use either %h%s or %h%s to inhibit warning)", c, flagcode_unparse (f1), c, flagcode_unparse (f2))); } @@ -301,12 +301,12 @@ llsuppresshint (char c, flagcode f) if (cstring_isDefined (desc)) { - llgenhint (message ("%s (%h%s will suppress message)", desc, c, + llgenhint (message ("%s (Use %h%s to inhibit warning)", desc, c, flagcode_unparse (f))); } else { - llgenhint (message ("(%h%s will suppress message)", c, + llgenhint (message ("(Use %h%s to inhibit warning)", c, flagcode_unparse (f))); } } diff --git a/src/llmain.c b/src/llmain.c index 095dd25..83c026f 100644 --- a/src/llmain.c +++ b/src/llmain.c @@ -1537,7 +1537,7 @@ int main (int argc, char *argv[]) } else { - specErrors = message ("%d spec warning%& found\n ", + specErrors = message ("%d spec warning%&\n ", nspecErrors); expsuccess = FALSE; } @@ -1584,7 +1584,7 @@ int main (int argc, char *argv[]) if (!isQuiet) { llmsg (message ("Finished checking --- " - "%s%d code warning%& found", + "%s%d code warning%&", specErrors, context_numErrors ())); } diff --git a/src/sRef.c b/src/sRef.c index 8f1ec11..83f3705 100644 --- a/src/sRef.c +++ b/src/sRef.c @@ -5173,7 +5173,29 @@ void sRef_setPartialDefinedComplete (sRef s, fileloc loc) void sRef_setDefinedComplete (sRef s, fileloc loc) { + sRef_innerAliasSetComplete (sRef_setDefined, s, loc); +} + +void sRef_setDefinedCompleteDirect (sRef s, fileloc loc) +{ + sRefSet aliases; + + aliases = usymtab_allAliases (s); DPRINTF (("Set defined complete: %s", sRef_unparseFull (s))); + DPRINTF (("All aliases: %s", sRefSet_unparseFull (aliases))); + + sRef_setDefined (s, loc); + + sRefSet_realElements (aliases, current) + { + if (sRef_isValid (current)) + { + current = sRef_updateSref (current); + sRef_setDefined (current, loc); + } + } end_sRefSet_realElements; + + sRefSet_free (aliases); sRef_innerAliasSetComplete (sRef_setDefined, s, loc); } @@ -5408,8 +5430,8 @@ void sRef_setNullState (sRef s, nstate n, fileloc loc) } } -void sRef_setNullTerminatedStateInnerComplete (sRef s, struct s_bbufinfo b, /*@unused@*/ fileloc loc) { - +void sRef_setNullTerminatedStateInnerComplete (sRef s, struct s_bbufinfo b, /*@unused@*/ fileloc loc) +{ switch (b.bufstate) { case BB_NULLTERMINATED: sRef_setNullTerminatedState (s); @@ -8463,7 +8485,6 @@ sRef_innerAliasSetComplete (void (predf) (sRef, fileloc), sRef s, fileloc loc) inner = s->info->field->rec; aliases = usymtab_allAliases (inner); ct = sRef_getType (inner); - sRefSet_realElements (aliases, current) { @@ -8525,8 +8546,7 @@ sRef_innerAliasSetCompleteParam (void (predf) (sRef, sRef), sRef s, sRef t) inner = s->info->ref; aliases = usymtab_allAliases (inner); ct = sRef_getType (inner); - - + sRefSet_realElements (aliases, current) { if (sRef_isValid (current)) diff --git a/src/stateClause.c b/src/stateClause.c index d5c264e..a362a64 100644 --- a/src/stateClause.c +++ b/src/stateClause.c @@ -412,7 +412,7 @@ flagcode stateClause_preErrorCode (stateClause cl) case SP_ALLOCATES: /*@fallthrough@*/ case SP_DEFINES: case SP_SETS: - return FLG_MUSTFREE; + return FLG_MUSTFREEONLY; case SP_RELEASES: return FLG_USEDEF; case SP_GLOBAL: @@ -512,7 +512,7 @@ flagcode stateClause_postErrorCode (stateClause cl) case SP_SETS: return FLG_COMPDEF; case SP_RELEASES: - return FLG_MUSTFREE; + return FLG_MUSTFREEONLY; case SP_GLOBAL: BADBRANCH; case SP_QUAL: diff --git a/src/transferChecks.c b/src/transferChecks.c index 9e11244..89ebe75 100644 --- a/src/transferChecks.c +++ b/src/transferChecks.c @@ -29,6 +29,20 @@ # include "basic.h" # include "transferChecks.h" +/* transfer types: */ +typedef enum +{ + TT_FCNRETURN, + TT_DOASSIGN, + TT_FIELDASSIGN, + TT_FCNPASS, + TT_GLOBPASS, + TT_GLOBRETURN, + TT_PARAMRETURN, + TT_LEAVETRANS, + TT_GLOBINIT +} transferKind; + static void checkStructTransfer (exprNode p_lhs, sRef p_slhs, exprNode p_rhs, sRef p_srhs, fileloc p_loc, transferKind p_tt); static void checkMetaStateConsistent (/*@exposed@*/ sRef p_fref, sRef p_tref, @@ -880,10 +894,8 @@ checkCompletelyDefined (exprNode fexp, /*@exposed@*/ sRef fref, sRef ofref, { sRef rb = sRef_getRootBase (fref); sRef_showStateInfo (fref); - - DPRINTF (("fref: %s", sRef_unparseFull (fref))); - DPRINTF (("rb: %s", sRef_unparseFull (rb))); - sRef_setDefinedComplete (rb, loc); + + sRef_setDefinedCompleteDirect (rb, loc); } } } @@ -1278,13 +1290,14 @@ static bool fileloc p_loc, int p_depth, dscCode p_desc, bool p_hideErrors); -bool checkGlobalDestroyed (sRef fref, fileloc loc) +bool transferChecks_globalDestroyed (sRef fref, fileloc loc) { + DPRINTF (("Global destroyed: %s", sRef_unparseFull (fref))); return (checkCompletelyDestroyed (exprNode_undefined, fref, TRUE, loc, 0, DSC_GLOB, FALSE)); } -void checkLocalDestroyed (sRef fref, fileloc loc) +void transferChecks_localDestroyed (sRef fref, fileloc loc) { if (sRef_isObserver (fref) || sRef_isExposed (fref) || sRef_isPartial (fref)) @@ -1298,7 +1311,7 @@ void checkLocalDestroyed (sRef fref, fileloc loc) } } -void checkStructDestroyed (sRef fref, fileloc loc) +void transferChecks_structDestroyed (sRef fref, fileloc loc) { DPRINTF (("Check struct destroyed: %s", sRef_unparse (fref))); @@ -1377,23 +1390,38 @@ static bool } } - if (sRef_isPdefined (fref) && !context_getFlag (FLG_STRICTDESTROY)) + ct = ctype_realType (sRef_getType (fref)); + + if (sRef_isPdefined (fref) + && ctype_isAP (ct) + && !context_getFlag (FLG_STRICTDESTROY)) { + /* + ** Don't report errors for array elements (unless strictdestroy) + ** when at least one appears to have been destroyed. + */ + DPRINTF (("Partial: %s", sRef_unparseFull (fref))); - hideErrors = TRUE; /* Don't report any more errors, but still change ownership. */ + hideErrors = TRUE; + /* Don't report any more errors, but still change ownership. */ } - + if (usymtab_isDefinitelyNull (fref)) { DPRINTF (("Probably null!")); return TRUE; } - if (!context_getFlag (FLG_COMPDESTROY)) return TRUE; - if (!context_getFlag (FLG_MUSTFREE)) return TRUE; + /* + ** evans 2002-01-02: removed this + ** if (!context_flagOn (FLG_COMPDESTROY, loc)) + ** { + ** return TRUE; + ** } + ** + ** if (!context_getFlag (FLG_MUSTFREEONLY)) return TRUE; + */ - ct = ctype_realType (sRef_getType (fref)); - DPRINTF (("Here: %s", ctype_unparse (ct))); if (!topLevel) @@ -1601,7 +1629,7 @@ static bool } void -checkReturnTransfer (exprNode fexp, uentry rval) +transferChecks_return (exprNode fexp, uentry rval) { sRef uref = uentry_getSref (rval); sRef rref = sRef_makeNew (sRef_getType (uref), uref, cstring_undefined); @@ -1827,8 +1855,8 @@ static void */ void -checkPassTransfer (exprNode fexp, uentry arg, bool isSpec, - /*@dependent@*/ exprNode fcn, int argno, int totargs) +transferChecks_passParam (exprNode fexp, uentry arg, bool isSpec, + /*@dependent@*/ exprNode fcn, int argno, int totargs) { sRef tref = uentry_getSref (arg); sRef fref = exprNode_getSref (fexp); @@ -2134,13 +2162,14 @@ checkPassTransfer (exprNode fexp, uentry arg, bool isSpec, { voptgenerror - (FLG_MUSTFREE, + (FLG_MUSTFREEFRESH, message ("New fresh storage %q(type %s) passed as %s (not released): %s", sRef_unparseOpt (fref), ctype_unparse (sRef_getType (fref)), alkind_unparse (sRef_getAliasKind (tref)), exprNode_unparse (fexp)), exprNode_loc (fexp)); + DPRINTF (("Fresh: %s", sRef_unparseFull (fref))); } else @@ -2152,7 +2181,7 @@ checkPassTransfer (exprNode fexp, uentry arg, bool isSpec, if (!alkind_isError (ak)) { voptgenerror - (FLG_MUSTFREE, + (FLG_MUSTFREEFRESH, message ("New reference %q(type %s) passed as %s (not released): %s", sRef_unparseOpt (fref), ctype_unparse (sRef_getType (fref)), @@ -2229,19 +2258,19 @@ checkPassTransfer (exprNode fexp, uentry arg, bool isSpec, } void -checkGlobReturn (uentry glob) +transferChecks_globalReturn (uentry glob) { sRef_protectDerivs (); checkGlobTrans (glob, TT_GLOBRETURN); sRef_clearProtectDerivs (); } -void checkParamReturn (uentry actual) +void transferChecks_paramReturn (uentry actual) { checkLeaveTrans (actual, TT_PARAMRETURN); } -void checkLoseRef (uentry actual) +void transferChecks_loseReference (uentry actual) { checkLeaveTrans (actual, TT_LEAVETRANS); } @@ -2281,8 +2310,11 @@ static void checkGlobTrans (uentry glob, transferKind type) { sRef eref = uentry_getOrigSref (glob); - - (void) checkCompletelyDefined (exprNode_undefined, uentry_getSref (glob), uentry_getSref (glob), + + DPRINTF (("Completely defined: %s", uentry_unparseFull (glob))); + + (void) checkCompletelyDefined (exprNode_undefined, uentry_getSref (glob), + uentry_getSref (glob), exprNode_undefined, eref, TRUE, FALSE, FALSE, g_currentloc, type, 0, TRUE); @@ -2370,7 +2402,7 @@ static void checkStructTransfer (exprNode lhs, sRef slhs, exprNode rhs, sRef srh } void -checkInitTransfer (exprNode lhs, exprNode rhs) +transferChecks_initialization (exprNode lhs, exprNode rhs) { sRef slhs = exprNode_getSref (lhs); @@ -2383,12 +2415,12 @@ checkInitTransfer (exprNode lhs, exprNode rhs) } else { - checkAssignTransfer (lhs, rhs); + transferChecks_assign (lhs, rhs); } } void -checkAssignTransfer (exprNode lhs, exprNode rhs) +transferChecks_assign (exprNode lhs, exprNode rhs) { sRef slhs = exprNode_getSref (lhs); sRef srhs = exprNode_getSref (rhs); @@ -2578,83 +2610,82 @@ checkTransferAssignAux (sRef fref, exprNode fexp, /*@unused@*/ bool ffix, && !(sRef_same (fref, tref)) /* okay to assign to self (returned params) */ && !(usymtab_isDefinitelyNull (tref))) { - if (context_getFlag (FLG_MUSTFREE)) + if (transferChecks_canLoseReference (tref, loc)) { - if (canLoseReference (tref, loc)) + ; /* no error */ + } + else + { + flagcode flg = sRef_isFresh (tref) ? FLG_MUSTFREEFRESH : FLG_MUSTFREEONLY; + + if (sRef_hasLastReference (tref)) { - ; /* no error */ + if (optgenerror + (flg, + message ("Last reference %q to %s storage %q(type %s) not released " + "before assignment: %q", + sRef_unparse (tref), + alkind_unparse (tkind), + sRef_unparseOpt (sRef_getAliasInfoRef (tref)), + ctype_unparse (sRef_getType (tref)), + generateText (fexp, texp, tref, transferType)), + loc)) + { + sRef_showRefLost (tref); + } } else { - if (sRef_hasLastReference (tref)) + if (context_inGlobalScope ()) { - if (optgenerror - (FLG_MUSTFREE, - message ("Last reference %q to %s storage %q(type %s) not released " - "before assignment: %q", - sRef_unparse (tref), - alkind_unparse (tkind), - sRef_unparseOpt (sRef_getAliasInfoRef (tref)), - ctype_unparse (sRef_getType (tref)), - generateText (fexp, texp, tref, transferType)), - loc)) - { - sRef_showRefLost (tref); - } + /* no errors for static initializations */ } - else + else { - if (context_inGlobalScope ()) - { - /* no errors for static initializations */ - } - else + /* + ** don't report this error for a[i], since it could + ** be a new element. + */ + + if (alkind_isNewRef (tkind)) { - /* - ** don't report this error for a[i], since it could - ** be a new element. - */ - - if (alkind_isNewRef (tkind)) - { - if (optgenerror - (FLG_MUSTFREE, - message - ("%q %q(type %s) not released before assignment: %q", - cstring_makeLiteral - (alkind_isKillRef (sRef_getOrigAliasKind (tref)) - ? "Kill reference parameter" : "New reference"), - sRef_unparseOpt (tref), - ctype_unparse (sRef_getType (tref)), - generateText (fexp, texp, tref, transferType)), - loc)) - { - sRef_showAliasInfo (tref); - sRef_setAliasKind (tref, AK_ERROR, loc); - } - } - else if - (!(sRef_isUnknownArrayFetch (tref) - && !context_getFlag (FLG_STRICTDESTROY)) - && !sRef_isUnionField (tref) - && !sRef_isRelDef (tref) - && optgenerror - (FLG_MUSTFREE, - message - ("%s storage %q(type %s) not released before assignment: %q", - alkind_capName (tkind), - sRef_unparseOpt (tref), - ctype_unparse (sRef_getType (tref)), - generateText (fexp, texp, tref, transferType)), - loc)) - { - sRef_showAliasInfo (tref); - } - else + if (optgenerror + (flg, + message + ("%q %q(type %s) not released before assignment: %q", + cstring_makeLiteral + (alkind_isKillRef (sRef_getOrigAliasKind (tref)) + ? "Kill reference parameter" : "New reference"), + sRef_unparseOpt (tref), + ctype_unparse (sRef_getType (tref)), + generateText (fexp, texp, tref, transferType)), + loc)) { - ; + sRef_showAliasInfo (tref); + sRef_setAliasKind (tref, AK_ERROR, loc); } } + else if + (!(sRef_isUnknownArrayFetch (tref) + && !context_getFlag (FLG_STRICTDESTROY)) + && !sRef_isUnionField (tref) + && !sRef_isRelDef (tref) + && optgenerror + (flg, + message + ("%s storage %q(type %s) not released before assignment: %q", + alkind_capName (tkind), + sRef_unparseOpt (tref), + ctype_unparse (sRef_getType (tref)), + generateText (fexp, texp, tref, transferType)), + loc)) + { + sRef_showAliasInfo (tref); + } + else + { + ; + } } } } @@ -3861,7 +3892,7 @@ checkTransferAux (exprNode fexp, /*@exposed@*/ sRef fref, bool ffix, && ctype_isMutable (exprNode_getType (fexp)) && (!iseitherassign || sRef_isReference (tref))) { - if (canLoseReference (fref, loc)) + if (transferChecks_canLoseReference (fref, loc)) { ; } @@ -4408,7 +4439,7 @@ static /*@exposed@*/ sRef return sRef_undefined; } -bool canLoseReference (/*@dependent@*/ sRef sr, fileloc loc) +bool transferChecks_canLoseReference (/*@dependent@*/ sRef sr, fileloc loc) { bool gotone = FALSE; sRefSet ab = usymtab_aliasedBy (sr); /* yes, really mean aliasedBy */ diff --git a/src/usymtab.c b/src/usymtab.c index 93a53c7..43ab21e 100644 --- a/src/usymtab.c +++ b/src/usymtab.c @@ -3696,6 +3696,8 @@ checkGlobalReturn (uentry glob, sRef orig) { ctype ct = ctype_realType (uentry_getType (glob)); + DPRINTF (("Check global destroyed: %s", uentry_unparseFull (glob))); + if (ctype_isVisiblySharable (ct)) { if (optgenerror @@ -3712,7 +3714,7 @@ checkGlobalReturn (uentry glob, sRef orig) else { sRef_protectDerivs (); - (void) checkGlobalDestroyed (sr, g_currentloc); + (void) transferChecks_globalDestroyed (sr, g_currentloc); sRef_clearProtectDerivs (); } } @@ -3771,7 +3773,7 @@ checkGlobalReturn (uentry glob, sRef orig) } else { - checkGlobReturn (glob); + transferChecks_globalReturn (glob); } } } @@ -3785,7 +3787,7 @@ checkGlobalReturn (uentry glob, sRef orig) void usymtab_checkFinalScope (bool isReturn) /*@globals utab@*/ { - bool mustFree = context_getFlag (FLG_MUSTFREE); + bool mustFree = context_getFlag (FLG_MUSTFREEONLY) || context_getFlag (FLG_MUSTFREEFRESH); /*@i423 remove this mustFree */ bool mustDefine = context_getFlag (FLG_MUSTDEFINE); /* bool mustNotAlias = context_getFlag (FLG_MUSTNOTALIAS); */ sRefSet checked = sRefSet_new (); @@ -3925,7 +3927,7 @@ void usymtab_checkFinalScope (bool isReturn) if (sRefSet_isEmpty (als)) { - checkLocalDestroyed (sr, g_currentloc); + transferChecks_localDestroyed (sr, g_currentloc); } else { @@ -3954,7 +3956,7 @@ void usymtab_checkFinalScope (bool isReturn) if (!isReturn) { - if (canLoseReference (sr, g_currentloc)) + if (transferChecks_canLoseReference (sr, g_currentloc)) { DPRINTF (("Can lose!")); hasError = FALSE; @@ -3968,7 +3970,7 @@ void usymtab_checkFinalScope (bool isReturn) sRef ar = sRef_getAliasInfoRef (sr); if (optgenerror - (FLG_MUSTFREE, + (sRef_isFresh (ar) ? FLG_MUSTFREEFRESH : FLG_MUSTFREEONLY, message ("Last reference %q to %s storage %qnot %q before %q", sRef_unparse (sr), @@ -3986,7 +3988,7 @@ void usymtab_checkFinalScope (bool isReturn) else if (sRef_isNewRef (sr)) { if (optgenerror - (FLG_MUSTFREE, + (sRef_isFresh (sr) ? FLG_MUSTFREEFRESH : FLG_MUSTFREEONLY, message ("%q %q not released before %q", cstring_makeLiteral @@ -4004,14 +4006,14 @@ void usymtab_checkFinalScope (bool isReturn) { if (ctype_isRealSU (sRef_getType (sr))) { - checkStructDestroyed (sr, g_currentloc); + transferChecks_structDestroyed (sr, g_currentloc); } else { DPRINTF (("Here we are: %s", sRef_unparseFull (sr))); if (optgenerror - (FLG_MUSTFREE, + (sRef_isFresh (sr) ? FLG_MUSTFREEFRESH : FLG_MUSTFREEONLY, message ("%s storage %q not %q before %q", alkind_capName (sRef_getAliasKind (sr)), @@ -4048,6 +4050,8 @@ void usymtab_checkFinalScope (bool isReturn) cstring_makeLiteral (isReturn ? "return" : "scope exit")), g_currentloc); + + DPRINTF (("sr: %s", sRef_unparseFull (sr))); } } @@ -4068,7 +4072,7 @@ void usymtab_checkFinalScope (bool isReturn) { /* and no local ref */ DPRINTF (("Check lose ref: %s", uentry_unparseFull (ce))); - checkLoseRef (ce); + transferChecks_loseReference (ce); } else { @@ -4258,7 +4262,7 @@ void usymtab_checkFinalScope (bool isReturn) { uentry param = usymtab_lookupQuiet (utab, uentry_rawName (arg)); DPRINTF (("Check param return: %s", uentry_unparseFull (param))); - checkParamReturn (param); + transferChecks_paramReturn (param); } } } end_uentryList_elements; diff --git a/test/Makefile.am b/test/Makefile.am index c43e8e5..386f042 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -4,7 +4,9 @@ AUTOMAKE_OPTIONS = 1.5 foreign ## Use this to configure diff output -DIFFFLAGS = -u +DIFFFLAGS = + +# -u show context ## Set up the splint commands diff --git a/test/Makefile.in b/test/Makefile.in index e96558a..bf55c75 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -83,8 +83,10 @@ install_sh = @install_sh@ AUTOMAKE_OPTIONS = 1.5 foreign -DIFFFLAGS = -u +DIFFFLAGS = + +# -u show context SPLINT = $(top_builddir)/src/splint$(EXEEXT) ### This is horrible! Can't we make top_builddir absolute? diff --git a/test/controldepth.expect b/test/controldepth.expect index 5378daa..a100ec4 100644 --- a/test/controldepth.expect +++ b/test/controldepth.expect @@ -1,16 +1,16 @@ controldepth.c: (in function f) controldepth.c:8:15: Maximum control nesting depth (2) exceeded - Maximum number of control levels exceeded. (-controlnestdepth will suppress - message) + Maximum number of control levels exceeded. (Use -controlnestdepth to inhibit + warning) controldepth.c:15:17: Maximum control nesting depth (2) exceeded Finished checking --- 2 code warnings, as expected controldepth.c: (in function f) controldepth.c:6:15: Maximum control nesting depth (1) exceeded - Maximum number of control levels exceeded. (-controlnestdepth will suppress - message) + Maximum number of control levels exceeded. (Use -controlnestdepth to inhibit + warning) controldepth.c:11:13: Maximum control nesting depth (1) exceeded Finished checking --- 2 code warnings, as expected diff --git a/test/czechnames.expect b/test/czechnames.expect index aa9688b..60f74ba 100644 --- a/test/czechnames.expect +++ b/test/czechnames.expect @@ -3,19 +3,19 @@ Finished checking --- no warnings czechnames.c:5:5: Variable michelob_light name violates Czech naming convention. Czech prefix michelob is not the name of a type. - Variable name is not consistent with Czech naming convention. (Setting either - -czechvars or -namechecks will suppress message) + Variable name is not consistent with Czech naming convention. (Use either + -czechvars or -namechecks to inhibit warning) czechnames.c:26:5: Function budweiser name is not consistent with Czech naming convention. Accessible types: pivo Function or iterator name is not consistent with Czech naming convention. - (Setting either -czechfcns or -namechecks will suppress message) + (Use either -czechfcns or -namechecks to inhibit warning) Finished checking --- 2 code warnings, as expected czechnames.c:26:5: Function budweiser name is not consistent with Czech naming convention. Accessible types: pivo Function or iterator name is not consistent with Czech naming convention. - (Setting either -czechfcns or -namechecks will suppress message) + (Use either -czechfcns or -namechecks to inhibit warning) Finished checking --- 1 code warning, as expected @@ -24,8 +24,8 @@ czechnames.c:4:5: Variable pivo_pyet name violates Czech naming convention. Use +accessczech to allow access to type in functions named _. czechnames.c:5:5: Variable michelob_light name violates Czech naming convention. Czech prefix michelob is not the name of a type. - Variable name is not consistent with Czech naming convention. (Setting either - -czechvars or -namechecks will suppress message) + Variable name is not consistent with Czech naming convention. (Use either + -czechvars or -namechecks to inhibit warning) czechnames.c:8:17: Constant pivo_devenast name violates Czech naming convention. Czech prefix pivo names an abstract type that is not accessible. @@ -36,7 +36,7 @@ czechnames.c:11:6: Function pivo_yedno name violates Czech naming convention. czechnames.c: (in function pivo_yedno) czechnames.c:15:11: Left operand of == is abstract type (pivo): p == 1 An abstraction barrier is broken. If necessary, use /*@access @*/ to - allow access to an abstract type. (-abstract will suppress message) + allow access to an abstract type. (Use -abstract to inhibit warning) czechnames.c:26:5: Function budweiser name is not consistent with Czech naming convention. Accessible types: pivo diff --git a/test/czechoslovaknames.expect b/test/czechoslovaknames.expect index 8ba3a37..b73884b 100644 --- a/test/czechoslovaknames.expect +++ b/test/czechoslovaknames.expect @@ -1,25 +1,25 @@ czechnames.c:26:5: Function budweiser name is not consistent with Czechoslovak naming convention. - Function name is not consistent with Czechoslovak naming convention. (Setting - either -czechoslovakfcns or -namechecks will suppress message) + Function name is not consistent with Czechoslovak naming convention. (Use + either -czechoslovakfcns or -namechecks to inhibit warning) Finished checking --- 1 code warning, as expected slovaknames.c:32:5: Function budweiser name is not consistent with Czechoslovak naming convention. - Function name is not consistent with Czechoslovak naming convention. (Setting - either -czechoslovakfcns or -namechecks will suppress message) + Function name is not consistent with Czechoslovak naming convention. (Use + either -czechoslovakfcns or -namechecks to inhibit warning) Finished checking --- 1 code warning, as expected slovaknames.c:5:5: Variable michelobLight name violates Slovak naming convention. Slovak prefix michelob is not the name of a type. - Variable name is not consistent with Slovak naming convention. (Setting - either -slovakvars or -namechecks will suppress message) + Variable name is not consistent with Slovak naming convention. (Use either + -slovakvars or -namechecks to inhibit warning) slovaknames.c:32:5: Function budweiser name is not consistent with Czechoslovak naming convention. - Function name is not consistent with Czechoslovak naming convention. (Setting - either -czechoslovakfcns or -namechecks will suppress message) + Function name is not consistent with Czechoslovak naming convention. (Use + either -czechoslovakfcns or -namechecks to inhibit warning) Finished checking --- 2 code warnings, as expected diff --git a/test/db1.expect b/test/db1.expect index 19a2afe..5750c21 100644 --- a/test/db1.expect +++ b/test/db1.expect @@ -624,7 +624,7 @@ macroparens 4 0 usereleased 1 0 compdef 3 0 compdestroy 1 0 -mustfree 3 0 +mustfreeonly 3 0 branchstate 2 1 onlytrans 1 0 freshtrans 3 0 diff --git a/test/help.expect b/test/help.expect index bb894fa..fdbbdab 100644 --- a/test/help.expect +++ b/test/help.expect @@ -49,8 +49,8 @@ Topics: Command Line: Unrecognized option: asdf - A flag is not recognized or used in an incorrect way (-badflag will suppress - message) + A flag is not recognized or used in an incorrect way (Use -badflag to inhibit + warning) Finished checking --- no code processed @@ -315,6 +315,8 @@ Finished checking --- no code processed multithreaded mustdefine mustfree + mustfreefresh + mustfreeonly mustmod mustnotalias mutrep @@ -793,7 +795,11 @@ compdestroy --- all only references derivable from void pointer out only parameter are released strictdestroy --- report complete destruction errors for array elements that may have been released -mustfree --- only storage not released before return or scope exit +mustfreefresh --- freshly allocated storage not released before return or scope +exit +mustfreeonly --- only storage not released before return or scope exit +mustfree --- fresh or only storage not released before return or scope exit +(sets mustfreefresh and mustfreeonly) branchstate --- storage has inconsistent states of alternate paths through a branch strictbranchstate --- storage through array fetch has inconsistent states of diff --git a/test/impabstract.expect b/test/impabstract.expect index 347a727..37738ea 100644 --- a/test/impabstract.expect +++ b/test/impabstract.expect @@ -4,7 +4,7 @@ Finished checking --- no warnings impabstract.c: (in function f) impabstract.c:11:7: Left operand of < is abstract type (mint): m < 2 An abstraction barrier is broken. If necessary, use /*@access @*/ to - allow access to an abstract type. (-abstract will suppress message) + allow access to an abstract type. (Use -abstract to inhibit warning) impabstract.c:13:14: Return value type mint does not match declared type int: m Underlying types match, but mint is an abstract type that is not accessible here. @@ -17,15 +17,15 @@ impabstract.c:2:28: Mutable abstract type cint declared without pointer order for objects to be shared a indirection is necessary in the representation. A mutable type may be represented by a pointer or an abstract mutable type. Handles into static data are fine, too, but will generate this - error message unless it is suppressed. (-mutrep will suppress message) + error message unless it is suppressed. (Use -mutrep to inhibit warning) impabstract.c:2:28: Datatype cint inconsistently declared as concrete type - A function, variable or constant is redefined with a different type. - (-incondefs will suppress message) + A function, variable or constant is redefined with a different type. (Use + -incondefs to inhibit warning) impabstract.lcl:2:1: Specification of cint impabstract.c: (in function f) impabstract.c:6:7: Left operand of > is abstract type (cint): c > 3 An abstraction barrier is broken. If necessary, use /*@access @*/ to - allow access to an abstract type. (-abstract will suppress message) + allow access to an abstract type. (Use -abstract to inhibit warning) impabstract.c:8:14: Return value type cint does not match declared type int: c Underlying types match, but cint is an abstract type that is not accessible here. diff --git a/test/noeffect.expect b/test/noeffect.expect index 4a14b07..d73f59f 100644 --- a/test/noeffect.expect +++ b/test/noeffect.expect @@ -2,12 +2,12 @@ noeffect.c: (in macro exprNode_swap) noeffect.c:3:59: Assignment to macro parameter: e1 A macro parameter is used as the left side of an assignment expression. This - exhibits behavior that could not be implemented by a function. (-macroassign - will suppress message) + exhibits behavior that could not be implemented by a function. (Use + -macroassign to inhibit warning) noeffect.c:3:72: Assignment to macro parameter: e2 noeffect.c:2:18: File static function exprNode_swap declared but not used A function is declared but not used. Use /*@unused@*/ in front of function - header to suppress message. (-fcnuse will suppress message) + header to suppress message. (Use -fcnuse to inhibit warning) noeffect.c:3: Definition of exprNode_swap Finished checking --- 3 code warnings, as expected diff --git a/test/preds.expect b/test/preds.expect index c02a08c..68a31a2 100644 --- a/test/preds.expect +++ b/test/preds.expect @@ -1,25 +1,25 @@ preds.c: (in function f) preds.c:10:7: Test expression for if not bool, type int: *p - Test expression type is not boolean or int. (-predboolint will suppress - message) + Test expression type is not boolean or int. (Use -predboolint to inhibit + warning) preds.c:15:8: Operand of ! is non-boolean (int): !(*p) The operand of a boolean operator is not a boolean. Use +ptrnegate to allow ! - to be used on pointers. (-boolops will suppress message) + to be used on pointers. (Use -boolops to inhibit warning) preds.c:20:7: Test expression for if is assignment expression: b1 = b2 The condition test is an assignment expression. Probably, you mean to use == instead of =. If an assignment is intended, add an extra parentheses nesting - (e.g., if ((a = b)) ...) to suppress this message. (-predassign will suppress - message) + (e.g., if ((a = b)) ...) to suppress this message. (Use -predassign to + inhibit warning) preds.c:25:7: Test expression for if not bool, type char: (c = 'a') - Test expression type is not boolean. (-predboolothers will suppress message) + Test expression type is not boolean. (Use -predboolothers to inhibit warning) preds.c:30:7: Use of == with bool variables (risks inconsistency because of multiple true values): b1 == b2 Two bool values are compared directly using a C primitive. This may produce unexpected results since all non-zero values are considered TRUE, so different TRUE values may not be equal. The file bool.h (included in - splint/lib) provides bool_equal for safe bool comparisons. (-boolcompare will - suppress message) + splint/lib) provides bool_equal for safe bool comparisons. (Use -boolcompare + to inhibit warning) preds.c:35:7: Test expression for if not bool, type char: c Finished checking --- 6 code warnings, as expected @@ -28,38 +28,38 @@ preds.c: (in function f) preds.c:20:7: Test expression for if is assignment expression: b1 = b2 The condition test is an assignment expression. Probably, you mean to use == instead of =. If an assignment is intended, add an extra parentheses nesting - (e.g., if ((a = b)) ...) to suppress this message. (-predassign will suppress - message) + (e.g., if ((a = b)) ...) to suppress this message. (Use -predassign to + inhibit warning) Finished checking --- 1 code warning, as expected preds.c: (in function f) preds.c:5:8: Operand of ! is non-boolean (int *): !p - The operand of ! operator is a pointer. (+ptrnegate will suppress message) + The operand of ! operator is a pointer. (Use +ptrnegate to inhibit warning) preds.c:10:7: Test expression for if not bool, type int: *p - Test expression type is not boolean or int. (-predboolint will suppress - message) + Test expression type is not boolean or int. (Use -predboolint to inhibit + warning) preds.c:15:8: Operand of ! is non-boolean (int): !(*p) The operand of a boolean operator is not a boolean. Use +ptrnegate to allow ! - to be used on pointers. (-boolops will suppress message) + to be used on pointers. (Use -boolops to inhibit warning) preds.c:20:7: Test expression for if is assignment expression: b1 = b2 The condition test is an assignment expression. Probably, you mean to use == instead of =. If an assignment is intended, add an extra parentheses nesting - (e.g., if ((a = b)) ...) to suppress this message. (-predassign will suppress - message) + (e.g., if ((a = b)) ...) to suppress this message. (Use -predassign to + inhibit warning) preds.c:25:7: Test expression for if not bool, type char: (c = 'a') - Test expression type is not boolean. (-predboolothers will suppress message) + Test expression type is not boolean. (Use -predboolothers to inhibit warning) preds.c:30:7: Use of == with bool variables (risks inconsistency because of multiple true values): b1 == b2 Two bool values are compared directly using a C primitive. This may produce unexpected results since all non-zero values are considered TRUE, so different TRUE values may not be equal. The file bool.h (included in - splint/lib) provides bool_equal for safe bool comparisons. (-boolcompare will - suppress message) + splint/lib) provides bool_equal for safe bool comparisons. (Use -boolcompare + to inhibit warning) preds.c:35:7: Test expression for if not bool, type char: c bool.h:21:13: Function bool_initMod declared but not used A function is declared but not used. Use /*@unused@*/ in front of function - header to suppress message. (-fcnuse will suppress message) + header to suppress message. (Use -fcnuse to inhibit warning) bool.h:24:29: Function bool_unparse declared but not used bool.h:27:13: Function bool_not declared but not used bool.h:30:13: Function bool_equal declared but not used diff --git a/test/rc.expect b/test/rc.expect index 1a24271..3bd57c8 100644 --- a/test/rc.expect +++ b/test/rc.expect @@ -26,8 +26,8 @@ Finished checking --- 1 code warning, as expected rc3.splintrc:2:1: Bad flag syntax (+ or - expected, + is assumed): internalnamelen 73 - A flag is not recognized or used in an incorrect way (-badflag will suppress - message) + A flag is not recognized or used in an incorrect way (Use -badflag to inhibit + warning) rc3.splintrc:5:24: Flag dump must be followed by an argument rc.c: (in function f) rc.c:3:10: Unrecognized identifier: MYSTERY diff --git a/test/slovaknames.expect b/test/slovaknames.expect index acfec46..e0a6ac8 100644 --- a/test/slovaknames.expect +++ b/test/slovaknames.expect @@ -2,7 +2,7 @@ slovaknames.c: (in function pivoYedno) slovaknames.c:15:11: Left operand of == is abstract type (pivo): p == 1 An abstraction barrier is broken. If necessary, use /*@access @*/ to - allow access to an abstract type. (-abstract will suppress message) + allow access to an abstract type. (Use -abstract to inhibit warning) Finished checking --- 1 code warning, as expected @@ -10,27 +10,27 @@ Finished checking --- no warnings slovaknames.c:5:5: Variable michelobLight name violates Slovak naming convention. Slovak prefix michelob is not the name of a type. - Variable name is not consistent with Slovak naming convention. (Setting - either -slovakvars or -namechecks will suppress message) + Variable name is not consistent with Slovak naming convention. (Use either + -slovakvars or -namechecks to inhibit warning) slovaknames.c:19:5: Function samAdams name violates Slovak naming convention. Slovak prefix sam is not the name of a type. Function or iterator name is not consistent with Slovak naming convention. - (Setting either -slovakfcns or -namechecks will suppress message) + (Use either -slovakfcns or -namechecks to inhibit warning) slovaknames.c:32:5: Function budweiser name is not consistent with Slovak naming convention. Accessible types: pivo Function or iterator name is not consistent with Slovak naming convention. - (Setting either -slovakfcns or -namechecks will suppress message) + (Use either -slovakfcns or -namechecks to inhibit warning) Finished checking --- 3 code warnings, as expected slovaknames.c:19:5: Function samAdams name violates Slovak naming convention. Slovak prefix sam is not the name of a type. Function or iterator name is not consistent with Slovak naming convention. - (Setting either -slovakfcns or -namechecks will suppress message) + (Use either -slovakfcns or -namechecks to inhibit warning) slovaknames.c:32:5: Function budweiser name is not consistent with Slovak naming convention. Accessible types: pivo Function or iterator name is not consistent with Slovak naming convention. - (Setting either -slovakfcns or -namechecks will suppress message) + (Use either -slovakfcns or -namechecks to inhibit warning) Finished checking --- 2 code warnings, as expected @@ -39,8 +39,8 @@ slovaknames.c:4:5: Variable pivoPyet name violates Slovak naming convention. Use +accessslovak to allow access to type in functions named _. slovaknames.c:5:5: Variable michelobLight name violates Slovak naming convention. Slovak prefix michelob is not the name of a type. - Variable name is not consistent with Slovak naming convention. (Setting - either -slovakvars or -namechecks will suppress message) + Variable name is not consistent with Slovak naming convention. (Use either + -slovakvars or -namechecks to inhibit warning) slovaknames.c:8:17: Constant pivoDevenast name violates Slovak naming convention. Slovak prefix pivo names an abstract type that is not accessible. @@ -51,7 +51,7 @@ slovaknames.c:11:6: Function pivoYedno name violates Slovak naming convention. slovaknames.c: (in function pivoYedno) slovaknames.c:15:11: Left operand of == is abstract type (pivo): p == 1 An abstraction barrier is broken. If necessary, use /*@access @*/ to - allow access to an abstract type. (-abstract will suppress message) + allow access to an abstract type. (Use -abstract to inhibit warning) slovaknames.c:19:5: Function samAdams name violates Slovak naming convention. Slovak prefix sam is not the name of a type. slovaknames.c:32:5: Function budweiser name is not consistent with Slovak diff --git a/test/tests2.5.expect b/test/tests2.5.expect index 2bab909..c0ef24c 100644 --- a/test/tests2.5.expect +++ b/test/tests2.5.expect @@ -22,8 +22,8 @@ Finished checking --- no warnings Finished checking --- no warnings booltest.c: (in function f) -booltest.c:9:12: Return value type int does not match declared type bool: i booltest.c:8:7: Test expression for if not bool, type int: i +booltest.c:9:12: Return value type int does not match declared type bool: i Finished checking --- 2 code warnings, as expected