]> granicus.if.org Git - sudo/commitdiff
regen parser
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 12 Dec 2001 20:11:47 +0000 (20:11 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 12 Dec 2001 20:11:47 +0000 (20:11 +0000)
lex.yy.c
sudo.tab.c
sudo.tab.h

index 50e3e535a2ce96bd3686f9dd8793569698e1009b..5e76f59d6cb86adcb05dbb009ba726e99176f151 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -1,4 +1,4 @@
-/*     $OpenBSD: flex.skl,v 1.5 1997/07/25 21:05:28 mickey Exp $       */
+/*     $OpenBSD: flex.skl,v 1.6 2001/01/05 18:26:23 millert Exp $      */
 
 /* A lexical scanner generated by flex */
 
@@ -285,62 +285,43 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 31
-#define YY_END_OF_BUFFER 32
-static yyconst short int yy_accept[476] =
+#define YY_NUM_RULES 34
+#define YY_END_OF_BUFFER 35
+static yyconst short int yy_accept[293] =
     {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,   32,   29,
-        1,    7,   11,   29,   29,   20,   30,   29,   10,   29,
-       29,   29,   29,   13,   12,   24,   24,   24,   30,   24,
-       24,   24,   24,   24,    9,    6,    9,    9,    9,    6,
-        9,    9,    9,    9,    6,    6,    9,    9,    9,   30,
-       22,   22,   22,   23,   22,   22,   22,   22,   22,   21,
-       21,   21,   30,   25,    5,   25,   25,   25,   25,   25,
-       25,   25,   25,   24,   24,   24,   30,   29,    0,    1,
-       11,   29,    0,    8,    0,   17,    0,   16,    0,   28,
-       28,    0,   29,   29,   29,   29,   29,   24,   24,   24,
-
-       29,    2,   29,   29,   29,   29,   29,    9,    9,    9,
-        0,    9,    0,    9,    0,    9,    9,    9,    9,    9,
-        9,    9,    9,    3,    3,   22,    0,   17,    0,   16,
-        0,   22,    0,   22,   22,   22,   22,   22,   21,   21,
-       21,   22,   25,    0,   25,    0,    0,   25,    0,    5,
-        0,   17,    0,   16,    0,   25,    0,   25,   25,   25,
-       25,   25,   24,   24,   24,   25,   29,   29,   29,   24,
-       24,    0,   29,   29,   29,   29,   29,   17,   16,    9,
-        9,    9,    9,    9,   22,   22,   22,   21,   21,    4,
-        4,    0,    4,   25,   25,   25,   25,   24,   24,   29,
-
-       29,   29,   29,   29,   24,   24,   29,   29,   29,    9,
-        9,    9,    9,    9,    9,    9,   22,   22,   22,   22,
-       22,   21,   21,    4,   25,   25,   25,   25,   25,   24,
-       24,   29,   29,   29,   24,   24,   29,   29,    9,    9,
-        9,    9,    9,   22,   22,   22,   21,   21,   25,   25,
-       25,   24,   24,   29,   29,   29,   29,   29,   24,   24,
-       29,   29,    9,    9,    9,    9,    9,    9,    9,   22,
-       22,   22,   22,   22,   21,   21,   25,   25,   25,   25,
-       25,   24,   24,   18,   18,   18,   24,    0,   15,   29,
-       29,    9,    9,    9,    9,   18,   18,   18,   21,   18,
-
-       18,   18,   24,   29,   18,   18,   18,   18,   24,   29,
-       26,    9,    9,    9,    9,    9,    9,   22,   18,   18,
-       18,   18,   21,   25,   18,   18,   18,   18,   24,   29,
-       19,   19,   19,    0,   14,   29,   26,    9,    9,    9,
-        9,   22,   19,   19,   19,   25,   19,   19,   19,   29,
-       29,   19,   19,   19,   19,   19,   27,    9,    9,    9,
-        9,    9,    9,    9,   22,   22,   19,   19,   19,   19,
-       19,   25,   25,   19,   19,   19,   19,   19,   29,   29,
-       29,   19,   19,    9,    9,    9,    9,    9,   22,   22,
-       22,   19,   19,   25,   25,   25,   19,   19,   29,   29,
-
-       29,   29,   29,    9,    9,    9,    9,    9,   22,   22,
-       22,   22,   22,   25,   25,   25,   25,   25,   29,   29,
-       29,    9,    9,    9,   22,   22,   22,   25,   25,   25,
-       29,   29,   29,   29,   29,    9,    9,    9,    9,    9,
-       22,   22,   22,   22,   22,   25,   25,   25,   25,   25,
-       18,   18,   18,    9,    9,    9,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,    9,    9,    9,   18,   18,
-       18,   18,   18,   18,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   35,   24,   30,   29,   28,   33,   24,   19,
+       33,   24,   25,   24,   24,   24,   24,   27,   26,   20,
+       20,   20,   33,   20,   20,   20,   20,   20,   21,   33,
+       21,   22,   21,   21,   21,   21,   21,   20,   20,   20,
+       33,    1,   10,    9,   10,    9,    9,   33,   33,    2,
+       24,   24,    3,   24,    4,   24,    0,   30,   28,    0,
+       32,   16,    0,   15,    0,   23,   23,    0,   24,   24,
+       24,   24,   24,   20,   20,   20,   24,   31,   24,   24,
+       24,   24,   24,   21,    0,   21,   16,    0,   15,    0,
+
+       21,    0,   21,   21,   21,   21,   21,   20,   20,   20,
+       21,    1,   10,   10,    8,    8,    0,    2,   24,    0,
+        0,    5,    6,    0,   24,   24,   24,   20,   20,   24,
+       24,   24,   24,   24,   21,   21,   21,   20,   20,    7,
+        7,    0,    7,   24,   24,   24,   24,   24,   24,   20,
+       20,   24,   24,   24,   21,   21,   21,   21,   21,   20,
+       20,    7,   24,   24,   24,   20,   20,   24,   24,   21,
+       21,   21,   20,   20,   24,   24,   24,   24,   24,   20,
+       20,   24,   24,   21,   21,   21,   21,   21,   20,   20,
+       17,   17,   17,   20,    0,   14,   24,   24,   17,   17,
+
+       17,   20,   24,   17,   17,   17,   17,   20,   24,   11,
+       21,   17,   17,   17,   17,   20,   24,   18,   18,   18,
+        0,   13,   24,   11,   21,   18,   18,   18,   24,   24,
+       18,   18,   18,   18,   18,   12,   21,   21,   18,   18,
+       18,   18,   18,   24,   24,   24,   18,   18,   21,   21,
+       21,   18,   18,   24,   24,   24,   24,   24,   21,   21,
+       21,   21,   21,   24,   24,   24,   21,   21,   21,   24,
+       24,   24,   24,   24,   21,   21,   21,   21,   21,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,    0
+
     } ;
 
 static yyconst int yy_ec[256] =
@@ -349,16 +330,16 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
-        9,    1,   10,   11,    1,   12,   13,   14,   15,   16,
-       17,   18,   19,   20,   20,   20,   20,   21,    1,    1,
-       22,    1,    1,   23,   24,   25,   26,   27,   25,   25,
-       25,   28,   25,   25,   25,   25,   25,   29,   30,   31,
-       25,   32,   33,   25,   34,   25,   35,   25,   25,   25,
-        1,   36,    1,    1,   37,    1,   38,    1,    1,   39,
-
-       40,   41,    1,    1,   42,    1,    1,   43,   44,   45,
-       46,    1,    1,   47,   48,   49,   50,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        9,    1,   10,   11,   12,   13,   14,   15,   16,   17,
+       18,   19,   20,   21,   21,   21,   21,   22,    1,    1,
+       23,    1,    1,   24,   25,   26,   27,   28,   26,   26,
+       26,   29,   26,   26,   26,   26,   26,   30,   31,   32,
+       26,   33,   34,   26,   35,   26,   36,   26,   26,   26,
+        1,   37,    1,    1,   38,    1,   39,   40,   40,   41,
+
+       42,   43,   40,   40,   44,   40,   40,   45,   46,   47,
+       48,   40,   40,   49,   50,   51,   52,   40,   40,   40,
+       40,   40,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -375,823 +356,516 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[51] =
+static yyconst int yy_meta[53] =
     {   0,
-        1,    2,    3,    4,    1,    5,    1,    4,    4,    1,
-        2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        2,    6,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    7,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1
+        1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
+        2,    5,    1,    1,    5,    5,    5,    5,    5,    5,
+        5,    2,    4,    3,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    6,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7
     } ;
 
-static yyconst short int yy_base[501] =
+static yyconst short int yy_base[311] =
     {   0,
-        0,   25,   59,    0,  109,    0,  159,    0, 1174, 1113,
-     1146, 3053, 1135,  208, 1100, 3053, 3053, 1098, 3053,  214,
-      239,  246,  224, 3053, 3053,  275, 1102, 1103,  324, 1082,
-     1077, 1068, 1063, 1064,    0, 3053, 1106,  330,  332, 3053,
-      261,  357,  366,  375, 3053,    0,  382, 1075, 1080,  418,
-     1067, 1056, 1055, 3053, 1054,  419,  444,  254,  342,  480,
-     1058, 1061,  529, 1048, 3053,  551,  586, 1047, 1046,  429,
-      611,  429,  452,  647, 1051, 1046,  696, 1033,  718, 1066,
-     1053,  740, 1053, 3053, 1052, 1014,  775, 1012,  797,  535,
-     1011,  819,  829,  209,    0,    0, 1026,    0, 1003, 1000,
-
-      211, 3053,  179,  191,  198,  190,   18,    0, 1028,  557,
-        0,  560,    0,  343,  599,  458, 1019,  854,  863,  599,
-        0,  998,  995,   53, 3053,  985,  882,  977,  904,  976,
-      926,  632,  948,  958,  213,    0,    0,  983,    0,  969,
-      966,  327,  960,  993, 1015,  243,  400, 1050,  990, 3053,
-      965,  931, 1085,  922, 1107,  702, 1129, 1139,  216,    0,
-        0,  935,    0,  920,  912,  448, 1164, 1173, 1182,  912,
-      896,  275,  197,  248,  295,  260,  301, 1201, 1236, 1261,
-     1270, 1279,  900,  890, 1288, 1297, 1306,  890,  878,  874,
-     3053,  417,    0,  902, 1315, 1324, 1333,  878,  868, 1340,
-
-      331, 1365, 1374, 1383,  859,  841,  314,  368,  443,  716,
-      855, 1392, 1401,  738,  831,  803, 1410,  352, 1419, 1428,
-     1437,  804,  794,  421, 1446,  534, 1455, 1464, 1473,  793,
-      787, 1482, 1491, 1500,  783,  780,  465,  398, 1509, 1518,
-     1527,  761,  745, 1536, 1545, 1554,  713,  718, 1563, 1572,
-     1581,  691,  688, 1588,  545, 1613, 1622, 1631,  679,  481,
-      499,  498,  750,  700, 1640, 1649,  773,  635,  546, 1658,
-      563, 1667, 1676, 1685,  615,  582, 1694,  564, 1703, 1712,
-     1721,  614,  583, 1729,  795,  817,  617,  622, 3053,  446,
-      550, 1753, 1761, 1769,  607, 1778,  836,  843,  579, 1787,
-
-      880,  902,  565, 1794,  599,    0,    0,  571,  630,  394,
-      680,  924,  564, 1818, 1826,  947,  635, 1834,  606,    0,
-        0,  543,  637, 1842,  633,    0,    0,  529,  700, 1851,
-     1860, 1869, 1878,  707, 3053,  597, 3053, 1887, 1896, 1905,
-     1914, 1923, 1932, 1941, 1950, 1959, 1968, 1977, 1986, 1993,
-      566, 2018, 2027, 2036, 2045,  759,  509,  965,  524, 2054,
-     2063, 2072, 2081,  766, 2090,  701, 2099, 2108, 2117, 2126,
-      788, 2135,  711, 2144, 2153, 2162, 2171,  873, 2180, 2189,
-     2198, 2207,  917, 2216, 2225, 2234,  972,  744, 2243, 2252,
-     2261, 2270,  991, 2279, 2288, 2297, 2306,  994, 2313,  781,
-
-     2338, 2347, 2356, 1025,  491, 2365, 2374, 1048, 2381,  827,
-     2406, 2415, 2424, 2431,  910, 2456, 2465, 2474, 2483, 2492,
-     2501, 2510, 2519, 2528, 2537, 2546, 2555, 2564, 2573, 2582,
-     2591,  986, 2600, 2609, 2618, 1060,  419, 2627, 2636, 1083,
-     2645,  999, 2654, 2663, 2672, 2681, 1013, 2690, 2699, 2708,
-     2717, 2726, 2735, 1105, 1127, 1146, 2744, 2753, 2762, 2771,
-     2780, 2789,  334, 2796, 1199,    0, 1153, 1211,  326, 2819,
-     1234,  306, 2842, 1247, 3053, 2878, 2885, 2892, 2899, 2906,
-     2913, 2919, 2926, 2933, 2940, 2947, 2954, 2961, 2968, 2975,
-     2982, 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045
-
+        0,   26,   61,    0,  112,  113,  120,  156,  192,  243,
+      294,  330,  599,  557,  591, 1848,  588,  580,  543, 1848,
+     1848,  541, 1848,  124,  355,  119,  134, 1848, 1848,  380,
+      545,  546,  417,  524,  527,  514,  508,  507,  518,    0,
+      516, 1848,  512,  160,  429,  155,  170,  454,  516,  521,
+      491,  542,    0, 1848,  539,    0, 1848,  380,   54,    0,
+      514,   93, 1848,  104, 1848,  505,  550,  539,  536,  536,
+     1848,  498,  573,  497,  596,  306,  494,  619,  629,  143,
+        0,    0,  505,    0,  472,  467,  144, 1848,  108,  140,
+      154,  145,  163,  459,  665,    0,  454,  688,  431,  711,
+
+      320,  734,  744,  186,    0,    0,  444,    0,  432,  429,
+      211,  460,    0,  457,  163, 1848,  199,    0,  780,  213,
+      214, 1848, 1848,  204,  805,  814,  823,  434,  409,   88,
+       21,  170,  172,  171,  832,  841,  850,  399,  388,  351,
+     1848,  217,    0,  382,  857,  215,  882,  891,  900,  350,
+      341,  187,  216,  166,  909,  242,  918,  927,  936,  292,
+      289,  264,  945,  954,  963,  289,  292,  233,  219,  972,
+      981,  990,  285,  284,  997,  300, 1022, 1031, 1040,  275,
+      255,  222,  223, 1049,  308, 1058, 1067, 1076,  272,  305,
+     1084,  343,  331,  250,  363, 1848,  228,  225, 1109,  414,
+
+      436,  248, 1116,  341,    0,    0,  252,  367,  224,  357,
+     1140,  390,    0,    0,  250,  435, 1149, 1158, 1167, 1176,
+      436, 1848,  272, 1848, 1185, 1194, 1203, 1212, 1219,  343,
+     1244, 1253, 1262, 1271,  490,  229, 1280,  353, 1289, 1298,
+     1307, 1316,  495, 1325, 1334, 1343, 1352,  461, 1361, 1370,
+     1379, 1388,  513, 1395,  423, 1420, 1429, 1438, 1445,  496,
+     1470, 1479, 1488, 1497, 1506, 1515, 1524, 1533, 1542, 1551,
+      508, 1560, 1569, 1578, 1587,  511, 1596, 1605, 1614, 1623,
+     1632, 1641, 1650, 1659, 1668,  175, 1675,  548,  126, 1698,
+      571, 1848, 1735, 1742, 1749, 1756, 1763, 1770, 1777, 1784,
+
+     1791,  139, 1798, 1805, 1812, 1819,  110, 1826, 1833, 1840
     } ;
 
-static yyconst short int yy_def[501] =
+static yyconst short int yy_def[311] =
     {   0,
-      475,    1,  475,    3,  475,    5,  475,    7,  475,  476,
-      475,  475,  475,  477,  478,  475,  475,  479,  475,  480,
-      476,   21,   21,  475,  475,  475,   26,   26,  476,   26,
-       26,   26,   26,   26,  481,  475,  481,  482,  483,  475,
-      484,  481,  481,  481,  475,  481,  481,   47,   47,  475,
-      485,  485,  486,  475,  487,  488,  485,   57,   57,  475,
-       60,   60,  485,  489,  475,  490,  491,  492,  493,  494,
-      489,   71,   71,  475,   74,   74,  489,  476,  476,  475,
-      475,  477,  495,  475,  477,  478,  478,  479,  479,  480,
-      496,  476,  476,  476,   21,   21,   21,   26,   26,   26,
-
-      476,  475,  476,  476,  476,  476,  476,  481,  481,  482,
-      497,  483,  498,  484,  475,  481,  481,  481,  481,  481,
-       47,   47,   47,  475,  475,  485,  485,  486,  486,  487,
-      487,  488,  485,  485,  485,   57,   57,   57,   60,   60,
-       60,  485,  489,  489,  490,  499,  490,  491,  500,  475,
-      491,  492,  492,  493,  493,  494,  489,  489,  489,   71,
-       71,   71,   74,   74,   74,  489,   21,   21,   21,   26,
-       26,  475,  476,  476,  476,  476,  476,  497,  498,  481,
-      481,  481,   47,   47,   57,   57,   57,   60,   60,  489,
-      475,  499,  145,  145,   71,   71,   71,   74,   74,  476,
-
-      476,   21,   21,   21,   26,   26,  476,  476,  476,  481,
-      481,  481,  481,  481,   47,   47,   57,  485,   57,   57,
-       57,   60,   60,  499,   71,  489,   71,   71,   71,   74,
-       74,   21,   21,   21,   26,   26,  476,  476,  481,  481,
-      481,   47,   47,   57,   57,   57,   60,   60,   71,   71,
-       71,   74,   74,  476,  476,   21,   21,   21,   26,   26,
-      476,  476,  481,  481,  481,  481,  481,   47,   47,   57,
-      485,   57,   57,   57,   60,   60,   71,  489,   71,   71,
-       71,   74,   74,  476,  284,  284,   26,  475,  475,  476,
-      476,  481,  481,  481,   47,   57,  296,  296,   60,   71,
-
-      300,  300,   74,  476,  476,  284,  284,  284,   26,  476,
-      476,  481,  481,  481,  481,  481,   47,  296,  485,  296,
-      296,  296,   60,  300,  489,  300,  300,  300,   74,   21,
-       21,   21,   21,  475,  475,  476,  475,  481,  481,  481,
-      481,   57,   57,   57,   57,   71,   71,   71,   71,  476,
-      476,   21,   21,   21,   21,  476,  476,  481,  481,  481,
-      481,  481,  481,  481,   57,  485,   57,   57,   57,   57,
-      485,   71,  489,   71,   71,   71,   71,  489,   21,   21,
-       21,   21,  476,  481,  481,  481,  481,  481,   57,   57,
-       57,   57,  485,   71,   71,   71,   71,  489,  476,  476,
-
-       21,   21,   21,  481,  481,  481,  481,  481,  485,  485,
-       57,   57,   57,  489,  489,   71,   71,   71,   21,   21,
-       21,  481,  481,  481,   57,   57,   57,   71,   71,   71,
-       21,  476,   21,   21,   21,  481,  481,  481,  481,  481,
-       57,  485,   57,   57,   57,   71,  489,   71,   71,   71,
-       21,   21,   21,  481,  481,  481,   57,   57,   57,   71,
-       71,   71,  476,  476,  476,  481,  481,  481,  485,  485,
-      485,  489,  489,  489,    0,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475
-
+      292,    1,  292,    3,    1,    1,  293,  293,  294,  294,
+      295,  295,  292,  296,  292,  292,  292,  297,  298,  292,
+      292,  299,  292,  300,  296,   25,   25,  292,  292,   25,
+       30,   30,  296,   30,   30,   30,   30,   30,  301,  302,
+      303,  292,  304,  305,  301,   45,   45,   45,   48,   48,
+      301,  292,  306,  292,  306,  306,  292,  292,  292,  307,
+      308,  296,  292,  296,  292,  296,  296,  292,  292,  297,
+      292,  298,  298,  299,  299,  300,  309,  296,  296,  296,
+       25,   25,   25,   30,   30,   30,  296,  292,  296,  296,
+      296,  296,  296,  301,  301,  302,  303,  303,  304,  304,
+
+      305,  301,  301,  301,   45,   45,   45,   48,   48,   48,
+      301,  292,  306,  306,  292,  292,  292,  307,  308,  310,
+      308,  292,  292,  292,   25,   25,   25,   30,   30,  296,
+      296,  296,  296,  296,   45,   45,   45,   48,   48,  296,
+      292,  310,  119,  119,  296,  296,   25,   25,   25,   30,
+       30,  296,  296,  296,   45,  301,   45,   45,   45,   48,
+       48,  310,   25,   25,   25,   30,   30,  296,  296,   45,
+       45,   45,   48,   48,  296,  296,   25,   25,   25,   30,
+       30,  296,  296,   45,  301,   45,   45,   45,   48,   48,
+      296,  191,  191,   30,  292,  292,  296,  296,   45,  199,
+
+      199,   48,  296,  296,  191,  191,  191,   30,  296,  296,
+      199,  301,  199,  199,  199,   48,   25,   25,   25,   25,
+      292,  292,  296,  292,   45,   45,   45,   45,  296,  296,
+       25,   25,   25,   25,  296,  296,   45,  301,   45,   45,
+       45,   45,  301,   25,   25,   25,   25,  296,   45,   45,
+       45,   45,  301,  296,  296,   25,   25,   25,  301,  301,
+       45,   45,   45,   25,   25,   25,   45,   45,   45,   25,
+      296,   25,   25,   25,   45,  301,   45,   45,   45,   25,
+       25,   25,   45,   45,   45,  296,  296,  296,  301,  301,
+      301,    0,  292,  292,  292,  292,  292,  292,  292,  292,
+
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292
     } ;
 
-static yyconst short int yy_nxt[3104] =
+static yyconst short int yy_nxt[1901] =
     {   0,
-       10,   11,   12,   13,   10,   14,   15,   16,   17,   18,
-       19,   10,   20,   21,   22,   23,   21,   21,   21,   21,
-       24,   25,   17,   26,   26,   26,   26,   26,   27,   26,
-       28,   26,   26,   26,   26,   29,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       30,   31,   32,   79,  172,  102,   33,  177,   34,   35,
-       11,   36,   37,   35,   35,   38,   35,   35,   39,   40,
-       35,   41,   42,   43,   44,   42,   42,   42,   42,   45,
-       46,   35,   47,   47,   47,   47,   47,   48,   47,   49,
-       47,   47,   47,   47,   50,   35,   35,   35,   35,   35,
-
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   51,
-       11,   12,   13,   51,   52,   53,   17,   54,   55,   19,
-       51,   56,   57,   58,   59,   57,   57,   57,   57,   24,
-       25,   17,   60,   60,   60,   60,   60,   61,   60,   62,
-       60,   60,   60,   60,   63,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   64,
-       11,   65,   13,   66,   67,   68,   17,   17,   69,   19,
-       64,   70,   71,   72,   73,   71,   71,   71,   71,   24,
-       25,   17,   74,   74,   74,   74,   74,   75,   74,   76,
-       74,   74,   74,   74,   77,   64,   64,   64,   64,   64,
-
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   83,
-       84,   83,  172,  102,   79,   83,   83,   91,   83,   78,
-       93,   91,   91,  173,  134,   79,   79,  158,   83,   83,
-       83,  174,   79,   79,  176,  207,   91,   96,   96,   96,
-       96,   96,   97,   85,   79,  175,   79,  191,  127,   92,
-       93,  144,   94,   94,   94,   94,   94,   94,   94,   95,
-       95,   95,   95,   95,   95,   95,  108,  136,  136,  136,
-      136,  136,  136,  136,   79,   78,  172,  102,  192,   78,
-       78,   78,  108,   79,   78,  208,   78,   78,   98,   98,
-       98,   98,   98,   98,   98,   79,  115,  209,   98,   98,
-
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       79,   98,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,  101,  102,   78,  172,  102,
-       79,   78,   78,  108,   78,  108,   79,  108,  108,  108,
-      108,  144,  200,  207,   78,   78,   78,  207,  108,   79,
-      237,  108,  108,  108,  108,  137,  137,  137,  137,  137,
-      138,  127,  127,  217,  108,  111,   79,  113,  116,   79,
-      117,  117,  117,  117,  117,  117,  117,  116,  115,  118,
-      118,  118,  118,  118,  118,  118,  116,  127,  119,  119,
-      119,  119,  119,  120,  117,  121,  121,  121,  121,  121,
-
-      121,  121,  146,   79,  193,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  238,  121,  124,
-      102,  224,   91,  125,  126,  191,   91,   91,  125,   79,
-      436,  336,   91,   79,  143,  194,   91,   91,  125,  125,
-      262,   91,  160,  160,  160,  160,  160,  160,  160,  172,
-      102,   91,  192,  125,  133,  134,  192,  135,  135,  135,
-      135,  135,  135,  135,  157,  161,  161,  161,  161,  161,
-      162,  180,  181,  182,  180,  180,  180,  180,   79,  127,
-      126,   79,  288,  144,  126,  126,  126,  310,  261,  126,
-      207,  126,  126,  139,  139,  139,  139,  139,  139,  139,
-
-       79,  289,  404,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  127,  139,  126,  126,  126,
-      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      142,  102,  126,   79,   79,  358,  126,  126,   91,  126,
-       78,  290,   91,   91,   79,  225,  291,  288,  143,  126,
-      126,  126,  146,  146,  146,  143,  254,   91,  146,  146,
-      108,  146,  126,  108,  108,  108,  289,  108,  108,  144,
-       92,  146,  146,  146,  270,  277,  312,  350,  108,  108,
-       79,  108,  108,  288,  288,   79,  147,  149,  150,  149,
-       78,  329,  111,  149,  149,  113,  149,  311,  127,  144,
-
-       91,   79,  289,  289,   91,  323,  149,  149,  149,   91,
-      116,  304,  117,  117,  117,  117,  117,  117,  318,   91,
-       91,  151,  158,  288,  159,  159,  159,  159,  159,  159,
-      159,  334,   79,  317,   79,   91,  334,  126,  334,   91,
-       91,  127,  289,  309,  357,  324,  144,  143,  303,  299,
-      335,  143,  143,  143,   91,  335,  143,  335,  143,  143,
-      163,  163,  163,  163,  163,  163,  163,  133,  144,  295,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  144,  163,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  166,  102,  143,
-
-      337,  334,  337,  143,  143,   91,  143,  143,  334,   91,
-       91,  263,  365,  287,  283,   79,  143,  143,  143,   78,
-      335,   78,  372,  282,   91,   78,   78,  335,   78,  239,
-      240,  241,  239,  239,  239,  239,  127,  157,   78,   78,
-       78,   83,   84,   83,  276,  275,  144,   83,   83,  210,
-       83,  211,  211,  211,  211,  211,  211,  388,  388,  388,
-       83,   83,   83,  292,  293,  294,  292,  292,  292,  292,
-      350,  269,  383,  383,  383,   85,   86,  358,   86,  388,
-      388,  388,   86,   86,  263,   86,  264,  264,  264,  264,
-      264,  264,  399,  268,   79,   86,   86,   86,   88,  365,
-
-       88,  393,  393,  393,   88,   88,  260,   88,  306,  306,
-      306,  306,  306,  306,  306,  259,   79,   88,   88,   88,
-       90,  253,   78,  127,   90,  252,   78,   78,  248,   90,
-      307,  307,  307,  307,  307,  308,  247,  243,  409,   90,
-       90,   78,  167,  168,  169,  167,  167,  167,  167,  320,
-      320,  320,  320,  320,  320,  320,  321,  321,  321,  321,
-      321,  322,  127,  242,   79,  116,  210,  117,  117,  117,
-      117,  117,  117,  117,  116,  236,  117,  117,  117,  117,
-      117,  117,  117,  126,  372,  126,  398,  398,  398,  126,
-      126,  235,  126,  326,  326,  326,  326,  326,  326,  326,
-
-      231,  230,  126,  126,  126,  128,  193,  128,  144,  144,
-      223,  128,  128,  222,  128,  327,  327,  327,  327,  327,
-      328,  414,  216,  215,  128,  128,  128,  130,  206,  130,
-      383,  383,  383,  130,  130,  205,  130,  338,  339,  340,
-      341,  338,  338,  338,  199,  144,  130,  130,  130,  132,
-      198,  126,   79,  132,  143,  126,  126,  155,  132,  312,
-      313,  313,  313,  313,  313,  313,  153,  150,  132,  132,
-      126,  185,  186,  187,  185,  185,  185,  185,  384,  385,
-      386,  384,  384,  384,  384,  387,  387,  387,  387,  387,
-      387,  387,  150,  127,  143,  144,  143,  431,  189,  188,
-
-      143,  143,  126,  143,  393,  393,  393,  398,  398,  398,
-      441,  131,  129,  143,  143,  143,  146,  146,  146,  190,
-      127,   79,  146,  146,  446,  146,  127,  184,  183,  144,
-      116,  109,  171,  170,  127,  146,  146,  146,  422,  423,
-      424,  422,  422,  422,  422,   78,  115,   89,  144,   87,
-      147,  149,  150,  149,   84,   84,   81,  149,  149,  404,
-      149,  405,  405,  405,  405,  405,  405,   80,   79,  165,
-      149,  149,  149,  454,  455,  456,  454,  454,  454,  454,
-      164,  155,  153,  144,  141,  151,  152,  140,  152,  131,
-      129,  127,  152,  152,  436,  152,  437,  437,  437,  437,
-
-      437,  437,  127,  123,  122,  152,  152,  152,  154,  109,
-      154,  107,  106,  105,  154,  154,  104,  154,  466,  466,
-      466,  466,  466,  466,  466,  103,  100,  154,  154,  154,
-      156,   99,  143,   89,  156,   87,  143,  143,   81,  156,
-      454,  454,  454,  454,  454,  454,  454,   80,   79,  156,
-      156,  143,  195,  196,  197,  195,  195,  195,  195,  467,
-      467,  467,  467,  467,  468,  466,  466,  466,  466,  466,
-      466,  466,  466,  475,  144,  200,  475,  201,  201,  201,
-      201,  201,  201,  201,  200,  475,  202,  202,  202,  202,
-      202,  202,  202,  200,  475,  203,  203,  203,  203,  203,
-
-      204,  201,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  463,  463,  463,  463,  463,  463,  475,  475,
-      475,  475,  475,  475,  466,  466,  466,  466,  466,  466,
-      475,  475,  475,  475,   79,  475,  111,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  469,  469,  469,
-      469,  469,  469,  475,  475,  475,  475,  475,  475,  475,
-      472,  472,  472,  472,  472,  472,  475,  475,  475,  127,
-      475,  113,  210,  475,  211,  211,  211,  211,  211,  211,
-      211,  210,  144,  212,  212,  212,  212,  212,  212,  212,
-      210,  475,  213,  213,  213,  213,  213,  214,  211,  217,
-
-      475,  218,  218,  218,  218,  218,  218,  218,  217,  475,
-      219,  219,  219,  219,  219,  219,  219,  217,  475,  220,
-      220,  220,  220,  220,  221,  218,  225,  475,  226,  226,
-      226,  226,  226,  226,  226,  225,  475,  227,  227,  227,
-      227,  227,  227,  227,  225,  475,  228,  228,  228,  228,
-      228,  229,  226,  232,  233,  234,  232,  232,  232,  232,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,   79,  200,  475,  201,  201,
-      201,  201,  201,  201,  201,  200,  475,  201,  201,  201,
-      201,  201,  201,  201,  200,  475,  201,  201,  201,  201,
-
-      201,  201,   78,  210,  475,  211,  211,  211,  211,  211,
-      211,  211,  210,  475,  211,  211,  211,  211,  211,  211,
-      211,  126,  475,  244,  245,  246,  244,  244,  244,  244,
-      217,  475,  218,  218,  218,  218,  218,  218,  218,  217,
-      475,  218,  218,  218,  218,  218,  218,  218,  217,  475,
-      218,  218,  218,  218,  218,  218,  126,  143,  475,  249,
-      250,  251,  249,  249,  249,  249,  225,  475,  226,  226,
-      226,  226,  226,  226,  226,  225,  475,  226,  226,  226,
-      226,  226,  226,  226,  225,  475,  226,  226,  226,  226,
-      226,  226,  143,  254,  475,  255,  255,  255,  255,  255,
-
-      255,  255,  254,  475,  256,  256,  256,  256,  256,  256,
-      256,  254,  475,  257,  257,  257,  257,  257,  258,  255,
-      263,  475,  264,  264,  264,  264,  264,  264,  264,  263,
-      475,  265,  265,  265,  265,  265,  265,  265,  263,  475,
-      266,  266,  266,  266,  266,  267,  264,  270,  475,  271,
-      271,  271,  271,  271,  271,  271,  270,  475,  272,  272,
-      272,  272,  272,  272,  272,  270,  475,  273,  273,  273,
-      273,  273,  274,  271,  277,  475,  278,  278,  278,  278,
-      278,  278,  278,  277,  475,  279,  279,  279,  279,  279,
-      279,  279,  277,  475,  280,  280,  280,  280,  280,  281,
-
-      278,  284,  285,  286,  284,  284,  284,  284,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,   79,  254,  475,  255,  255,  255,  255,
-      255,  255,  255,  254,  475,  255,  255,  255,  255,  255,
-      255,  255,  254,  475,  255,  255,  255,  255,  255,  255,
-       78,  263,  475,  264,  264,  264,  264,  264,  264,  264,
-      263,  475,  264,  264,  264,  264,  264,  264,  264,  126,
-      475,  296,  297,  298,  296,  296,  296,  296,  270,  475,
-      271,  271,  271,  271,  271,  271,  271,  270,  475,  271,
-      271,  271,  271,  271,  271,  271,  270,  475,  271,  271,
-
-      271,  271,  271,  271,  126,  143,  475,  300,  301,  302,
-      300,  300,  300,  300,  277,  475,  278,  278,  278,  278,
-      278,  278,  278,  277,  475,  278,  278,  278,  278,  278,
-      278,  278,  277,  475,  278,  278,  278,  278,  278,  278,
-      143,  304,  305,  305,  305,  305,  305,  305,  305,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,   79,  312,  313,  313,  313,  313,
-      313,  313,  313,  312,  314,  314,  314,  314,  314,  314,
-      314,  312,  315,  315,  315,  315,  315,  316,  313,  126,
-      318,  319,  319,  319,  319,  319,  319,  319,  143,  324,
-
-      325,  325,  325,  325,  325,  325,  325,  330,  331,  332,
-      333,  330,  330,  330,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,   79,
-      312,  313,  313,  313,  313,  313,  313,  313,  312,  313,
-      313,  313,  313,  313,  313,  313,  126,  342,  343,  344,
-      345,  342,  342,  342,  143,  346,  347,  348,  349,  346,
-      346,  346,  350,  475,  351,  351,  351,  351,  351,  351,
-      351,  350,  475,  352,  352,  352,  352,  352,  352,  352,
-      350,  475,  353,  353,  353,  353,  353,  354,  355,  350,
-      475,  356,  356,  356,  351,  351,  351,  351,  358,  475,
-
-      359,  359,  359,  359,  359,  359,  359,  358,  475,  360,
-      360,  360,  360,  360,  360,  360,  358,  475,  361,  361,
-      361,  361,  361,  362,  363,  358,  475,  364,  364,  364,
-      359,  359,  359,  359,  365,  475,  366,  366,  366,  366,
-      366,  366,  366,  365,  475,  367,  367,  367,  367,  367,
-      367,  367,  365,  475,  368,  368,  368,  368,  368,  369,
-      370,  365,  475,  371,  371,  371,  366,  366,  366,  366,
-      372,  475,  373,  373,  373,  373,  373,  373,  373,  372,
-      475,  374,  374,  374,  374,  374,  374,  374,  372,  475,
-      375,  375,  375,  375,  375,  376,  377,  372,  475,  378,
-
-      378,  378,  373,  373,  373,  373,  379,  380,  381,  379,
-      379,  379,  379,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,   79,  350,
-      475,  355,  355,  355,  355,  355,  355,  355,  350,  475,
-      355,  355,  355,  355,  355,  355,  355,  350,  475,  355,
-      355,  355,  355,  355,  355,  382,  350,  475,  382,  382,
-      382,  382,  382,  382,  382,  358,  475,  363,  363,  363,
-      363,  363,  363,  363,  358,  475,  363,  363,  363,  363,
-      363,  363,  363,  358,  475,  363,  363,  363,  363,  363,
-      363,  387,  358,  475,  387,  387,  387,  387,  387,  387,
-
-      387,  126,  475,  389,  390,  391,  389,  389,  389,  389,
-      365,  475,  370,  370,  370,  370,  370,  370,  370,  365,
-      475,  370,  370,  370,  370,  370,  370,  370,  365,  475,
-      370,  370,  370,  370,  370,  370,  392,  365,  475,  392,
-      392,  392,  392,  392,  392,  392,  143,  475,  394,  395,
-      396,  394,  394,  394,  394,  372,  475,  377,  377,  377,
-      377,  377,  377,  377,  372,  475,  377,  377,  377,  377,
-      377,  377,  377,  372,  475,  377,  377,  377,  377,  377,
-      377,  397,  372,  475,  397,  397,  397,  397,  397,  397,
-      397,  399,  475,  400,  400,  400,  400,  400,  400,  400,
-
-      399,  475,  401,  401,  401,  401,  401,  401,  401,  399,
-      475,  402,  402,  402,  402,  402,  403,  400,   78,  475,
-      382,  382,  382,  382,  382,  382,  382,  404,  475,  405,
-      405,  405,  405,  405,  405,  405,  404,  475,  406,  406,
-      406,  406,  406,  406,  406,  404,  475,  407,  407,  407,
-      407,  407,  408,  405,  409,  475,  410,  410,  410,  410,
-      410,  410,  410,  409,  475,  411,  411,  411,  411,  411,
-      411,  411,  409,  475,  412,  412,  412,  412,  412,  413,
-      410,  126,  475,  392,  392,  392,  392,  392,  392,  392,
-      414,  475,  415,  415,  415,  415,  415,  415,  415,  414,
-
-      475,  416,  416,  416,  416,  416,  416,  416,  414,  475,
-      417,  417,  417,  417,  417,  418,  415,  143,  475,  397,
-      397,  397,  397,  397,  397,  397,  419,  420,  421,  419,
-      419,  419,  419,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,   79,  399,
-      475,  400,  400,  400,  400,  400,  400,  400,  399,  475,
-      400,  400,  400,  400,  400,  400,  400,  399,  475,  400,
-      400,  400,  400,  400,  400,   78,  404,  475,  405,  405,
-      405,  405,  405,  405,  405,  404,  475,  405,  405,  405,
-      405,  405,  405,  405,  425,  426,  427,  425,  425,  425,
-
-      425,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  127,  409,  475,  410,
-      410,  410,  410,  410,  410,  410,  409,  475,  410,  410,
-      410,  410,  410,  410,  410,  409,  475,  410,  410,  410,
-      410,  410,  410,  126,  428,  429,  430,  428,  428,  428,
-      428,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  144,  414,  475,  415,
-      415,  415,  415,  415,  415,  415,  414,  475,  415,  415,
-      415,  415,  415,  415,  415,  414,  475,  415,  415,  415,
-      415,  415,  415,  143,  431,  475,  432,  432,  432,  432,
-
-      432,  432,  432,  431,  475,  433,  433,  433,  433,  433,
-      433,  433,  431,  475,  434,  434,  434,  434,  434,  435,
-      432,  436,  475,  437,  437,  437,  437,  437,  437,  437,
-      436,  475,  438,  438,  438,  438,  438,  438,  438,  436,
-      475,  439,  439,  439,  439,  439,  440,  437,  441,  475,
-      442,  442,  442,  442,  442,  442,  442,  441,  475,  443,
-      443,  443,  443,  443,  443,  443,  441,  475,  444,  444,
-      444,  444,  444,  445,  442,  446,  475,  447,  447,  447,
-      447,  447,  447,  447,  446,  475,  448,  448,  448,  448,
-      448,  448,  448,  446,  475,  449,  449,  449,  449,  449,
-
-      450,  447,   78,  475,  451,  452,  453,  451,  451,  451,
-      451,  431,  475,  432,  432,  432,  432,  432,  432,  432,
-      431,  475,  432,  432,  432,  432,  432,  432,  432,  431,
-      475,  432,  432,  432,  432,  432,  432,   78,  436,  475,
-      437,  437,  437,  437,  437,  437,  437,  436,  475,  437,
-      437,  437,  437,  437,  437,  437,  126,  475,  457,  458,
-      459,  457,  457,  457,  457,  441,  475,  442,  442,  442,
-      442,  442,  442,  442,  441,  475,  442,  442,  442,  442,
-      442,  442,  442,  441,  475,  442,  442,  442,  442,  442,
-      442,  126,  143,  475,  460,  461,  462,  460,  460,  460,
-
-      460,  446,  475,  447,  447,  447,  447,  447,  447,  447,
-      446,  475,  447,  447,  447,  447,  447,  447,  447,  446,
-      475,  447,  447,  447,  447,  447,  447,  143,   78,  475,
-      463,  463,  463,  463,  463,  463,  463,   78,  475,  451,
-      451,  451,  451,  451,  451,  451,   78,  475,  464,  464,
-      464,  464,  464,  465,  463,  126,  475,  469,  469,  469,
-      469,  469,  469,  469,  126,  475,  457,  457,  457,  457,
-      457,  457,  457,  126,  475,  470,  470,  470,  470,  470,
-      471,  469,  143,  475,  472,  472,  472,  472,  472,  472,
-      472,  143,  475,  460,  460,  460,  460,  460,  460,  460,
-
-      143,  475,  473,  473,  473,  473,  473,  474,  472,  463,
-      463,  463,  463,  463,  463,  463,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,   79,  469,  469,  469,  469,  469,  469,  469,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  127,  472,  472,  472,  472,  472,
-      472,  472,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  144,   78,  475,
-      475,  475,   78,  475,   78,   82,   82,   82,   82,   82,
-       82,   82,   86,  475,  475,  475,   86,  475,   86,   88,
-
-      475,  475,  475,   88,  475,   88,   90,  475,  475,   90,
-       90,  475,   90,  108,  475,  475,  108,  108,  108,  110,
-      475,  475,  110,  110,  110,  110,  112,  475,  475,  112,
-      112,  112,  112,  114,  475,  475,  114,  114,  114,  114,
-      126,  475,  475,  475,  126,  475,  126,  128,  475,  475,
-      475,  128,  475,  128,  130,  475,  475,  475,  130,  475,
-      130,  132,  475,  475,  132,  132,  475,  132,  143,  475,
-      475,  475,  143,  475,  143,  145,  145,  145,  145,  145,
-      145,  145,  148,  148,  148,  148,  148,  148,  148,  152,
-      475,  475,  475,  152,  475,  152,  154,  475,  475,  475,
-
-      154,  475,  154,  156,  475,  475,  156,  156,  475,  156,
-       83,   83,   83,   83,   83,   83,   83,   91,  475,  475,
-       91,  475,  475,   91,  178,  178,  475,  178,  178,  178,
-      178,  179,  179,  475,  179,  179,  179,  179,  146,  146,
-      146,  146,  146,  146,  146,  149,  149,  149,  149,  149,
-      149,  149,    9,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-
-      475,  475,  475
+       14,   15,   16,   17,   14,   18,   19,   20,   21,   22,
+       23,   14,   14,   24,   25,   26,   27,   25,   25,   25,
+       25,   28,   29,   21,   30,   30,   30,   30,   30,   31,
+       30,   32,   30,   30,   30,   30,   33,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   34,   35,   36,  117,   88,   67,   37,  153,
+       38,   39,   15,   16,   17,   39,   40,   41,   21,   42,
+       43,   23,   39,   39,   44,   45,   46,   47,   45,   45,
+       45,   45,   28,   29,   21,   48,   48,   48,   48,   48,
+       49,   48,   50,   48,   48,   48,   48,   51,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   52,   52,  122,  118,   21,   21,   21,
+       21,   15,   54,   55,   67,   56,  123,   77,  152,   67,
+       57,   77,   77,   81,   81,   81,   81,   81,   81,   81,
+       67,   57,   56,   96,   67,  117,   88,   77,   82,   82,
+       82,   82,   82,   83,  130,   79,   58,   15,   54,   55,
+       78,   56,   95,   77,  117,   88,   57,   77,   77,  105,
+      105,  105,  105,  105,  105,  105,   67,   57,   56,   67,
+       67,   67,  131,   77,  106,  106,  106,  106,  106,  107,
+       67,  133,   58,   15,   16,   17,  102,   18,  103,   67,
+
+      117,   88,   67,  132,  134,   77,   67,   67,   67,   77,
+      154,   67,  117,   88,   77,  152,  120,  141,  143,  152,
+      152,  162,   95,   67,  168,   77,   77,  145,   59,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   15,   16,   17,   95,   18,  142,
+      144,   67,   67,  142,  155,   67,  195,  182,   67,   67,
+       67,   67,  223,  183,   67,   67,  197,  169,  141,   67,
+       94,  209,   66,  198,  210,  216,  196,  208,   95,   59,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   15,   16,   17,   61,   18,
+
+      142,   21,   21,   62,   63,   64,  195,  202,   67,   77,
+      194,  190,  175,   77,   77,   21,   65,   21,  189,  181,
+      184,  236,  180,   77,  174,  173,  196,   77,   77,   77,
+       33,   15,   16,   17,   61,   18,   67,   21,   21,   62,
+       63,   64,   78,   77,   95,  206,  206,  206,  206,  206,
+      207,   21,   65,   21,  203,  229,  102,  205,  205,  205,
+      205,  205,  205,  205,  195,  237,   33,   79,  221,   80,
+       80,   80,   80,   80,   80,   80,  167,   67,  224,   67,
+      224,  115,   88,  166,  196,  116,  143,   67,  222,   95,
+      116,   67,   66,   67,   84,   84,   84,   84,   84,   84,
+
+       84,  116,  116,  211,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,  116,   84,   87,   88,
+       66,  161,   66,  160,   66,   66,   95,   66,  213,  213,
+      213,  213,  213,  213,  213,  254,  221,  221,   66,   66,
+       66,  103,  151,  104,  104,  104,  104,  104,  104,  104,
+      214,  214,  214,  214,  214,  215,  222,  222,  150,   67,
+      114,  112,  139,  138,   94,   95,   94,  100,  108,  108,
+      108,  108,  108,  108,  108,  248,  248,  248,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+       98,  108,  111,   88,   94,   95,   94,   67,   94,   94,
+
+      129,   94,  229,  128,  248,  248,  248,  237,  259,  253,
+      253,  253,   94,   94,   94,  120,  120,  120,   66,  120,
+      270,  120,  120,  275,  120,   66,   67,  253,  253,  253,
+      124,   95,   95,   75,   73,  120,  120,  120,   71,   69,
+       68,   67,  114,  112,   67,  110,  109,   95,  100,   95,
+      121,   66,   98,   66,   95,   66,   93,   66,   66,   92,
+       66,   91,  286,  286,  286,  286,  286,  286,   90,   89,
+       86,   66,   66,   66,   72,   85,   72,   75,   72,   73,
+       72,   72,   71,   72,   67,  289,  289,  289,  289,  289,
+      289,   69,   68,   67,   72,   72,   72,   74,  292,   74,
+
+      292,   74,  292,   74,   74,  292,   74,   95,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,   74,   74,   74,
+       76,  292,   66,  292,   76,  292,   66,   66,  292,   76,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+       76,   76,   66,  125,  126,  127,  125,  125,  125,  125,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,   67,   94,  292,   94,  292,
+       94,  292,   94,   94,  292,   94,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,   94,   94,   94,   97,
+      292,   97,  292,   97,  292,   97,   97,  292,   97,  292,
+
+      292,  292,  292,  292,  292,  292,  292,  292,  292,   97,
+       97,   97,   99,  292,   99,  292,   99,  292,   99,   99,
+      292,   99,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,   99,   99,   99,  101,  292,   94,  292,  101,
+      292,   94,   94,  292,  101,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  101,  101,   94,  135,  136,
+      137,  135,  135,  135,  135,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+       95,  120,  120,  120,  140,  120,  292,  120,  120,  292,
+      120,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+
+      292,  120,  120,  120,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  121,  145,  292,  146,
+      146,  146,  146,  146,  146,  146,  145,  292,  147,  147,
+      147,  147,  147,  147,  147,  145,  292,  148,  148,  148,
+      148,  148,  149,  146,  155,  292,  156,  156,  156,  156,
+      156,  156,  156,  155,  292,  157,  157,  157,  157,  157,
+      157,  157,  155,  292,  158,  158,  158,  158,  158,  159,
+      156,  163,  164,  165,  163,  163,  163,  163,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,   67,  145,  292,  146,  146,  146,  146,
+
+      146,  146,  146,  145,  292,  146,  146,  146,  146,  146,
+      146,  146,  145,  292,  146,  146,  146,  146,  146,  146,
+       66,   94,  292,  170,  171,  172,  170,  170,  170,  170,
+      155,  292,  156,  156,  156,  156,  156,  156,  156,  155,
+      292,  156,  156,  156,  156,  156,  156,  156,  155,  292,
+      156,  156,  156,  156,  156,  156,   94,  175,  292,  176,
+      176,  176,  176,  176,  176,  176,  175,  292,  177,  177,
+      177,  177,  177,  177,  177,  175,  292,  178,  178,  178,
+      178,  178,  179,  176,  184,  292,  185,  185,  185,  185,
+      185,  185,  185,  184,  292,  186,  186,  186,  186,  186,
+
+      186,  186,  184,  292,  187,  187,  187,  187,  187,  188,
+      185,  191,  192,  193,  191,  191,  191,  191,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,   67,  175,  292,  176,  176,  176,  176,
+      176,  176,  176,  175,  292,  176,  176,  176,  176,  176,
+      176,  176,  175,  292,  176,  176,  176,  176,  176,  176,
+       66,   94,  292,  199,  200,  201,  199,  199,  199,  199,
+      184,  292,  185,  185,  185,  185,  185,  185,  185,  184,
+      292,  185,  185,  185,  185,  185,  185,  185,  184,  292,
+      185,  185,  185,  185,  185,  185,   94,  203,  204,  204,
+
+      204,  204,  204,  204,  204,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+       67,   94,  211,  212,  212,  212,  212,  212,  212,  212,
+      217,  218,  219,  220,  217,  217,  217,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,   67,   94,  225,  226,  227,  228,  225,  225,
+      225,  229,  292,  230,  230,  230,  230,  230,  230,  230,
+      229,  292,  231,  231,  231,  231,  231,  231,  231,  229,
+      292,  232,  232,  232,  232,  232,  233,  234,  229,  292,
+      235,  235,  235,  230,  230,  230,  230,  237,  292,  238,
+
+      238,  238,  238,  238,  238,  238,  237,  292,  239,  239,
+      239,  239,  239,  239,  239,  237,  292,  240,  240,  240,
+      240,  240,  241,  242,  237,  292,  243,  243,  243,  238,
+      238,  238,  238,  244,  245,  246,  244,  244,  244,  244,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,   67,  229,  292,  234,  234,
+      234,  234,  234,  234,  234,  229,  292,  234,  234,  234,
+      234,  234,  234,  234,  229,  292,  234,  234,  234,  234,
+      234,  234,  247,  229,  292,  247,  247,  247,  247,  247,
+      247,  247,   94,  292,  249,  250,  251,  249,  249,  249,
+
+      249,  237,  292,  242,  242,  242,  242,  242,  242,  242,
+      237,  292,  242,  242,  242,  242,  242,  242,  242,  237,
+      292,  242,  242,  242,  242,  242,  242,  252,  237,  292,
+      252,  252,  252,  252,  252,  252,  252,  254,  292,  255,
+      255,  255,  255,  255,  255,  255,  254,  292,  256,  256,
+      256,  256,  256,  256,  256,  254,  292,  257,  257,  257,
+      257,  257,  258,  255,   66,  292,  247,  247,  247,  247,
+      247,  247,  247,  259,  292,  260,  260,  260,  260,  260,
+      260,  260,  259,  292,  261,  261,  261,  261,  261,  261,
+      261,  259,  292,  262,  262,  262,  262,  262,  263,  260,
+
+       94,  292,  252,  252,  252,  252,  252,  252,  252,  264,
+      265,  266,  264,  264,  264,  264,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,   67,  254,  292,  255,  255,  255,  255,  255,  255,
+      255,  254,  292,  255,  255,  255,  255,  255,  255,  255,
+      254,  292,  255,  255,  255,  255,  255,  255,   66,  267,
+      268,  269,  267,  267,  267,  267,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,   95,  259,  292,  260,  260,  260,  260,  260,  260,
+      260,  259,  292,  260,  260,  260,  260,  260,  260,  260,
+
+      259,  292,  260,  260,  260,  260,  260,  260,   94,  270,
+      292,  271,  271,  271,  271,  271,  271,  271,  270,  292,
+      272,  272,  272,  272,  272,  272,  272,  270,  292,  273,
+      273,  273,  273,  273,  274,  271,  275,  292,  276,  276,
+      276,  276,  276,  276,  276,  275,  292,  277,  277,  277,
+      277,  277,  277,  277,  275,  292,  278,  278,  278,  278,
+      278,  279,  276,   66,  292,  280,  281,  282,  280,  280,
+      280,  280,  270,  292,  271,  271,  271,  271,  271,  271,
+      271,  270,  292,  271,  271,  271,  271,  271,  271,  271,
+      270,  292,  271,  271,  271,  271,  271,  271,   66,   94,
+
+      292,  283,  284,  285,  283,  283,  283,  283,  275,  292,
+      276,  276,  276,  276,  276,  276,  276,  275,  292,  276,
+      276,  276,  276,  276,  276,  276,  275,  292,  276,  276,
+      276,  276,  276,  276,   94,   66,  292,  286,  286,  286,
+      286,  286,  286,  286,   66,  292,  280,  280,  280,  280,
+      280,  280,  280,   66,  292,  287,  287,  287,  287,  287,
+      288,  286,   94,  292,  289,  289,  289,  289,  289,  289,
+      289,   94,  292,  283,  283,  283,  283,  283,  283,  283,
+       94,  292,  290,  290,  290,  290,  290,  291,  289,  286,
+      286,  286,  286,  286,  286,  286,  292,  292,  292,  292,
+
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,   67,  289,  289,  289,  289,  289,  289,  289,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,   95,   53,   53,   53,   53,   53,
+       53,   53,   21,   21,   21,   21,   21,   21,   21,   14,
+       14,   14,   14,   14,   14,   14,   66,  292,  292,  292,
+       66,   66,   66,   70,   70,   70,   70,   70,   70,   70,
+       72,  292,  292,  292,   72,   72,   72,   74,  292,  292,
+      292,   74,   74,   74,   76,  292,   76,  292,   76,   76,
+       76,   94,  292,  292,  292,   94,   94,   94,   97,  292,
+
+      292,  292,   97,   97,   97,   99,  292,  292,  292,   99,
+       99,   99,  101,  292,  101,  292,  101,  101,  101,  113,
+      292,  113,  113,  113,  292,  113,  119,  119,  119,  119,
+      119,  119,  119,   77,  292,   77,  292,   77,   77,   77,
+      120,  120,  120,  120,  120,  120,  120,   13,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292
+
     } ;
 
-static yyconst short int yy_chk[3104] =
+static yyconst short int yy_chk[1901] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        2,    2,    2,  107,  124,  124,    2,  107,    2,    3,
+        1,    1,    2,    2,    2,   59,   59,  131,    2,  131,
+        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
 
-        7,    7,    7,    7,    7,    7,    7,    7,    7,   14,
-       14,   14,  101,  101,  103,   14,   14,   20,   14,   20,
-       94,   20,   20,  103,  135,  106,  104,  159,   14,   14,
-       14,  104,  173,  105,  106,  173,   20,   23,   23,   23,
-       23,   23,   23,   14,   94,  105,  101,  146,  135,   20,
-       21,  159,   21,   21,   21,   21,   21,   21,   21,   22,
-       22,   22,   22,   22,   22,   22,   41,   58,   58,   58,
-       58,   58,   58,   58,   21,   26,  172,  172,  146,   26,
-       26,   26,   41,  174,   26,  174,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,  176,   41,  176,   26,   26,
-
-       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   29,   29,   29,  142,  142,
-      175,   29,   29,   38,   29,   39,  177,   38,   38,   39,
-       39,  472,  201,  175,   29,   29,   29,  177,  114,  207,
-      207,   38,   38,   39,   39,   59,   59,   59,   59,   59,
-       59,  469,  142,  218,  114,   38,  201,   39,   42,  463,
-       42,   42,   42,   42,   42,   42,   42,   43,  114,   43,
-       43,   43,   43,   43,   43,   43,   44,  218,   44,   44,
-       44,   44,   44,   44,   44,   47,   47,   47,   47,   47,
-
-       47,   47,  147,  208,  147,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,  208,   47,   50,
-       50,  192,   56,   50,   56,  224,   56,   56,   50,  310,
-      437,  310,   70,  238,   70,  147,   70,   70,   50,   50,
-      238,   56,   72,   72,   72,   72,   72,   72,   72,  166,
-      166,   70,  192,   50,   56,   57,  224,   57,   57,   57,
-       57,   57,   57,   57,   70,   73,   73,   73,   73,   73,
-       73,  116,  116,  116,  116,  116,  116,  116,  209,   57,
-       60,  290,  260,  166,   60,   60,   60,  290,  237,   60,
-      209,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-
-      237,  260,  405,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       63,   63,   63,  262,  261,  359,   63,   63,   90,   63,
-       90,  261,   90,   90,  357,  226,  262,  269,  328,   63,
-       63,   63,   66,   66,   66,   66,  255,   90,   66,   66,
-      110,   66,  322,  112,  110,  110,  269,  112,  112,  226,
-       90,   66,   66,   66,  271,  278,  313,  351,  110,  110,
-      255,  112,  112,  276,  283,  291,   66,   67,   67,   67,
-      308,  303,  110,   67,   67,  112,   67,  291,  271,  278,
-
-      115,  351,  276,  283,  115,  299,   67,   67,   67,  115,
-      120,  305,  120,  120,  120,  120,  120,  120,  319,  115,
-      115,   67,   71,  288,   71,   71,   71,   71,   71,   71,
-       71,  309,  336,  295,  305,  132,  317,  132,  323,  132,
-      132,  319,  288,  287,  336,  325,   71,   74,  282,  275,
-      309,   74,   74,   74,  132,  317,   74,  323,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,  132,  325,  268,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   77,   77,   77,
-
-      311,  329,  311,   77,   77,  156,   77,  156,  334,  156,
-      156,  264,  366,  259,  253,  311,   77,   77,   77,   79,
-      329,   79,  373,  252,  156,   79,   79,  334,   79,  210,
-      210,  210,  210,  210,  210,  210,  366,  156,   79,   79,
-       79,   82,   82,   82,  248,  247,  373,   82,   82,  214,
-       82,  214,  214,  214,  214,  214,  214,  388,  388,  388,
-       82,   82,   82,  263,  263,  263,  263,  263,  263,  263,
-      356,  243,  356,  356,  356,   82,   87,  364,   87,  364,
-      364,  364,   87,   87,  267,   87,  267,  267,  267,  267,
-      267,  267,  400,  242,  356,   87,   87,   87,   89,  371,
-
-       89,  371,  371,  371,   89,   89,  236,   89,  285,  285,
-      285,  285,  285,  285,  285,  235,  400,   89,   89,   89,
-       92,  231,   92,  371,   92,  230,   92,   92,  223,   92,
-      286,  286,  286,  286,  286,  286,  222,  216,  410,   92,
-       92,   92,   93,   93,   93,   93,   93,   93,   93,  297,
-      297,  297,  297,  297,  297,  297,  298,  298,  298,  298,
-      298,  298,  410,  215,   93,  118,  211,  118,  118,  118,
-      118,  118,  118,  118,  119,  206,  119,  119,  119,  119,
-      119,  119,  119,  127,  378,  127,  378,  378,  378,  127,
-      127,  205,  127,  301,  301,  301,  301,  301,  301,  301,
-
-      199,  198,  127,  127,  127,  129,  194,  129,  378,  190,
-      189,  129,  129,  188,  129,  302,  302,  302,  302,  302,
-      302,  415,  184,  183,  129,  129,  129,  131,  171,  131,
-      383,  383,  383,  131,  131,  170,  131,  312,  312,  312,
-      312,  312,  312,  312,  165,  415,  131,  131,  131,  133,
-      164,  133,  383,  133,  162,  133,  133,  154,  133,  316,
-      316,  316,  316,  316,  316,  316,  152,  151,  133,  133,
-      133,  134,  134,  134,  134,  134,  134,  134,  358,  358,
-      358,  358,  358,  358,  358,  387,  387,  387,  387,  387,
-      387,  387,  149,  134,  144,  143,  144,  432,  141,  140,
-
-      144,  144,  138,  144,  393,  393,  393,  398,  398,  398,
-      442,  130,  128,  144,  144,  144,  145,  145,  145,  145,
-      126,  432,  145,  145,  447,  145,  393,  123,  122,  398,
-      117,  109,  100,   99,  442,  145,  145,  145,  404,  404,
-      404,  404,  404,  404,  404,   97,   91,   88,  447,   86,
-      145,  148,  148,  148,   85,   83,   81,  148,  148,  408,
-      148,  408,  408,  408,  408,  408,  408,   80,   78,   76,
-      148,  148,  148,  436,  436,  436,  436,  436,  436,  436,
-       75,   69,   68,   64,   62,  148,  153,   61,  153,   55,
-       53,   52,  153,  153,  440,  153,  440,  440,  440,  440,
-
-      440,  440,   51,   49,   48,  153,  153,  153,  155,   37,
-      155,   34,   33,   32,  155,  155,   31,  155,  454,  454,
-      454,  454,  454,  454,  454,   30,   28,  155,  155,  155,
-      157,   27,  157,   18,  157,   15,  157,  157,   13,  157,
-      455,  455,  455,  455,  455,  455,  455,   11,   10,  157,
-      157,  157,  158,  158,  158,  158,  158,  158,  158,  456,
-      456,  456,  456,  456,  456,  456,  467,  467,  467,  467,
-      467,  467,  467,    9,  158,  167,    0,  167,  167,  167,
-      167,  167,  167,  167,  168,    0,  168,  168,  168,  168,
-      168,  168,  168,  169,    0,  169,  169,  169,  169,  169,
-
-      169,  169,  178,    0,  178,    0,    0,    0,  178,  178,
-        0,  178,  465,  465,  465,  465,  465,  465,    0,    0,
-        0,  178,  178,  178,  468,  468,  468,  468,  468,  468,
-        0,    0,    0,    0,  465,    0,  178,  179,    0,  179,
-        0,    0,    0,  179,  179,    0,  179,  471,  471,  471,
-      471,  471,  471,    0,    0,    0,  179,  179,  179,    0,
-      474,  474,  474,  474,  474,  474,    0,    0,    0,  471,
-        0,  179,  180,    0,  180,  180,  180,  180,  180,  180,
-      180,  181,  474,  181,  181,  181,  181,  181,  181,  181,
-      182,    0,  182,  182,  182,  182,  182,  182,  182,  185,
-
-        0,  185,  185,  185,  185,  185,  185,  185,  186,    0,
-      186,  186,  186,  186,  186,  186,  186,  187,    0,  187,
-      187,  187,  187,  187,  187,  187,  195,    0,  195,  195,
-      195,  195,  195,  195,  195,  196,    0,  196,  196,  196,
-      196,  196,  196,  196,  197,    0,  197,  197,  197,  197,
-      197,  197,  197,  200,  200,  200,  200,  200,  200,  200,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    5,    6,   62,  307,    5,    6,    5,
+        6,    7,    7,    7,  130,    7,   64,   24,  130,   62,
+        7,   24,   24,   26,   26,   26,   26,   26,   26,   26,
+       64,    7,    7,  302,   89,   87,   87,   24,   27,   27,
+       27,   27,   27,   27,   89,   80,    7,    8,    8,    8,
+       24,    8,  289,   44,  115,  115,    8,   44,   44,   46,
+       46,   46,   46,   46,   46,   46,   90,    8,    8,   80,
+       87,   92,   90,   44,   47,   47,   47,   47,   47,   47,
+       91,   92,    8,    9,    9,    9,   44,    9,  104,   93,
+
+      117,  117,  154,   91,   93,  124,  132,  134,  133,  124,
+      133,  286,  111,  111,  124,  154,  121,  120,  121,  134,
+      132,  142,  104,  152,  152,  124,  124,  146,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,   10,   10,   10,  111,   10,  120,
+      121,  146,  153,  142,  156,  169,  181,  168,  182,  183,
+      209,  198,  209,  169,  197,  236,  182,  153,  162,  168,
+      215,  197,  207,  183,  198,  202,  181,  194,  156,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   11,   11,   11,   11,   11,
+
+      162,   11,   11,   11,   11,   11,  190,  189,  223,   76,
+      180,  174,  176,   76,   76,   11,   11,   11,  173,  167,
+      185,  223,  166,  101,  161,  160,  190,  101,  101,   76,
+       11,   12,   12,   12,   12,   12,  176,   12,   12,   12,
+       12,   12,   76,  101,  185,  193,  193,  193,  193,  193,
+      193,   12,   12,   12,  204,  230,  101,  192,  192,  192,
+      192,  192,  192,  192,  195,  238,   12,   25,  208,   25,
+       25,   25,   25,   25,   25,   25,  151,  204,  210,  230,
+      210,   58,   58,  150,  195,   58,  144,  140,  208,  238,
+       58,   25,   30,  210,   30,   30,   30,   30,   30,   30,
+
+       30,   58,   58,  212,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   58,   30,   33,   33,
+       33,  139,   33,  138,   33,   33,  212,   33,  200,  200,
+      200,  200,  200,  200,  200,  255,  216,  221,   33,   33,
+       33,   45,  129,   45,   45,   45,   45,   45,   45,   45,
+      201,  201,  201,  201,  201,  201,  216,  221,  128,  255,
+      114,  112,  110,  109,  107,   45,   48,   99,   48,   48,
+       48,   48,   48,   48,   48,  248,  248,  248,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       97,   48,   51,   51,   51,   94,   51,  248,   51,   51,
+
+       86,   51,  235,   85,  235,  235,  235,  243,  260,  243,
+      243,  243,   51,   51,   51,   61,   61,   61,   61,   61,
+      271,   61,   61,  276,   61,   83,  235,  253,  253,  253,
+       77,  243,  260,   74,   72,   61,   61,   61,   70,   69,
+       68,   66,   55,   52,  271,   50,   49,  276,   43,  253,
+       61,   67,   41,   67,   39,   67,   38,   67,   67,   37,
+       67,   36,  288,  288,  288,  288,  288,  288,   35,   34,
+       32,   67,   67,   67,   73,   31,   73,   22,   73,   19,
+       73,   73,   18,   73,  288,  291,  291,  291,  291,  291,
+      291,   17,   15,   14,   73,   73,   73,   75,   13,   75,
+
+        0,   75,    0,   75,   75,    0,   75,  291,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   75,   75,   75,
+       78,    0,   78,    0,   78,    0,   78,   78,    0,   78,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       78,   78,   78,   79,   79,   79,   79,   79,   79,   79,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   79,   95,    0,   95,    0,
+       95,    0,   95,   95,    0,   95,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   95,   95,   95,   98,
+        0,   98,    0,   98,    0,   98,   98,    0,   98,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   98,
+       98,   98,  100,    0,  100,    0,  100,    0,  100,  100,
+        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  100,  100,  100,  102,    0,  102,    0,  102,
+        0,  102,  102,    0,  102,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  102,  102,  102,  103,  103,
+      103,  103,  103,  103,  103,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      103,  119,  119,  119,  119,  119,    0,  119,  119,    0,
+      119,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  119,  119,  119,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  119,  125,    0,  125,
+      125,  125,  125,  125,  125,  125,  126,    0,  126,  126,
+      126,  126,  126,  126,  126,  127,    0,  127,  127,  127,
+      127,  127,  127,  127,  135,    0,  135,  135,  135,  135,
+      135,  135,  135,  136,    0,  136,  136,  136,  136,  136,
+      136,  136,  137,    0,  137,  137,  137,  137,  137,  137,
+      137,  145,  145,  145,  145,  145,  145,  145,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  200,  202,    0,  202,  202,
-      202,  202,  202,  202,  202,  203,    0,  203,  203,  203,
-      203,  203,  203,  203,  204,    0,  204,  204,  204,  204,
-
-      204,  204,  204,  212,    0,  212,  212,  212,  212,  212,
-      212,  212,  213,    0,  213,  213,  213,  213,  213,  213,
-      213,  217,    0,  217,  217,  217,  217,  217,  217,  217,
-      219,    0,  219,  219,  219,  219,  219,  219,  219,  220,
-        0,  220,  220,  220,  220,  220,  220,  220,  221,    0,
-      221,  221,  221,  221,  221,  221,  221,  225,    0,  225,
-      225,  225,  225,  225,  225,  225,  227,    0,  227,  227,
-      227,  227,  227,  227,  227,  228,    0,  228,  228,  228,
-      228,  228,  228,  228,  229,    0,  229,  229,  229,  229,
-      229,  229,  229,  232,    0,  232,  232,  232,  232,  232,
-
-      232,  232,  233,    0,  233,  233,  233,  233,  233,  233,
-      233,  234,    0,  234,  234,  234,  234,  234,  234,  234,
-      239,    0,  239,  239,  239,  239,  239,  239,  239,  240,
-        0,  240,  240,  240,  240,  240,  240,  240,  241,    0,
-      241,  241,  241,  241,  241,  241,  241,  244,    0,  244,
+        0,    0,    0,  145,  147,    0,  147,  147,  147,  147,
+
+      147,  147,  147,  148,    0,  148,  148,  148,  148,  148,
+      148,  148,  149,    0,  149,  149,  149,  149,  149,  149,
+      149,  155,    0,  155,  155,  155,  155,  155,  155,  155,
+      157,    0,  157,  157,  157,  157,  157,  157,  157,  158,
+        0,  158,  158,  158,  158,  158,  158,  158,  159,    0,
+      159,  159,  159,  159,  159,  159,  159,  163,    0,  163,
+      163,  163,  163,  163,  163,  163,  164,    0,  164,  164,
+      164,  164,  164,  164,  164,  165,    0,  165,  165,  165,
+      165,  165,  165,  165,  170,    0,  170,  170,  170,  170,
+      170,  170,  170,  171,    0,  171,  171,  171,  171,  171,
+
+      171,  171,  172,    0,  172,  172,  172,  172,  172,  172,
+      172,  175,  175,  175,  175,  175,  175,  175,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  175,  177,    0,  177,  177,  177,  177,
+      177,  177,  177,  178,    0,  178,  178,  178,  178,  178,
+      178,  178,  179,    0,  179,  179,  179,  179,  179,  179,
+      179,  184,    0,  184,  184,  184,  184,  184,  184,  184,
+      186,    0,  186,  186,  186,  186,  186,  186,  186,  187,
+        0,  187,  187,  187,  187,  187,  187,  187,  188,    0,
+      188,  188,  188,  188,  188,  188,  188,  191,  191,  191,
+
+      191,  191,  191,  191,  191,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      191,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      203,  203,  203,  203,  203,  203,  203,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  203,  211,  211,  211,  211,  211,  211,  211,
+      211,  217,    0,  217,  217,  217,  217,  217,  217,  217,
+      218,    0,  218,  218,  218,  218,  218,  218,  218,  219,
+        0,  219,  219,  219,  219,  219,  219,  219,  220,    0,
+      220,  220,  220,  220,  220,  220,  220,  225,    0,  225,
+
+      225,  225,  225,  225,  225,  225,  226,    0,  226,  226,
+      226,  226,  226,  226,  226,  227,    0,  227,  227,  227,
+      227,  227,  227,  227,  228,    0,  228,  228,  228,  228,
+      228,  228,  228,  229,  229,  229,  229,  229,  229,  229,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  229,  231,    0,  231,  231,
+      231,  231,  231,  231,  231,  232,    0,  232,  232,  232,
+      232,  232,  232,  232,  233,    0,  233,  233,  233,  233,
+      233,  233,  233,  234,    0,  234,  234,  234,  234,  234,
+      234,  234,  237,    0,  237,  237,  237,  237,  237,  237,
+
+      237,  239,    0,  239,  239,  239,  239,  239,  239,  239,
+      240,    0,  240,  240,  240,  240,  240,  240,  240,  241,
+        0,  241,  241,  241,  241,  241,  241,  241,  242,    0,
+      242,  242,  242,  242,  242,  242,  242,  244,    0,  244,
       244,  244,  244,  244,  244,  244,  245,    0,  245,  245,
       245,  245,  245,  245,  245,  246,    0,  246,  246,  246,
-      246,  246,  246,  246,  249,    0,  249,  249,  249,  249,
-      249,  249,  249,  250,    0,  250,  250,  250,  250,  250,
-      250,  250,  251,    0,  251,  251,  251,  251,  251,  251,
+      246,  246,  246,  246,  247,    0,  247,  247,  247,  247,
+      247,  247,  247,  249,    0,  249,  249,  249,  249,  249,
+      249,  249,  250,    0,  250,  250,  250,  250,  250,  250,
+      250,  251,    0,  251,  251,  251,  251,  251,  251,  251,
 
-      251,  254,  254,  254,  254,  254,  254,  254,    0,    0,
+      252,    0,  252,  252,  252,  252,  252,  252,  252,  254,
+      254,  254,  254,  254,  254,  254,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  254,  256,    0,  256,  256,  256,  256,
-      256,  256,  256,  257,    0,  257,  257,  257,  257,  257,
-      257,  257,  258,    0,  258,  258,  258,  258,  258,  258,
-      258,  265,    0,  265,  265,  265,  265,  265,  265,  265,
-      266,    0,  266,  266,  266,  266,  266,  266,  266,  270,
-        0,  270,  270,  270,  270,  270,  270,  270,  272,    0,
-      272,  272,  272,  272,  272,  272,  272,  273,    0,  273,
-      273,  273,  273,  273,  273,  273,  274,    0,  274,  274,
-
-      274,  274,  274,  274,  274,  277,    0,  277,  277,  277,
-      277,  277,  277,  277,  279,    0,  279,  279,  279,  279,
-      279,  279,  279,  280,    0,  280,  280,  280,  280,  280,
-      280,  280,  281,    0,  281,  281,  281,  281,  281,  281,
-      281,  284,  284,  284,  284,  284,  284,  284,  284,    0,
+        0,  254,  256,    0,  256,  256,  256,  256,  256,  256,
+      256,  257,    0,  257,  257,  257,  257,  257,  257,  257,
+      258,    0,  258,  258,  258,  258,  258,  258,  258,  259,
+      259,  259,  259,  259,  259,  259,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  284,  292,  292,  292,  292,  292,
-      292,  292,  292,  293,  293,  293,  293,  293,  293,  293,
-      293,  294,  294,  294,  294,  294,  294,  294,  294,  296,
-      296,  296,  296,  296,  296,  296,  296,  296,  300,  300,
-
-      300,  300,  300,  300,  300,  300,  300,  304,  304,  304,
-      304,  304,  304,  304,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  304,
-      314,  314,  314,  314,  314,  314,  314,  314,  315,  315,
-      315,  315,  315,  315,  315,  315,  318,  318,  318,  318,
-      318,  318,  318,  318,  324,  324,  324,  324,  324,  324,
-      324,  324,  330,    0,  330,  330,  330,  330,  330,  330,
-      330,  331,    0,  331,  331,  331,  331,  331,  331,  331,
-      332,    0,  332,  332,  332,  332,  332,  332,  332,  333,
-        0,  333,  333,  333,  333,  333,  333,  333,  338,    0,
-
-      338,  338,  338,  338,  338,  338,  338,  339,    0,  339,
-      339,  339,  339,  339,  339,  339,  340,    0,  340,  340,
-      340,  340,  340,  340,  340,  341,    0,  341,  341,  341,
-      341,  341,  341,  341,  342,    0,  342,  342,  342,  342,
-      342,  342,  342,  343,    0,  343,  343,  343,  343,  343,
-      343,  343,  344,    0,  344,  344,  344,  344,  344,  344,
-      344,  345,    0,  345,  345,  345,  345,  345,  345,  345,
-      346,    0,  346,  346,  346,  346,  346,  346,  346,  347,
-        0,  347,  347,  347,  347,  347,  347,  347,  348,    0,
-      348,  348,  348,  348,  348,  348,  348,  349,    0,  349,
-
-      349,  349,  349,  349,  349,  349,  350,  350,  350,  350,
-      350,  350,  350,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  350,  352,
-        0,  352,  352,  352,  352,  352,  352,  352,  353,    0,
-      353,  353,  353,  353,  353,  353,  353,  354,    0,  354,
-      354,  354,  354,  354,  354,  354,  355,    0,  355,  355,
-      355,  355,  355,  355,  355,  360,    0,  360,  360,  360,
-      360,  360,  360,  360,  361,    0,  361,  361,  361,  361,
-      361,  361,  361,  362,    0,  362,  362,  362,  362,  362,
-      362,  362,  363,    0,  363,  363,  363,  363,  363,  363,
-
-      363,  365,    0,  365,  365,  365,  365,  365,  365,  365,
-      367,    0,  367,  367,  367,  367,  367,  367,  367,  368,
-        0,  368,  368,  368,  368,  368,  368,  368,  369,    0,
-      369,  369,  369,  369,  369,  369,  369,  370,    0,  370,
-      370,  370,  370,  370,  370,  370,  372,    0,  372,  372,
-      372,  372,  372,  372,  372,  374,    0,  374,  374,  374,
-      374,  374,  374,  374,  375,    0,  375,  375,  375,  375,
-      375,  375,  375,  376,    0,  376,  376,  376,  376,  376,
-      376,  376,  377,    0,  377,  377,  377,  377,  377,  377,
-      377,  379,    0,  379,  379,  379,  379,  379,  379,  379,
-
-      380,    0,  380,  380,  380,  380,  380,  380,  380,  381,
-        0,  381,  381,  381,  381,  381,  381,  381,  382,    0,
-      382,  382,  382,  382,  382,  382,  382,  384,    0,  384,
-      384,  384,  384,  384,  384,  384,  385,    0,  385,  385,
-      385,  385,  385,  385,  385,  386,    0,  386,  386,  386,
-      386,  386,  386,  386,  389,    0,  389,  389,  389,  389,
-      389,  389,  389,  390,    0,  390,  390,  390,  390,  390,
-      390,  390,  391,    0,  391,  391,  391,  391,  391,  391,
-      391,  392,    0,  392,  392,  392,  392,  392,  392,  392,
-      394,    0,  394,  394,  394,  394,  394,  394,  394,  395,
-
-        0,  395,  395,  395,  395,  395,  395,  395,  396,    0,
-      396,  396,  396,  396,  396,  396,  396,  397,    0,  397,
-      397,  397,  397,  397,  397,  397,  399,  399,  399,  399,
-      399,  399,  399,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  399,  401,
-        0,  401,  401,  401,  401,  401,  401,  401,  402,    0,
-      402,  402,  402,  402,  402,  402,  402,  403,    0,  403,
-      403,  403,  403,  403,  403,  403,  406,    0,  406,  406,
-      406,  406,  406,  406,  406,  407,    0,  407,  407,  407,
-      407,  407,  407,  407,  409,  409,  409,  409,  409,  409,
-
-      409,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  409,  411,    0,  411,
-      411,  411,  411,  411,  411,  411,  412,    0,  412,  412,
-      412,  412,  412,  412,  412,  413,    0,  413,  413,  413,
-      413,  413,  413,  413,  414,  414,  414,  414,  414,  414,
-      414,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  414,  416,    0,  416,
-      416,  416,  416,  416,  416,  416,  417,    0,  417,  417,
-      417,  417,  417,  417,  417,  418,    0,  418,  418,  418,
-      418,  418,  418,  418,  419,    0,  419,  419,  419,  419,
-
-      419,  419,  419,  420,    0,  420,  420,  420,  420,  420,
-      420,  420,  421,    0,  421,  421,  421,  421,  421,  421,
-      421,  422,    0,  422,  422,  422,  422,  422,  422,  422,
-      423,    0,  423,  423,  423,  423,  423,  423,  423,  424,
-        0,  424,  424,  424,  424,  424,  424,  424,  425,    0,
-      425,  425,  425,  425,  425,  425,  425,  426,    0,  426,
-      426,  426,  426,  426,  426,  426,  427,    0,  427,  427,
-      427,  427,  427,  427,  427,  428,    0,  428,  428,  428,
-      428,  428,  428,  428,  429,    0,  429,  429,  429,  429,
-      429,  429,  429,  430,    0,  430,  430,  430,  430,  430,
-
-      430,  430,  431,    0,  431,  431,  431,  431,  431,  431,
-      431,  433,    0,  433,  433,  433,  433,  433,  433,  433,
-      434,    0,  434,  434,  434,  434,  434,  434,  434,  435,
-        0,  435,  435,  435,  435,  435,  435,  435,  438,    0,
-      438,  438,  438,  438,  438,  438,  438,  439,    0,  439,
-      439,  439,  439,  439,  439,  439,  441,    0,  441,  441,
-      441,  441,  441,  441,  441,  443,    0,  443,  443,  443,
-      443,  443,  443,  443,  444,    0,  444,  444,  444,  444,
-      444,  444,  444,  445,    0,  445,  445,  445,  445,  445,
-      445,  445,  446,    0,  446,  446,  446,  446,  446,  446,
-
-      446,  448,    0,  448,  448,  448,  448,  448,  448,  448,
-      449,    0,  449,  449,  449,  449,  449,  449,  449,  450,
-        0,  450,  450,  450,  450,  450,  450,  450,  451,    0,
-      451,  451,  451,  451,  451,  451,  451,  452,    0,  452,
-      452,  452,  452,  452,  452,  452,  453,    0,  453,  453,
-      453,  453,  453,  453,  453,  457,    0,  457,  457,  457,
-      457,  457,  457,  457,  458,    0,  458,  458,  458,  458,
-      458,  458,  458,  459,    0,  459,  459,  459,  459,  459,
-      459,  459,  460,    0,  460,  460,  460,  460,  460,  460,
-      460,  461,    0,  461,  461,  461,  461,  461,  461,  461,
-
-      462,    0,  462,  462,  462,  462,  462,  462,  462,  464,
-      464,  464,  464,  464,  464,  464,    0,    0,    0,    0,
+        0,  259,  261,    0,  261,  261,  261,  261,  261,  261,
+      261,  262,    0,  262,  262,  262,  262,  262,  262,  262,
+
+      263,    0,  263,  263,  263,  263,  263,  263,  263,  264,
+        0,  264,  264,  264,  264,  264,  264,  264,  265,    0,
+      265,  265,  265,  265,  265,  265,  265,  266,    0,  266,
+      266,  266,  266,  266,  266,  266,  267,    0,  267,  267,
+      267,  267,  267,  267,  267,  268,    0,  268,  268,  268,
+      268,  268,  268,  268,  269,    0,  269,  269,  269,  269,
+      269,  269,  269,  270,    0,  270,  270,  270,  270,  270,
+      270,  270,  272,    0,  272,  272,  272,  272,  272,  272,
+      272,  273,    0,  273,  273,  273,  273,  273,  273,  273,
+      274,    0,  274,  274,  274,  274,  274,  274,  274,  275,
+
+        0,  275,  275,  275,  275,  275,  275,  275,  277,    0,
+      277,  277,  277,  277,  277,  277,  277,  278,    0,  278,
+      278,  278,  278,  278,  278,  278,  279,    0,  279,  279,
+      279,  279,  279,  279,  279,  280,    0,  280,  280,  280,
+      280,  280,  280,  280,  281,    0,  281,  281,  281,  281,
+      281,  281,  281,  282,    0,  282,  282,  282,  282,  282,
+      282,  282,  283,    0,  283,  283,  283,  283,  283,  283,
+      283,  284,    0,  284,  284,  284,  284,  284,  284,  284,
+      285,    0,  285,  285,  285,  285,  285,  285,  285,  287,
+      287,  287,  287,  287,  287,  287,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  464,  470,  470,  470,  470,  470,  470,  470,    0,
+        0,  287,  290,  290,  290,  290,  290,  290,  290,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  470,  473,  473,  473,  473,  473,
-      473,  473,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  473,  476,    0,
-        0,    0,  476,    0,  476,  477,  477,  477,  477,  477,
-      477,  477,  478,    0,    0,    0,  478,    0,  478,  479,
-
-        0,    0,    0,  479,    0,  479,  480,    0,    0,  480,
-      480,    0,  480,  481,    0,    0,  481,  481,  481,  482,
-        0,    0,  482,  482,  482,  482,  483,    0,    0,  483,
-      483,  483,  483,  484,    0,    0,  484,  484,  484,  484,
-      485,    0,    0,    0,  485,    0,  485,  486,    0,    0,
-        0,  486,    0,  486,  487,    0,    0,    0,  487,    0,
-      487,  488,    0,    0,  488,  488,    0,  488,  489,    0,
-        0,    0,  489,    0,  489,  490,  490,  490,  490,  490,
-      490,  490,  491,  491,  491,  491,  491,  491,  491,  492,
-        0,    0,    0,  492,    0,  492,  493,    0,    0,    0,
-
-      493,    0,  493,  494,    0,    0,  494,  494,    0,  494,
-      495,  495,  495,  495,  495,  495,  495,  496,    0,    0,
-      496,    0,    0,  496,  497,  497,    0,  497,  497,  497,
-      497,  498,  498,    0,  498,  498,  498,  498,  499,  499,
-      499,  499,  499,  499,  499,  500,  500,  500,  500,  500,
-      500,  500,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-
-      475,  475,  475
+        0,    0,    0,    0,  290,  293,  293,  293,  293,  293,
+      293,  293,  294,  294,  294,  294,  294,  294,  294,  295,
+      295,  295,  295,  295,  295,  295,  296,    0,    0,    0,
+      296,  296,  296,  297,  297,  297,  297,  297,  297,  297,
+      298,    0,    0,    0,  298,  298,  298,  299,    0,    0,
+        0,  299,  299,  299,  300,    0,  300,    0,  300,  300,
+      300,  301,    0,    0,    0,  301,  301,  301,  303,    0,
+
+        0,    0,  303,  303,  303,  304,    0,    0,    0,  304,
+      304,  304,  305,    0,  305,    0,  305,  305,  305,  306,
+        0,  306,  306,  306,    0,  306,  308,  308,  308,  308,
+      308,  308,  308,  309,    0,  309,    0,  309,  309,  309,
+      310,  310,  310,  310,  310,  310,  310,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1209,7 +883,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "parse.lex"
 /*
- * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998-2001 Todd C. Miller <Todd.Miller@courtesan.com>
  * All rights reserved.
  *
  * This code is derived from software contributed by Chris Jepeway
@@ -1268,7 +942,7 @@ char *yytext;
 #include <sys/param.h>
 #include "sudo.h"
 #include "parse.h"
-#include "sudo.tab.h"
+#include <sudo.tab.h>
 
 #ifndef lint
 static const char rcsid[] = "$Sudo$";
@@ -1297,13 +971,18 @@ extern void yyerror              __P((char *));
 #else
 #define LEXTRACE(msg)
 #endif
-#define GOTCMND 1
+/* XXX - convert GOTRUNAS to exclusive state (GOTDEFS cannot be) */
+#define GOTRUNAS 1
+
+#define GOTDEFS 2
 
-#define GOTRUNAS 2
+#define GOTCMND 3
 
-#define GOTDEFS 3
+#define STARTDEFS 4
 
-#line 1307 "lex.yy.c"
+#define INDEFS 5
+
+#line 986 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1457,9 +1136,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 102 "parse.lex"
+#line 106 "parse.lex"
 
-#line 1463 "lex.yy.c"
+#line 1142 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1511,13 +1190,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 476 )
+                               if ( yy_current_state >= 293 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3053 );
+               while ( yy_base[yy_current_state] != 1848 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1545,138 +1224,153 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 103 "parse.lex"
-{                      /* throw away space/tabs */
-                           sawspace = TRUE;    /* but remember for fill_args */
-                       }
+#line 107 "parse.lex"
+BEGIN STARTDEFS;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 107 "parse.lex"
+#line 109 "parse.lex"
 {
-                           sawspace = TRUE;    /* remember for fill_args */
-                           ++sudolineno;
-                           LEXTRACE("\n\t");
-                       }                       /* throw away EOL after \ */
+                           BEGIN INDEFS;
+                           LEXTRACE("DEFVAR ");
+                           fill(yytext, yyleng);
+                           return(DEFVAR);
+                       }
        YY_BREAK
+
 case 3:
 YY_RULE_SETUP
-#line 113 "parse.lex"
+#line 117 "parse.lex"
 {
-                           LEXTRACE("QUOTEDCHAR ");
-                           fill_args(yytext + 1, 1, sawspace);
-                           sawspace = FALSE;
-                       }
+                           BEGIN STARTDEFS;
+                           LEXTRACE(", ");
+                           return(',');
+                       }                       /* return ',' */
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 119 "parse.lex"
+#line 123 "parse.lex"
 {
-                           LEXTRACE("WORD(1) ");
-                           fill(yytext + 1, yyleng - 2);
-                           return(WORD);
-                       }
+                           LEXTRACE("= ");
+                           return('=');
+                       }                       /* return '=' */
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 125 "parse.lex"
+#line 128 "parse.lex"
 {
-                           BEGIN INITIAL;
-                           ++sudolineno;
-                           LEXTRACE("\n");
-                           return(COMMENT);
-                       }
+                           LEXTRACE("+= ");
+                           return('+');
+                       }                       /* return '+' */
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 132 "parse.lex"
+#line 133 "parse.lex"
 {
-                           BEGIN INITIAL;
-                           unput(*yytext);
-                           return(COMMAND);
-                       }                       /* end of command line args */
+                           LEXTRACE("-= ");
+                           return('-');
+                       }                       /* return '-' */
        YY_BREAK
 case 7:
 YY_RULE_SETUP
 #line 138 "parse.lex"
 {
-                           ++sudolineno;
-                           LEXTRACE("\n");
-                           BEGIN INITIAL;
-                           return(COMMENT);
-                       }                       /* return newline */
+                           LEXTRACE("WORD(1) ");
+                           fill(yytext + 1, yyleng - 2);
+                           return(WORD);
+                       }
        YY_BREAK
+
+
 case 8:
 YY_RULE_SETUP
-#line 145 "parse.lex"
+#line 146 "parse.lex"
 {
-                           ++sudolineno;
-                           LEXTRACE("\n");
-                           return(COMMENT);
-                       }                       /* return comments */
+                           LEXTRACE("QUOTEDCHAR ");
+                           fill_args(yytext + 1, 1, sawspace);
+                           sawspace = FALSE;
+                       }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 151 "parse.lex"
+#line 152 "parse.lex"
 {
-                           LEXTRACE("ARG ");
-                           fill_args(yytext, yyleng, sawspace);
-                           sawspace = FALSE;
-                         }                     /* a command line arg */
+                           BEGIN INITIAL;
+                           unput(*yytext);
+                           return(COMMAND);
+                       }                       /* end of command line args */
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 157 "parse.lex"
+#line 158 "parse.lex"
 {
-                           LEXTRACE(", ");
-                           return(',');
-                       }                       /* return ',' */
+                           LEXTRACE("ARG ");
+                           fill_args(yytext, yyleng, sawspace);
+                           sawspace = FALSE;
+                       }                       /* a command line arg */
        YY_BREAK
+
 case 11:
 YY_RULE_SETUP
-#line 162 "parse.lex"
+#line 165 "parse.lex"
 {
-                           if (yyleng % 2 == 1)
-                               return('!');    /* return '!' */
+                           BEGIN GOTDEFS;
+                           switch (yytext[8]) {
+                               case ':':
+                                   LEXTRACE("DEFAULTS_USER ");
+                                   return(DEFAULTS_USER);
+                               case '@':
+                                   LEXTRACE("DEFAULTS_HOST ");
+                                   return(DEFAULTS_HOST);
+                               default:
+                                   LEXTRACE("DEFAULTS ");
+                                   return(DEFAULTS);
+                           }
                        }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 167 "parse.lex"
+#line 180 "parse.lex"
 {
-                           LEXTRACE("= ");
-                           return('=');
-                       }                       /* return '=' */
+                           fill(yytext, yyleng);
+                           switch (*yytext) {
+                               case 'H':
+                                   LEXTRACE("HOSTALIAS ");
+                                   return(HOSTALIAS);
+                               case 'C':
+                                   LEXTRACE("CMNDALIAS ");
+                                   return(CMNDALIAS);
+                               case 'U':
+                                   LEXTRACE("USERALIAS ");
+                                   return(USERALIAS);
+                               case 'R':
+                                   LEXTRACE("RUNASALIAS ");
+                                   BEGIN GOTRUNAS;
+                                   return(RUNASALIAS);
+                           }
+                       }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 172 "parse.lex"
-{
-                           LEXTRACE(": ");
-                           return(':');
-                       }                       /* return ':' */
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 177 "parse.lex"
+#line 199 "parse.lex"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
                                return(NOPASSWD);
                        }
        YY_BREAK
-case 15:
+case 14:
 YY_RULE_SETUP
-#line 183 "parse.lex"
+#line 205 "parse.lex"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
                                return(PASSWD);
                        }
        YY_BREAK
-case 16:
+case 15:
 YY_RULE_SETUP
-#line 189 "parse.lex"
+#line 211 "parse.lex"
 {
                            /* netgroup */
                            fill(yytext, yyleng);
@@ -1684,9 +1378,9 @@ YY_RULE_SETUP
                            return(NETGROUP);
                        }
        YY_BREAK
-case 17:
+case 16:
 YY_RULE_SETUP
-#line 196 "parse.lex"
+#line 218 "parse.lex"
 {
                            /* UN*X group */
                            fill(yytext, yyleng);
@@ -1694,38 +1388,37 @@ YY_RULE_SETUP
                            return(USERGROUP);
                        }
        YY_BREAK
-case 18:
+case 17:
 YY_RULE_SETUP
-#line 203 "parse.lex"
+#line 225 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 19:
+case 18:
 YY_RULE_SETUP
-#line 209 "parse.lex"
+#line 231 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 20:
+case 19:
 YY_RULE_SETUP
-#line 215 "parse.lex"
+#line 237 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
                                return (RUNAS);
                        }
        YY_BREAK
-case 21:
+case 20:
 YY_RULE_SETUP
-#line 221 "parse.lex"
+#line 243 "parse.lex"
 {
-                           /* Runas_Alias user can run command as or ALL */
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
                                return(ALL);
@@ -1736,9 +1429,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 22:
+case 21:
 YY_RULE_SETUP
-#line 233 "parse.lex"
+#line 254 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1746,124 +1439,127 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 23:
+case 22:
 YY_RULE_SETUP
-#line 240 "parse.lex"
+#line 261 "parse.lex"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
-case 24:
+case 23:
 YY_RULE_SETUP
-#line 244 "parse.lex"
+#line 265 "parse.lex"
 {
-                           if (strcmp(yytext, "ALL") == 0) {
-                               LEXTRACE("ALL ");
-                               return(ALL);
+                           /* directories can't have args... */
+                           if (yytext[yyleng - 1] == '/') {
+                               LEXTRACE("COMMAND ");
+                               fill_cmnd(yytext, yyleng);
+                               return(COMMAND);
                            } else {
-                               fill(yytext, yyleng);
-                               LEXTRACE("ALIAS ");
-                               return(ALIAS);
+                               BEGIN GOTCMND;
+                               LEXTRACE("COMMAND ");
+                               fill_cmnd(yytext, yyleng);
                            }
-                       }
+                       }                       /* a pathname */
        YY_BREAK
-case 25:
+case 24:
 YY_RULE_SETUP
-#line 255 "parse.lex"
+#line 278 "parse.lex"
 {
-                           LEXTRACE("WORD(3) ");
+                           /* a word */
                            fill(yytext, yyleng);
+                           LEXTRACE("WORD(3) ");
                            return(WORD);
                        }
        YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 285 "parse.lex"
+{
+                           LEXTRACE(", ");
+                           return(',');
+                       }                       /* return ',' */
+       YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 261 "parse.lex"
+#line 290 "parse.lex"
 {
-                           BEGIN GOTDEFS;
-                           if (yyleng == 9) {
-                               switch (yytext[8]) {
-                                   case ':' :
-                                       LEXTRACE("DEFAULTS_USER ");
-                                       return(DEFAULTS_USER);
-                                   case '@' :
-                                       LEXTRACE("DEFAULTS_HOST ");
-                                       return(DEFAULTS_HOST);
-                               }
-                           } else {
-                               LEXTRACE("DEFAULTS ");
-                               return(DEFAULTS);
-                           }
-                       }
+                           LEXTRACE("= ");
+                           return('=');
+                       }                       /* return '=' */
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 278 "parse.lex"
+#line 295 "parse.lex"
 {
-                           fill(yytext, yyleng);
-                           if (*yytext == 'H') {
-                               LEXTRACE("HOSTALIAS ");
-                               return(HOSTALIAS);
-                           }
-                           if (*yytext == 'C') {
-                               LEXTRACE("CMNDALIAS ");
-                               return(CMNDALIAS);
-                           }
-                           if (*yytext == 'U') {
-                               LEXTRACE("USERALIAS ");
-                               return(USERALIAS);
-                           }
-                           if (*yytext == 'R') {
-                               LEXTRACE("RUNASALIAS ");
-                               BEGIN GOTRUNAS;
-                               return(RUNASALIAS);
-                           }
-                       }
+                           LEXTRACE(": ");
+                           return(':');
+                       }                       /* return ':' */
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 299 "parse.lex"
+#line 300 "parse.lex"
 {
-                           /* directories can't have args... */
-                           if (yytext[yyleng - 1] == '/') {
-                               LEXTRACE("COMMAND ");
-                               fill_cmnd(yytext, yyleng);
-                               return(COMMAND);
-                           } else {
-                               BEGIN GOTCMND;
-                               LEXTRACE("COMMAND ");
-                               fill_cmnd(yytext, yyleng);
-                           }
-                       }                       /* a pathname */
+                           if (yyleng % 2 == 1)
+                               return('!');    /* return '!' */
+                       }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 312 "parse.lex"
+#line 305 "parse.lex"
 {
-                           /* a word */
-                           fill(yytext, yyleng);
-                           LEXTRACE("WORD(4) ");
-                           return(WORD);
-                       }
+                           BEGIN INITIAL;
+                           ++sudolineno;
+                           LEXTRACE("\n");
+                           return(COMMENT);
+                       }                       /* return newline */
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 319 "parse.lex"
+#line 312 "parse.lex"
+{                      /* throw away space/tabs */
+                           sawspace = TRUE;    /* but remember for fill_args */
+                       }
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 316 "parse.lex"
+{
+                           sawspace = TRUE;    /* remember for fill_args */
+                           ++sudolineno;
+                           LEXTRACE("\n\t");
+                       }                       /* throw away EOL after \ */
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 322 "parse.lex"
+{
+                           BEGIN INITIAL;
+                           ++sudolineno;
+                           LEXTRACE("\n");
+                           return(COMMENT);
+                       }                       /* return comments */
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 329 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
                        }       /* parse error */
        YY_BREAK
-case 31:
+case 34:
 YY_RULE_SETUP
-#line 324 "parse.lex"
+#line 334 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1863 "lex.yy.c"
+#line 1557 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(GOTRUNAS):
 case YY_STATE_EOF(GOTDEFS):
+case YY_STATE_EOF(GOTCMND):
+case YY_STATE_EOF(STARTDEFS):
+case YY_STATE_EOF(INDEFS):
        yyterminate();
 
        case YY_END_OF_BUFFER:
@@ -2155,7 +1851,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 476 )
+                       if ( yy_current_state >= 293 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2190,11 +1886,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 476 )
+               if ( yy_current_state >= 293 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 475);
+       yy_is_jam = (yy_current_state == 292);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2753,7 +2449,7 @@ int main()
        return 0;
        }
 #endif
-#line 324 "parse.lex"
+#line 334 "parse.lex"
 
 static void
 fill(s, len)
index 7e92bfd67b335d42d86c3293d8efc10a416a94d0..c57976f394b9ec74d776cc98e5d24f952aa63e20 100644 (file)
@@ -4,7 +4,7 @@ static char yyrcsid[]
 #if __GNUC__ == 2
   __attribute__ ((unused))
 #endif /* __GNUC__ == 2 */
-  = "$OpenBSD: skeleton.c,v 1.15 2000/01/27 21:34:23 deraadt Exp $";
+  = "$OpenBSD: skeleton.c,v 1.18 2001/11/19 19:02:18 mpech Exp $";
 #endif
 #include <stdlib.h>
 #define YYBYACC 1
@@ -18,7 +18,7 @@ static char yyrcsid[]
 #define YYPREFIX "yy"
 #line 2 "parse.yacc"
 /*
- * Copyright (c) 1996, 1998-2000 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998-2001 Todd C. Miller <Todd.Miller@courtesan.com>
  * All rights reserved.
  *
  * This code is derived from software contributed by Chris Jepeway
@@ -109,6 +109,7 @@ int clearaliases = TRUE;
 int printmatches = FALSE;
 int pedantic = FALSE;
 int keepall = FALSE;
+int quiet = FALSE;
 
 /*
  * Alias types
@@ -210,7 +211,7 @@ yyerror(s)
     /* Save the line the first error occured on. */
     if (errorlineno == -1)
        errorlineno = sudolineno ? sudolineno - 1 : 0;
-    if (s) {
+    if (s && !quiet) {
 #ifndef TRACELEXER
        (void) fprintf(stderr, ">>> sudoers file: %s, line %d <<<\n", s,
            sudolineno ? sudolineno - 1 : 0);
@@ -220,244 +221,260 @@ yyerror(s)
     }
     parse_error = TRUE;
 }
-#line 207 "parse.yacc"
+#line 208 "parse.yacc"
 typedef union {
     char *string;
     int BOOLEAN;
     struct sudo_command command;
     int tok;
 } YYSTYPE;
-#line 231 "sudo.tab.c"
+#line 232 "sudo.tab.c"
 #define COMMAND 257
 #define ALIAS 258
-#define NTWKADDR 259
-#define NETGROUP 260
-#define USERGROUP 261
-#define WORD 262
-#define DEFAULTS 263
-#define DEFAULTS_HOST 264
-#define DEFAULTS_USER 265
-#define RUNAS 266
-#define NOPASSWD 267
-#define PASSWD 268
-#define ALL 269
-#define COMMENT 270
-#define HOSTALIAS 271
-#define CMNDALIAS 272
-#define USERALIAS 273
-#define RUNASALIAS 274
-#define ERROR 275
+#define DEFVAR 259
+#define NTWKADDR 260
+#define NETGROUP 261
+#define USERGROUP 262
+#define WORD 263
+#define DEFAULTS 264
+#define DEFAULTS_HOST 265
+#define DEFAULTS_USER 266
+#define RUNAS 267
+#define NOPASSWD 268
+#define PASSWD 269
+#define ALL 270
+#define COMMENT 271
+#define HOSTALIAS 272
+#define CMNDALIAS 273
+#define USERALIAS 274
+#define RUNASALIAS 275
+#define ERROR 276
 #define YYERRCODE 256
 short yylhs[] = {                                        -1,
     0,    0,    7,    7,    9,    7,    7,    7,    7,    7,
     7,   15,   16,   18,   16,   20,   16,   17,   17,   21,
-   21,   21,   10,   10,   22,   24,   24,    2,    2,    2,
-    2,    2,   23,   23,   25,   28,   29,   28,   26,   26,
-    5,    5,    4,   30,    4,    3,    3,    3,    3,    3,
-   27,   27,   27,    1,    1,    1,   12,   12,   32,   31,
-   19,   19,   13,   13,   34,   33,   35,   35,   14,   14,
-   37,   36,   11,   11,   39,   38,    8,    8,   40,   40,
-    6,    6,    6,    6,    6,
+   21,   21,   21,   21,   10,   10,   22,   24,   24,    2,
+    2,    2,    2,    2,   23,   23,   25,   28,   29,   28,
+   26,   26,    5,    5,    4,   30,    4,    3,    3,    3,
+    3,    3,   27,   27,   27,    1,    1,    1,   12,   12,
+   32,   31,   19,   19,   13,   13,   34,   33,   35,   35,
+   14,   14,   37,   36,   11,   11,   39,   38,    8,    8,
+   40,   40,    6,    6,    6,    6,    6,
 };
 short yylen[] = {                                         2,
     1,    2,    1,    2,    0,    3,    2,    2,    2,    2,
     1,    2,    1,    0,    3,    0,    3,    1,    3,    1,
-    2,    3,    1,    3,    3,    1,    2,    1,    1,    1,
-    1,    1,    1,    3,    3,    1,    0,    3,    0,    2,
-    1,    3,    1,    0,    3,    1,    1,    1,    1,    1,
-    0,    1,    1,    1,    1,    1,    1,    3,    0,    4,
-    1,    3,    1,    3,    0,    4,    1,    3,    1,    3,
-    0,    4,    1,    3,    0,    4,    1,    3,    1,    2,
-    1,    1,    1,    1,    1,
+    2,    3,    3,    3,    1,    3,    3,    1,    2,    1,
+    1,    1,    1,    1,    1,    3,    3,    1,    0,    3,
+    0,    2,    1,    3,    1,    0,    3,    1,    1,    1,
+    1,    1,    0,    1,    1,    1,    1,    1,    1,    3,
+    0,    4,    1,    3,    1,    3,    0,    4,    1,    3,
+    1,    3,    0,    4,    1,    3,    0,    4,    1,    3,
+    1,    2,    1,    1,    1,    1,    1,
 };
 short yydefred[] = {                                      0,
     0,   13,   16,   14,    3,    0,    0,    0,    0,    0,
-    1,    0,   11,    0,    4,    0,    0,   59,    0,   57,
-   65,    0,   63,   75,    0,   73,   71,    0,   69,    2,
-   84,   83,   82,   81,   85,    0,   79,    0,   77,    0,
-    0,   12,    0,   32,   29,   30,   31,   28,    0,   26,
-    0,   61,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,   80,    0,    0,    0,   23,    0,   21,    0,   27,
-    0,    0,   58,    0,   64,    0,   74,    0,   70,   78,
-    0,    0,   22,   19,   62,    0,   56,   55,   54,   37,
-   36,   67,    0,    0,   49,   48,   47,   46,   50,   44,
-   43,   41,    0,   24,    0,    0,   33,    0,    0,    0,
-    0,    0,    0,    0,   52,   53,    0,   38,   68,   45,
-   42,   34,   35,
+    1,    0,   11,    0,    4,    0,    0,   61,    0,   59,
+   67,    0,   65,   77,    0,   75,   73,    0,   71,    2,
+   86,   85,   84,   83,   87,    0,   81,    0,   79,    0,
+    0,   12,    0,   34,   31,   32,   33,   30,    0,   28,
+    0,   63,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,   82,    0,    0,    0,   25,    0,    0,    0,   21,
+    0,   29,    0,    0,   60,    0,   66,    0,   76,    0,
+   72,   80,    0,    0,   22,   23,   24,   19,   64,    0,
+   58,   57,   56,   39,   38,   69,    0,    0,   51,   50,
+   49,   48,   52,   46,   45,   43,    0,   26,    0,    0,
+   35,    0,    0,    0,    0,    0,    0,    0,   54,   55,
+    0,   40,   70,   47,   44,   36,   37,
 };
 short yydgoto[] = {                                      10,
-   91,   50,  101,  102,  103,   37,   11,   38,   12,   64,
+   95,   50,  105,  106,  107,   37,   11,   38,   12,   64,
    25,   19,   22,   28,   13,   14,   42,   17,   65,   16,
-   43,   66,  106,   52,  107,  108,  117,   92,  109,  111,
-   20,   54,   23,   56,   93,   29,   60,   26,   58,   39,
+   43,   66,  110,   52,  111,  112,  121,   96,  113,  115,
+   20,   54,   23,   56,   97,   29,   60,   26,   58,   39,
 };
-short yysindex[] = {                                   -223,
- -266,    0,    0,    0,    0, -241, -240, -235, -228, -223,
-    0,  -30,    0,  -17,    0,  -25,  -30,    0,  -27,    0,
-    0,  -26,    0,    0,  -23,    0,    0,  -21,    0,    0,
-    0,    0,    0,    0,    0, -233,    0,  -33,    0,  -18,
- -224,    0,    2,    0,    0,    0,    0,    0, -203,    0,
-    8,    0,   10,   -1, -241,    3, -240,    9, -235,   12,
- -228,    0,  -30,    5,  -37,    0, -218,    0,  -17,    0,
-  -25,  -25,    0,  -11,    0,  -30,    0,  -20,    0,    0,
-  -25, -195,    0,    0,    0,    8,    0,    0,    0,    0,
-    0,    0,   30,   10,    0,    0,    0,    0,    0,    0,
-    0,    0,   31,    0,  -20,   35,    0, -258, -243,  -11,
-193,  -20,   31, -195,    0,    0,  -11,    0,    0,    0,
-    0,    0,    0,
+short yysindex[] = {                                   -236,
+ -264,    0,    0,    0,    0, -249, -243, -231, -227, -236,
+    0,  -23,    0,  -30,    0,  -17,  -23,    0,  -36,    0,
+    0,  -26,    0,    0,  -14,    0,    0,   -7,    0,    0,
+    0,    0,    0,    0,    0, -215,    0,  -33,    0,   -3,
+ -226,    0,    5,    0,    0,    0,    0,    0, -194,    0,
+    6,    0,    8,   -5, -249,   -4, -243,   -2, -231,   -1,
+ -227,    0,  -23,    7,  -38,    0, -210, -193, -188,    0,
+  -30,    0,  -17,  -17,    0,  -25,    0,  -23,    0,  245,
+    0,    0,  -17, -189,    0,    0,    0,    0,    0,    6,
+    0,    0,    0,    0,    0,    0,   33,    8,    0,    0,
+    0,    0,    0,    0,    0,    0,   38,    0,  245,   39,
   0, -251, -244,  -25, -190,  245,   38, -189,    0,    0,
+  -25,    0,    0,    0,    0,    0,    0,
 };
-short yyrindex[] = {                                    227,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,  227,
-    0,    0,    0,    0,    0,    0,    0,    0,  115,    0,
-    0,  134,    0,    0,  153,    0,    0,  172,    0,    0,
+short yyrindex[] = {                                    255,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  255,
+    0,    0,    0,    0,    0,    0,    0,    0,  121,    0,
+    0,  141,    0,    0,  161,    0,    0,  181,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
-    0,    0,  191,    0,    0,    0,    0,    0,    0,    0,
-  -14,    0,  -12,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,  210,    0,    0,    0,    0,    0,    0,
+    0,    0,  201,    0,    0,    0,    0,    0,    0,    0,
+  -28,    0,   -8,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  221,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,  234,    0,    0,    0,   20,    0,    0,    0,    0,
-    0,    0,   39,   58,    0,    0,    0,    0,    0,    0,
-    0,    0,   77,    0,    0,   96,    0,   48,    0,    0,
-    0,    0,  253,  234,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,
+    0,    0,    0,  265,    0,    0,    0,    0,    0,   21,
+    0,    0,    0,    0,    0,    0,   41,   61,    0,    0,
+    0,    0,    0,    0,    0,    0,   81,    0,    0,  101,
+    0,   -9,    0,    0,    0,    0,  285,  265,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,
 };
 short yygindex[] = {                                      0,
-  -29,   33,  -28,  -24,  -19,   49,   74,  -15,    0,    0,
-    0,    0,    0,    0,    0,    0,   18,    0,  -10,    0,
-    0,   11,    0,   19,  -16,    0,    0, -105,    0,    0,
-   34,    0,   36,    0,    0,   38,    0,   41,    0,   32,
+  -29,   36,  -27,  -24,  -22,   50,   79,  -15,    0,    0,
+    0,    0,    0,    0,    0,    0,   19,    0,  -12,    0,
+    0,   10,    0,   18,  -21,    0,    0, -102,    0,    0,
+   40,    0,   43,    0,    0,   35,    0,   44,    0,   42,
 };
-#define YYTABLESIZE 522
+#define YYTABLESIZE 555
 short yytable[] = {                                      49,
-   20,   53,   36,   15,  119,   51,   71,   49,  115,  116,
-   63,  123,  100,   87,   88,   41,   18,   21,   17,   60,
-   15,   90,   24,   82,   31,   89,   32,   33,   34,   27,
-   55,   57,    1,   20,   59,   35,   61,   68,   66,    2,
-    3,    4,   67,   83,   20,   69,    5,    6,    7,    8,
-    9,   71,   60,   63,   44,   45,   46,   76,   47,   72,
-   94,   86,   81,   74,   95,   48,   96,   97,   98,   76,
-  105,   66,   78,  110,  112,   99,   72,   60,  114,  118,
-   51,   70,  120,   30,   62,  113,   84,  121,   73,   85,
-   76,  104,   75,    0,   80,   25,   66,  122,   79,   77,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,   72,
-    0,    0,    0,    0,    8,   76,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,   25,    0,
-    0,    0,    0,    9,   72,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    8,    0,    0,
-    0,    0,    7,   25,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    9,    0,    0,    0,
-    0,   10,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
+   20,   53,   41,   51,   17,   73,   15,   94,   18,   36,
+   63,  123,   91,   92,   21,   49,  119,  120,  127,    1,
+   62,   55,   84,   53,   15,   93,   24,    2,    3,    4,
+   27,   57,   70,   20,    5,    6,    7,    8,    9,   68,
+   68,   69,   31,   59,   20,   32,   33,   34,   71,   73,
+   61,   63,   85,   62,   35,   74,   76,   67,   78,   80,
+   78,   90,   98,   44,   83,   45,   46,   99,   47,   86,
+  100,  101,  102,   68,   87,   48,  114,  109,   62,  103,
+   74,  116,  118,  122,   72,   62,  117,  124,   30,   88,
+   89,  125,  108,   78,   75,   81,  126,    0,   68,   77,
+   27,    0,   79,    0,   82,    0,    0,    0,    0,    0,
+    0,    0,    0,   74,    0,    0,    0,    0,   78,    0,
+    8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   27,    0,    0,    0,    0,   74,    0,
+    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    8,    0,    0,    0,    0,   27,    0,
+    7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    9,    0,    0,    0,    0,    0,    0,
+   10,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
    18,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,   10,    0,    0,    0,    0,    6,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,   18,   44,   45,   46,   31,   47,   32,
-   33,   34,   44,   45,   46,   48,   47,   95,   35,   96,
-   97,   98,    6,   48,   40,   87,   88,   17,   99,   15,
-    0,    0,    0,    0,    0,    0,   20,   89,   20,    5,
-   20,   20,   20,   20,   20,   20,   39,    0,    0,   20,
-   20,   20,   20,   20,   20,   60,    0,   60,    0,   60,
-   60,   60,   60,   60,   60,   40,    0,    0,   60,   60,
-   60,   60,   60,   60,   66,    0,   66,    0,   66,   66,
-   66,   66,   66,   66,   51,   51,    0,   66,   66,   66,
-   66,   66,   66,   76,    0,   76,   51,   76,   76,   76,
-   76,   76,   76,    0,    0,    0,   76,   76,   76,   76,
-   76,   76,   72,    0,   72,    0,   72,   72,   72,   72,
-   72,   72,    0,    0,    0,   72,   72,   72,   72,   72,
-   72,   25,    0,   25,    0,   25,   25,   25,   25,   25,
-   25,    0,    0,    0,   25,   25,   25,   25,   25,   25,
-    8,    0,    8,    0,    8,    8,    8,    8,    8,    8,
-    0,    0,    0,    8,    8,    8,    8,    8,    8,    9,
-    0,    9,    0,    9,    9,    9,    9,    9,    9,    0,
-    0,    0,    9,    9,    9,    9,    9,    9,    7,    0,
-    7,    0,    7,    7,    7,    7,    7,    7,    0,    0,
-    0,    7,    7,    7,    7,    7,    7,   10,    0,   10,
+    0,    0,    0,   10,    0,    0,    0,    0,    0,    0,
+    6,    0,    0,    0,   44,    0,   45,   46,   40,   47,
+   17,   91,   92,   18,   31,    0,   48,   32,   33,   34,
+   44,    0,   45,   46,   93,   47,   35,   53,   53,    0,
+   15,    0,   48,    6,    0,    0,   20,    0,   20,    0,
+   53,   20,   20,   20,   20,   20,   20,    0,    0,    0,
+   20,   20,   20,   20,   20,   20,   62,  104,   62,    0,
+    0,   62,   62,   62,   62,   62,   62,    5,    0,    0,
+   62,   62,   62,   62,   62,   62,   68,   41,   68,    0,
+    0,   68,   68,   68,   68,   68,   68,    0,    0,    0,
+   68,   68,   68,   68,   68,   68,   78,   42,   78,    0,
+    0,   78,   78,   78,   78,   78,   78,    0,    0,    0,
+   78,   78,   78,   78,   78,   78,   74,    0,   74,    0,
+    0,   74,   74,   74,   74,   74,   74,    0,    0,    0,
+   74,   74,   74,   74,   74,   74,   27,    0,   27,    0,
+    0,   27,   27,   27,   27,   27,   27,    0,    0,    0,
+   27,   27,   27,   27,   27,   27,    8,    0,    8,    0,
+    0,    8,    8,    8,    8,    8,    8,    0,    0,    0,
+    8,    8,    8,    8,    8,    8,    9,    0,    9,    0,
+    0,    9,    9,    9,    9,    9,    9,    0,    0,    0,
+    9,    9,    9,    9,    9,    9,    7,    0,    7,    0,
+    0,    7,    7,    7,    7,    7,    7,    0,    0,    0,
+    7,    7,    7,    7,    7,    7,   10,    0,   10,    0,
     0,   10,   10,   10,   10,   10,   10,    0,    0,    0,
    10,   10,   10,   10,   10,   10,   18,    0,   18,    0,
-   18,   18,   18,   18,   18,   18,    0,    0,    0,   18,
-   18,   18,   18,   18,   18,    6,    0,    6,    0,    6,
-    6,    6,    6,    6,    6,    0,    0,    0,    6,    6,
-    6,    6,    6,    6,    5,    0,    5,    5,    5,    0,
-   39,   39,    0,    0,    0,    5,    0,    0,    0,    0,
-   39,   39,   39,    0,    0,    0,    0,    0,    0,   40,
-   40,    0,    0,    0,    0,    0,    0,    0,    0,   40,
-   40,   40,
+    0,   18,   18,   18,   18,   18,   18,    0,    0,    0,
+   18,   18,   18,   18,   18,   18,    6,    0,    6,    0,
+    0,    6,    6,    6,    6,    6,    6,    0,    0,    0,
+    6,    6,    6,    6,    6,    6,    0,    0,    0,    0,
+    0,    0,   99,    0,    0,  100,  101,  102,    0,    0,
+    0,    0,    5,    0,  103,    5,    5,    5,    0,    0,
+    0,   41,   41,    0,    5,    0,    0,    0,    0,    0,
+    0,    0,   41,   41,   41,    0,    0,    0,    0,    0,
+    0,   42,   42,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,   42,   42,   42,
 };
 short yycheck[] = {                                      33,
-    0,   17,   33,  270,  110,   16,   44,   33,  267,  268,
-   44,  117,   33,  257,  258,   33,  258,  258,   33,    0,
-   33,   33,  258,   61,  258,  269,  260,  261,  262,  258,
-   58,   58,  256,   33,   58,  269,   58,  262,    0,  263,
-  264,  265,   61,  262,   44,   44,  270,  271,  272,  273,
-  274,   44,   33,   44,  258,  259,  260,    0,  262,   61,
-   76,   72,   58,   61,  258,  269,  260,  261,  262,   61,
-  266,   33,   61,   44,   44,  269,    0,   58,   44,  109,
-   33,   49,  111,   10,   36,  105,   69,  112,   55,   71,
-   33,   81,   57,   -1,   63,    0,   58,  114,   61,   59,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,
-   -1,   -1,   -1,   -1,    0,   58,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
-   -1,   -1,   -1,    0,   58,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
-   -1,   -1,    0,   58,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
-   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,
+    0,   17,   33,   16,   33,   44,  271,   33,  258,   33,
+   44,  114,  257,  258,  258,   33,  268,  269,  121,  256,
+    0,   58,   61,   33,   33,  270,  258,  264,  265,  266,
+  258,   58,  259,   33,  271,  272,  273,  274,  275,   43,
+    0,   45,  258,   58,   44,  261,  262,  263,   44,   44,
+   58,   44,  263,   33,  270,   61,   61,   61,   61,   61,
+    0,   74,   78,  258,   58,  260,  261,  258,  263,  263,
+  261,  262,  263,   33,  263,  270,   44,  267,   58,  270,
+    0,   44,   44,  113,   49,   36,  109,  115,   10,   71,
+   73,  116,   83,   33,   55,   61,  118,   -1,   58,   57,
+    0,   -1,   59,   -1,   63,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   58,   -1,
+    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   58,   -1,
+    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   58,   -1,
+    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,    0,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   33,  258,  259,  260,  258,  262,  260,
-  261,  262,  258,  259,  260,  269,  262,  258,  269,  260,
-  261,  262,   33,  269,  262,  257,  258,  262,  269,  262,
-   -1,   -1,   -1,   -1,   -1,   -1,  256,  269,  258,   33,
-  260,  261,  262,  263,  264,  265,   33,   -1,   -1,  269,
-  270,  271,  272,  273,  274,  256,   -1,  258,   -1,  260,
-  261,  262,  263,  264,  265,   33,   -1,   -1,  269,  270,
-  271,  272,  273,  274,  256,   -1,  258,   -1,  260,  261,
-  262,  263,  264,  265,  257,  258,   -1,  269,  270,  271,
-  272,  273,  274,  256,   -1,  258,  269,  260,  261,  262,
-  263,  264,  265,   -1,   -1,   -1,  269,  270,  271,  272,
-  273,  274,  256,   -1,  258,   -1,  260,  261,  262,  263,
-  264,  265,   -1,   -1,   -1,  269,  270,  271,  272,  273,
-  274,  256,   -1,  258,   -1,  260,  261,  262,  263,  264,
-  265,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
-  256,   -1,  258,   -1,  260,  261,  262,  263,  264,  265,
-   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  256,
-   -1,  258,   -1,  260,  261,  262,  263,  264,  265,   -1,
-   -1,   -1,  269,  270,  271,  272,  273,  274,  256,   -1,
-  258,   -1,  260,  261,  262,  263,  264,  265,   -1,   -1,
-   -1,  269,  270,  271,  272,  273,  274,  256,   -1,  258,
-   -1,  260,  261,  262,  263,  264,  265,   -1,   -1,   -1,
-  269,  270,  271,  272,  273,  274,  256,   -1,  258,   -1,
-  260,  261,  262,  263,  264,  265,   -1,   -1,   -1,  269,
-  270,  271,  272,  273,  274,  256,   -1,  258,   -1,  260,
-  261,  262,  263,  264,  265,   -1,   -1,   -1,  269,  270,
-  271,  272,  273,  274,  258,   -1,  260,  261,  262,   -1,
-  257,  258,   -1,   -1,   -1,  269,   -1,   -1,   -1,   -1,
-  267,  268,  269,   -1,   -1,   -1,   -1,   -1,   -1,  257,
-  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  267,
-  268,  269,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
+    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
+    0,   -1,   -1,   -1,  258,   -1,  260,  261,  259,  263,
+  259,  257,  258,   33,  258,   -1,  270,  261,  262,  263,
+  258,   -1,  260,  261,  270,  263,  270,  257,  258,   -1,
+  259,   -1,  270,   33,   -1,   -1,  256,   -1,  258,   -1,
+  270,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   33,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   33,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   33,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   33,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
+  270,  271,  272,  273,  274,  275,   -1,   -1,   -1,   -1,
+   -1,   -1,  258,   -1,   -1,  261,  262,  263,   -1,   -1,
+   -1,   -1,  258,   -1,  270,  261,  262,  263,   -1,   -1,
+   -1,  257,  258,   -1,  270,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,  268,  269,  270,   -1,   -1,   -1,   -1,   -1,
+   -1,  257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,  268,  269,  270,
 };
 #define YYFINAL 10
 #ifndef YYDEBUG
 #define YYDEBUG 0
 #endif
-#define YYMAXTOKEN 275
+#define YYMAXTOKEN 276
 #if YYDEBUG
-char *yyname[] = {
+#if defined(__cplusplus) || __STDC__
+const char * const yyname[] =
+#else
+char *yyname[] =
+#endif
+       {
 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-"'!'",0,0,0,0,0,0,0,0,0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,"'='",0,0,0,
+"'!'",0,0,0,0,0,0,0,0,0,"'+'","','","'-'",0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,
+"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"COMMAND",
-"ALIAS","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS","DEFAULTS_HOST",
-"DEFAULTS_USER","RUNAS","NOPASSWD","PASSWD","ALL","COMMENT","HOSTALIAS",
-"CMNDALIAS","USERALIAS","RUNASALIAS","ERROR",
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+"COMMAND","ALIAS","DEFVAR","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS",
+"DEFAULTS_HOST","DEFAULTS_USER","RUNAS","NOPASSWD","PASSWD","ALL","COMMENT",
+"HOSTALIAS","CMNDALIAS","USERALIAS","RUNASALIAS","ERROR",
 };
-char *yyrule[] = {
-"$accept : file",
+#if defined(__cplusplus) || __STDC__
+const char * const yyrule[] =
+#else
+char *yyrule[] =
+#endif
+       {"$accept : file",
 "file : entry",
 "file : file entry",
 "entry : COMMENT",
@@ -477,9 +494,11 @@ char *yyrule[] = {
 "defaults_type : DEFAULTS_HOST $$3 hostlist",
 "defaults_list : defaults_entry",
 "defaults_list : defaults_entry ',' defaults_list",
-"defaults_entry : WORD",
-"defaults_entry : '!' WORD",
-"defaults_entry : WORD '=' WORD",
+"defaults_entry : DEFVAR",
+"defaults_entry : '!' DEFVAR",
+"defaults_entry : DEFVAR '=' WORD",
+"defaults_entry : DEFVAR '+' WORD",
+"defaults_entry : DEFVAR '-' WORD",
 "privileges : privilege",
 "privileges : privileges ':' privilege",
 "privilege : hostlist '=' cmndspeclist",
@@ -569,7 +588,7 @@ short *yyss;
 short *yysslim;
 YYSTYPE *yyvs;
 int yystacksize;
-#line 819 "parse.yacc"
+#line 841 "parse.yacc"
 
 #define MOREALIASES (32)
 aliasinfo *aliases = NULL;
@@ -920,7 +939,7 @@ init_parser()
     if (printmatches == TRUE)
        expand_match_list();
 }
-#line 924 "sudo.tab.c"
+#line 934 "sudo.tab.c"
 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
 #if defined(__cplusplus) || __STDC__
 static int yygrowstack(void)
@@ -976,9 +995,13 @@ yyparse(void)
 yyparse()
 #endif
 {
-    register int yym, yyn, yystate;
+    int yym, yyn, yystate;
 #if YYDEBUG
-    register char *yys;
+#if defined(__cplusplus) || __STDC__
+    const char *yys;
+#else /* !(defined(__cplusplus) || __STDC__) */
+    char *yys;
+#endif /* !(defined(__cplusplus) || __STDC__) */
 
     if ((yys = getenv("YYDEBUG")))
     {
@@ -986,7 +1009,7 @@ yyparse()
         if (yyn >= '0' && yyn <= '9')
             yydebug = yyn - '0';
     }
-#endif
+#endif /* YYDEBUG */
 
     yynerrs = 0;
     yyerrflag = 0;
@@ -1110,77 +1133,77 @@ yyreduce:
     switch (yyn)
     {
 case 3:
-#line 256 "parse.yacc"
+#line 258 "parse.yacc"
 { ; }
 break;
 case 4:
-#line 258 "parse.yacc"
+#line 260 "parse.yacc"
 { yyerrok; }
 break;
 case 5:
-#line 259 "parse.yacc"
+#line 261 "parse.yacc"
 { push; }
 break;
 case 6:
-#line 259 "parse.yacc"
+#line 261 "parse.yacc"
 {
                            while (top && user_matches != TRUE)
                                pop;
                        }
 break;
 case 7:
-#line 264 "parse.yacc"
+#line 266 "parse.yacc"
 { ; }
 break;
 case 8:
-#line 266 "parse.yacc"
+#line 268 "parse.yacc"
 { ; }
 break;
 case 9:
-#line 268 "parse.yacc"
+#line 270 "parse.yacc"
 { ; }
 break;
 case 10:
-#line 270 "parse.yacc"
+#line 272 "parse.yacc"
 { ; }
 break;
 case 11:
-#line 272 "parse.yacc"
+#line 274 "parse.yacc"
 { ; }
 break;
 case 13:
-#line 277 "parse.yacc"
+#line 279 "parse.yacc"
 {
                            defaults_matches = TRUE;
                        }
 break;
 case 14:
-#line 280 "parse.yacc"
+#line 282 "parse.yacc"
 { push; }
 break;
 case 15:
-#line 280 "parse.yacc"
+#line 282 "parse.yacc"
 {
                            defaults_matches = user_matches;
                            pop;
                        }
 break;
 case 16:
-#line 284 "parse.yacc"
+#line 286 "parse.yacc"
 { push; }
 break;
 case 17:
-#line 284 "parse.yacc"
+#line 286 "parse.yacc"
 {
                            defaults_matches = host_matches;
                            pop;
                        }
 break;
 case 20:
-#line 293 "parse.yacc"
+#line 295 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
-                               !set_default(yyvsp[0].string, NULL, 1)) {
+                               !set_default(yyvsp[0].string, NULL, TRUE)) {
                                yyerror(NULL);
                                YYERROR;
                            }
@@ -1188,10 +1211,10 @@ case 20:
                        }
 break;
 case 21:
-#line 301 "parse.yacc"
+#line 303 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
-                               !set_default(yyvsp[0].string, NULL, 0)) {
+                               !set_default(yyvsp[0].string, NULL, FALSE)) {
                                yyerror(NULL);
                                YYERROR;
                            }
@@ -1199,11 +1222,24 @@ case 21:
                        }
 break;
 case 22:
-#line 309 "parse.yacc"
+#line 311 "parse.yacc"
+{
+                           /* XXX - need to support quoted values */
+                           if (defaults_matches == TRUE &&
+                               !set_default(yyvsp[-2].string, yyvsp[0].string, TRUE)) {
+                               yyerror(NULL);
+                               YYERROR;
+                           }
+                           free(yyvsp[-2].string);
+                           free(yyvsp[0].string);
+                       }
+break;
+case 23:
+#line 321 "parse.yacc"
 {
                            /* XXX - need to support quoted values */
                            if (defaults_matches == TRUE &&
-                               !set_default(yyvsp[-2].string, yyvsp[0].string, 1)) {
+                               !set_default(yyvsp[-2].string, yyvsp[0].string, '+')) {
                                yyerror(NULL);
                                YYERROR;
                            }
@@ -1211,8 +1247,21 @@ case 22:
                            free(yyvsp[0].string);
                        }
 break;
-case 25:
-#line 324 "parse.yacc"
+case 24:
+#line 331 "parse.yacc"
+{
+                           /* XXX - need to support quoted values */
+                           if (defaults_matches == TRUE &&
+                               !set_default(yyvsp[-2].string, yyvsp[0].string, '-')) {
+                               yyerror(NULL);
+                               YYERROR;
+                           }
+                           free(yyvsp[-2].string);
+                           free(yyvsp[0].string);
+                       }
+break;
+case 27:
+#line 346 "parse.yacc"
 {
                            /*
                             * We already did a push if necessary in
@@ -1227,28 +1276,28 @@ case 25:
                                no_passwd = TRUE;
                        }
 break;
-case 26:
-#line 339 "parse.yacc"
+case 28:
+#line 361 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                host_matches = yyvsp[0].BOOLEAN;
                        }
 break;
-case 27:
-#line 343 "parse.yacc"
+case 29:
+#line 365 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                host_matches = ! yyvsp[0].BOOLEAN;
                        }
 break;
-case 28:
-#line 348 "parse.yacc"
+case 30:
+#line 370 "parse.yacc"
 {
                            yyval.BOOLEAN = TRUE;
                        }
 break;
-case 29:
-#line 351 "parse.yacc"
+case 31:
+#line 373 "parse.yacc"
 {
                            if (addr_matches(yyvsp[0].string))
                                yyval.BOOLEAN = TRUE;
@@ -1257,8 +1306,8 @@ case 29:
                            free(yyvsp[0].string);
                        }
 break;
-case 30:
-#line 358 "parse.yacc"
+case 32:
+#line 380 "parse.yacc"
 {
                            if (netgr_matches(yyvsp[0].string, user_host, user_shost, NULL))
                                yyval.BOOLEAN = TRUE;
@@ -1267,8 +1316,8 @@ case 30:
                            free(yyvsp[0].string);
                        }
 break;
-case 31:
-#line 365 "parse.yacc"
+case 33:
+#line 387 "parse.yacc"
 {
                            if (hostname_matches(user_shost, user_host, yyvsp[0].string) == 0)
                                yyval.BOOLEAN = TRUE;
@@ -1277,8 +1326,8 @@ case 31:
                            free(yyvsp[0].string);
                        }
 break;
-case 32:
-#line 372 "parse.yacc"
+case 34:
+#line 394 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, HOST_ALIAS);
 
@@ -1302,8 +1351,8 @@ case 32:
                            free(yyvsp[0].string);
                        }
 break;
-case 35:
-#line 400 "parse.yacc"
+case 37:
+#line 422 "parse.yacc"
 {
                            /*
                             * Push the entry onto the stack if it is worth
@@ -1330,15 +1379,15 @@ case 35:
                            cmnd_matches = -1;
                        }
 break;
-case 36:
-#line 427 "parse.yacc"
+case 38:
+#line 449 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                cmnd_matches = yyvsp[0].BOOLEAN;
                        }
 break;
-case 37:
-#line 431 "parse.yacc"
+case 39:
+#line 453 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1349,15 +1398,15 @@ case 37:
                            }
                        }
 break;
-case 38:
-#line 439 "parse.yacc"
+case 40:
+#line 461 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                cmnd_matches = ! yyvsp[0].BOOLEAN;
                        }
 break;
-case 39:
-#line 445 "parse.yacc"
+case 41:
+#line 467 "parse.yacc"
 {
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE) {
@@ -1382,18 +1431,18 @@ case 39:
                                    def_str(I_RUNAS_DEFAULT)) == 0);
                        }
 break;
-case 40:
-#line 468 "parse.yacc"
+case 42:
+#line 490 "parse.yacc"
 {
                            runas_matches = (yyvsp[0].BOOLEAN == TRUE ? TRUE : FALSE);
                        }
 break;
-case 41:
-#line 473 "parse.yacc"
+case 43:
+#line 495 "parse.yacc"
 { ; }
 break;
-case 42:
-#line 474 "parse.yacc"
+case 44:
+#line 496 "parse.yacc"
 {
                            /* Later entries override earlier ones. */
                            if (yyvsp[0].BOOLEAN != -1)
@@ -1402,12 +1451,12 @@ case 42:
                                yyval.BOOLEAN = yyvsp[-2].BOOLEAN;
                        }
 break;
-case 43:
-#line 483 "parse.yacc"
+case 45:
+#line 505 "parse.yacc"
 { ; }
 break;
-case 44:
-#line 484 "parse.yacc"
+case 46:
+#line 506 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1418,15 +1467,15 @@ case 44:
                            }
                        }
 break;
-case 45:
-#line 492 "parse.yacc"
+case 47:
+#line 514 "parse.yacc"
 {
                            /* Set $$ to the negation of runasuser */
                            yyval.BOOLEAN = (yyvsp[0].BOOLEAN == -1 ? -1 : ! yyvsp[0].BOOLEAN);
                        }
 break;
-case 46:
-#line 497 "parse.yacc"
+case 48:
+#line 519 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1442,8 +1491,8 @@ case 46:
                            free(yyvsp[0].string);
                        }
 break;
-case 47:
-#line 511 "parse.yacc"
+case 49:
+#line 533 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1459,8 +1508,8 @@ case 47:
                            free(yyvsp[0].string);
                        }
 break;
-case 48:
-#line 525 "parse.yacc"
+case 50:
+#line 547 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1476,8 +1525,8 @@ case 48:
                            free(yyvsp[0].string);
                        }
 break;
-case 49:
-#line 539 "parse.yacc"
+case 51:
+#line 561 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, RUNAS_ALIAS);
 
@@ -1508,8 +1557,8 @@ case 49:
                            free(yyvsp[0].string);
                        }
 break;
-case 50:
-#line 568 "parse.yacc"
+case 52:
+#line 590 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1521,8 +1570,8 @@ case 50:
                            yyval.BOOLEAN = TRUE;
                        }
 break;
-case 51:
-#line 580 "parse.yacc"
+case 53:
+#line 602 "parse.yacc"
 {
                            /* Inherit NOPASSWD/PASSWD status. */
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1534,8 +1583,8 @@ case 51:
                            }
                        }
 break;
-case 52:
-#line 590 "parse.yacc"
+case 54:
+#line 612 "parse.yacc"
 {
                            no_passwd = TRUE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1543,8 +1592,8 @@ case 52:
                                cm_list[cm_list_len].nopasswd = TRUE;
                        }
 break;
-case 53:
-#line 596 "parse.yacc"
+case 55:
+#line 618 "parse.yacc"
 {
                            no_passwd = FALSE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1552,8 +1601,8 @@ case 53:
                                cm_list[cm_list_len].nopasswd = FALSE;
                        }
 break;
-case 54:
-#line 604 "parse.yacc"
+case 56:
+#line 626 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1572,8 +1621,8 @@ case 54:
                            safe_cmnd = estrdup(user_cmnd);
                        }
 break;
-case 55:
-#line 621 "parse.yacc"
+case 57:
+#line 643 "parse.yacc"
 {
                            aliasinfo *aip;
 
@@ -1604,8 +1653,8 @@ case 55:
                            free(yyvsp[0].string);
                        }
 break;
-case 56:
-#line 650 "parse.yacc"
+case 58:
+#line 672 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE) {
@@ -1633,12 +1682,12 @@ case 56:
                                free(yyvsp[0].command.args);
                        }
 break;
-case 59:
-#line 682 "parse.yacc"
+case 61:
+#line 704 "parse.yacc"
 { push; }
 break;
-case 60:
-#line 682 "parse.yacc"
+case 62:
+#line 704 "parse.yacc"
 {
                            if ((host_matches != -1 || pedantic) &&
                                !add_alias(yyvsp[-3].string, HOST_ALIAS, host_matches))
@@ -1646,8 +1695,8 @@ case 60:
                            pop;
                        }
 break;
-case 65:
-#line 698 "parse.yacc"
+case 67:
+#line 720 "parse.yacc"
 {
                            push;
                            if (printmatches == TRUE) {
@@ -1659,8 +1708,8 @@ case 65:
                             }
                        }
 break;
-case 66:
-#line 707 "parse.yacc"
+case 68:
+#line 729 "parse.yacc"
 {
                            if ((cmnd_matches != -1 || pedantic) &&
                                !add_alias(yyvsp[-3].string, CMND_ALIAS, cmnd_matches))
@@ -1672,12 +1721,12 @@ case 66:
                                in_alias = FALSE;
                        }
 break;
-case 67:
-#line 719 "parse.yacc"
+case 69:
+#line 741 "parse.yacc"
 { ; }
 break;
-case 71:
-#line 727 "parse.yacc"
+case 73:
+#line 749 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                in_alias = TRUE;
@@ -1688,8 +1737,8 @@ case 71:
                            }
                        }
 break;
-case 72:
-#line 735 "parse.yacc"
+case 74:
+#line 757 "parse.yacc"
 {
                            if ((yyvsp[0].BOOLEAN != -1 || pedantic) &&
                                !add_alias(yyvsp[-3].string, RUNAS_ALIAS, yyvsp[0].BOOLEAN))
@@ -1700,12 +1749,12 @@ case 72:
                                in_alias = FALSE;
                        }
 break;
-case 75:
-#line 750 "parse.yacc"
+case 77:
+#line 772 "parse.yacc"
 { push; }
 break;
-case 76:
-#line 750 "parse.yacc"
+case 78:
+#line 772 "parse.yacc"
 {
                            if ((user_matches != -1 || pedantic) &&
                                !add_alias(yyvsp[-3].string, USER_ALIAS, user_matches))
@@ -1714,22 +1763,22 @@ case 76:
                            free(yyvsp[-3].string);
                        }
 break;
-case 79:
-#line 763 "parse.yacc"
+case 81:
+#line 785 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                user_matches = yyvsp[0].BOOLEAN;
                        }
 break;
-case 80:
-#line 767 "parse.yacc"
+case 82:
+#line 789 "parse.yacc"
 {
                            if (yyvsp[0].BOOLEAN != -1)
                                user_matches = ! yyvsp[0].BOOLEAN;
                        }
 break;
-case 81:
-#line 772 "parse.yacc"
+case 83:
+#line 794 "parse.yacc"
 {
                            if (strcmp(yyvsp[0].string, user_name) == 0)
                                yyval.BOOLEAN = TRUE;
@@ -1738,8 +1787,8 @@ case 81:
                            free(yyvsp[0].string);
                        }
 break;
-case 82:
-#line 779 "parse.yacc"
+case 84:
+#line 801 "parse.yacc"
 {
                            if (usergr_matches(yyvsp[0].string, user_name))
                                yyval.BOOLEAN = TRUE;
@@ -1748,8 +1797,8 @@ case 82:
                            free(yyvsp[0].string);
                        }
 break;
-case 83:
-#line 786 "parse.yacc"
+case 85:
+#line 808 "parse.yacc"
 {
                            if (netgr_matches(yyvsp[0].string, NULL, NULL, user_name))
                                yyval.BOOLEAN = TRUE;
@@ -1758,8 +1807,8 @@ case 83:
                            free(yyvsp[0].string);
                        }
 break;
-case 84:
-#line 793 "parse.yacc"
+case 86:
+#line 815 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, USER_ALIAS);
 
@@ -1781,13 +1830,13 @@ case 84:
                            free(yyvsp[0].string);
                        }
 break;
-case 85:
-#line 813 "parse.yacc"
+case 87:
+#line 835 "parse.yacc"
 {
                            yyval.BOOLEAN = TRUE;
                        }
 break;
-#line 1791 "sudo.tab.c"
+#line 1831 "sudo.tab.c"
     }
     yyssp -= yym;
     yystate = *yyssp;
index c07b2d0843698fd9b660ef2bec60704787a36ee8..71b1255f6362b1f66f5d1deda3cd41346b179352 100644 (file)
@@ -1,22 +1,23 @@
 #define COMMAND 257
 #define ALIAS 258
-#define NTWKADDR 259
-#define NETGROUP 260
-#define USERGROUP 261
-#define WORD 262
-#define DEFAULTS 263
-#define DEFAULTS_HOST 264
-#define DEFAULTS_USER 265
-#define RUNAS 266
-#define NOPASSWD 267
-#define PASSWD 268
-#define ALL 269
-#define COMMENT 270
-#define HOSTALIAS 271
-#define CMNDALIAS 272
-#define USERALIAS 273
-#define RUNASALIAS 274
-#define ERROR 275
+#define DEFVAR 259
+#define NTWKADDR 260
+#define NETGROUP 261
+#define USERGROUP 262
+#define WORD 263
+#define DEFAULTS 264
+#define DEFAULTS_HOST 265
+#define DEFAULTS_USER 266
+#define RUNAS 267
+#define NOPASSWD 268
+#define PASSWD 269
+#define ALL 270
+#define COMMENT 271
+#define HOSTALIAS 272
+#define CMNDALIAS 273
+#define USERALIAS 274
+#define RUNASALIAS 275
+#define ERROR 276
 typedef union {
     char *string;
     int BOOLEAN;