]> granicus.if.org Git - sudo/commitdiff
Split ALL, ROLE and TYPE into their own actions. Since you can
authorTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 29 Apr 2011 20:07:37 +0000 (16:07 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 29 Apr 2011 20:07:37 +0000 (16:07 -0400)
only have #ifdefs inside of braces, ROLE and TYPE use a naughty
goto in the non-SELinux case.  This is safe because the actions are
in one big switch() statement.

--HG--
branch : 1.7

toke.c
toke.l

diff --git a/toke.c b/toke.c
index 30945d7f7b792412833c33db9ed43031d740b508..849695a4628bdc69cabd7d6212a5a07651bec197 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -289,76 +289,77 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 56
-#define YY_END_OF_BUFFER 57
-static yyconst short int yy_accept[596] =
+#define YY_NUM_RULES 59
+#define YY_END_OF_BUFFER 60
+static yyconst short int yy_accept[607] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   57,   44,   52,   51,   50,   43,   55,   32,
-       45,   46,   32,   47,   44,   44,   44,   44,   49,   48,
-       55,   39,   39,   39,   39,   39,   39,   39,   55,   44,
-       44,   52,   55,   39,   39,   39,   39,   39,    2,   55,
-        1,   44,   44,   17,   16,   17,   16,   16,   55,   55,
-       55,    3,    9,    8,    9,    4,    9,    5,   55,   13,
-       13,   13,   11,   12,   44,    0,   52,   50,    0,   54,
-        0,   44,   34,    0,   32,    0,   33,    0,   42,   42,
-        0,   44,   44,    0,   44,   44,   44,   44,    0,   37,
-
-       39,   39,   39,   39,   39,   39,   39,   44,   53,   44,
-       52,    0,    0,    0,    0,    0,    0,   44,   44,   44,
-       44,   44,    2,    1,    0,    1,   40,   40,    0,   44,
-       17,   17,   15,   14,   15,    0,    0,    3,    9,    0,
-        6,    7,    9,    9,   13,    0,   13,   13,    0,   10,
-        0,    0,    0,   34,   34,    0,    0,   44,   44,   44,
-       44,   44,    0,    0,   37,   37,   39,   39,   39,   39,
-       39,   39,   39,   39,   39,   44,    0,    0,    0,    0,
-        0,    0,   44,   44,   44,   44,   44,    0,   44,   10,
-        0,   44,   44,   44,   44,   44,   44,    0,   38,   38,
-
-       38,    0,    0,   37,   37,   37,   37,   37,   37,   37,
-       39,   39,   39,   39,   39,   39,   39,   39,   39,   44,
-        0,    0,    0,    0,    0,    0,   44,   44,   44,   44,
-       44,   44,   44,    0,    0,   38,   38,   38,    0,   37,
-       37,    0,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,    0,   25,   39,   39,   39,   39,   39,
-       39,   39,   39,   44,    0,    0,    0,    0,   44,   44,
-       44,   44,   44,   44,   44,   44,    0,   38,    0,   37,
-       37,   37,    0,    0,    0,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   39,   39,
-
-       39,   39,   39,   39,   39,   39,   44,    0,    0,    0,
-       44,   44,   44,   35,   35,   35,    0,    0,   37,   37,
-       37,   37,   37,   37,   37,    0,    0,    0,    0,    0,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   39,   39,    0,   24,   39,   39,
-       39,   39,    0,   23,    0,   26,   44,    0,    0,    0,
-       44,   44,   44,   44,   35,   35,   35,   35,    0,   37,
+        0,    0,   60,   47,   55,   54,   53,   46,   58,   32,
+       48,   49,   32,   50,   47,   47,   47,   47,   52,   51,
+       58,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   58,   47,   47,   55,   58,   42,   42,   42,   42,
+       42,    2,   58,    1,   47,   47,   17,   16,   17,   16,
+       16,   58,   58,   58,    3,    9,    8,    9,    4,    9,
+        5,   58,   13,   13,   13,   11,   12,   47,    0,   55,
+       53,    0,   57,    0,   47,   34,    0,   32,    0,   33,
+        0,   45,   45,    0,   47,   47,    0,   47,   47,   47,
+
+       47,    0,   37,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   47,   56,   47,   55,    0,    0,    0,
+        0,    0,    0,   47,   47,   47,   47,   47,    2,    1,
+        0,    1,   43,   43,    0,   47,   17,   17,   15,   14,
+       15,    0,    0,    3,    9,    0,    6,    7,    9,    9,
+       13,    0,   13,   13,    0,   10,    0,    0,    0,   34,
+       34,    0,    0,   47,   47,   47,   47,   47,    0,    0,
+       37,   37,   42,   39,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   47,    0,    0,    0,    0,    0,
+        0,   47,   47,   47,   47,   47,    0,   47,   10,    0,
+
+       47,   47,   47,   47,   47,   47,    0,   38,   38,   38,
+        0,    0,   37,   37,   37,   37,   37,   37,   37,   42,
+       42,   42,   42,   42,   42,   42,   42,   40,   42,   41,
+       47,    0,    0,    0,    0,    0,    0,   47,   47,   47,
+       47,   47,   47,   47,    0,    0,   38,   38,   38,    0,
+       37,   37,    0,   37,   37,   37,   37,   37,   37,   37,
+       37,   37,   37,   37,    0,   25,   42,   42,   42,   42,
+       42,   42,   42,   42,   47,    0,    0,    0,    0,   47,
+       47,   47,   47,   47,   47,   47,   47,    0,   38,    0,
+       37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
+
+       37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
+       42,   42,   42,   42,   42,   42,   42,   47,    0,    0,
+        0,   47,   47,   47,   35,   35,   35,    0,    0,   37,
+       37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
         0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,    0,    0,    0,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   39,   39,
+       37,   37,   37,   37,   37,   42,   42,    0,   24,   42,
+       42,   42,   42,    0,   23,    0,   26,   47,    0,    0,
+        0,   47,   47,   47,   47,   35,   35,   35,   35,    0,
+       37,    0,   37,   37,   37,   37,   37,   37,   37,   37,
+       37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
 
-       39,   39,   39,   39,   41,    0,    0,    0,   44,   20,
-       40,   36,   36,   36,   36,   37,    0,    0,    0,   37,
+       37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
+       42,   42,   42,   42,   42,   44,    0,    0,    0,   47,
+       20,   43,   36,   36,   36,   36,   37,    0,    0,    0,
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,    0,    0,    0,    0,    0,   37,   37,   37,
-       37,   37,   37,   37,   37,   39,   39,   39,   39,    0,
-       22,    0,   27,    0,   20,    0,    0,   44,    0,   44,
-       44,   44,   36,   36,   36,   36,    0,    0,    0,    0,
-        0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
+       37,   37,   37,    0,    0,    0,    0,    0,   37,   37,
+       37,   37,   37,   37,   37,   37,   42,   42,   42,   42,
+        0,   22,    0,   27,    0,   20,    0,    0,   47,    0,
+       47,   47,   47,   36,   36,   36,   36,    0,    0,    0,
+        0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,    0,   30,   39,   39,   39,    0,    0,    0,   21,
 
-       20,    0,    0,    0,    0,    0,   20,    0,   44,   44,
-       44,    0,    0,    0,   37,   37,   37,   37,   37,   37,
+       37,   37,    0,   30,   42,   42,   42,    0,    0,    0,
+       21,   20,    0,    0,    0,    0,    0,   20,    0,   47,
+       47,   47,    0,    0,    0,   37,   37,   37,   37,   37,
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,    0,   28,   39,   39,   21,    0,   18,    0,
-        0,   20,   44,   44,   44,   44,   44,    0,    0,    0,
-        0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
-        0,   31,   39,    0,   44,   44,   44,   37,   37,   37,
-       37,   37,   37,    0,   29,    0,   44,   44,   44,   44,
-       44,   37,   37,   37,   37,   37,    0,   19,   35,   35,
-       35,   35,   35,   35,    0
-
+       37,   37,   37,    0,   28,   42,   42,   21,    0,   18,
+        0,    0,   20,   47,   47,   47,   47,   47,    0,    0,
+        0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
+       37,    0,   31,   42,    0,   47,   47,   47,   37,   37,
+       37,   37,   37,   37,    0,   29,    0,   47,   47,   47,
+       47,   47,   37,   37,   37,   37,   37,    0,   19,   35,
+
+       35,   35,   35,   35,   35,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -371,12 +372,12 @@ static yyconst int yy_ec[256] =
        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
        25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
        33,   34,   35,   36,   36,   37,   36,   38,   39,   40,
-       36,   41,   42,   43,   44,   45,   46,   47,   36,   36,
-       10,   48,   10,    1,   49,    1,   50,   51,   52,   53,
+       36,   41,   42,   43,   44,   45,   46,   47,   48,   36,
+       10,   49,   10,    1,   50,    1,   51,   52,   53,   54,
 
-       54,   55,   56,   56,   57,   56,   56,   58,   59,   60,
-       61,   56,   56,   62,   63,   64,   65,   56,   56,   56,
-       56,   56,    1,    1,    1,    1,    1,    1,    1,    1,
+       55,   56,   57,   57,   58,   57,   57,   59,   60,   61,
+       62,   57,   57,   63,   64,   65,   66,   57,   57,   57,
+       57,   57,    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,
@@ -393,579 +394,587 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[66] =
+static yyconst int yy_meta[67] =
     {   0,
         1,    2,    3,    4,    5,    6,    1,    7,    7,    1,
         1,    8,    1,    9,   10,   11,   11,   11,   11,   11,
        11,   11,   11,   12,   13,    7,    1,   11,   11,   11,
        11,   11,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,   14,   15,   16,
-       16,   16,   16,   16,   16,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15
+        1,    1,    1,    1,    1,    1,    1,    1,   14,   15,
+       16,   16,   16,   16,   16,   16,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15
     } ;
 
-static yyconst short int yy_base[660] =
+static yyconst short int yy_base[671] =
     {   0,
-        0,   64,   65,   66,   85,  100,  147,  211,  275,  322,
-       71,  111, 2648, 2565, 2608, 3619, 2605, 3619,  368,   87,
-     3619, 3619, 2560, 3619,  113,  378,  124,  146, 2583, 3619,
-     3619,  433, 2559,  483, 2566, 2539, 2533, 2511,  537,  154,
-       21,  150,  561, 2461, 2459, 2451, 2446, 2447,   80,  203,
-     2493,  288,   31,    0, 3619, 2476, 3619,    0,  305,  616,
-       81,    0, 2425, 3619,   75, 3619,   82, 3619,  124, 2424,
-       83,   86, 3619,  152, 2423,  638, 2459, 2446, 2444, 3619,
-      211,  219,  289,  230,  130,  336, 2394,  663,  294, 2393,
-      688,  356,  699, 2416, 2415,  395,  500,  169, 2391,  145,
-
-      739,    0, 2379, 2377,  314, 2365, 2363,  135, 3619,  236,
-      524, 2346, 2337, 2329, 2315, 2299,   96,   72,  230,  242,
-      197,  256,  180, 2358,  569, 2354,  567, 2292,  793,  253,
-        0, 2335,  252, 3619, 3619,  578,  280,    0, 2290,  433,
-     3619, 3619, 2274,  316, 2273, 2315,  310,  312,  319, 2298,
-     2296, 2295,  586,  604,  357,  699,  545,  806,  841,  876,
-      911, 2274, 2253,  951,  328,  992, 1032, 2241, 2203, 2195,
-     2168, 2176, 2171, 2160, 2163,  307, 2123, 2127, 2118, 2112,
-     2115,  328,  371, 2110,  301,  208,  131,  649,  321, 2148,
-     2146,  661,  318, 1074, 1109,  511,  335, 2124, 2122,  716,
-
-      404, 2091, 2089,  412,  725, 1144,  756,  764, 1185,  790,
-     2037,  401,  402, 2022, 2020, 2010, 1993, 1989, 1976,  496,
-     1960, 1941, 1924, 1937, 1924,  553,  460,  593,  504,  512,
-     1227, 1262, 1297, 1961, 1959,  814, 1931, 1929, 1928, 1927,
-      630,  823,  642,  849,  671, 1332,    0,  859, 1343,  884,
-      831, 1384,  894,  628, 3619, 1911, 1869, 1861, 1825, 1826,
-     1820, 1820, 1775,  500, 1770, 1753, 1754,  611,  600,  309,
-      657,  928,  752, 1426, 1461,  938, 1791, 1775, 1774, 1773,
-     1494,  772,  971, 1011, 1051,  867, 1042, 1065, 1082, 1092,
-     1536,    0, 1094, 1547, 1117,  902, 1588, 1127, 1736, 1704,
-
-      629,  577, 1698, 1705,  762,  885,  878, 1714, 1683,  607,
-      601,  889,  969, 1629, 1663, 1697, 1715, 1686, 1685, 1161,
-     1732, 1169,  979, 1772, 1204, 1235, 1694, 1245, 1272, 1282,
-     1127, 1195, 1218, 1307, 1307, 1318, 1814,    0, 1320, 1825,
-     1360, 1019, 1866, 1403, 1662, 1634,  936, 3619, 1634, 1627,
-     1639, 1624, 1017, 3619, 1057, 3619, 1105, 1610, 1590,  456,
-     1212,  643, 1106, 1437,  773, 1907, 1941, 1370, 1613, 1610,
-     1445, 1263, 1470, 1283, 1976,    0,  676, 1987, 1478, 1411,
-     2027, 1513, 1566, 1607, 1639, 1426, 1504, 1649, 1651, 1671,
-     1681, 2069,    0, 1683, 2080, 1705, 1486, 1715, 1590, 1587,
-
-     1550, 1530, 1169, 1210, 1472, 1451, 1409,  883,  715, 1866,
-     1422, 2122, 2157, 2192, 2227, 1445, 1751, 1791, 1844, 1428,
-     1567, 1608, 1883, 1716, 2262,    0,  792, 2273, 1915, 1521,
-     2313, 1925, 1949, 1396, 1959, 2006, 2046, 1652, 1742, 2090,
-      963, 1061, 2355,    0, 1055, 1368, 1366, 1324, 1272, 1409,
-     3619, 1449, 3619, 1258, 1568, 2104,  336, 1321, 1773, 1867,
-     2104,  970, 2365, 2400, 2137, 1107, 2052, 1197, 2145, 2170,
-     2180, 1132, 1128, 1792, 1926, 2200, 1960, 2435,    0, 1097,
-     2446, 2208, 1891, 2486, 2237, 2246, 2291, 2331, 1835, 1109,
-     1214, 1519, 3619, 1572, 1074, 1014,  825,  881,  288,  833,
-
-     2028, 2268, 2313, 2353, 2376, 2400, 2398, 2419, 2528, 2563,
-     2598, 2416, 2465, 2505,  832,  829, 1988, 2007, 2216, 2104,
-     2633,    0, 1208, 2644, 2536, 2473, 2546,  801, 2572, 2581,
-     2514,  788, 1591, 3619, 1611,  683, 3619,  699, 3619, 1268,
-     2606, 2614, 2622, 1258, 2686, 2721, 2663, 2669,  656, 2696,
-     2706, 2731,  589,  549, 2123,  510,  428, 2739,    0, 1251,
-     1612, 3619, 1756, 2114, 2756, 2791, 2826, 2764, 2772, 2780,
-      399,    0,  280, 1757, 3619,  215, 2802, 1295, 2861, 2896,
-     2812, 3619, 2835, 2845, 2554, 3619,  155, 3619, 2872, 2880,
-     2913,   53, 2929, 2905, 3619, 2977, 2993, 3009, 3025, 3041,
-
-     3057, 3073, 3089, 3105, 3111, 3127, 3143, 1289, 3159, 3175,
-     3191, 3207, 3223, 3239, 3255, 3261, 3268, 3284, 3300, 3306,
-     3313, 3319, 3325, 3331, 3338, 3344, 3350, 3356, 3363, 3371,
-     3377, 3383, 3389, 3396, 3404, 3410, 3416, 3423, 3431, 3437,
-     3445, 3452, 3460, 3466, 3474, 3481, 3489, 3505, 3521, 3527,
-     3535, 3542, 3558, 3564, 3572, 3578, 3586, 1460, 3602
+        0,   65,   67,   72,   99,  114,  162,  227,  292,  340,
+       86,  125, 2840, 2790, 2836, 3665, 2833, 3665,  387,   70,
+     3665, 3665, 2771, 3665,  136,  397,  133,  159, 2795, 3665,
+     3665,  453, 2781,   33,  504, 2770, 2767, 2777, 2765, 2771,
+     2754,  559,  170,   19,  165,  583,   38,   49, 2739,   68,
+     2727,   81,  219, 2771,  305,   48,    0, 3665, 2761, 3665,
+        0,  250,  639,  119,    0, 2709, 3665,  108, 3665,  112,
+     3665,  140, 2699,   98,  121, 3665,  195, 2693,  661, 2739,
+     2736, 2736, 3665,  227,  247,  300,  316,  152,  354, 2681,
+      686,  373, 2670,  711,  352,  722, 2692, 2669,  375,  414,
+
+      302, 2656,   57,  763,    0, 2628, 2625, 2614,  505, 2602,
+     2606, 2599, 2601,  202, 3665,  153,  546, 2572, 2565, 2549,
+     2537, 2524,  200,  110,  244,   28,  111,  252,  171, 2578,
+      422, 2577,  565, 2529,  818,  262,    0, 2573,  179, 3665,
+     3665,  599,  269,    0, 2513,  453, 3665, 3665, 2512,  548,
+     2490, 2533,  206,  253,  323, 2535, 2524, 2513,  607,  615,
+      306,  722,  586,  831,  867,  903,  939, 2499, 2456,  980,
+      333, 1022, 1063,    0, 2430, 2394, 2363, 2364, 2374, 2369,
+     2327, 2330, 2329, 2328,  266, 2289, 2283, 2272, 2274, 2279,
+      409,  334, 2279,  145,  335,   83,  672,  278, 2327, 2325,
+
+      627,  259, 1106, 1142,  741,  210, 2293, 2279,  683,  513,
+     2275, 2271,  352,  747, 1178,  780,  788, 1220,  815, 2270,
+      400,  325, 2261, 2258, 2248, 2246, 2242,    0, 2240,    0,
+      489, 2223, 2213, 2198, 2211, 2198,  420,  407,  529,  490,
+      491, 1263, 1299, 1335, 2235, 2234,  839, 2234, 2232, 2228,
+     2226,  528,  848,  657,  856,  665, 1371,    0,  877, 1382,
+      886,  894, 1424,  913,  570, 3665, 2208, 2197, 2198, 2177,
+     2184, 2193, 2190, 2169,  558, 2145, 2098, 2099,  648,  626,
+      530,  559,  923,  336, 1467, 1503,  964, 2138, 2137, 2108,
+     2086, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,
+
+      923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,
+     2065,  747,  686, 2046, 2005,  786,  926,  905, 2014, 1982,
+      679,  634,  544,  915, 1675, 1710, 1745, 2015, 1978, 1962,
+     1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,
+     1207,  950,  951,  962,  991, 1247, 1073, 1865,    0, 1283,
+     1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,
+     1898, 1893, 1873, 1286, 3665, 1336, 3665,  707, 1790, 1783,
+      786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,
+     1799, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,
+     1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
+
+     1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1765,
+     1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,
+     1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,
+     1563, 1478, 1504, 1694, 1524, 2324,    0,  617, 2335, 1753,
+     1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,
+     1887,  714,  825, 2419,    0,  926, 1407, 1508, 1506, 1471,
+     1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,
+     1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,
+     2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501,    0,
+     1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,
+
+     1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118,  384,
+     1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,
+     2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,
+     2043, 2704,    0, 1224, 2715, 2403, 2437, 2445,  992, 2454,
+     2474, 2483,  903, 1921, 3665, 1941,  839, 3665,  843, 3665,
+     1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579,  811,
+     2607, 2617, 2642,  640,  629, 2109,  535,  447, 2650,    0,
+     1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,
+     2692,  337,    0,  333, 2067, 3665,  327, 2733, 1912, 2938,
+     2974, 2743, 3665, 2767, 2777, 2658, 3665,  166, 3665, 2805,
+
+     2813, 2847,   63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
+     3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,
+     3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,
+     3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,
+     3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,
+     3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,
+     3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648
     } ;
 
-static yyconst short int yy_def[660] =
+static yyconst short int yy_def[671] =
     {   0,
-      595,    1,    1,    1,  596,  596,  597,  597,  598,  598,
-      599,  599,  595,  600,  595,  595,  595,  595,  601,  602,
-      595,  595,  603,  595,  604,  600,   26,   26,  605,  595,
-      595,  595,   32,   32,   34,   34,   34,   34,  600,   26,
-      600,  595,  601,   32,   32,   34,   34,   34,  595,  595,
-      595,  606,  600,  607,  595,  607,  595,  607,  595,  601,
-      595,  608,  609,  595,  609,  595,  609,  595,  610,  611,
-      611,  611,  595,  595,  600,  600,  595,  595,  612,  595,
-      613,  595,  602,  595,  614,  602,  603,  603,  604,  615,
-      600,  600,   26,  605,   93,   93,   93,   93,  616,  617,
-
-       32,   34,   34,   34,   34,   34,   34,  600,  595,  600,
-      595,  595,  595,  595,  595,  595,  612,  600,   93,  600,
-      600,  600,  595,  595,  595,  595,  606,  618,  600,  600,
-      607,  607,  595,  595,  595,  613,  595,  608,  609,  609,
-      595,  595,  609,  609,  611,  595,  611,  611,  595,  595,
-      612,  619,  595,  595,  614,  614,  595,  600,  600,  600,
-       93,  161,  620,  595,  621,  595,   32,   34,   34,   34,
-       34,   34,   34,   34,   34,  600,  595,  595,  595,  595,
-      595,  612,  600,  161,  600,  600,  600,  595,  600,  595,
-      619,  600,  600,  600,  600,  600,  600,  622,  623,  623,
-
-      200,  624,  623,  625,  166,  595,  206,  206,  595,  206,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,  600,
-      595,  595,  595,  595,  595,  612,  600,  600,  600,  600,
-      600,  600,  600,  595,  626,  626,  236,  626,  627,  628,
-      629,  595,  630,  209,  630,  630,  246,  630,  595,  249,
-      249,  595,  249,  595,  595,   34,   34,   34,   34,   34,
-       34,   34,   34,  600,  595,  595,  595,  612,  600,  600,
-      600,  600,  600,  600,  600,  600,  631,  631,  632,  633,
-      595,  595,  595,  595,  595,  634,  634,  635,  252,  635,
-      635,  291,  635,  595,  294,  294,  595,  294,   34,   34,
-
-       34,   34,   34,   34,   34,   34,  600,  595,  595,  612,
-      600,  600,  600,  600,  600,  600,  595,  636,  637,  281,
-      595,  321,  321,  595,  321,  595,  595,  595,  595,  595,
-      595,  638,  638,  639,  297,  639,  639,  337,  639,  595,
-      340,  340,  595,  340,   34,   34,  595,  595,   34,   34,
-       34,   34,  595,  595,  595,  595,  600,  595,  595,  612,
-      600,  600,  600,  600,  600,  600,  600,  600,  595,  640,
-      595,  641,  324,  641,  641,  375,  375,  595,  378,  378,
-      595,  378,  595,  595,  595,  595,  642,  642,  643,  343,
-      643,  643,  392,  643,  595,  395,  395,  395,   34,   34,
-
-       34,   34,   34,   34,  600,  595,  595,  612,  600,  600,
-      600,  600,  600,  600,  600,  595,  595,  595,  595,  644,
-      644,  645,  381,  645,  645,  425,  425,  595,  428,  428,
-      595,  428,  595,  595,  595,  595,  595,  595,  646,  646,
-      647,  647,  647,  443,  443,   34,   34,   34,   34,  595,
-      595,  595,  595,  595,  595,  612,  612,  600,  648,  649,
-      600,  600,  600,  600,  600,  600,  595,  595,  595,  595,
-      595,  595,  650,  650,  651,  431,  651,  651,  478,  478,
-      595,  481,  481,  595,  481,  595,  595,  595,  595,  652,
-      652,  595,  595,   34,   34,   34,  595,  653,  612,  600,
-
-      648,  648,  648,  648,  595,  648,  649,  649,  600,  600,
-      600,  595,  595,  595,  595,  654,  654,  655,  484,  655,
-      655,  521,  521,  595,  524,  524,  524,  595,  595,  595,
-      595,  595,  595,  595,   34,   34,  595,  653,  595,  612,
-      595,  595,  600,  600,  600,  600,  600,  595,  595,  595,
-      595,  595,  595,  656,  656,  657,  657,  657,  558,  558,
-      595,  595,   34,  612,  600,  600,  600,  595,  595,  595,
-      595,  658,  658,  595,  595,  659,  600,  600,  600,  600,
-      600,  595,  595,  595,  595,  595,  659,  595,  600,  600,
-      600,  600,  600,  600,    0,  595,  595,  595,  595,  595,
-
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595
+      606,    1,    1,    1,  607,  607,  608,  608,  609,  609,
+      610,  610,  606,  611,  606,  606,  606,  606,  612,  613,
+      606,  606,  614,  606,  615,  611,   26,   26,  616,  606,
+      606,  606,   32,   32,   32,   35,   35,   35,   35,   35,
+       35,  611,   26,  611,  606,  612,   32,   32,   35,   35,
+       35,  606,  606,  606,  617,  611,  618,  606,  618,  606,
+      618,  606,  612,  606,  619,  620,  606,  620,  606,  620,
+      606,  621,  622,  622,  622,  606,  606,  611,  611,  606,
+      606,  623,  606,  624,  606,  613,  606,  625,  613,  614,
+      614,  615,  626,  611,  611,   26,  616,   96,   96,   96,
+
+       96,  627,  628,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,  611,  606,  611,  606,  606,  606,  606,
+      606,  606,  623,  611,   96,  611,  611,  611,  606,  606,
+      606,  606,  617,  629,  611,  611,  618,  618,  606,  606,
+      606,  624,  606,  619,  620,  620,  606,  606,  620,  620,
+      622,  606,  622,  622,  606,  606,  623,  630,  606,  606,
+      625,  625,  606,  611,  611,  611,   96,  167,  631,  606,
+      632,  606,  104,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,  611,  606,  606,  606,  606,  606,
+      623,  611,  167,  611,  611,  611,  606,  611,  606,  630,
+
+      611,  611,  611,  611,  611,  611,  633,  634,  634,  209,
+      635,  634,  636,  172,  606,  215,  215,  606,  215,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+      611,  606,  606,  606,  606,  606,  623,  611,  611,  611,
+      611,  611,  611,  611,  606,  637,  637,  247,  637,  638,
+      639,  640,  606,  641,  218,  641,  641,  257,  641,  606,
+      260,  260,  606,  260,  606,  606,   35,   35,   35,   35,
+       35,   35,   35,   35,  611,  606,  606,  606,  623,  611,
+      611,  611,  611,  611,  611,  611,  611,  642,  642,  643,
+      644,  606,  606,  606,  606,  606,  645,  645,  646,  263,
+
+      646,  646,  302,  646,  606,  305,  305,  606,  305,   35,
+       35,   35,   35,   35,   35,   35,   35,  611,  606,  606,
+      623,  611,  611,  611,  611,  611,  611,  606,  647,  648,
+      292,  606,  332,  332,  606,  332,  606,  606,  606,  606,
+      606,  606,  649,  649,  650,  308,  650,  650,  348,  650,
+      606,  351,  351,  606,  351,   35,   35,  606,  606,   35,
+       35,   35,   35,  606,  606,  606,  606,  611,  606,  606,
+      623,  611,  611,  611,  611,  611,  611,  611,  611,  606,
+      651,  606,  652,  335,  652,  652,  386,  386,  606,  389,
+      389,  606,  389,  606,  606,  606,  606,  653,  653,  654,
+
+      354,  654,  654,  403,  654,  606,  406,  406,  406,   35,
+       35,   35,   35,   35,   35,  611,  606,  606,  623,  611,
+      611,  611,  611,  611,  611,  611,  606,  606,  606,  606,
+      655,  655,  656,  392,  656,  656,  436,  436,  606,  439,
+      439,  606,  439,  606,  606,  606,  606,  606,  606,  657,
+      657,  658,  658,  658,  454,  454,   35,   35,   35,   35,
+      606,  606,  606,  606,  606,  606,  623,  623,  611,  659,
+      660,  611,  611,  611,  611,  611,  611,  606,  606,  606,
+      606,  606,  606,  661,  661,  662,  442,  662,  662,  489,
+      489,  606,  492,  492,  606,  492,  606,  606,  606,  606,
+
+      663,  663,  606,  606,   35,   35,   35,  606,  664,  623,
+      611,  659,  659,  659,  659,  606,  659,  660,  660,  611,
+      611,  611,  606,  606,  606,  606,  665,  665,  666,  495,
+      666,  666,  532,  532,  606,  535,  535,  535,  606,  606,
+      606,  606,  606,  606,  606,   35,   35,  606,  664,  606,
+      623,  606,  606,  611,  611,  611,  611,  611,  606,  606,
+      606,  606,  606,  606,  667,  667,  668,  668,  668,  569,
+      569,  606,  606,   35,  623,  611,  611,  611,  606,  606,
+      606,  606,  669,  669,  606,  606,  670,  611,  611,  611,
+      611,  611,  606,  606,  606,  606,  606,  670,  606,  611,
+
+      611,  611,  611,  611,  611,    0,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606
     } ;
 
-static yyconst short int yy_nxt[3685] =
+static yyconst short int yy_nxt[3732] =
     {   0,
        14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
        23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
-       26,   26,   26,   29,   30,   31,   14,   32,   32,   32,
-       32,   33,   34,   34,   34,   34,   35,   36,   34,   37,
-       34,   38,   34,   34,   34,   34,   34,   39,   14,   40,
-       40,   40,   40,   40,   40,   14,   14,   14,   14,   14,
-       14,   14,   41,   14,   14,   42,   49,   49,   76,   43,
-       50,   50,   71,   16,   72,   73,   51,   51,   76,   52,
-       52,  123,  137,  109,  147,  110,   15,   55,   56,  148,
-       57,  124,   84,   44,   45,  130,   57,   46,   80,  141,
-
-       76,   15,   55,   56,   47,   57,  142,   48,   57,   58,
-       85,   57,   71,   16,   72,   73,   90,   90,   74,   76,
-       90,   90,  140,   57,   58,  144,  109,   53,   53,  140,
-      146,  183,   59,  146,   86,   84,  137,  109,   90,   96,
-       96,   96,   96,   96,   96,   96,   96,   59,   15,   16,
-       17,  111,   60,  149,  150,  182,  145,  588,   74,  164,
-       91,   97,   97,   97,   97,   97,   98,   75,  166,   95,
-       95,   95,   95,   95,   95,   95,   95,  156,   76,  112,
-      113,  123,   76,  114,  162,  162,  162,  162,  162,  162,
-      115,  124,  227,  116,   61,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   15,   16,   17,  125,   60,  588,   82,   82,
-       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,  153,   75,   76,  154,  154,  154,  154,  154,
-      154,  154,  154,  137,  109,   76,  186,  229,   61,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   15,   16,   17,   64,
-       60,  137,  109,   76,  184,   65,   66,   67,  176,   76,
-       80,  128,  128,  371,  595,  128,  128,   90,   90,   68,
-
-       76,   90,   90,   76,  185,  189,  133,  109,  134,  187,
-      135,  147,  595,  128,  134,  148,  135,  137,  109,   90,
-      149,  150,   69,   15,   16,   17,   64,   60,  135,  135,
-       80,  192,   65,   66,   67,  129,   86,   83,   80,   83,
-       83,   91,  164,   83,   83,  170,   68,   83,   76,  540,
-      171,  205,  135,  172,   76,  173,   76,  146,   94,  146,
-       83,   83,  595,  140,  227,   76,  312,  220,   76,   69,
-       80,  158,  159,  160,  158,  158,  158,  158,  158,  226,
-       81,  230,   76,   82,   82,   82,   82,   82,   82,   82,
-       82,   92,  499,   93,   93,   93,   93,   93,   93,   93,
-
-       93,   94,  254,   76,  156,   95,   95,   95,   95,   95,
-      162,  162,  162,  162,  162,  162,  162,  162,   76,  238,
-      238,  238,  519,  227,  255,   76,  164,   95,   95,   95,
-       95,   95,   95,   75,  139,  205,  256,  139,  139,   75,
-      257,  595,   75,   75,  139,   75,   75,   75,  101,  101,
-      101,  101,  101,  101,  101,  101,   94,  139,   80,   75,
-      101,  101,  101,  101,  101,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-       76,  102,   95,   95,   95,   95,   95,   95,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,  102,  102,
-
-      102,  102,  102,  102,  102,  102,  595,   76,  269,  408,
-      102,  102,  102,  102,  102,  162,  162,  162,  162,  162,
-      162,  162,  162,  371,  192,  111,  193,  193,  193,  193,
-      193,  193,   75,   75,   75,   75,   75,   75,  108,  109,
-       75,   75,   75,   76,   75,   75,   90,   76,   75,  264,
-       90,   76,  307,  112,  113,   80,   90,  114,   76,   76,
-       75,   75,   75,   80,  115,  271,  227,  116,   90,   90,
-      128,  128,  519,   81,  128,  128,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,  128,  595,  595,  595,  595,  595,  595,  595,
-
-      595,  154,  154,  154,  154,  154,  154,  154,  154,   80,
-      268,  349,  476,   80,  129,  350,   94,  117,   80,  154,
-      154,  154,  154,  154,  154,  154,  154,  311,  136,  254,
-      347,  595,  595,  595,  595,  595,  595,  595,  595,   75,
-       76,   75,   75,   75,  164,   75,   75,   76,   76,   75,
-      128,  255,  348,  205,  128,  242,  164,  270,  361,  360,
-      128,   75,   75,   75,   87,  244,   87,   87,   87,  548,
-       87,   87,  128,  128,   87,  310,  231,  232,  233,  231,
-      231,  231,  231,  231,  595,  164,   87,   87,   87,   89,
-       76,   75,   75,   89,  244,   75,   75,  420,  420,   89,
-
-      155,  539,  155,  155,   76,  410,  155,  155,   76,  313,
-      155,   89,   89,   75,  161,  161,  161,  161,  161,  161,
-      161,  161,  155,  155,  155,  563,  161,  161,  161,  161,
-      161,  236,  236,  237,  238,  238,  238,  238,  238,  202,
-      210,  210,  210,  210,  210,  210,  210,  210,  161,  161,
-      161,  161,  161,  161,  167,  167,  167,  167,  167,  167,
-      167,  167,   76,  353,  458,  272,  167,  167,  167,  167,
-      167,  246,  246,  246,  246,  246,  246,  246,  246,  247,
-      247,  247,  247,  247,  248,  354,  164,  364,  161,  161,
-      161,  161,  161,  161,  127,  205,   75,   75,  127,   76,
-
-       75,   75,  164,  595,  127,  245,  245,  245,  245,  245,
-      245,  245,  245,  473,  473,  164,  127,  127,   75,  192,
-       76,  193,  193,  193,  193,  193,  193,  193,  193,  278,
-      278,  278,  278,  278,  278,  278,  278,  202,  283,  284,
-      285,  283,  283,  283,  283,  283,  292,  292,  292,  292,
-      292,  293,  476,   76,  192,  423,  194,  194,  194,  194,
-      194,  194,  194,  194,  253,  253,  253,  253,  253,  253,
-      253,  253,  242,  164,  287,  287,  287,  287,  287,  287,
-       76,  164,  244,  539,  456,   80,  355,  537,   76,  192,
-      244,  195,  195,  195,  195,  195,  196,  193,  193,  291,
-
-      291,  291,  291,  291,  291,  291,  291,  595,  356,  290,
-      290,  290,  290,  290,  290,  290,  290,  338,  338,  338,
-      338,  338,  339,   76,   75,   76,  197,  197,  197,  197,
-      197,  197,  197,  197,  357,  457,   76,  347,  197,  197,
-      197,  197,  197,  314,  315,  316,  314,  314,  314,  314,
-      314,  272,  362,  273,  273,  273,  273,  273,  273,  348,
-      197,  197,  197,  197,  197,  197,  199,  200,  201,  201,
-      201,  201,  201,  201,  202,   76,  242,  164,  203,  203,
-      203,  203,  203,  461,  326,   76,  327,  327,  327,  327,
-      327,  327,  327,  327,  376,  376,  376,  376,  376,  377,
-
-      203,  203,  203,  203,  203,  203,  164,  206,  207,  208,
-      206,  206,  206,  206,  206,  209,   76,   76,  353,  210,
-      210,  210,  210,  210,  326,  363,  328,  328,  328,  328,
-      328,  328,  328,  328,  393,  393,  393,  393,  393,  394,
-      354,  210,  210,  210,  210,  210,  210,  211,  211,  211,
-      211,  211,  211,  211,  211,  242,  164,  536,  355,  211,
-      211,  211,  211,  211,  326,  244,  329,  329,  329,  329,
-      329,  330,  327,  327,  595,  164,  490,  490,  242,  164,
-      356,  197,  197,  197,  197,  197,  197,  192,  289,  193,
-      193,  193,  193,  193,  193,  193,  193,  298,  298,  298,
-
-      298,  298,  298,  298,  298,  595,  164,  242,  164,  333,
-      333,  333,  333,  333,  333,  289,  535,  289,  516,  516,
-      461,   76,  192,  164,  193,  193,  193,  193,  193,  193,
-      193,  193,  337,  337,  337,  337,  337,  337,  337,  337,
-      595,  164,  336,  336,  336,  336,  336,  336,  336,  336,
-      244,  423,   76,   76,   76,  373,   76,  242,  164,  243,
-      243,  243,  243,  243,  243,  243,  243,  244,  405,  411,
-      450,  245,  245,  245,  245,  245,  325,  325,  325,  325,
-      325,  325,  325,  325,  375,  375,  375,  375,  375,  375,
-      375,  375,  451,  245,  245,  245,  245,  245,  245,  164,
-
-      249,  250,  251,  249,  249,  249,  249,  249,  252,  164,
-      467,  452,  253,  253,  253,  253,  253,  595,  289,  374,
-      374,  374,  374,  374,  374,  374,  374,  242,  164,  554,
-      554,  242,  164,  453,  253,  253,  253,  253,  253,  253,
-      272,  289,  273,  273,  273,  273,  273,  273,  273,  273,
-      383,  384,  385,  383,  383,  383,  383,  383,  326,   76,
-      327,  327,  327,  327,  327,  327,  327,  327,  409,  564,
-       80,  543,  572,  572,   76,  272,  371,  274,  274,  274,
-      274,  274,  274,  274,  274,  326,  373,  327,  327,  327,
-      327,  327,  327,  327,  327,  326,  595,  327,  327,  327,
-
-      327,  327,  327,  138,  138,   76,  373,  497,  577,   76,
-      272,  496,  275,  275,  275,  275,  275,  276,  273,  273,
-      242,  164,  344,  344,  344,  344,  344,  344,  344,  344,
-      335,  595,  164,  242,  164,  388,  388,  388,  388,  388,
-      388,  335,   76,  335,   76,  242,  164,  287,  287,  287,
-      287,  287,  287,  287,  287,  244,  242,  164,  288,  288,
-      288,  288,  288,  288,  288,  288,  289,  495,   76,  492,
-      290,  290,  290,  290,  290,  392,  392,  392,  392,  392,
-      392,  392,  392,  500,  364,  365,  365,  365,  365,  365,
-      365,  493,  290,  290,  290,  290,  290,  290,  164,  294,
-
-      295,  296,  294,  294,  294,  294,  294,  297,  494,  433,
-      450,  298,  298,  298,  298,  298,  595,   76,  391,  391,
-      391,  391,  391,  391,  391,  391,  426,  426,  426,  426,
-      426,  427,  451,  298,  298,  298,  298,  298,  298,  272,
-      164,  273,  273,  273,  273,  273,  273,  273,  273,  289,
-      452,  373,  412,  413,  414,  415,  412,  412,  412,  412,
-      417,  418,  419,  417,  417,  417,  417,  417,  320,   76,
-      586,  455,  453,   76,  272,  586,  273,  273,  273,  273,
-      273,  273,  273,  273,   76,  382,  382,  382,  382,  382,
-      382,  382,  382,  425,  425,  425,  425,  425,  425,  425,
-
-      425,  444,  444,  444,  444,  444,  445,  454,   76,  321,
-      322,  323,  321,  321,  321,  321,  321,  324,  164,   76,
-      492,  325,  325,  325,  325,  325,  595,  335,  424,  424,
-      424,  424,  424,  424,  424,  424,  479,  479,  479,  479,
-      479,  480,  493,  325,  325,  325,  325,  325,  325,  242,
-      164,  333,  333,  333,  333,  333,  333,  333,  333,  289,
-      242,  164,  334,  334,  334,  334,  334,  334,  334,  334,
-      335,  459,  449,  533,  336,  336,  336,  336,  336,  433,
-      371,  434,  434,  434,  434,  434,  434,  434,  434,  448,
-      373,  459,  533,  459,  459,  534,  336,  336,  336,  336,
-
-      336,  336,  164,  340,  341,  342,  340,  340,  340,  340,
-      340,  343,  561,  561,  534,  344,  344,  344,  344,  344,
-      433,  371,  435,  435,  435,  435,  435,  435,  435,  435,
-      447,  423,  446,  320,  562,  562,  240,  344,  344,  344,
-      344,  344,  344,  364,  365,  365,  365,  365,  365,  365,
-      365,  365,  433,  407,  436,  436,  436,  436,  436,  437,
-      434,  434,  242,  164,  242,  164,  164,  406,  404,  403,
-      402,  401,  335,  400,  390,  335,   76,  364,  366,  366,
-      366,  366,  366,  366,  366,  366,  398,  398,  398,  398,
-      398,  398,  398,  398,  595,  164,  242,  164,  440,  440,
-
-      440,  440,  440,  440,  390,  399,  390,  326,  320,  240,
-       76,  364,  367,  367,  367,  367,  367,  368,  365,  365,
-      443,  443,  443,  443,  443,  443,  443,  443,  595,  595,
-      442,  442,  442,  442,  442,  442,  442,  442,  202,  423,
-      359,  358,  352,  351,   76,  371,  346,  372,  372,  372,
-      372,  372,  372,  372,  372,  373,  164,  574,  574,  374,
-      374,  374,  374,  374,  467,  390,  468,  468,  468,  468,
-      468,  468,  468,  468,  502,  345,  503,  504,  505,  575,
-      575,  374,  374,  374,  374,  374,  374,  378,  379,  380,
-      378,  378,  378,  378,  378,  381,  320,  240,  202,  382,
-
-      382,  382,  382,  382,  467,  371,  469,  469,  469,  469,
-      469,  469,  469,  469,  202,  423,  265,  309,  308,  306,
-      506,  382,  382,  382,  382,  382,  382,  242,  164,  388,
-      388,  388,  388,  388,  388,  388,  388,  335,  242,  164,
-      389,  389,  389,  389,  389,  389,  389,  389,  390,  164,
-      305,  304,  391,  391,  391,  391,  391,  467,  390,  470,
-      470,  470,  470,  470,  471,  468,  468,  303,  502,  459,
-      503,  504,  505,  302,  391,  391,  391,  391,  391,  391,
-      164,  395,  396,  397,  395,  395,  395,  395,  395,  459,
-      301,  459,  460,  398,  398,  398,  398,  398,  432,  432,
-
-      432,  432,  432,  432,  432,  432,  522,  522,  522,  522,
-      522,  523,  300,   76,  508,  398,  398,  398,  398,  398,
-      398,  364,  365,  365,  365,  365,  365,  365,  365,  365,
-      478,  478,  478,  478,  478,  478,  478,  478,  595,  371,
-      477,  477,  477,  477,  477,  477,  477,  477,  299,  476,
-      281,  240,  202,  277,   76,  364,  365,  365,  365,  365,
-      365,  365,  365,  365,  486,  487,  488,  486,  486,  486,
-      486,  486,  433,  595,  434,  434,  434,  434,  434,  434,
-      434,  434,  202,  476,  100,  265,  267,  265,   76,  371,
-      266,  421,  421,  421,  421,  421,  421,  421,  421,  373,
-
-      371,  371,  422,  422,  422,  422,  422,  422,  422,  422,
-      423,  476,  265,  263,  424,  424,  424,  424,  424,  433,
-      371,  434,  434,  434,  434,  434,  434,  434,  434,  595,
-      519,  595,  595,  595,  262,  261,  424,  424,  424,  424,
-      424,  424,  428,  429,  430,  428,  428,  428,  428,  428,
-      431,  260,  259,  258,  432,  432,  432,  432,  432,  433,
-       94,  434,  434,  434,  434,  434,  434,  512,  513,  514,
-      512,  512,  512,  512,  512,  506,  432,  432,  432,  432,
-      432,  432,  242,  164,  440,  440,  440,  440,  440,  440,
-      440,  440,  390,  242,  164,  441,  441,  441,  441,  441,
-
-      441,  441,  441,  242,  164,  456,   80,  442,  442,  442,
-      442,  442,  202,  390,  240,  564,   80,  595,  498,  509,
-      510,  511,  509,  509,  509,  509,  509,  519,  576,  442,
-      442,  442,  442,  442,  442,  461,  371,  462,  462,  462,
-      462,  462,  462,  462,  462,  202,  519,  100,   80,  190,
-      461,   76,  462,  462,  462,  462,  462,  462,  467,  228,
-      468,  468,  468,  468,  468,  468,  468,  468,  225,   76,
-      461,  224,  463,  463,  463,  463,  463,  463,  463,  463,
-      223,  222,  221,  467,   76,  468,  468,  468,  468,  468,
-      468,  468,  468,  467,  219,  468,  468,  468,  468,  468,
-
-      468,  218,  217,  216,   76,  461,  215,  464,  464,  464,
-      464,  464,  465,  466,  466,  485,  485,  485,  485,  485,
-      485,  485,  485,  521,  521,  521,  521,  521,  521,  521,
-      521,  527,  527,  527,  527,  527,  527,  527,  527,   76,
-      461,  214,  466,  466,  466,  462,  462,  462,  462,  462,
-      595,  213,  520,  520,  520,  520,  520,  520,  520,  520,
-      164,  528,  528,  528,  528,  528,  528,  528,  528,  502,
-      212,  503,  504,  505,   76,  371,  100,  474,  474,  474,
-      474,  474,  474,  474,  474,  423,  371,   92,  475,  475,
-      475,  475,  475,  475,  475,  475,  476,   80,   80,  190,
-
-      477,  477,  477,  477,  477,  164,  529,  529,  529,  529,
-      529,  529,  529,  529,  595,  506,  503,  504,  505,  145,
-      146,  140,  477,  477,  477,  477,  477,  477,  481,  482,
-      483,  481,  481,  481,  481,  481,  484,  140,  132,  188,
-      485,  485,  485,  485,  485,  164,  530,  530,  530,  530,
-      530,  531,  528,  528,  595,  126,  595,  595,  505,  126,
-      506,  181,  485,  485,  485,  485,  485,  485,  242,  164,
-      491,  491,  491,  491,  491,  491,  491,  491,  461,  180,
-      462,  462,  462,  462,  462,  462,  462,  462,  541,  179,
-      178,  542,  542,  542,  542,  542,  542,  542,  542,  595,
-
-      506,  595,  595,  595,  177,  175,  174,  501,  501,  169,
-      168,  501,   76,  461,  100,  462,  462,  462,  462,  462,
-      462,  462,  462,  501,  501,  501,  507,  507,   75,  548,
-      507,  549,  549,  549,  549,  549,  549,  549,  549,  100,
-      157,   88,  507,  507,  507,  508,   80,   76,  371,   78,
-      517,  517,  517,  517,  517,  517,  517,  517,  476,  371,
-       77,  518,  518,  518,  518,  518,  518,  518,  518,  519,
-       76,  146,  140,  520,  520,  520,  520,  520,  548,  132,
-      550,  550,  550,  550,  550,  550,  550,  550,  559,  559,
-      559,  559,  559,  560,  126,  520,  520,  520,  520,  520,
-
-      520,  524,  525,  526,  524,  524,  524,  524,  524,  122,
-      121,  120,  119,  527,  527,  527,  527,  527,  548,  118,
-      551,  551,  551,  551,  551,  552,  549,  549,  164,  528,
-      528,  528,  528,  528,  528,  527,  527,  527,  527,  527,
-      527,  543,  107,  544,  544,  544,  544,  544,  544,  544,
-      544,  558,  558,  558,  558,  558,  558,  558,  558,  595,
-      106,  557,  557,  557,  557,  557,  557,  557,  557,  582,
-      582,  582,  582,  582,  582,   76,  543,  105,  545,  545,
-      545,  545,  545,  545,  545,  545,  164,  528,  528,  528,
-      528,  528,  528,  528,  528,  164,  528,  528,  528,  528,
-
-      528,  528,  528,  528,  104,  103,  100,   88,   78,   77,
-       76,  543,   76,  546,  546,  546,  546,  546,  547,  544,
-      544,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  565,  566,  567,
-      565,  565,  565,  565,  565,   76,  371,  595,  555,  555,
-      555,  555,  555,  555,  555,  555,  519,  371,  595,  556,
-      556,  556,  556,  556,  556,  556,  556,  595,  595,   76,
-      595,  557,  557,  557,  557,  557,  543,  595,  544,  544,
-      544,  544,  544,  544,  568,  569,  570,  568,  568,  568,
-      568,  568,  595,  557,  557,  557,  557,  557,  557,  543,
-
-      595,  544,  544,  544,  544,  544,  544,  544,  544,  548,
-       76,  549,  549,  549,  549,  549,  549,  549,  549,  548,
-      595,  549,  549,  549,  549,  549,  549,  549,  549,  595,
-      595,  595,  595,   76,  543,  595,  544,  544,  544,  544,
-      544,  544,  544,  544,  548,  595,  549,  549,  549,  549,
-      549,  549,  371,  595,  573,  573,  573,  573,  573,  573,
-      573,  573,  595,  595,  595,  595,  595,  595,   76,  577,
-      595,  578,  578,  578,  578,  578,  578,  578,  578,  582,
-      582,  582,  582,  582,  582,  582,  582,  583,  583,  583,
-      583,  583,  583,  583,  583,  584,  584,  584,  584,  584,
-
-      585,  582,  582,   76,  577,  595,  579,  579,  579,  579,
-      579,  579,  579,  579,  595,  595,  595,  589,  590,  591,
-      589,  589,  589,  589,  589,  577,  595,  578,  578,  578,
-      578,  578,  578,  595,  595,  595,  595,  595,   76,  577,
-      595,  580,  580,  580,  580,  580,  581,  578,  578,   76,
-      582,  582,  582,  582,  582,  582,  582,  582,  595,   76,
-      582,  582,  582,  582,  582,  582,  582,  582,  595,  595,
-      595,  595,  595,   76,  577,  595,  578,  578,  578,  578,
-      578,  578,  578,  578,  595,  595,  595,  592,  592,  592,
-      592,  592,  592,  592,  592,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  595,  595,  595,  595,  595,   76,  577,
-      595,  578,  578,  578,  578,  578,  578,  578,  578,   76,
-      592,  592,  592,  592,  592,  592,  595,   76,  593,  593,
-      593,  593,  593,  594,  592,  592,  595,  595,  595,  595,
-      595,  595,  595,   76,  592,  592,  592,  592,  592,  592,
-      592,  592,   76,  595,  595,  595,  595,  595,  595,  595,
-       76,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,   76,   54,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   31,   31,   31,   31,   31,   31,   31,
-
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   70,   70,   70,   70,   70,
-       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
-       70,   75,  595,  595,  595,  595,  595,  595,  595,   75,
-       75,   75,  595,  595,   75,   75,   75,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   83,  595,  595,  595,  595,   83,  595,
-      595,   83,   83,   83,   83,  595,   83,   83,   83,   87,
-      595,  595,  595,  595,  595,  595,  595,   87,   87,   87,
-
-      595,  595,   87,   87,   87,   89,  595,  595,   89,   89,
-      595,   89,  595,   89,   89,   89,  595,  595,   89,   89,
-       89,   99,   99,  595,  595,  595,   99,  127,  595,  595,
-      127,  127,  595,  127,  595,  127,  127,  127,  595,  595,
-      127,  127,  127,  131,  595,  595,  131,  131,  595,  131,
-      595,  131,  131,  131,  595,  131,  595,  131,  131,  139,
-      595,  595,  139,  595,  595,  139,  595,  139,  139,  139,
-      139,  595,  139,  139,  139,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  145,  145,  595,  145,  595,  145,  145,  145,  145,
-
-      145,  145,  145,  145,  145,  145,  145,  151,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  152,  152,  595,  152,  152,  152,  152,
-      152,  152,  152,  152,  152,  152,  152,  152,  152,  155,
-      595,  595,  595,  595,  155,  595,  595,  155,  155,  155,
-      595,  595,  155,  155,  155,   90,  595,  595,   90,   90,
-      595,   90,  595,   90,   90,   90,  595,  595,   90,   90,
-       90,  163,  163,  595,  595,  595,  163,  165,  165,  165,
-      595,  595,  595,  165,  128,  595,  595,  128,  128,  595,
-      128,  595,  128,  128,  128,  595,  595,  128,  128,  128,
-
-      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
-      191,  191,  191,  191,  191,  191,  198,  198,  595,  595,
-      595,  198,  204,  204,  204,  595,  595,  595,  204,  234,
-      234,  595,  595,  595,  234,  235,  235,  595,  595,  595,
-      235,  239,  239,  595,  595,  595,  239,  241,  241,  241,
-      595,  595,  595,  241,  277,  277,  595,  595,  595,  277,
-      279,  279,  595,  595,  595,  279,  280,  280,  595,  595,
-      595,  280,  282,  282,  282,  595,  595,  595,  282,  286,
-      286,  286,  286,  595,  595,  595,  286,  317,  317,  595,
-      595,  595,  317,  318,  318,  595,  595,  595,  318,  319,
-
-      319,  595,  595,  595,  319,  331,  331,  331,  595,  595,
-      595,  331,  332,  332,  332,  332,  595,  595,  595,  332,
-      369,  369,  595,  595,  595,  369,  370,  370,  595,  595,
-      595,  370,  386,  386,  386,  595,  595,  595,  386,  387,
-      387,  387,  387,  595,  595,  595,  387,  416,  416,  595,
-      595,  595,  416,  420,  595,  420,  420,  595,  595,  595,
-      420,  438,  438,  438,  595,  595,  595,  438,  439,  439,
-      439,  439,  595,  595,  595,  439,  472,  472,  595,  595,
-      595,  472,  473,  595,  473,  473,  595,  595,  595,  473,
-      489,  489,  489,  595,  595,  595,  489,  490,  490,  490,
-
-      595,  595,  595,  595,  490,  501,  501,  595,  501,  501,
-      501,  595,  595,  501,  501,  501,  595,  595,  501,  501,
-      501,  507,  507,  595,  507,  507,  507,  595,  595,  507,
-      507,  507,  595,  595,  507,  507,  507,  515,  515,  595,
-      595,  595,  515,  516,  595,  516,  516,  595,  595,  595,
-      516,  532,  532,  595,  595,  595,  595,  532,  538,  538,
-      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
-      538,  538,  538,  538,  553,  553,  595,  595,  595,  553,
-      554,  595,  554,  554,  595,  595,  595,  554,  571,  571,
-      595,  595,  595,  571,  572,  595,  572,  595,  595,  595,
-
-      595,  572,  587,  587,  587,  587,  587,  587,  587,  587,
-      587,  587,  587,  587,  587,  587,  587,  587,   13,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595
+       26,   26,   26,   29,   30,   31,   14,   32,   33,   33,
+       33,   34,   35,   35,   35,   35,   36,   37,   35,   38,
+       39,   40,   41,   35,   35,   35,   35,   35,   42,   14,
+       43,   43,   43,   43,   43,   43,   14,   14,   14,   14,
+       14,   14,   14,   44,   14,   14,   45,   79,   52,  105,
+       46,  170,   53,   52,  105,   87,   79,   53,   54,  107,
+      172,   55,  129,   54,  116,  105,   55,   74,   16,   75,
+       76,  194,  130,   88,   47,   48,   79,  124,   49,  153,
+
+       15,   58,   59,  125,   60,   50,  111,   35,   51,   35,
+       60,   79,   35,  136,   35,   15,   58,   59,   89,   60,
+      143,  115,   60,   61,  154,   60,   74,   16,   75,   76,
+       56,   79,  147,  127,   77,   56,  148,   60,   61,   93,
+       93,  150,  115,   93,   93,  238,  152,   62,   99,   99,
+       99,   99,   99,   99,   99,   99,  146,   87,   79,   79,
+      146,   93,   62,   15,   16,   17,  117,   63,  599,  152,
+      192,  195,  129,   77,  100,  100,  100,  100,  100,  101,
+      143,  115,  130,   78,   94,   98,   98,   98,   98,   98,
+       98,   98,   98,   79,  118,  119,  155,  156,  120,  151,
+
+      162,   79,   83,  143,  115,  121,  185,  153,  122,  238,
+       64,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   15,   16,
+       17,  131,   63,   97,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       79,  139,  115,  140,  152,  141,  154,   78,   79,  140,
+      191,  141,   85,   85,   85,   85,   85,   85,   85,   85,
+      143,  115,  201,  141,  141,   64,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   65,   65,   15,   16,   17,   67,   63,  141,  193,
+
+       79,  152,   68,   69,   70,  606,  196,   79,  134,  134,
+       79,  606,  134,  134,   79,  198,   71,  168,  168,  168,
+      168,  168,  168,  606,  155,  156,   79,  231,  159,  599,
+      134,  160,  160,  160,  160,  160,  160,  160,  160,  241,
+       72,   15,   16,   17,   67,   63,  382,  170,   89,  283,
+       68,   69,   70,  135,  162,   86,  214,   86,   86,  267,
+      530,   86,   86,  268,   71,   86,  170,  164,  165,  166,
+      164,  164,  164,  164,  164,  214,   93,   93,   86,   86,
+       93,   93,   79,   79,   79,  240,   83,  238,   72,   83,
+      168,  168,  168,  168,  168,  168,  168,  168,   93,   84,
+
+       79,  265,   85,   85,   85,   85,   85,   85,   85,   85,
+       95,   83,   96,   96,   96,   96,   96,   96,   96,   96,
+       97,   94,   83,  266,   98,   98,   98,   98,   98,  168,
+      168,  168,  168,  168,  168,  168,  168,   85,   85,   85,
+       85,   85,   85,   85,   85,   79,  551,   98,   98,   98,
+       98,   98,   98,   78,  145,   79,  280,  145,  145,   78,
+      606,  237,   78,   78,  145,   78,   78,   78,  104,  104,
+      104,  104,  104,  104,  104,  104,   97,  145,  279,   78,
+      104,  104,  104,  104,  104,  105,  105,  105,  105,  106,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+
+      105,   79,  105,   98,   98,   98,   98,   98,   98,   78,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,  105,
+      105,  105,  105,  105,  105,  105,  105,  606,  249,  249,
+      249,  105,  105,  105,  105,  105,  177,   79,   79,   79,
+      105,  178,  170,  275,  179,  282,  180,  117,  382,  143,
+      115,  214,   97,  238,   78,   78,   78,   78,   78,   78,
+      114,  115,   78,   78,   78,  170,   78,   78,  134,  134,
+       78,  265,  134,  134,  214,  118,  119,   79,   79,  120,
+      431,  431,   78,   78,   78,   83,  121,   93,  323,  122,
+      134,   93,   79,  266,  281,   84,  146,   93,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   79,   79,  373,   93,
+       93,  318,  324,  135,  606,  606,  606,  606,  606,  606,
+      606,  606,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  484,  484,
+      123,   83,  242,  243,  244,  242,  242,  242,  242,  242,
+       83,  142,  530,  322,  606,  606,  606,  606,  606,  606,
+      606,  606,   78,  487,   78,   78,   78,  170,   78,   78,
+      253,  170,   78,  134,   79,   79,  255,  134,  606,  170,
+      255,   83,   79,  134,   78,   78,   78,   90,  255,   90,
+       90,   90,  372,   90,   90,  134,  134,   90,  247,  247,
+
+      248,  249,  249,  249,  249,  249,  211,  253,  170,   90,
+       90,   90,   92,  321,   78,   78,   92,  255,   78,   78,
+      360,  382,   92,  161,  361,  161,  161,  253,  170,  161,
+      161,  384,  371,  161,   92,   92,   78,  167,  167,  167,
+      167,  167,  167,  167,  167,  161,  161,  161,  358,  167,
+      167,  167,  167,  167,  201,   79,  202,  202,  202,  202,
+      202,  202,  219,  219,  219,  219,  219,  219,  219,  219,
+      359,  416,  167,  167,  167,  167,  167,  167,  173,  173,
+      173,  173,  173,  173,  173,  173,   97,  364,   83,   79,
+      173,  173,  173,  173,  173,  257,  257,  257,  257,  257,
+
+      257,  257,  257,  258,  258,  258,  258,  258,  259,  365,
+      253,  170,   79,  167,  167,  167,  167,  167,  167,  133,
+      300,   78,   78,  133,  559,   78,   78,  421,  606,  133,
+      256,  256,  256,  256,  256,  256,  256,  256,  606,  170,
+      419,  133,  133,   78,  201,  550,  202,  202,  202,  202,
+      202,  202,  202,  202,  289,  289,  289,  289,  289,  289,
+      289,  289,  211,  294,  295,  296,  294,  294,  294,  294,
+      294,  264,  264,  264,  264,  264,  264,  264,  264,   79,
+      201,  574,  203,  203,  203,  203,  203,  203,  203,  203,
+      253,  170,  298,  298,  298,  298,  298,  298,  467,   83,
+
+      255,  302,  302,  302,  302,  302,  302,  302,  302,  303,
+      303,  303,  303,  303,  304,   79,  201,  170,  204,  204,
+      204,  204,  204,  205,  202,  202,  606,  366,  301,  301,
+      301,  301,  301,  301,  301,  301,  606,  170,  325,  326,
+      327,  325,  325,  325,  325,  325,  300,  501,  501,  367,
+      468,   79,   78,   79,  206,  206,  206,  206,  206,  206,
+      206,  206,  368,   79,  170,  170,  206,  206,  206,  206,
+      206,   79,  374,  255,  300,  253,  170,  283,   79,  284,
+      284,  284,  284,  284,  284,  300,   79,  420,  469,  206,
+      206,  206,  206,  206,  206,  208,  209,  210,  210,  210,
+
+      210,  210,  210,  211,  253,  170,  170,  212,  212,  212,
+      212,  212,   79,  337,  346,  338,  338,  338,  338,  338,
+      338,  338,  338,  349,  349,  349,  349,  349,  350,  487,
+      212,  212,  212,  212,  212,  212,  170,  215,  216,  217,
+      215,  215,  215,  215,  215,  218,  527,  527,  434,  219,
+      219,  219,  219,  219,  337,  375,  339,  339,  339,  339,
+      339,  339,  339,  339,  309,  309,  309,  309,  309,  309,
+      309,  309,  219,  219,  219,  219,  219,  219,  220,  220,
+      220,  220,  220,  220,  220,  220,  606,  170,   79,   79,
+      220,  220,  220,  220,  220,  337,  346,  340,  340,  340,
+
+      340,  340,  341,  338,  338,  348,  348,  348,  348,  348,
+      348,  348,  348,  206,  206,  206,  206,  206,  206,  201,
+      550,  202,  202,  202,  202,  202,  202,  202,  202,  253,
+      170,  344,  344,  344,  344,  344,  344,  548,  606,  300,
+      347,  347,  347,  347,  347,  347,  347,  347,  387,  387,
+      387,  387,  387,  388,   79,  201,  547,  202,  202,  202,
+      202,  202,  202,  202,  202,  336,  336,  336,  336,  336,
+      336,  336,  336,  386,  386,  386,  386,  386,  386,  386,
+      386,  394,  395,  396,  394,  394,  394,  394,  394,  358,
+       79,  253,  170,  254,  254,  254,  254,  254,  254,  254,
+
+      254,  255,  253,  170,  546,  256,  256,  256,  256,  256,
+      606,  359,  385,  385,  385,  385,  385,  385,  385,  385,
+      337,  170,  338,  338,  338,  338,  338,  338,  256,  256,
+      256,  256,  256,  256,  170,  260,  261,  262,  260,  260,
+      260,  260,  260,  263,  170,  565,  565,  264,  264,  264,
+      264,  264,  337,  300,  338,  338,  338,  338,  338,  338,
+      338,  338,  355,  355,  355,  355,  355,  355,  355,  355,
+      264,  264,  264,  264,  264,  264,  283,  434,  284,  284,
+      284,  284,  284,  284,  284,  284,  337,  364,  338,  338,
+      338,  338,  338,  338,  338,  338,  253,  170,  399,  399,
+
+      399,  399,  399,  399,  170,  597,  346,  575,   83,  365,
+      597,   79,  283,  346,  285,  285,  285,  285,  285,  285,
+      285,  285,  403,  403,  403,  403,  403,  403,  403,  403,
+      404,  404,  404,  404,  404,  405,  606,  366,  402,  402,
+      402,  402,  402,  402,  402,  402,   79,   79,  283,  170,
+      286,  286,  286,  286,  286,  287,  284,  284,  346,  367,
+      461,  606,  422,  428,  429,  430,  428,  428,  428,  428,
+      428,  384,  170,  423,  424,  425,  426,  423,  423,  423,
+      423,  401,  462,   79,  253,  170,  298,  298,  298,  298,
+      298,  298,  298,  298,  255,  253,  170,  299,  299,  299,
+
+      299,  299,  299,  299,  299,  300,   79,  463,  503,  301,
+      301,  301,  301,  301,  375,  376,  376,  376,  376,  376,
+      376,  393,  393,  393,  393,  393,  393,  393,  393,  464,
+      504,  384,  301,  301,  301,  301,  301,  301,  170,  305,
+      306,  307,  305,  305,  305,  305,  305,  308,   79,  583,
+      583,  309,  309,  309,  309,  309,  436,  436,  436,  436,
+      436,  436,  436,  436,  437,  437,  437,  437,  437,  438,
+      478,  253,  170,  508,  309,  309,  309,  309,  309,  309,
+      283,  346,  284,  284,  284,  284,  284,  284,  284,  284,
+      606,  382,  435,  435,  435,  435,  435,  435,  435,  435,
+
+      444,  384,  445,  445,  445,  445,  445,  445,  445,  445,
+      507,  472,  144,  144,   83,   79,  283,  382,  284,  284,
+      284,  284,  284,  284,  284,  284,  444,  434,  446,  446,
+      446,  446,  446,  446,  446,  446,  444,  606,  447,  447,
+      447,  447,  447,  448,  445,  445,   79,  434,  461,  506,
+      505,   79,  332,  333,  334,  332,  332,  332,  332,  332,
+      335,  253,  170,  444,  336,  336,  336,  336,  336,  510,
+      462,  401,  409,  409,  409,  409,  409,  409,  409,  409,
+      455,  455,  455,  455,  455,  456,  384,  336,  336,  336,
+      336,  336,  336,  253,  170,  344,  344,  344,  344,  344,
+
+      344,  344,  344,  300,  253,  170,  345,  345,  345,  345,
+      345,  345,  345,  345,  346,  606,  170,  463,  347,  347,
+      347,  347,  347,   79,  472,  401,  253,  170,  451,  451,
+      451,  451,  451,  451,  331,  503,  401,   79,  511,  464,
+      466,  347,  347,  347,  347,  347,  347,  170,  351,  352,
+      353,  351,  351,  351,  351,  351,  354,  504,  465,   79,
+      355,  355,  355,  355,  355,  454,  454,  454,  454,  454,
+      454,  454,  454,  606,   79,  453,  453,  453,  453,  453,
+      453,  453,  453,  355,  355,  355,  355,  355,  355,  375,
+      376,  376,  376,  376,  376,  376,  376,  376,  470,  478,
+
+      544,  479,  479,  479,  479,  479,  479,  479,  479,  443,
+      443,  443,  443,  443,  443,  443,  443,  460,  470,  459,
+      470,  471,  545,   79,  375,  377,  377,  377,  377,  377,
+      377,  377,  377,  478,  470,  480,  480,  480,  480,  480,
+      480,  480,  480,   79,  478,  382,  481,  481,  481,  481,
+      481,  482,  479,  479,  470,  434,  470,  470,   79,  375,
+      378,  378,  378,  378,  378,  379,  376,  376,  489,  489,
+      489,  489,  489,  489,  489,  489,  490,  490,  490,  490,
+      490,  491,  606,  170,  488,  488,  488,  488,  488,  488,
+      488,  488,  401,   79,  382,  382,  383,  383,  383,  383,
+
+      383,  383,  383,  383,  384,  487,  458,  457,  385,  385,
+      385,  385,  385,  497,  498,  499,  497,  497,  497,  497,
+      497,  444,  331,  445,  445,  445,  445,  445,  445,  445,
+      445,  385,  385,  385,  385,  385,  385,  389,  390,  391,
+      389,  389,  389,  389,  389,  392,  251,  418,  417,  393,
+      393,  393,  393,  393,  444,  606,  445,  445,  445,  445,
+      445,  445,  445,  445,  444,  487,  445,  445,  445,  445,
+      445,  445,  393,  393,  393,  393,  393,  393,  253,  170,
+      399,  399,  399,  399,  399,  399,  399,  399,  346,  253,
+      170,  400,  400,  400,  400,  400,  400,  400,  400,  401,
+
+      253,  170,  382,  402,  402,  402,  402,  402,  467,   83,
+      401,  513,  487,  514,  515,  516,  513,  415,  514,  515,
+      516,  509,  544,  414,  554,  588,  402,  402,  402,  402,
+      402,  402,  170,  406,  407,  408,  406,  406,  406,  406,
+      406,  413,  572,  572,  545,  409,  409,  409,  409,  409,
+      520,  521,  522,  520,  520,  520,  520,  520,  517,   79,
+       79,  412,  411,  519,  573,  573,  410,  337,  409,  409,
+      409,  409,  409,  409,  375,  376,  376,  376,  376,  376,
+      376,  376,  376,   79,  472,  331,  473,  473,  473,  473,
+      473,  473,  523,  524,  525,  523,  523,  523,  523,  523,
+
+      478,  251,  479,  479,  479,  479,  479,  479,   79,  375,
+      376,  376,  376,  376,  376,  376,  376,  376,  478,   79,
+      479,  479,  479,  479,  479,  479,  479,  479,  478,  382,
+      479,  479,  479,  479,  479,  479,  479,  479,  211,  530,
+      370,  369,  363,   79,  382,  585,  432,  432,  432,  432,
+      432,  432,  432,  432,  384,  382,  606,  433,  433,  433,
+      433,  433,  433,  433,  433,  434,  530,  586,  585,  435,
+      435,  435,  435,  435,  496,  496,  496,  496,  496,  496,
+      496,  496,  532,  532,  532,  532,  532,  532,  532,  532,
+      586,  362,  435,  435,  435,  435,  435,  435,  439,  440,
+
+      441,  439,  439,  439,  439,  439,  442,  357,  356,  331,
+      443,  443,  443,  443,  443,  533,  533,  533,  533,  533,
+      534,  606,  382,  531,  531,  531,  531,  531,  531,  531,
+      531,  251,  530,  443,  443,  443,  443,  443,  443,  253,
+      170,  451,  451,  451,  451,  451,  451,  451,  451,  401,
+      253,  170,  452,  452,  452,  452,  452,  452,  452,  452,
+      211,  211,  276,  320,  453,  453,  453,  453,  453,  170,
+      539,  539,  539,  539,  539,  539,  539,  539,  170,  540,
+      540,  540,  540,  540,  540,  540,  540,  453,  453,  453,
+      453,  453,  453,  472,  319,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  170,  541,  541,  541,  541,  541,  542,
+      539,  539,  606,  317,  606,  606,  606,  575,   83,  513,
+      316,  514,  515,  516,  315,  314,  313,  312,   79,  472,
+      587,  474,  474,  474,  474,  474,  474,  474,  474,  606,
+      311,  514,  515,  516,  606,  310,  606,  606,  516,  292,
+      606,  251,  606,  606,  606,  211,  288,  211,  103,  517,
+      276,  278,  276,  277,   79,  472,  517,  475,  475,  475,
+      475,  475,  476,  477,  477,  552,  276,  274,  553,  553,
+      553,  553,  553,  553,  553,  553,  517,  273,  272,  271,
+      270,  517,  269,   97,  211,  512,  512,  519,  251,  512,
+
+       79,  472,  211,  477,  477,  477,  473,  473,  473,  473,
+      473,  512,  512,  512,  518,  518,  103,  559,  518,  560,
+      560,  560,  560,  560,  560,  560,  560,   83,  199,  239,
+      518,  518,  518,  236,  235,  234,   79,  382,  233,  485,
+      485,  485,  485,  485,  485,  485,  485,  434,  382,  232,
+      486,  486,  486,  486,  486,  486,  486,  486,  487,  230,
+      229,  228,  488,  488,  488,  488,  488,  559,  227,  561,
+      561,  561,  561,  561,  561,  561,  561,  538,  538,  538,
+      538,  538,  538,  538,  538,  488,  488,  488,  488,  488,
+      488,  492,  493,  494,  492,  492,  492,  492,  492,  495,
+
+      226,  225,  224,  496,  496,  496,  496,  496,  559,  223,
+      562,  562,  562,  562,  562,  563,  560,  560,  569,  569,
+      569,  569,  569,  569,  569,  569,  496,  496,  496,  496,
+      496,  496,  253,  170,  502,  502,  502,  502,  502,  502,
+      502,  502,  472,  222,  473,  473,  473,  473,  473,  473,
+      473,  473,  570,  570,  570,  570,  570,  571,  606,  221,
+      568,  568,  568,  568,  568,  568,  568,  568,  170,  539,
+      539,  539,  539,  539,  539,  539,  539,   79,  472,  103,
+      473,  473,  473,  473,  473,  473,  473,  473,  170,  539,
+      539,  539,  539,  539,  539,  539,  539,  170,  539,  539,
+
+      539,  539,  539,  539,  553,  553,  553,  553,  553,  553,
+      553,  553,   95,   79,  382,   83,  528,  528,  528,  528,
+      528,  528,  528,  528,  487,  382,   83,  529,  529,  529,
+      529,  529,  529,  529,  529,  530,  199,  151,  152,  531,
+      531,  531,  531,  531,  553,  553,  553,  553,  553,  553,
+      553,  553,  576,  577,  578,  576,  576,  576,  576,  576,
+      146,  146,  531,  531,  531,  531,  531,  531,  535,  536,
+      537,  535,  535,  535,  535,  535,  138,  197,  132,  132,
+      538,  538,  538,  538,  538,   79,  554,  190,  555,  555,
+      555,  555,  555,  555,  579,  580,  581,  579,  579,  579,
+
+      579,  579,  189,  538,  538,  538,  538,  538,  538,  554,
+      188,  555,  555,  555,  555,  555,  555,  555,  555,  187,
+      559,   79,  560,  560,  560,  560,  560,  560,  560,  560,
+      559,  186,  560,  560,  560,  560,  560,  560,  560,  560,
+      184,  183,  182,  181,   79,  554,  176,  556,  556,  556,
+      556,  556,  556,  556,  556,  559,  175,  560,  560,  560,
+      560,  560,  560,  382,  174,  584,  584,  584,  584,  584,
+      584,  584,  584,  593,  593,  593,  593,  593,  593,  103,
+       79,  554,   78,  557,  557,  557,  557,  557,  558,  555,
+      555,  593,  593,  593,  593,  593,  593,  593,  593,  594,
+
+      594,  594,  594,  594,  594,  594,  594,  595,  595,  595,
+      595,  595,  596,  593,  593,  103,   79,  382,  163,  566,
+      566,  566,  566,  566,  566,  566,  566,  530,  382,   91,
+      567,  567,  567,  567,  567,  567,  567,  567,   83,   81,
+       80,   79,  568,  568,  568,  568,  568,  152,  600,  601,
+      602,  600,  600,  600,  600,  600,  588,  146,  589,  589,
+      589,  589,  589,  589,  138,  568,  568,  568,  568,  568,
+      568,  554,  132,  555,  555,  555,  555,  555,  555,  555,
+      555,   79,  593,  593,  593,  593,  593,  593,  593,  593,
+      128,   79,  593,  593,  593,  593,  593,  593,  593,  593,
+
+      126,  113,  112,  111,  110,  109,   79,  554,  108,  555,
+      555,  555,  555,  555,  555,  555,  555,  105,  103,   91,
+      603,  603,  603,  603,  603,  603,  603,  603,  600,  600,
+      600,  600,  600,  600,  600,  600,   81,   80,   79,  606,
+      606,  606,   79,  588,  606,  589,  589,  589,  589,  589,
+      589,  589,  589,   79,  606,  606,  606,  606,  606,  606,
+      606,   79,  604,  604,  604,  604,  604,  605,  603,  603,
+      603,  603,  603,  603,  603,  603,  603,  603,   79,  588,
+      606,  590,  590,  590,  590,  590,  590,  590,  590,  606,
+      606,  606,  606,  606,  606,   79,  603,  603,  603,  603,
+
+      603,  603,  606,   79,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,   79,  588,  606,  591,  591,  591,
+      591,  591,  592,  589,  589,  606,  606,  606,  606,   79,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+       79,  588,  606,  589,  589,  589,  589,  589,  589,  589,
+      589,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,   79,  588,  606,  589,
+      589,  589,  589,  589,  589,  589,  589,  606,  606,  606,
+
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,   79,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   66,   66,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   73,   78,  606,  606,
+      606,  606,  606,  606,  606,   78,   78,   78,  606,  606,
+
+       78,   78,   78,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   86,
+      606,  606,  606,  606,   86,  606,  606,   86,   86,   86,
+       86,  606,   86,   86,   86,   90,  606,  606,  606,  606,
+      606,  606,  606,   90,   90,   90,  606,  606,   90,   90,
+       90,   92,  606,  606,   92,   92,  606,   92,  606,   92,
+       92,   92,  606,  606,   92,   92,   92,  102,  102,  606,
+      606,  606,  102,  133,  606,  606,  133,  133,  606,  133,
+      606,  133,  133,  133,  606,  606,  133,  133,  133,  137,
+      606,  606,  137,  137,  606,  137,  606,  137,  137,  137,
+
+      606,  137,  606,  137,  137,  145,  606,  606,  145,  606,
+      606,  145,  606,  145,  145,  145,  145,  606,  145,  145,
+      145,  149,  149,  149,  149,  149,  149,  149,  149,  149,
+      149,  149,  149,  149,  149,  149,  149,  151,  151,  606,
+      151,  606,  151,  151,  151,  151,  151,  151,  151,  151,
+      151,  151,  151,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  157,  157,  158,
+      158,  606,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,  161,  606,  606,  606,  606,
+      161,  606,  606,  161,  161,  161,  606,  606,  161,  161,
+
+      161,   93,  606,  606,   93,   93,  606,   93,  606,   93,
+       93,   93,  606,  606,   93,   93,   93,  169,  169,  606,
+      606,  606,  169,  171,  171,  171,  606,  606,  606,  171,
+      134,  606,  606,  134,  134,  606,  134,  606,  134,  134,
+      134,  606,  606,  134,  134,  134,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  207,  207,  606,  606,  606,  207,  213,  213,
+      213,  606,  606,  606,  213,  245,  245,  606,  606,  606,
+      245,  246,  246,  606,  606,  606,  246,  250,  250,  606,
+      606,  606,  250,  252,  252,  252,  606,  606,  606,  252,
+
+      288,  288,  606,  606,  606,  288,  290,  290,  606,  606,
+      606,  290,  291,  291,  606,  606,  606,  291,  293,  293,
+      293,  606,  606,  606,  293,  297,  297,  297,  297,  606,
+      606,  606,  297,  328,  328,  606,  606,  606,  328,  329,
+      329,  606,  606,  606,  329,  330,  330,  606,  606,  606,
+      330,  342,  342,  342,  606,  606,  606,  342,  343,  343,
+      343,  343,  606,  606,  606,  343,  380,  380,  606,  606,
+      606,  380,  381,  381,  606,  606,  606,  381,  397,  397,
+      397,  606,  606,  606,  397,  398,  398,  398,  398,  606,
+      606,  606,  398,  427,  427,  606,  606,  606,  427,  431,
+
+      606,  431,  431,  606,  606,  606,  431,  449,  449,  449,
+      606,  606,  606,  449,  450,  450,  450,  450,  606,  606,
+      606,  450,  483,  483,  606,  606,  606,  483,  484,  606,
+      484,  484,  606,  606,  606,  484,  500,  500,  500,  606,
+      606,  606,  500,  501,  501,  501,  606,  606,  606,  606,
+      501,  512,  512,  606,  512,  512,  512,  606,  606,  512,
+      512,  512,  606,  606,  512,  512,  512,  518,  518,  606,
+      518,  518,  518,  606,  606,  518,  518,  518,  606,  606,
+      518,  518,  518,  526,  526,  606,  606,  606,  526,  527,
+      606,  527,  527,  606,  606,  606,  527,  543,  543,  606,
+
+      606,  606,  606,  543,  549,  549,  549,  549,  549,  549,
+      549,  549,  549,  549,  549,  549,  549,  549,  549,  549,
+      564,  564,  606,  606,  606,  564,  565,  606,  565,  565,
+      606,  606,  606,  565,  582,  582,  606,  606,  606,  582,
+      583,  606,  583,  606,  606,  606,  606,  583,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,   13,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606
     } ;
 
-static yyconst short int yy_chk[3685] =
+static yyconst short int yy_chk[3732] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -973,405 +982,411 @@ static yyconst short int yy_chk[3685] =
         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,    3,    4,   41,    2,
-        3,    4,   11,   11,   11,   11,    3,    4,   53,    3,
-        4,   49,   61,   61,   71,   41,    5,    5,    5,   72,
-        5,   49,   20,    2,    2,   53,    5,    2,  117,   65,
-
-      592,    6,    6,    6,    2,    6,   67,    2,    5,    5,
-       20,    6,   12,   12,   12,   12,   25,   25,   11,  118,
-       25,   25,   65,    6,    6,   69,   69,    3,    4,   67,
-       71,  118,    5,   72,   20,   85,  108,  108,   25,   27,
-       27,   27,   27,   27,   27,   27,   27,    6,    7,    7,
-        7,   42,    7,   74,   74,  117,   74,  587,   12,  100,
-       25,   28,   28,   28,   28,   28,   28,   40,  100,   40,
-       40,   40,   40,   40,   40,   40,   40,   85,  187,   42,
-       42,  123,  108,   42,   98,   98,   98,   98,   98,   98,
-       42,  123,  187,   42,    7,    7,    7,    7,    7,    7,
-
+        1,    1,    1,    1,    1,    1,    2,   44,    3,   34,
+        2,  103,    3,    4,   47,   20,  126,    4,    3,   34,
+      103,    3,   52,    4,   44,   48,    4,   11,   11,   11,
+       11,  126,   52,   20,    2,    2,   56,   47,    2,   74,
+
+        5,    5,    5,   48,    5,    2,   50,    3,    2,    3,
+        5,  603,    4,   56,    4,    6,    6,    6,   20,    6,
+       64,   64,    5,    5,   75,    6,   12,   12,   12,   12,
+        3,  196,   68,   50,   11,    4,   70,    6,    6,   25,
+       25,   72,   72,   25,   25,  196,   74,    5,   27,   27,
+       27,   27,   27,   27,   27,   27,   68,   88,  124,  127,
+       70,   25,    6,    7,    7,    7,   45,    7,  598,   75,
+      124,  127,  129,   12,   28,   28,   28,   28,   28,   28,
+      139,  139,  129,   43,   25,   43,   43,   43,   43,   43,
+       43,   43,   43,  194,   45,   45,   77,   77,   45,   77,
+
+       88,  116,  123,  114,  114,   45,  116,  153,   45,  194,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    8,    8,    8,   50,    8,  576,   50,   50,
-       50,   50,   50,   50,   50,   50,   81,   81,   81,   81,
-       81,   81,   81,   81,   82,   82,   82,   82,   82,   82,
-       82,   82,   84,  119,  121,   84,   84,   84,   84,   84,
-       84,   84,   84,  133,  133,  186,  121,  186,    8,    8,
+        7,    7,    7,    7,    7,    7,    7,    7,    8,    8,
+        8,   53,    8,  206,   53,   53,   53,   53,   53,   53,
+       53,   53,   84,   84,   84,   84,   84,   84,   84,   84,
+      114,   62,   62,   62,  153,   62,  154,  125,  206,   62,
+      123,   62,   85,   85,   85,   85,   85,   85,   85,   85,
+      143,  143,  202,   62,   62,    8,    8,    8,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,    8,    8,    8,    9,    9,    9,    9,
-        9,  137,  137,  110,  119,    9,    9,    9,  110,  120,
-      499,   52,   52,  573,   83,   52,   52,   89,   89,    9,
-
-      130,   89,   89,  122,  120,  130,   59,   59,   59,  122,
-       59,  147,   83,   52,   59,  148,   59,  144,  144,   89,
-      149,  149,    9,   10,   10,   10,   10,   10,   59,   59,
-      182,  193,   10,   10,   10,   52,   83,   86,  457,   86,
-       86,   89,  165,   86,   86,  105,   10,   86,  185,  499,
-      105,  165,   59,  105,  176,  105,  270,  147,  197,  148,
-       86,   86,  155,  144,  185,  193,  270,  176,  189,   10,
-       19,   92,   92,   92,   92,   92,   92,   92,   92,  182,
-       19,  189,  197,   19,   19,   19,   19,   19,   19,   19,
-       19,   26,  457,   26,   26,   26,   26,   26,   26,   26,
-
-       26,   26,  212,   92,  155,   26,   26,   26,   26,   26,
-       96,   96,   96,   96,   96,   96,   96,   96,  183,  201,
-      201,  201,  571,  183,  212,   26,  204,   26,   26,   26,
-       26,   26,   26,   32,  140,  204,  213,  140,  140,   32,
-      213,  557,   32,   32,  140,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,  140,  360,   32,
+        8,    8,    8,    9,    9,    9,    9,    9,   62,  125,
+
+      128,  154,    9,    9,    9,   86,  128,  202,   55,   55,
+      136,  161,   55,   55,  185,  136,    9,  101,  101,  101,
+      101,  101,  101,   86,  155,  155,  198,  185,   87,  587,
+       55,   87,   87,   87,   87,   87,   87,   87,   87,  198,
+        9,   10,   10,   10,   10,   10,  584,  171,   86,  284,
+       10,   10,   10,   55,  161,   89,  171,   89,   89,  222,
+      582,   89,   89,  222,   10,   89,  213,   95,   95,   95,
+       95,   95,   95,   95,   95,  213,   92,   92,   89,   89,
+       92,   92,  192,  195,  284,  195,  510,  192,   10,   19,
+       99,   99,   99,   99,   99,   99,   99,   99,   92,   19,
+
+       95,  221,   19,   19,   19,   19,   19,   19,   19,   19,
+       26,  191,   26,   26,   26,   26,   26,   26,   26,   26,
+       26,   92,  237,  221,   26,   26,   26,   26,   26,  100,
+      100,  100,  100,  100,  100,  100,  100,  131,  131,  131,
+      131,  131,  131,  131,  131,   26,  510,   26,   26,   26,
+       26,   26,   26,   32,  146,  238,  238,  146,  146,   32,
+      568,  191,   32,   32,  146,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,  146,  237,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   34,   34,
-
-       34,   34,   34,   34,   34,   34,   34,  227,  227,  360,
-       34,   34,   34,   34,   34,   97,   97,   97,   97,   97,
-       97,   97,   97,  556,  196,  111,  196,  196,  196,  196,
-      196,  196,   34,   34,   34,   34,   34,   34,   39,   39,
-       39,   39,   39,  220,   39,   39,  157,  264,   39,  220,
-      157,  229,  264,  111,  111,  226,  157,  111,  196,  230,
-       39,   39,   39,   43,  111,  230,  229,  111,  157,  157,
-      127,  127,  554,   43,  127,  127,   43,   43,   43,   43,
-       43,   43,   43,   43,  125,  125,  125,  125,  125,  125,
-      125,  125,  127,  136,  136,  136,  136,  136,  136,  136,
-
-      136,  153,  153,  153,  153,  153,  153,  153,  153,  310,
-      226,  302,  553,  268,  127,  302,  228,   43,   60,  154,
-      154,  154,  154,  154,  154,  154,  154,  269,   60,  254,
-      301,   60,   60,   60,   60,   60,   60,   60,   60,   76,
-      228,   76,   76,   76,  241,   76,   76,  269,  311,   76,
-      188,  254,  301,  241,  188,  243,  243,  228,  311,  310,
-      188,   76,   76,   76,   88,  243,   88,   88,   88,  549,
-       88,   88,  188,  188,   88,  268,  192,  192,  192,  192,
-      192,  192,  192,  192,  245,  245,   88,   88,   88,   91,
-      362,   91,   91,   91,  245,   91,   91,  377,  377,   91,
-
-      156,  538,  156,  156,  271,  362,  156,  156,  192,  271,
-      156,   91,   91,   91,   93,   93,   93,   93,   93,   93,
-       93,   93,  156,  156,  156,  536,   93,   93,   93,   93,
-       93,  200,  200,  200,  200,  200,  200,  200,  200,  200,
-      205,  205,  205,  205,  205,  205,  205,  205,   93,   93,
-       93,   93,   93,   93,  101,  101,  101,  101,  101,  101,
-      101,  101,  409,  305,  409,  273,  101,  101,  101,  101,
-      101,  207,  207,  207,  207,  207,  207,  207,  207,  208,
-      208,  208,  208,  208,  208,  305,  282,  365,  101,  101,
-      101,  101,  101,  101,  129,  282,  129,  129,  129,  273,
-
-      129,  129,  532,  210,  129,  210,  210,  210,  210,  210,
-      210,  210,  210,  427,  427,  528,  129,  129,  129,  158,
-      365,  158,  158,  158,  158,  158,  158,  158,  158,  236,
-      236,  236,  236,  236,  236,  236,  236,  236,  242,  242,
-      242,  242,  242,  242,  242,  242,  251,  251,  251,  251,
-      251,  251,  516,  158,  159,  515,  159,  159,  159,  159,
-      159,  159,  159,  159,  244,  244,  244,  244,  244,  244,
-      244,  244,  248,  248,  248,  248,  248,  248,  248,  248,
-      500,  286,  248,  498,  408,  408,  306,  497,  159,  160,
-      286,  160,  160,  160,  160,  160,  160,  160,  160,  250,
-
-      250,  250,  250,  250,  250,  250,  250,  253,  306,  253,
-      253,  253,  253,  253,  253,  253,  253,  296,  296,  296,
-      296,  296,  296,  160,  161,  307,  161,  161,  161,  161,
-      161,  161,  161,  161,  307,  408,  312,  347,  161,  161,
-      161,  161,  161,  272,  272,  272,  272,  272,  272,  272,
-      272,  276,  312,  276,  276,  276,  276,  276,  276,  347,
-      161,  161,  161,  161,  161,  161,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  272,  441,  441,  164,  164,
-      164,  164,  164,  462,  283,  276,  283,  283,  283,  283,
-      283,  283,  283,  283,  323,  323,  323,  323,  323,  323,
-
-      164,  164,  164,  164,  164,  164,  166,  166,  166,  166,
-      166,  166,  166,  166,  166,  166,  313,  462,  353,  166,
-      166,  166,  166,  166,  284,  313,  284,  284,  284,  284,
-      284,  284,  284,  284,  342,  342,  342,  342,  342,  342,
-      353,  166,  166,  166,  166,  166,  166,  167,  167,  167,
-      167,  167,  167,  167,  167,  287,  287,  496,  355,  167,
-      167,  167,  167,  167,  285,  287,  285,  285,  285,  285,
-      285,  285,  285,  285,  442,  442,  445,  445,  288,  288,
-      355,  167,  167,  167,  167,  167,  167,  194,  288,  194,
-      194,  194,  194,  194,  194,  194,  194,  289,  289,  289,
-
-      289,  289,  289,  289,  289,  290,  290,  293,  293,  293,
-      293,  293,  293,  293,  293,  290,  495,  293,  480,  480,
-      466,  194,  195,  490,  195,  195,  195,  195,  195,  195,
-      195,  195,  295,  295,  295,  295,  295,  295,  295,  295,
-      298,  331,  298,  298,  298,  298,  298,  298,  298,  298,
-      331,  473,  357,  363,  466,  472,  195,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  357,  363,
-      403,  206,  206,  206,  206,  206,  320,  320,  320,  320,
-      320,  320,  320,  320,  322,  322,  322,  322,  322,  322,
-      322,  322,  403,  206,  206,  206,  206,  206,  206,  209,
-
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  332,
-      468,  404,  209,  209,  209,  209,  209,  325,  332,  325,
-      325,  325,  325,  325,  325,  325,  325,  491,  491,  523,
-      523,  333,  333,  404,  209,  209,  209,  209,  209,  209,
-      231,  333,  231,  231,  231,  231,  231,  231,  231,  231,
-      326,  326,  326,  326,  326,  326,  326,  326,  328,  361,
-      328,  328,  328,  328,  328,  328,  328,  328,  361,  540,
-      540,  544,  560,  560,  231,  232,  372,  232,  232,  232,
-      232,  232,  232,  232,  232,  329,  372,  329,  329,  329,
-      329,  329,  329,  329,  329,  330,  374,  330,  330,  330,
-
-      330,  330,  330,  608,  608,  544,  374,  454,  578,  232,
-      233,  449,  233,  233,  233,  233,  233,  233,  233,  233,
-      334,  334,  335,  335,  335,  335,  335,  335,  335,  335,
-      334,  336,  336,  339,  339,  339,  339,  339,  339,  339,
-      339,  336,  578,  339,  233,  246,  246,  246,  246,  246,
-      246,  246,  246,  246,  246,  246,  249,  249,  249,  249,
-      249,  249,  249,  249,  249,  249,  249,  448,  458,  446,
-      249,  249,  249,  249,  249,  341,  341,  341,  341,  341,
-      341,  341,  341,  458,  368,  368,  368,  368,  368,  368,
-      368,  446,  249,  249,  249,  249,  249,  249,  252,  252,
-
-      252,  252,  252,  252,  252,  252,  252,  252,  447,  434,
-      450,  252,  252,  252,  252,  252,  344,  368,  344,  344,
-      344,  344,  344,  344,  344,  344,  380,  380,  380,  380,
-      380,  380,  450,  252,  252,  252,  252,  252,  252,  274,
-      386,  274,  274,  274,  274,  274,  274,  274,  274,  386,
-      452,  420,  364,  364,  364,  364,  364,  364,  364,  364,
-      371,  371,  371,  371,  371,  371,  371,  371,  416,  411,
-      658,  407,  452,  274,  275,  658,  275,  275,  275,  275,
-      275,  275,  275,  275,  364,  373,  373,  373,  373,  373,
-      373,  373,  373,  379,  379,  379,  379,  379,  379,  379,
-
-      379,  397,  397,  397,  397,  397,  397,  406,  275,  281,
-      281,  281,  281,  281,  281,  281,  281,  281,  387,  405,
-      492,  281,  281,  281,  281,  281,  382,  387,  382,  382,
-      382,  382,  382,  382,  382,  382,  430,  430,  430,  430,
-      430,  430,  492,  281,  281,  281,  281,  281,  281,  291,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
-      294,  455,  402,  494,  294,  294,  294,  294,  294,  383,
-      421,  383,  383,  383,  383,  383,  383,  383,  383,  401,
-      421,  455,  533,  455,  455,  494,  294,  294,  294,  294,
-
-      294,  294,  297,  297,  297,  297,  297,  297,  297,  297,
-      297,  297,  535,  561,  533,  297,  297,  297,  297,  297,
-      384,  422,  384,  384,  384,  384,  384,  384,  384,  384,
-      400,  422,  399,  370,  535,  561,  369,  297,  297,  297,
-      297,  297,  297,  314,  314,  314,  314,  314,  314,  314,
-      314,  314,  385,  359,  385,  385,  385,  385,  385,  385,
-      385,  385,  388,  388,  389,  389,  438,  358,  352,  351,
-      350,  349,  388,  346,  389,  438,  314,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  390,  390,  390,  390,
-      390,  390,  390,  390,  391,  391,  394,  394,  394,  394,
-
-      394,  394,  394,  394,  391,  345,  394,  327,  319,  318,
-      315,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-      396,  396,  396,  396,  396,  396,  396,  396,  398,  424,
-      398,  398,  398,  398,  398,  398,  398,  398,  317,  424,
-      309,  308,  304,  303,  316,  321,  300,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  439,  563,  574,  321,
-      321,  321,  321,  321,  417,  439,  417,  417,  417,  417,
-      417,  417,  417,  417,  459,  299,  459,  459,  459,  563,
-      574,  321,  321,  321,  321,  321,  321,  324,  324,  324,
-      324,  324,  324,  324,  324,  324,  280,  279,  278,  324,
-
-      324,  324,  324,  324,  418,  474,  418,  418,  418,  418,
-      418,  418,  418,  418,  277,  474,  267,  266,  265,  263,
-      459,  324,  324,  324,  324,  324,  324,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  489,
-      262,  261,  340,  340,  340,  340,  340,  419,  489,  419,
-      419,  419,  419,  419,  419,  419,  419,  260,  460,  410,
-      460,  460,  460,  259,  340,  340,  340,  340,  340,  340,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  410,
-      258,  410,  410,  343,  343,  343,  343,  343,  423,  423,
-
-      423,  423,  423,  423,  423,  423,  483,  483,  483,  483,
-      483,  483,  257,  410,  460,  343,  343,  343,  343,  343,
-      343,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      429,  429,  429,  429,  429,  429,  429,  429,  432,  475,
-      432,  432,  432,  432,  432,  432,  432,  432,  256,  475,
-      240,  239,  238,  237,  366,  367,  367,  367,  367,  367,
-      367,  367,  367,  367,  433,  433,  433,  433,  433,  433,
-      433,  433,  435,  477,  435,  435,  435,  435,  435,  435,
-      435,  435,  235,  477,  234,  225,  224,  223,  367,  375,
-      222,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-
-      378,  517,  378,  378,  378,  378,  378,  378,  378,  378,
-      378,  517,  221,  219,  378,  378,  378,  378,  378,  436,
-      518,  436,  436,  436,  436,  436,  436,  436,  436,  501,
-      518,  501,  501,  501,  218,  217,  378,  378,  378,  378,
-      378,  378,  381,  381,  381,  381,  381,  381,  381,  381,
-      381,  216,  215,  214,  381,  381,  381,  381,  381,  437,
-      211,  437,  437,  437,  437,  437,  437,  467,  467,  467,
-      467,  467,  467,  467,  467,  501,  381,  381,  381,  381,
-      381,  381,  392,  392,  392,  392,  392,  392,  392,  392,
-      392,  392,  392,  395,  395,  395,  395,  395,  395,  395,
-
-      395,  395,  395,  440,  440,  456,  456,  395,  395,  395,
-      395,  395,  203,  440,  202,  564,  564,  520,  456,  461,
-      461,  461,  461,  461,  461,  461,  461,  520,  564,  395,
-      395,  395,  395,  395,  395,  412,  555,  412,  412,  412,
-      412,  412,  412,  412,  412,  199,  555,  198,  191,  190,
-      465,  461,  465,  465,  465,  465,  465,  465,  469,  184,
-      469,  469,  469,  469,  469,  469,  469,  469,  181,  412,
-      413,  180,  413,  413,  413,  413,  413,  413,  413,  413,
-      179,  178,  177,  470,  465,  470,  470,  470,  470,  470,
-      470,  470,  470,  471,  175,  471,  471,  471,  471,  471,
-
-      471,  174,  173,  172,  413,  414,  171,  414,  414,  414,
-      414,  414,  414,  414,  414,  476,  476,  476,  476,  476,
-      476,  476,  476,  482,  482,  482,  482,  482,  482,  482,
-      482,  519,  519,  519,  519,  519,  519,  519,  519,  414,
-      415,  170,  415,  415,  415,  415,  415,  415,  415,  415,
-      485,  169,  485,  485,  485,  485,  485,  485,  485,  485,
-      486,  486,  486,  486,  486,  486,  486,  486,  486,  502,
-      168,  502,  502,  502,  415,  425,  163,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  428,  162,  428,  428,
-      428,  428,  428,  428,  428,  428,  428,  152,  151,  150,
-
-      428,  428,  428,  428,  428,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  503,  502,  503,  503,  503,  146,
-      145,  143,  428,  428,  428,  428,  428,  428,  431,  431,
-      431,  431,  431,  431,  431,  431,  431,  139,  132,  128,
-      431,  431,  431,  431,  431,  488,  488,  488,  488,  488,
-      488,  488,  488,  488,  504,  126,  504,  504,  504,  124,
-      503,  116,  431,  431,  431,  431,  431,  431,  443,  443,
-      443,  443,  443,  443,  443,  443,  443,  443,  463,  115,
-      463,  463,  463,  463,  463,  463,  463,  463,  505,  114,
-      113,  505,  505,  505,  505,  505,  505,  505,  505,  507,
-
-      504,  507,  507,  507,  112,  107,  106,  506,  506,  104,
-      103,  506,  463,  464,   99,  464,  464,  464,  464,  464,
-      464,  464,  464,  506,  506,  506,  508,  508,   95,  512,
-      508,  512,  512,  512,  512,  512,  512,  512,  512,   94,
-       90,   87,  508,  508,  508,  507,   79,  464,  478,   78,
-      478,  478,  478,  478,  478,  478,  478,  478,  478,  481,
-       77,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-       75,   70,   63,  481,  481,  481,  481,  481,  513,   56,
-      513,  513,  513,  513,  513,  513,  513,  513,  526,  526,
-      526,  526,  526,  526,   51,  481,  481,  481,  481,  481,
-
-      481,  484,  484,  484,  484,  484,  484,  484,  484,   48,
-       47,   46,   45,  484,  484,  484,  484,  484,  514,   44,
-      514,  514,  514,  514,  514,  514,  514,  514,  531,  531,
-      531,  531,  531,  531,  531,  484,  484,  484,  484,  484,
-      484,  509,   38,  509,  509,  509,  509,  509,  509,  509,
-      509,  525,  525,  525,  525,  525,  525,  525,  525,  527,
-       37,  527,  527,  527,  527,  527,  527,  527,  527,  585,
-      585,  585,  585,  585,  585,  509,  510,   36,  510,  510,
-      510,  510,  510,  510,  510,  510,  529,  529,  529,  529,
-      529,  529,  529,  529,  529,  530,  530,  530,  530,  530,
-
-      530,  530,  530,  530,   35,   33,   29,   23,   17,   15,
-      510,  511,   14,  511,  511,  511,  511,  511,  511,  511,
-      511,  541,  541,  541,  541,  541,  541,  541,  541,  542,
-      542,  542,  542,  542,  542,  542,  542,  543,  543,  543,
-      543,  543,  543,  543,  543,  511,  521,   13,  521,  521,
-      521,  521,  521,  521,  521,  521,  521,  524,    0,  524,
-      524,  524,  524,  524,  524,  524,  524,    0,    0,  543,
-        0,  524,  524,  524,  524,  524,  547,    0,  547,  547,
-      547,  547,  547,  547,  548,  548,  548,  548,  548,  548,
-      548,  548,    0,  524,  524,  524,  524,  524,  524,  545,
-
-        0,  545,  545,  545,  545,  545,  545,  545,  545,  550,
-      547,  550,  550,  550,  550,  550,  550,  550,  550,  551,
-        0,  551,  551,  551,  551,  551,  551,  551,  551,    0,
-        0,    0,    0,  545,  546,    0,  546,  546,  546,  546,
-      546,  546,  546,  546,  552,    0,  552,  552,  552,  552,
-      552,  552,  558,    0,  558,  558,  558,  558,  558,  558,
-      558,  558,    0,    0,    0,    0,    0,    0,  546,  565,
-        0,  565,  565,  565,  565,  565,  565,  565,  565,  568,
-      568,  568,  568,  568,  568,  568,  568,  569,  569,  569,
-      569,  569,  569,  569,  569,  570,  570,  570,  570,  570,
-
-      570,  570,  570,  565,  566,    0,  566,  566,  566,  566,
-      566,  566,  566,  566,    0,    0,    0,  577,  577,  577,
-      577,  577,  577,  577,  577,  581,    0,  581,  581,  581,
-      581,  581,  581,    0,    0,    0,    0,    0,  566,  567,
-        0,  567,  567,  567,  567,  567,  567,  567,  567,  577,
-      583,  583,  583,  583,  583,  583,  583,  583,    0,  581,
-      584,  584,  584,  584,  584,  584,  584,  584,    0,    0,
-        0,    0,    0,  567,  579,    0,  579,  579,  579,  579,
-      579,  579,  579,  579,    0,    0,    0,  589,  589,  589,
-      589,  589,  589,  589,  589,  590,  590,  590,  590,  590,
-
-      590,  590,  590,    0,    0,    0,    0,    0,  579,  580,
-        0,  580,  580,  580,  580,  580,  580,  580,  580,  589,
-      594,  594,  594,  594,  594,  594,    0,  590,  591,  591,
-      591,  591,  591,  591,  591,  591,    0,    0,    0,    0,
-        0,    0,    0,  580,  593,  593,  593,  593,  593,  593,
-      593,  593,  594,    0,    0,    0,    0,    0,    0,    0,
-      591,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  593,  596,  596,  596,
-      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
-      596,  596,  596,  597,  597,  597,  597,  597,  597,  597,
-
-      597,  597,  597,  597,  597,  597,  597,  597,  597,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  599,  599,  599,  599,  599,
-      599,  599,  599,  599,  599,  599,  599,  599,  599,  599,
-      599,  600,    0,    0,    0,    0,    0,    0,    0,  600,
-      600,  600,    0,    0,  600,  600,  600,  601,  601,  601,
-      601,  601,  601,  601,  601,  601,  601,  601,  601,  601,
-      601,  601,  601,  602,    0,    0,    0,    0,  602,    0,
-        0,  602,  602,  602,  602,    0,  602,  602,  602,  603,
-        0,    0,    0,    0,    0,    0,    0,  603,  603,  603,
-
-        0,    0,  603,  603,  603,  604,    0,    0,  604,  604,
-        0,  604,    0,  604,  604,  604,    0,    0,  604,  604,
-      604,  605,  605,    0,    0,    0,  605,  606,    0,    0,
-      606,  606,    0,  606,    0,  606,  606,  606,    0,    0,
-      606,  606,  606,  607,    0,    0,  607,  607,    0,  607,
-        0,  607,  607,  607,    0,  607,    0,  607,  607,  609,
-        0,    0,  609,    0,    0,  609,    0,  609,  609,  609,
-      609,    0,  609,  609,  609,  610,  610,  610,  610,  610,
-      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
-      610,  611,  611,    0,  611,    0,  611,  611,  611,  611,
-
-      611,  611,  611,  611,  611,  611,  611,  612,  612,  612,
-      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
-      612,  612,  612,  613,  613,    0,  613,  613,  613,  613,
-      613,  613,  613,  613,  613,  613,  613,  613,  613,  614,
-        0,    0,    0,    0,  614,    0,    0,  614,  614,  614,
-        0,    0,  614,  614,  614,  615,    0,    0,  615,  615,
-        0,  615,    0,  615,  615,  615,    0,    0,  615,  615,
-      615,  616,  616,    0,    0,    0,  616,  617,  617,  617,
-        0,    0,    0,  617,  618,    0,    0,  618,  618,    0,
-      618,    0,  618,  618,  618,    0,    0,  618,  618,  618,
-
-      619,  619,  619,  619,  619,  619,  619,  619,  619,  619,
-      619,  619,  619,  619,  619,  619,  620,  620,    0,    0,
-        0,  620,  621,  621,  621,    0,    0,    0,  621,  622,
-      622,    0,    0,    0,  622,  623,  623,    0,    0,    0,
-      623,  624,  624,    0,    0,    0,  624,  625,  625,  625,
-        0,    0,    0,  625,  626,  626,    0,    0,    0,  626,
-      627,  627,    0,    0,    0,  627,  628,  628,    0,    0,
-        0,  628,  629,  629,  629,    0,    0,    0,  629,  630,
-      630,  630,  630,    0,    0,    0,  630,  631,  631,    0,
-        0,    0,  631,  632,  632,    0,    0,    0,  632,  633,
-
-      633,    0,    0,    0,  633,  634,  634,  634,    0,    0,
-        0,  634,  635,  635,  635,  635,    0,    0,    0,  635,
-      636,  636,    0,    0,    0,  636,  637,  637,    0,    0,
-        0,  637,  638,  638,  638,    0,    0,    0,  638,  639,
-      639,  639,  639,    0,    0,    0,  639,  640,  640,    0,
-        0,    0,  640,  641,    0,  641,  641,    0,    0,    0,
-      641,  642,  642,  642,    0,    0,    0,  642,  643,  643,
-      643,  643,    0,    0,    0,  643,  644,  644,    0,    0,
-        0,  644,  645,    0,  645,  645,    0,    0,    0,  645,
-      646,  646,  646,    0,    0,    0,  646,  647,  647,  647,
-
-        0,    0,    0,    0,  647,  648,  648,    0,  648,  648,
-      648,    0,    0,  648,  648,  648,    0,    0,  648,  648,
-      648,  649,  649,    0,  649,  649,  649,    0,    0,  649,
-      649,  649,    0,    0,  649,  649,  649,  650,  650,    0,
-        0,    0,  650,  651,    0,  651,  651,    0,    0,    0,
-      651,  652,  652,    0,    0,    0,    0,  652,  653,  653,
-      653,  653,  653,  653,  653,  653,  653,  653,  653,  653,
-      653,  653,  653,  653,  654,  654,    0,    0,    0,  654,
-      655,    0,  655,  655,    0,    0,    0,  655,  656,  656,
-        0,    0,    0,  656,  657,    0,  657,    0,    0,    0,
-
-        0,  657,  659,  659,  659,  659,  659,  659,  659,  659,
-      659,  659,  659,  659,  659,  659,  659,  659,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,  210,  210,
+      210,   35,   35,   35,   35,   35,  109,  231,  240,  241,
+       35,  109,  252,  231,  109,  241,  109,  117,  567,  150,
+      150,  252,  239,  240,   35,   35,   35,   35,   35,   35,
+       42,   42,   42,   42,   42,  293,   42,   42,  133,  133,
+       42,  265,  133,  133,  293,  117,  117,  239,  281,  117,
+      388,  388,   42,   42,   42,   46,  117,  163,  281,  117,
+      133,  163,  323,  265,  239,   46,  150,  163,   46,   46,
+
+       46,   46,   46,   46,   46,   46,  275,  282,  323,  163,
+      163,  275,  282,  133,  142,  142,  142,  142,  142,  142,
+      142,  142,  159,  159,  159,  159,  159,  159,  159,  159,
+      160,  160,  160,  160,  160,  160,  160,  160,  438,  438,
+       46,   63,  201,  201,  201,  201,  201,  201,  201,  201,
+      279,   63,  565,  280,   63,   63,   63,   63,   63,   63,
+       63,   63,   79,  564,   79,   79,   79,  297,   79,   79,
+      254,  254,   79,  197,  280,  201,  297,  197,  256,  256,
+      254,  321,  322,  197,   79,   79,   79,   91,  256,   91,
+       91,   91,  322,   91,   91,  197,  197,   91,  209,  209,
+
+      209,  209,  209,  209,  209,  209,  209,  298,  298,   91,
+       91,   91,   94,  279,   94,   94,   94,  298,   94,   94,
+      313,  383,   94,  162,  313,  162,  162,  452,  452,  162,
+      162,  383,  321,  162,   94,   94,   94,   96,   96,   96,
+       96,   96,   96,   96,   96,  162,  162,  162,  312,   96,
+       96,   96,   96,   96,  205,  368,  205,  205,  205,  205,
+      205,  205,  214,  214,  214,  214,  214,  214,  214,  214,
+      312,  368,   96,   96,   96,   96,   96,   96,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  316,  371,  205,
+      104,  104,  104,  104,  104,  216,  216,  216,  216,  216,
+
+      216,  216,  216,  217,  217,  217,  217,  217,  217,  316,
+      299,  299,  373,  104,  104,  104,  104,  104,  104,  135,
+      299,  135,  135,  135,  560,  135,  135,  373,  219,  135,
+      219,  219,  219,  219,  219,  219,  219,  219,  453,  453,
+      371,  135,  135,  135,  164,  549,  164,  164,  164,  164,
+      164,  164,  164,  164,  247,  247,  247,  247,  247,  247,
+      247,  247,  247,  253,  253,  253,  253,  253,  253,  253,
+      253,  255,  255,  255,  255,  255,  255,  255,  255,  164,
+      165,  547,  165,  165,  165,  165,  165,  165,  165,  165,
+      259,  259,  259,  259,  259,  259,  259,  259,  419,  419,
+
+      259,  261,  261,  261,  261,  261,  261,  261,  261,  262,
+      262,  262,  262,  262,  262,  165,  166,  543,  166,  166,
+      166,  166,  166,  166,  166,  166,  264,  317,  264,  264,
+      264,  264,  264,  264,  264,  264,  301,  301,  283,  283,
+      283,  283,  283,  283,  283,  283,  301,  456,  456,  317,
+      419,  166,  167,  318,  167,  167,  167,  167,  167,  167,
+      167,  167,  318,  324,  342,  343,  167,  167,  167,  167,
+      167,  283,  324,  342,  343,  344,  344,  287,  372,  287,
+      287,  287,  287,  287,  287,  344,  420,  372,  420,  167,
+      167,  167,  167,  167,  167,  170,  170,  170,  170,  170,
+
+      170,  170,  170,  170,  345,  345,  539,  170,  170,  170,
+      170,  170,  287,  294,  345,  294,  294,  294,  294,  294,
+      294,  294,  294,  307,  307,  307,  307,  307,  307,  527,
+      170,  170,  170,  170,  170,  170,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  491,  491,  526,  172,
+      172,  172,  172,  172,  295,  376,  295,  295,  295,  295,
+      295,  295,  295,  295,  300,  300,  300,  300,  300,  300,
+      300,  300,  172,  172,  172,  172,  172,  172,  173,  173,
+      173,  173,  173,  173,  173,  173,  347,  347,  511,  376,
+      173,  173,  173,  173,  173,  296,  347,  296,  296,  296,
+
+      296,  296,  296,  296,  296,  306,  306,  306,  306,  306,
+      306,  306,  306,  173,  173,  173,  173,  173,  173,  203,
+      509,  203,  203,  203,  203,  203,  203,  203,  203,  304,
+      304,  304,  304,  304,  304,  304,  304,  508,  309,  304,
+      309,  309,  309,  309,  309,  309,  309,  309,  334,  334,
+      334,  334,  334,  334,  203,  204,  507,  204,  204,  204,
+      204,  204,  204,  204,  204,  331,  331,  331,  331,  331,
+      331,  331,  331,  333,  333,  333,  333,  333,  333,  333,
+      333,  337,  337,  337,  337,  337,  337,  337,  337,  358,
+      204,  215,  215,  215,  215,  215,  215,  215,  215,  215,
+
+      215,  215,  502,  502,  506,  215,  215,  215,  215,  215,
+      336,  358,  336,  336,  336,  336,  336,  336,  336,  336,
+      341,  501,  341,  341,  341,  341,  341,  341,  215,  215,
+      215,  215,  215,  215,  218,  218,  218,  218,  218,  218,
+      218,  218,  218,  218,  397,  534,  534,  218,  218,  218,
+      218,  218,  339,  397,  339,  339,  339,  339,  339,  339,
+      339,  339,  346,  346,  346,  346,  346,  346,  346,  346,
+      218,  218,  218,  218,  218,  218,  242,  484,  242,  242,
+      242,  242,  242,  242,  242,  242,  340,  364,  340,  340,
+      340,  340,  340,  340,  340,  340,  350,  350,  350,  350,
+
+      350,  350,  350,  350,  398,  669,  350,  551,  551,  364,
+      669,  242,  243,  398,  243,  243,  243,  243,  243,  243,
+      243,  243,  352,  352,  352,  352,  352,  352,  352,  352,
+      353,  353,  353,  353,  353,  353,  355,  366,  355,  355,
+      355,  355,  355,  355,  355,  355,  374,  243,  244,  449,
+      244,  244,  244,  244,  244,  244,  244,  244,  449,  366,
+      414,  385,  374,  382,  382,  382,  382,  382,  382,  382,
+      382,  385,  450,  375,  375,  375,  375,  375,  375,  375,
+      375,  450,  414,  244,  257,  257,  257,  257,  257,  257,
+      257,  257,  257,  257,  257,  260,  260,  260,  260,  260,
+
+      260,  260,  260,  260,  260,  260,  375,  415,  457,  260,
+      260,  260,  260,  260,  379,  379,  379,  379,  379,  379,
+      379,  384,  384,  384,  384,  384,  384,  384,  384,  415,
+      457,  483,  260,  260,  260,  260,  260,  260,  263,  263,
+      263,  263,  263,  263,  263,  263,  263,  263,  379,  571,
+      571,  263,  263,  263,  263,  263,  390,  390,  390,  390,
+      390,  390,  390,  390,  391,  391,  391,  391,  391,  391,
+      479,  399,  399,  465,  263,  263,  263,  263,  263,  263,
+      285,  399,  285,  285,  285,  285,  285,  285,  285,  285,
+      393,  432,  393,  393,  393,  393,  393,  393,  393,  393,
+
+      394,  432,  394,  394,  394,  394,  394,  394,  394,  394,
+      460,  473,  619,  619,  468,  285,  286,  433,  286,  286,
+      286,  286,  286,  286,  286,  286,  395,  433,  395,  395,
+      395,  395,  395,  395,  395,  395,  396,  435,  396,  396,
+      396,  396,  396,  396,  396,  396,  473,  435,  461,  459,
+      458,  286,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  400,  400,  445,  292,  292,  292,  292,  292,  468,
+      461,  400,  401,  401,  401,  401,  401,  401,  401,  401,
+      408,  408,  408,  408,  408,  408,  431,  292,  292,  292,
+      292,  292,  292,  302,  302,  302,  302,  302,  302,  302,
+
+      302,  302,  302,  302,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  402,  402,  463,  305,  305,
+      305,  305,  305,  469,  477,  402,  405,  405,  405,  405,
+      405,  405,  405,  405,  427,  503,  405,  422,  469,  463,
+      418,  305,  305,  305,  305,  305,  305,  308,  308,  308,
+      308,  308,  308,  308,  308,  308,  308,  503,  417,  477,
+      308,  308,  308,  308,  308,  407,  407,  407,  407,  407,
+      407,  407,  407,  409,  416,  409,  409,  409,  409,  409,
+      409,  409,  409,  308,  308,  308,  308,  308,  308,  325,
+      325,  325,  325,  325,  325,  325,  325,  325,  421,  428,
+
+      505,  428,  428,  428,  428,  428,  428,  428,  428,  434,
+      434,  434,  434,  434,  434,  434,  434,  413,  421,  412,
+      421,  421,  505,  325,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  429,  466,  429,  429,  429,  429,  429,
+      429,  429,  429,  421,  430,  485,  430,  430,  430,  430,
+      430,  430,  430,  430,  466,  485,  466,  466,  326,  327,
+      327,  327,  327,  327,  327,  327,  327,  327,  440,  440,
+      440,  440,  440,  440,  440,  440,  441,  441,  441,  441,
+      441,  441,  443,  500,  443,  443,  443,  443,  443,  443,
+      443,  443,  500,  327,  332,  486,  332,  332,  332,  332,
+
+      332,  332,  332,  332,  332,  486,  411,  410,  332,  332,
+      332,  332,  332,  444,  444,  444,  444,  444,  444,  444,
+      444,  446,  381,  446,  446,  446,  446,  446,  446,  446,
+      446,  332,  332,  332,  332,  332,  332,  335,  335,  335,
+      335,  335,  335,  335,  335,  335,  380,  370,  369,  335,
+      335,  335,  335,  335,  447,  488,  447,  447,  447,  447,
+      447,  447,  447,  447,  448,  488,  448,  448,  448,  448,
+      448,  448,  335,  335,  335,  335,  335,  335,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+
+      451,  451,  528,  351,  351,  351,  351,  351,  467,  467,
+      451,  470,  528,  470,  470,  470,  471,  363,  471,  471,
+      471,  467,  544,  362,  555,  589,  351,  351,  351,  351,
+      351,  351,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  361,  546,  572,  544,  354,  354,  354,  354,  354,
+      472,  472,  472,  472,  472,  472,  472,  472,  470,  555,
+      589,  360,  357,  471,  546,  572,  356,  338,  354,  354,
+      354,  354,  354,  354,  377,  377,  377,  377,  377,  377,
+      377,  377,  377,  472,  476,  330,  476,  476,  476,  476,
+      476,  476,  478,  478,  478,  478,  478,  478,  478,  478,
+
+      482,  329,  482,  482,  482,  482,  482,  482,  377,  378,
+      378,  378,  378,  378,  378,  378,  378,  378,  480,  476,
+      480,  480,  480,  480,  480,  480,  480,  480,  481,  529,
+      481,  481,  481,  481,  481,  481,  481,  481,  328,  529,
+      320,  319,  315,  378,  386,  574,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  389,  531,  389,  389,  389,
+      389,  389,  389,  389,  389,  389,  531,  574,  585,  389,
+      389,  389,  389,  389,  487,  487,  487,  487,  487,  487,
+      487,  487,  493,  493,  493,  493,  493,  493,  493,  493,
+      585,  314,  389,  389,  389,  389,  389,  389,  392,  392,
+
+      392,  392,  392,  392,  392,  392,  392,  311,  310,  291,
+      392,  392,  392,  392,  392,  494,  494,  494,  494,  494,
+      494,  496,  566,  496,  496,  496,  496,  496,  496,  496,
+      496,  290,  566,  392,  392,  392,  392,  392,  392,  403,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
+      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
+      289,  288,  278,  277,  406,  406,  406,  406,  406,  497,
+      497,  497,  497,  497,  497,  497,  497,  497,  498,  498,
+      498,  498,  498,  498,  498,  498,  498,  406,  406,  406,
+      406,  406,  406,  423,  276,  423,  423,  423,  423,  423,
+
+      423,  423,  423,  499,  499,  499,  499,  499,  499,  499,
+      499,  499,  512,  274,  512,  512,  512,  575,  575,  513,
+      273,  513,  513,  513,  272,  271,  270,  269,  423,  424,
+      575,  424,  424,  424,  424,  424,  424,  424,  424,  514,
+      268,  514,  514,  514,  515,  267,  515,  515,  515,  251,
+      518,  250,  518,  518,  518,  249,  248,  246,  245,  512,
+      236,  235,  234,  233,  424,  425,  513,  425,  425,  425,
+      425,  425,  425,  425,  425,  516,  232,  229,  516,  516,
+      516,  516,  516,  516,  516,  516,  514,  227,  226,  225,
+      224,  515,  223,  220,  212,  517,  517,  518,  211,  517,
+
+      425,  426,  208,  426,  426,  426,  426,  426,  426,  426,
+      426,  517,  517,  517,  519,  519,  207,  523,  519,  523,
+      523,  523,  523,  523,  523,  523,  523,  200,  199,  193,
+      519,  519,  519,  190,  189,  188,  426,  436,  187,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  439,  186,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  184,
+      183,  182,  439,  439,  439,  439,  439,  524,  181,  524,
+      524,  524,  524,  524,  524,  524,  524,  530,  530,  530,
+      530,  530,  530,  530,  530,  439,  439,  439,  439,  439,
+      439,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+
+      180,  179,  178,  442,  442,  442,  442,  442,  525,  177,
+      525,  525,  525,  525,  525,  525,  525,  525,  536,  536,
+      536,  536,  536,  536,  536,  536,  442,  442,  442,  442,
+      442,  442,  454,  454,  454,  454,  454,  454,  454,  454,
+      454,  454,  474,  176,  474,  474,  474,  474,  474,  474,
+      474,  474,  537,  537,  537,  537,  537,  537,  538,  175,
+      538,  538,  538,  538,  538,  538,  538,  538,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  474,  475,  169,
+      475,  475,  475,  475,  475,  475,  475,  475,  541,  541,
+      541,  541,  541,  541,  541,  541,  541,  542,  542,  542,
+
+      542,  542,  542,  542,  552,  552,  552,  552,  552,  552,
+      552,  552,  168,  475,  489,  158,  489,  489,  489,  489,
+      489,  489,  489,  489,  489,  492,  157,  492,  492,  492,
+      492,  492,  492,  492,  492,  492,  156,  152,  151,  492,
+      492,  492,  492,  492,  553,  553,  553,  553,  553,  553,
+      553,  553,  554,  554,  554,  554,  554,  554,  554,  554,
+      149,  145,  492,  492,  492,  492,  492,  492,  495,  495,
+      495,  495,  495,  495,  495,  495,  138,  134,  132,  130,
+      495,  495,  495,  495,  495,  554,  558,  122,  558,  558,
+      558,  558,  558,  558,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  121,  495,  495,  495,  495,  495,  495,  520,
+      120,  520,  520,  520,  520,  520,  520,  520,  520,  119,
+      561,  558,  561,  561,  561,  561,  561,  561,  561,  561,
+      562,  118,  562,  562,  562,  562,  562,  562,  562,  562,
+      113,  112,  111,  110,  520,  521,  108,  521,  521,  521,
+      521,  521,  521,  521,  521,  563,  107,  563,  563,  563,
+      563,  563,  563,  569,  106,  569,  569,  569,  569,  569,
+      569,  569,  569,  596,  596,  596,  596,  596,  596,  102,
+      521,  522,   98,  522,  522,  522,  522,  522,  522,  522,
+      522,  579,  579,  579,  579,  579,  579,  579,  579,  580,
+
+      580,  580,  580,  580,  580,  580,  580,  581,  581,  581,
+      581,  581,  581,  581,  581,   97,  522,  532,   93,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  535,   90,
+      535,  535,  535,  535,  535,  535,  535,  535,   82,   81,
+       80,   78,  535,  535,  535,  535,  535,   73,  588,  588,
+      588,  588,  588,  588,  588,  588,  592,   66,  592,  592,
+      592,  592,  592,  592,   59,  535,  535,  535,  535,  535,
+      535,  556,   54,  556,  556,  556,  556,  556,  556,  556,
+      556,  588,  594,  594,  594,  594,  594,  594,  594,  594,
+       51,  592,  595,  595,  595,  595,  595,  595,  595,  595,
+
+       49,   41,   40,   39,   38,   37,  556,  557,   36,  557,
+      557,  557,  557,  557,  557,  557,  557,   33,   29,   23,
+      600,  600,  600,  600,  600,  600,  600,  600,  601,  601,
+      601,  601,  601,  601,  601,  601,   17,   15,   14,   13,
+        0,    0,  557,  576,    0,  576,  576,  576,  576,  576,
+      576,  576,  576,  600,    0,    0,    0,    0,    0,    0,
+        0,  601,  602,  602,  602,  602,  602,  602,  602,  602,
+      604,  604,  604,  604,  604,  604,  604,  604,  576,  577,
+        0,  577,  577,  577,  577,  577,  577,  577,  577,    0,
+        0,    0,    0,    0,    0,  602,  605,  605,  605,  605,
+
+      605,  605,    0,  604,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  577,  578,    0,  578,  578,  578,
+      578,  578,  578,  578,  578,    0,    0,    0,    0,  605,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      578,  590,    0,  590,  590,  590,  590,  590,  590,  590,
+      590,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  590,  591,    0,  591,
+      591,  591,  591,  591,  591,  591,  591,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  591,  607,  607,  607,  607,  607,  607,  607,
+      607,  607,  607,  607,  607,  607,  607,  607,  607,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  611,    0,    0,
+        0,    0,    0,    0,    0,  611,  611,  611,    0,    0,
+
+      611,  611,  611,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  613,
+        0,    0,    0,    0,  613,    0,    0,  613,  613,  613,
+      613,    0,  613,  613,  613,  614,    0,    0,    0,    0,
+        0,    0,    0,  614,  614,  614,    0,    0,  614,  614,
+      614,  615,    0,    0,  615,  615,    0,  615,    0,  615,
+      615,  615,    0,    0,  615,  615,  615,  616,  616,    0,
+        0,    0,  616,  617,    0,    0,  617,  617,    0,  617,
+        0,  617,  617,  617,    0,    0,  617,  617,  617,  618,
+        0,    0,  618,  618,    0,  618,    0,  618,  618,  618,
+
+        0,  618,    0,  618,  618,  620,    0,    0,  620,    0,
+        0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
+      620,  621,  621,  621,  621,  621,  621,  621,  621,  621,
+      621,  621,  621,  621,  621,  621,  621,  622,  622,    0,
+      622,    0,  622,  622,  622,  622,  622,  622,  622,  622,
+      622,  622,  622,  623,  623,  623,  623,  623,  623,  623,
+      623,  623,  623,  623,  623,  623,  623,  623,  623,  624,
+      624,    0,  624,  624,  624,  624,  624,  624,  624,  624,
+      624,  624,  624,  624,  624,  625,    0,    0,    0,    0,
+      625,    0,    0,  625,  625,  625,    0,    0,  625,  625,
+
+      625,  626,    0,    0,  626,  626,    0,  626,    0,  626,
+      626,  626,    0,    0,  626,  626,  626,  627,  627,    0,
+        0,    0,  627,  628,  628,  628,    0,    0,    0,  628,
+      629,    0,    0,  629,  629,    0,  629,    0,  629,  629,
+      629,    0,    0,  629,  629,  629,  630,  630,  630,  630,
+      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
+      630,  630,  631,  631,    0,    0,    0,  631,  632,  632,
+      632,    0,    0,    0,  632,  633,  633,    0,    0,    0,
+      633,  634,  634,    0,    0,    0,  634,  635,  635,    0,
+        0,    0,  635,  636,  636,  636,    0,    0,    0,  636,
+
+      637,  637,    0,    0,    0,  637,  638,  638,    0,    0,
+        0,  638,  639,  639,    0,    0,    0,  639,  640,  640,
+      640,    0,    0,    0,  640,  641,  641,  641,  641,    0,
+        0,    0,  641,  642,  642,    0,    0,    0,  642,  643,
+      643,    0,    0,    0,  643,  644,  644,    0,    0,    0,
+      644,  645,  645,  645,    0,    0,    0,  645,  646,  646,
+      646,  646,    0,    0,    0,  646,  647,  647,    0,    0,
+        0,  647,  648,  648,    0,    0,    0,  648,  649,  649,
+      649,    0,    0,    0,  649,  650,  650,  650,  650,    0,
+        0,    0,  650,  651,  651,    0,    0,    0,  651,  652,
+
+        0,  652,  652,    0,    0,    0,  652,  653,  653,  653,
+        0,    0,    0,  653,  654,  654,  654,  654,    0,    0,
+        0,  654,  655,  655,    0,    0,    0,  655,  656,    0,
+      656,  656,    0,    0,    0,  656,  657,  657,  657,    0,
+        0,    0,  657,  658,  658,  658,    0,    0,    0,    0,
+      658,  659,  659,    0,  659,  659,  659,    0,    0,  659,
+      659,  659,    0,    0,  659,  659,  659,  660,  660,    0,
+      660,  660,  660,    0,    0,  660,  660,  660,    0,    0,
+      660,  660,  660,  661,  661,    0,    0,    0,  661,  662,
+        0,  662,  662,    0,    0,    0,  662,  663,  663,    0,
+
+        0,    0,    0,  663,  664,  664,  664,  664,  664,  664,
+      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      665,  665,    0,    0,    0,  665,  666,    0,  666,  666,
+        0,    0,    0,  666,  667,  667,    0,    0,    0,  667,
+      668,    0,  668,    0,    0,    0,    0,  668,  670,  670,
+      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+      670,  670,  670,  670,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+      606
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1494,7 +1509,7 @@ static char *parse_include        __P((char *));
 
 #define INSTR 5
 
-#line 1497 "lex.yy.c"
+#line 1512 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1650,7 +1665,7 @@ YY_DECL
 
 #line 120 "toke.l"
 
-#line 1653 "lex.yy.c"
+#line 1668 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1702,13 +1717,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 >= 596 )
+                               if ( yy_current_state >= 607 )
                                        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] != 3619 );
+               while ( yy_base[yy_current_state] != 3665 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2202,30 +2217,49 @@ case 39:
 YY_RULE_SETUP
 #line 471 "toke.l"
 {
-                           if (strcmp(yytext, "ALL") == 0) {
-                               LEXTRACE("ALL ");
-                               return ALL;
-                           }
+                           LEXTRACE("ALL ");
+                           return ALL;
+
+                       }
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 477 "toke.l"
+{
 #ifdef HAVE_SELINUX
-                           /* XXX - restrict type/role to initial state */
-                           if (strcmp(yytext, "TYPE") == 0) {
-                               LEXTRACE("TYPE ");
-                               return TYPE;
-                           }
-                           if (strcmp(yytext, "ROLE") == 0) {
-                               LEXTRACE("ROLE ");
-                               return ROLE;
-                           }
-#endif /* HAVE_SELINUX */
+                           LEXTRACE("ROLE ");
+                           return ROLE;
+#else
+                           goto got_alias;
+#endif
+                       }
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 486 "toke.l"
+{
+#ifdef HAVE_SELINUX
+                           LEXTRACE("TYPE ");
+                           return TYPE;
+#else
+                           goto got_alias;
+#endif
+                       }
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 495 "toke.l"
+{
+                       got_alias:
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("ALIAS ");
                            return ALIAS;
                        }
        YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 493 "toke.l"
+#line 503 "toke.l"
 {
                            /* no command args allowed for Defaults!/path */
                            if (!fill_cmnd(yytext, yyleng))
@@ -2234,9 +2268,9 @@ YY_RULE_SETUP
                            return COMMAND;
                        }
        YY_BREAK
-case 41:
+case 44:
 YY_RULE_SETUP
-#line 501 "toke.l"
+#line 511 "toke.l"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
@@ -2244,9 +2278,9 @@ YY_RULE_SETUP
                                yyterminate();
                        }                       /* sudo -e */
        YY_BREAK
-case 42:
+case 45:
 YY_RULE_SETUP
-#line 508 "toke.l"
+#line 518 "toke.l"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -2262,9 +2296,9 @@ YY_RULE_SETUP
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 523 "toke.l"
+#line 533 "toke.l"
 {
                            LEXTRACE("BEGINSTR ");
                            yylval.string = NULL;
@@ -2272,9 +2306,9 @@ YY_RULE_SETUP
                            BEGIN INSTR;
                        }
        YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 530 "toke.l"
+#line 540 "toke.l"
 {
                            /* a word */
                            if (!fill(yytext, yyleng))
@@ -2283,49 +2317,49 @@ YY_RULE_SETUP
                            return WORD;
                        }
        YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 538 "toke.l"
+#line 548 "toke.l"
 {
                            LEXTRACE("( ");
                            return '(';
                        }
        YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 543 "toke.l"
+#line 553 "toke.l"
 {
                            LEXTRACE(") ");
                            return ')';
                        }
        YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 548 "toke.l"
+#line 558 "toke.l"
 {
                            LEXTRACE(", ");
                            return ',';
                        }                       /* return ',' */
        YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 553 "toke.l"
+#line 563 "toke.l"
 {
                            LEXTRACE("= ");
                            return '=';
                        }                       /* return '=' */
        YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 558 "toke.l"
+#line 568 "toke.l"
 {
                            LEXTRACE(": ");
                            return ':';
                        }                       /* return ':' */
        YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 563 "toke.l"
+#line 573 "toke.l"
 {
                            if (yyleng & 1) {
                                LEXTRACE("!");
@@ -2333,9 +2367,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 570 "toke.l"
+#line 580 "toke.l"
 {
                            if (YY_START == INSTR) {
                                LEXTRACE("ERROR ");
@@ -2348,25 +2382,25 @@ YY_RULE_SETUP
                            return COMMENT;
                        }                       /* return newline */
        YY_BREAK
-case 52:
+case 55:
 YY_RULE_SETUP
-#line 582 "toke.l"
+#line 592 "toke.l"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 586 "toke.l"
+#line 596 "toke.l"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
                            continued = TRUE;
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 54:
+case 57:
 YY_RULE_SETUP
-#line 592 "toke.l"
+#line 602 "toke.l"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -2375,9 +2409,9 @@ YY_RULE_SETUP
                            return COMMENT;
                        }                       /* comment, not uid/gid */
        YY_BREAK
-case 55:
+case 58:
 YY_RULE_SETUP
-#line 600 "toke.l"
+#line 610 "toke.l"
 {
                            LEXTRACE("ERROR ");
                            return ERROR;
@@ -2389,7 +2423,7 @@ case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):
-#line 605 "toke.l"
+#line 615 "toke.l"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -2400,12 +2434,12 @@ case YY_STATE_EOF(INSTR):
                                yyterminate();
                        }
        YY_BREAK
-case 56:
+case 59:
 YY_RULE_SETUP
-#line 615 "toke.l"
+#line 625 "toke.l"
 ECHO;
        YY_BREAK
-#line 2408 "lex.yy.c"
+#line 2442 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2696,7 +2730,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 >= 596 )
+                       if ( yy_current_state >= 607 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2731,11 +2765,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 >= 596 )
+               if ( yy_current_state >= 607 )
                        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 == 595);
+       yy_is_jam = (yy_current_state == 606);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -3296,7 +3330,7 @@ int main()
        return 0;
        }
 #endif
-#line 615 "toke.l"
+#line 625 "toke.l"
 
 struct path_list {
     char *path;
diff --git a/toke.l b/toke.l
index 0dd000fb82c8649cb7a87da7250fc2eb57b1d804..7181d3117a09f40608812bab95fe0574bd609348 100644 (file)
--- a/toke.l
+++ b/toke.l
@@ -468,22 +468,32 @@ NOLOG_INPUT[[:blank:]]*:  {
                            return NTWKADDR;
                        }
 
-[[:upper:]][[:upper:][:digit:]_]* {
-                           if (strcmp(yytext, "ALL") == 0) {
-                               LEXTRACE("ALL ");
-                               return ALL;
-                           }
+ALL {
+                           LEXTRACE("ALL ");
+                           return ALL;
+
+                       }
+
+<INITIAL>ROLE {
 #ifdef HAVE_SELINUX
-                           /* XXX - restrict type/role to initial state */
-                           if (strcmp(yytext, "TYPE") == 0) {
-                               LEXTRACE("TYPE ");
-                               return TYPE;
-                           }
-                           if (strcmp(yytext, "ROLE") == 0) {
-                               LEXTRACE("ROLE ");
-                               return ROLE;
-                           }
-#endif /* HAVE_SELINUX */
+                           LEXTRACE("ROLE ");
+                           return ROLE;
+#else
+                           goto got_alias;
+#endif
+                       }
+
+<INITIAL>TYPE {
+#ifdef HAVE_SELINUX
+                           LEXTRACE("TYPE ");
+                           return TYPE;
+#else
+                           goto got_alias;
+#endif
+                       }
+
+[[:upper:]][[:upper:][:digit:]_]* {
+                       got_alias:
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("ALIAS ");