]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#916] Regen flex and bison files 2
authorFrancis Dupont <fdupont@isc.org>
Fri, 29 May 2020 16:10:56 +0000 (16:10 +0000)
committerFrancis Dupont <fdupont@isc.org>
Wed, 8 Jul 2020 12:32:45 +0000 (14:32 +0200)
src/bin/agent/agent_lexer.cc
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/d2/d2_lexer.cc
src/bin/d2/d2_parser.cc
src/bin/d2/d2_parser.h
src/bin/netconf/netconf_lexer.cc

index 9e66d6cd240be74efff1151e526233a2b5a7fde4..9f0410534db9ccaeedcaad6a5fa5ffa444001fc6 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 59
-#define YY_END_OF_BUFFER 60
+#define YY_NUM_RULES 55
+#define YY_END_OF_BUFFER 56
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,44 +700,42 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[326] =
+static const flex_int16_t yy_accept[305] =
     {   0,
-       52,   52,    0,    0,    0,    0,    0,    0,    0,    0,
-       60,   58,   10,   11,   58,    1,   52,   49,   52,   52,
-       58,   51,   50,   58,   58,   58,   58,   58,   45,   46,
-       58,   58,   58,   47,   48,    5,    5,    5,   58,   58,
-       58,   10,   11,    0,    0,   41,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    1,   52,   52,    0,   51,   52,    3,    2,    6,
-        0,   52,    0,    0,    0,    0,    0,    0,    4,    0,
-        0,    9,    0,   42,    0,    0,    0,    0,    0,   44,
+       48,   48,    0,    0,    0,    0,    0,    0,    0,    0,
+       56,   54,   10,   11,   54,    1,   48,   45,   48,   48,
+       54,   47,   46,   54,   54,   54,   54,   54,   41,   42,
+       54,   54,   54,   43,   44,    5,    5,    5,   54,   54,
+       54,   10,   11,    0,    0,   37,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
+       48,   48,    0,   47,   48,    3,    2,    6,    0,   48,
+        0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
+        0,   38,    0,    0,    0,   40,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    2,    0,
-        0,    0,    0,    0,    0,    0,    8,    0,    0,    0,
-        0,    0,   43,    0,    0,    0,   20,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   57,   55,    0,   54,   53,    0,
+        0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+        0,    0,    8,    0,    0,    0,   39,    0,    0,    0,
+       20,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   53,   51,
+        0,   50,   49,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   52,   49,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   56,   53,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   29,    0,    0,    0,
-
-        0,    0,   23,    0,    0,    0,    0,   38,   39,    0,
-        0,    0,    0,    0,   18,   19,   32,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   34,   31,    0,    0,    0,    0,    0,
-        0,    0,    0,   27,   16,    0,    0,    0,    0,    0,
-       25,   28,   33,    0,    0,   35,    0,    0,    0,    0,
-        0,   40,    0,    0,    0,    0,    0,    0,    0,   37,
-        0,    0,    0,    0,    0,    0,    0,   13,   14,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,   26,
-
-        0,    0,    0,    0,    0,    0,    0,   21,   22,    0,
-        0,    0,    0,    0,   15,   12,    0,    0,    0,    0,
-        0,   30,   17,   24,    0
+        0,    0,    0,    0,   28,    0,    0,    0,    0,    0,
+       23,    0,    0,    0,    0,    0,    0,    0,   18,   19,
+
+       31,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   33,   30,    0,    0,    0,
+        0,    0,    0,    0,   16,    0,    0,    0,    0,    0,
+       25,   27,   32,    0,    0,   34,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   36,    0,
+        0,    0,    0,    0,    0,    0,   13,   14,    0,    0,
+        0,    0,    0,    0,    0,   35,    0,    0,   26,    0,
+        0,    0,    0,    0,    0,    0,   21,   22,    0,    0,
+        0,    0,    0,   15,   12,    0,    0,    0,    0,    0,
+
+       29,   17,   24,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -748,14 +746,14 @@ static const YY_CHAR yy_ec[256] =
         1,    4,    5,    6,    7,    5,    5,    5,    5,    5,
         5,    8,    9,   10,   11,   12,   13,   14,   14,   15,
        14,   16,   14,   17,   14,   14,   14,   18,    5,   19,
-        5,   20,   21,    5,   22,   23,   24,   25,   26,   27,
-        5,    5,    5,    5,    5,   28,    5,   29,    5,    5,
-        5,   30,   31,   32,   33,    5,    5,    5,    5,    5,
-       34,   35,   36,    5,   37,    5,   38,   39,   40,   41,
-
-       42,   43,   44,   45,   46,    5,   47,   48,   49,   50,
-       51,   52,    5,   53,   54,   55,   56,   57,    5,   58,
-       59,   60,   61,    5,   62,    5,    5,    5,    5,    5,
+        5,   20,   21,    5,   22,   23,   24,   23,   25,   26,
+        5,    5,    5,    5,    5,   27,    5,   28,    5,    5,
+        5,   29,   30,   31,   32,    5,    5,    5,    5,    5,
+       33,   34,   35,    5,   36,    5,   37,   38,   39,   40,
+
+       41,   42,   43,   44,   45,    5,   46,   47,   48,   49,
+       50,   51,    5,   52,   53,   54,   55,   56,    5,   57,
+       58,   59,   60,    5,   61,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -772,349 +770,323 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[63] =
+static const YY_CHAR yy_meta[62] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
         3,    3,    3,    5,    5,    5,    5,    3,    3,    3,
-        3,    5,    5,    5,    5,    5,    5,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    5,    5,    5,
-        5,    5,    5,    3,    3,    3,    3,    3,    3,    3,
+        3,    5,    5,    5,    5,    5,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    5,    5,    5,    5,
+        5,    5,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3
+        3
     } ;
 
-static const flex_int16_t yy_base[338] =
+static const flex_int16_t yy_base[317] =
     {   0,
-        0,    0,   61,   64,   67,    0,   65,   69,   49,   66,
-      277, 2165,   86,  269,  129,    0,  124, 2165,  172,  129,
-       84,  178, 2165,  250,   91,   76,   71,   89, 2165, 2165,
-       96,   91,   95, 2165, 2165, 2165,   87,  250,  196,    0,
-      222,  119,  236,  114,  199, 2165,  205,  215,  222,  209,
-      235,  252,  273,  279,  287,  297,  304,  310,  317,  323,
-      345,    0,  345,  367,  361,  374,  387, 2165,    0, 2165,
-      144,  215,  128,  134,  119,  171,  185,  135, 2165,  172,
-      204, 2165,  161, 2165,  392,  405,  416,  422,  203,  435,
-      457,  457,  484,  502,  508,  514,  520,  526,  533,  544,
-
-      550,  556,  563,  572,  581,  591,  598,  608,    0,  172,
-      199,  209,  212,  221,  219,  149, 2165,    0,  618,  633,
-      639,  167, 2165,  672,  655,  645, 2165,  700,  715,  722,
-      728,  735,  742,  758,  777,  783,  795,  802,  808,  814,
-      820,  826,  851,  242, 2165, 2165,  275, 2165, 2165,  109,
-        0,  863,  871,  877,  910,  912,  937,  954,  960,  967,
-      978,  985,  991,  998, 1004, 1013, 1021, 1035, 1041, 1051,
-     1057, 1063, 1071, 1077, 2165, 2165,  122,    0, 1093, 1101,
-     1112, 1118, 1128, 1165, 1136, 1148, 1163, 1194, 1211, 1217,
-     1224, 1230, 1236, 1242, 1248, 1261, 2165, 1255, 1267, 1278,
-
-     1291, 1285, 2165, 1298,  109,    0, 1315, 2165, 2165, 1321,
-     1333, 1340, 1346, 1356, 2165, 2165, 2165, 1364, 1381, 1387,
-     1399, 1405, 1412, 1418, 1425, 1440, 1449, 1462, 1468, 1475,
-     2165, 1485, 1499, 1505, 1512, 1521, 1527, 1535, 1542, 1548,
-     1557, 1563, 1570, 2165, 2165, 1584, 1601, 1607, 1614, 1620,
-     1626, 1644, 1650, 2165, 2165, 1656, 1662, 1686, 1692, 1699,
-     2165, 2165, 2165, 1705, 1711, 2165, 1717, 1727, 1735, 1742,
-     1757, 2165, 1765, 1772, 1778, 1784, 1802, 1808, 1820, 2165,
-     1826, 1832, 1838, 1844, 1850, 1856, 1863, 2165, 2165, 1875,
-     1891, 1901, 1910, 1916, 1922, 1928, 2165, 1936, 1947, 2165,
-
-     1953, 1959, 1967, 1975, 1984, 1990, 1998, 2165, 2165, 2005,
-     2011, 2026, 2036, 2048, 2165, 2165, 2054, 2061, 2071, 2084,
-     2091, 2165, 2165, 2165, 2165, 2126, 2131, 2136, 2141, 2146,
-     2151, 2156, 2159,  132,  128,  121,  111
+        0,    0,   60,   63,   66,    0,   64,   68,   48,   65,
+      320, 1969,   85,  296,  127,    0,  107, 1969,  122,  127,
+       82,  169, 1969,  274,   89,   80,   80,  102, 1969, 1969,
+      103,  117,  121, 1969, 1969, 1969,  112,  277,  211,    0,
+      236,  151,  248,  112,  156, 1969,  186,  185,  194,  201,
+      212,  223,  246,  252,  260,  266,  273,  281,  300,    0,
+      302,  321,  341,  349,  353, 1969,    0, 1969,  216,  297,
+      118,  152,  138,  174,  223,  209, 1969,  199,  211, 1969,
+      237, 1969,  366,  339,  206,  379,  408,  395,  404,  434,
+      450,  456,  463,  472,  480,  490,  497,  514,  506,  533,
+
+      540,  549,  555,  563,    0,  235,  251,  181,  251,  258,
+      267,  164, 1969,    0,  569,  203, 1969,  610,  605,  575,
+     1969,  611,  640,  653,  659,  666,  674,  680,  693,  701,
+      709,  718,  727,  735,  756,  762,  769,  268, 1969, 1969,
+      298, 1969, 1969,  153,    0,  776,  815,  782,  791,  843,
+      857,  863,  869,  877,  892,  898,  907,  913,  922,  932,
+      942,  957,  966,  972,  978,  991, 1969, 1969,  165,    0,
+     1002, 1039, 1008, 1025, 1037, 1014, 1066, 1084, 1090, 1096,
+     1102, 1108, 1114, 1125, 1969, 1131, 1149, 1155, 1161, 1168,
+     1969, 1178,  123,    0, 1185, 1191, 1197, 1207, 1969, 1969,
+
+     1969, 1227, 1233, 1248, 1254, 1262, 1269, 1275, 1283, 1289,
+     1298, 1305, 1319, 1332, 1969, 1339, 1354, 1361, 1368, 1374,
+     1383, 1391, 1397, 1403, 1410, 1969, 1969, 1420, 1426, 1432,
+     1439, 1445, 1455, 1474, 1969, 1462, 1480, 1489, 1499, 1516,
+     1969, 1969, 1969, 1523, 1529, 1969, 1535, 1541, 1553, 1559,
+     1565, 1582, 1588, 1594, 1600, 1617, 1623, 1635, 1969, 1641,
+     1647, 1653, 1659, 1665, 1677, 1689, 1969, 1969, 1700, 1706,
+     1712, 1718, 1726, 1735, 1741, 1969, 1748, 1755, 1969, 1761,
+     1770, 1790, 1796, 1805, 1811, 1817, 1969, 1969, 1825, 1831,
+     1846, 1852, 1861, 1969, 1969, 1867, 1873, 1881, 1888, 1896,
+
+     1969, 1969, 1969, 1969, 1930, 1935, 1940, 1945, 1950, 1955,
+     1960, 1963,  155,  151,   91,   83
     } ;
 
-static const flex_int16_t yy_def[338] =
+static const flex_int16_t yy_def[317] =
     {   0,
-      325,    1,  326,  326,    1,    5,    5,    5,    5,    5,
-      325,  325,  325,  325,  327,  328,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  329,
-      325,  325,  325,  330,  327,  325,  327,  327,  327,  331,
-      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      327,  328,  325,  325,  325,  325,  325,  325,  332,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      329,  325,  330,  325,  325,  327,  327,  327,  333,  327,
-      331,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-
-      327,  327,  327,  327,  327,  327,  327,  327,  332,  325,
-      325,  325,  325,  325,  325,  325,  325,  334,  327,  327,
-      327,  333,  325,  331,  327,  327,  325,  327,  327,  327,
-      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      327,  327,  327,  325,  325,  325,  325,  325,  325,  325,
-      335,  327,  327,  327,  331,  327,  327,  327,  327,  327,
-      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      327,  327,  327,  327,  325,  325,  325,  336,  327,  327,
-      327,  327,  327,  331,  327,  327,  327,  327,  327,  327,
-      327,  327,  327,  327,  327,  327,  325,  327,  327,  327,
-
-      327,  327,  325,  327,  325,  337,  327,  325,  325,  327,
-      327,  327,  327,  327,  325,  325,  325,  327,  327,  327,
-      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      325,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      327,  327,  327,  325,  325,  327,  327,  327,  327,  327,
-      327,  327,  327,  325,  325,  327,  327,  327,  327,  327,
-      325,  325,  325,  327,  327,  325,  327,  327,  327,  327,
-      327,  325,  327,  327,  327,  327,  327,  327,  327,  325,
-      327,  327,  327,  327,  327,  327,  327,  325,  325,  327,
-      327,  327,  327,  327,  327,  327,  325,  327,  327,  325,
-
-      327,  327,  327,  327,  327,  327,  327,  325,  325,  327,
-      327,  327,  327,  327,  325,  325,  327,  327,  327,  327,
-      327,  325,  325,  325,    0,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325
+      304,    1,  305,  305,    1,    5,    5,    5,    5,    5,
+      304,  304,  304,  304,  306,  307,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  308,
+      304,  304,  304,  309,  306,  304,  306,  310,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  307,
+      304,  304,  304,  304,  304,  304,  311,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  308,  304,
+      309,  304,  304,  306,  312,  306,  310,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+
+      306,  306,  306,  306,  311,  304,  304,  304,  304,  304,
+      304,  304,  304,  313,  306,  312,  304,  310,  306,  306,
+      304,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  304,  304,  304,
+      304,  304,  304,  304,  314,  306,  310,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  304,  304,  304,  315,
+      306,  310,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  304,  306,  306,  306,  306,  306,
+      304,  306,  304,  316,  306,  306,  306,  306,  304,  304,
+
+      304,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  304,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  304,  304,  306,  306,  306,
+      306,  306,  306,  306,  304,  306,  306,  306,  306,  306,
+      304,  304,  304,  306,  306,  304,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  304,  306,
+      306,  306,  306,  306,  306,  306,  304,  304,  306,  306,
+      306,  306,  306,  306,  306,  304,  306,  306,  304,  306,
+      306,  306,  306,  306,  306,  306,  304,  304,  306,  306,
+      306,  306,  306,  304,  304,  306,  306,  306,  306,  306,
+
+      304,  304,  304,    0,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304
     } ;
 
-static const flex_int16_t yy_nxt[2228] =
+static const flex_int16_t yy_nxt[2031] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,   24,   12,
-       12,   12,   12,   12,   12,   25,   26,   12,   27,   12,
-       12,   28,   12,   29,   12,   30,   12,   12,   12,   12,
-       12,   25,   31,   12,   12,   12,   12,   12,   12,   32,
-       12,   12,   12,   12,   33,   12,   12,   12,   12,   12,
-       34,   35,   37,   14,   37,   37,   14,   37,   38,   41,
-       40,   38,   12,   12,   40,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   41,   42,   42,   42,
-       42,   68,   12,   12,   12,   12,   69,   73,   12,   71,
-
-       12,   71,   12,   74,   72,   72,   72,   72,   12,   12,
-       12,   12,   39,   73,   12,   83,   12,   73,   75,   84,
-       42,   12,   42,   74,   75,  206,   74,   12,   12,   44,
-       44,   44,  178,   76,   46,   63,  151,   64,   64,   64,
-       64,   75,   67,   67,   67,   67,   77,   78,   85,   65,
-      231,  112,   47,   48,   65,  110,   49,   72,   72,   72,
-       72,  111,  205,   50,  177,   65,   84,  112,   51,   52,
-       65,   53,  123,   54,  112,  110,   55,   56,   57,   58,
-       59,  111,   60,   63,   61,   66,   66,   66,   66,   63,
-      115,   66,   66,   66,   66,   85,  150,   65,  110,   44,
-
-       44,   44,  144,   65,   46,   44,   44,   44,  123,  117,
-       46,  116,  111,   65,   90,   44,   44,   44,  113,   65,
-       46,   45,   44,   44,   44,  144,  145,   46,   72,   72,
-       72,   72,  114,   50,  146,   44,   44,   44,   43,   50,
-       46,   82,  144,   45,  146,   80,  145,   45,  145,   50,
-      146,   45,   44,   44,   44,   86,   50,   46,   45,   87,
-      149,   45,   79,   45,   91,  147,   93,  175,  148,   50,
-       70,   43,   88,   44,   44,   44,  325,  325,   46,   44,
-       44,   44,  325,  175,   46,   92,   50,   44,   44,   44,
-      325,  325,   46,   94,  325,  325,   95,   44,   44,   44,
-
-      175,  325,   46,  325,   44,   44,   44,   50,  325,   46,
-       44,   44,   44,   50,  325,   46,  176,   44,   44,   44,
-       96,   50,   46,   44,   44,   44,  325,  325,   46,   97,
-      325,   50,   99,   98,  101,  325,  325,  100,   50,  325,
-      325,  102,  325,  325,   50,   44,   44,   44,  325,  325,
-       46,   50,  325,  325,  104,  325,  325,   50,   67,   67,
-       67,   67,  325,  325,  105,  103,  325,  325,  325,   71,
-       65,   71,  325,  106,   72,   72,   72,   72,   63,   50,
-       64,   64,   64,   64,  325,   63,   65,   66,   66,   66,
-       66,  325,   65,  325,  107,  325,  325,   83,  108,   65,
-
-       67,   67,   67,   67,   83,   44,   44,   44,   65,  325,
-       46,  325,   65,  325,  325,   65,   44,   44,   44,  325,
-      325,   46,   44,   44,   44,  325,   83,   46,   65,  325,
-       83,  325,  325,  325,   83,   44,   44,   44,  325,   50,
-       46,   83,  325,  325,   83,  325,   83,  118,  325,  325,
-       50,  325,  325,  325,  119,  120,   50,   44,   44,   44,
-      325,  325,   46,  325,  325,  121,  325,  325,  325,   50,
-      124,  124,  124,  124,  325,  325,  325,  325,  124,  124,
-      124,  124,  124,  124,   44,   44,   44,  325,  325,  127,
-      325,   50,  325,  325,  124,  124,  124,  124,  124,  124,
-
-      325,  325,   44,   44,   44,  125,  126,   46,   44,   44,
-       44,  325,  325,   46,   44,   44,   44,  325,   50,   46,
-       44,   44,   44,  325,  325,   46,   44,   44,   44,  325,
-      325,   46,  325,   44,   44,   44,   50,  325,   46,  325,
-      128,  325,   50,  325,   44,   44,   44,  129,   50,   46,
-       44,   44,   44,  325,   50,   46,   44,   44,   44,  325,
-       50,   46,  325,   44,   44,   44,  325,   50,   46,  130,
-      131,  133,   44,   44,   44,  325,  325,   46,   50,  325,
-      132,   44,   44,   44,   50,  325,   46,  134,  325,  325,
-       50,   44,   44,   44,  325,  325,   46,   50,   44,   44,
-
-       44,  325,  325,   46,  136,  325,   50,  135,   44,   44,
-       44,  325,  325,   46,  325,   50,  325,  137,   44,   44,
-       44,  325,  325,   46,  138,   50,  139,  325,  325,  325,
-      141,  325,   50,   44,   44,   44,  325,  140,   46,   44,
-       44,   44,   50,  142,   46,   44,   44,   44,  325,  143,
-       46,  325,   50,  325,  325,   44,   44,   44,  325,  325,
-       46,  325,  325,  325,  325,  325,  325,   50,  325,  325,
-      325,  325,  152,   50,  325,  325,  325,  325,  325,   50,
-      325,  325,  154,  325,  153,  155,  155,  155,  155,   50,
-      325,  325,  325,  155,  155,  155,  155,  155,  155,  157,
-
-       44,   44,   44,  156,  325,   46,  325,  325,  325,  155,
-      155,  155,  155,  155,  155,   44,   44,   44,  325,  325,
-       46,  325,   44,   44,   44,  325,  325,   46,   44,   44,
-       44,  325,  325,   46,   50,   44,   44,   44,  325,  325,
-       46,  325,   44,   44,   44,  325,  325,   46,  325,   50,
-      325,  325,  325,  325,  325,  158,   50,  325,   44,   44,
-       44,  325,   50,   46,  325,  325,  159,  325,  325,   50,
-      325,  325,  325,  325,  161,  160,   50,   44,   44,   44,
-      325,  325,   46,   44,   44,   44,  162,  325,   46,  325,
-      325,  325,   50,  325,  163,   44,   44,   44,  325,  325,
-
-       46,  164,   44,   44,   44,  325,  325,   46,   44,   44,
-       44,   50,  325,   46,   44,   44,   44,   50,  325,   46,
-       44,   44,   44,  325,  167,   46,   44,   44,   44,   50,
-      165,   46,  325,  166,  325,  325,   50,  325,  325,  169,
-      325,  325,   50,  325,  325,  325,  168,  325,   50,  325,
-      325,   44,   44,   44,   50,  171,   46,  325,  325,  325,
-       50,  325,  170,   44,   44,   44,  172,  325,   46,  325,
-      325,   44,   44,   44,  325,  325,   46,   44,   44,   44,
-      325,  325,   46,  173,  325,   50,  180,  181,  325,  325,
-      325,  325,  325,  325,  325,  182,  325,   50,  325,  325,
-
-      325,  325,  325,  174,  325,   50,  325,  325,  325,  325,
-      325,   50,   44,   44,   44,  179,  325,   46,  325,  325,
-      325,  325,  183,  184,  184,  184,  184,  325,  325,  325,
-      325,  184,  184,  184,  184,  184,  184,   44,   44,   44,
-      325,  325,   46,  325,  325,  325,   50,  184,  184,  184,
-      184,  184,  184,  185,   44,   44,   44,  325,  325,   46,
-       44,   44,   44,  325,  325,   46,  325,   44,   44,   44,
-      325,   50,   46,  325,  325,  188,  189,  325,   44,   44,
-       44,  325,  325,   46,  325,   44,   44,   44,   50,  186,
-       46,   44,   44,   44,   50,  192,   46,  187,   44,   44,
-
-       44,   50,  325,   46,   44,   44,   44,  325,  325,   46,
-      325,  190,   50,   44,   44,   44,  325,  325,   46,   50,
-      325,   44,   44,   44,  325,   50,  197,  325,  193,  325,
-      325,  191,   50,  325,  325,   44,   44,   44,   50,  194,
-       46,   44,   44,   44,  325,  325,   46,   50,  325,  195,
-      325,   44,   44,   44,  196,   50,   46,   44,   44,   44,
-      325,  325,   46,   44,   44,   44,  325,  325,   46,   50,
-      325,   44,   44,   44,  325,   50,  203,   44,   44,   44,
-      325,  325,   46,  325,  325,   50,  325,  204,  325,  199,
-      198,   50,  200,   44,   44,   44,  325,   50,   46,  325,
-
-      325,   44,   44,   44,  202,   50,  208,  325,  325,  201,
-      325,   50,   44,   44,   44,  325,  325,  209,   44,   44,
-       44,  325,  325,   46,  325,  325,  325,   50,   44,   44,
-       44,  325,  325,   46,  325,   50,   44,   44,   44,  325,
-      325,   46,  325,  207,  325,  325,   50,  325,   44,   44,
-       44,  325,   50,   46,  325,  325,  325,  325,  210,  325,
-      325,  325,   50,   44,   44,   44,  325,  325,   46,  325,
-       50,  325,  325,  325,  325,  325,  325,  211,   45,   45,
-       45,   45,   50,  325,  325,  212,   45,   45,   45,   45,
-       45,   45,  325,  325,   44,   44,   44,   50,  213,  215,
-
-      325,  325,   45,   45,   45,   45,   45,   45,  325,  325,
-      214,   44,   44,   44,  325,  325,  216,   44,   44,   44,
-      325,  325,  217,  325,   44,   44,   44,  325,   50,   46,
-       44,   44,   44,  325,  218,   46,   44,   44,   44,  325,
-      325,   46,   44,   44,   44,   50,  325,   46,   44,   44,
-       44,   50,  325,   46,  325,   44,   44,   44,   50,  325,
-       46,   44,   44,   44,   50,  325,   46,   44,   44,   44,
-       50,  325,   46,  325,  219,  325,   50,  325,   44,   44,
-       44,  220,   50,   46,  325,   44,   44,   44,  221,   50,
-       46,   44,   44,   44,  222,   50,   46,  325,   44,   44,
-
-       44,   50,  325,   46,  325,  325,  325,  223,  226,  225,
-      325,  325,   50,  224,  325,   44,   44,   44,  325,   50,
-       46,   44,   44,   44,  325,   50,   46,  325,  325,  325,
-      227,  325,   50,   44,   44,   44,  228,  230,   46,  229,
-       44,   44,   44,  325,  325,   46,   44,   44,   44,   50,
-      325,   46,  325,  325,  325,   50,   44,   44,   44,  325,
-      325,   46,  232,  325,   44,   44,   44,   50,  325,   46,
-      233,  325,  325,  325,   50,  325,  234,  325,  325,  325,
-       50,   44,   44,   44,  325,  325,   46,   44,   44,   44,
-       50,  325,   46,  236,  235,  325,  325,  237,   50,   44,
-
-       44,   44,  325,  325,   46,   44,   44,   44,  325,  325,
-       46,  238,   44,   44,   44,   50,  325,   46,   44,   44,
-       44,   50,  325,  244,  325,   44,   44,   44,  325,  325,
-      245,  239,  325,   50,  325,  325,  325,  240,  325,   50,
-       44,   44,   44,  325,  325,   46,   50,  325,  325,   44,
-       44,   44,   50,  243,   46,  325,  325,  241,  242,   50,
-      325,  246,   44,   44,   44,  325,  325,   46,   44,   44,
-       44,  325,  325,   46,   50,   44,   44,   44,  250,  325,
-       46,  325,  325,   50,  325,   44,   44,   44,  325,  325,
-       46,  325,  325,  325,  247,  252,   50,  325,  248,   44,
-
-       44,   44,   50,  325,   46,   44,   44,   44,  325,   50,
-      254,  325,   44,   44,   44,  325,  249,  255,  325,   50,
-      325,   44,   44,   44,  325,  251,   46,   44,   44,   44,
-      325,  256,   46,   50,  325,   44,   44,   44,  325,   50,
-       46,  325,   44,   44,   44,  325,   50,   46,   44,   44,
-       44,  325,  253,   46,  325,   50,  325,   44,   44,   44,
-      325,   50,  261,   44,   44,   44,  325,  325,  262,   50,
-       44,   44,   44,  325,  325,  263,   50,  325,  325,  325,
-      258,  325,   50,  257,   44,   44,   44,  325,  325,   46,
-      325,   50,  325,  325,  325,  259,  325,   50,  325,  325,
-
-      260,   44,   44,   44,   50,  325,   46,   44,   44,   44,
-      325,  325,  266,  325,   44,   44,   44,  325,   50,   46,
-       44,   44,   44,  325,  325,   46,   44,   44,   44,  325,
-      325,   46,  325,  325,  264,   50,  325,  325,  325,  325,
-      325,   50,  265,  325,   44,   44,   44,  325,   50,   46,
-       44,   44,   44,  325,   50,  272,   44,   44,   44,  325,
-       50,   46,   44,   44,   44,  325,  325,   46,  325,  268,
-      325,  325,  267,  325,  269,  270,  325,  325,   50,  325,
-      325,  271,  325,  325,   50,  325,   44,   44,   44,  325,
-       50,   46,   44,   44,   44,  325,   50,   46,  325,   44,
-
-       44,   44,  325,  274,   46,   44,   44,   44,  325,  273,
-       46,   44,   44,   44,  325,  325,   46,   44,   44,   44,
-       50,  325,  280,  325,  275,  325,   50,   44,   44,   44,
-      325,  325,   46,   50,  325,   44,   44,   44,  325,   50,
-       46,  325,   44,   44,   44,   50,  276,   46,  325,  325,
-      325,   50,  325,  277,  325,  325,  278,   44,   44,   44,
-      325,   50,   46,  279,  281,   44,   44,   44,  325,   50,
-       46,  325,   44,   44,   44,  325,   50,   46,   44,   44,
-       44,  325,  325,   46,   44,   44,   44,  325,  325,  288,
-      325,   50,  325,  282,  325,  325,  283,  325,  325,   50,
-
-      284,  325,   44,   44,   44,  325,   50,  289,   44,   44,
-       44,  325,   50,   46,  325,  285,  325,  325,   50,  286,
-       44,   44,   44,  325,  325,   46,   44,   44,   44,  325,
-      287,   46,   44,   44,   44,  325,   50,   46,   44,   44,
-       44,  325,   50,   46,   44,   44,   44,  325,  325,   46,
-       44,   44,   44,  325,   50,   46,   44,   44,   44,  325,
-       50,  297,  290,   44,   44,   44,   50,  325,   46,  325,
-      325,  325,   50,  291,  292,   44,   44,   44,   50,  294,
-       46,  325,  325,  293,   50,  295,  325,  325,  325,  296,
-       50,   44,   44,   44,  325,  325,  300,   50,  325,  325,
-
-      298,   44,   44,   44,  325,  325,   46,  325,  325,   50,
-       44,   44,   44,  325,  325,   46,   44,   44,   44,  325,
-      299,   46,   44,   44,   44,   50,  325,   46,   44,   44,
-       44,  325,  325,   46,  325,   50,   44,   44,   44,  325,
-      325,   46,  301,  325,   50,  325,  325,   44,   44,   44,
-       50,  302,   46,   44,   44,   44,   50,  325,  308,   44,
-       44,   44,   50,  325,  309,  325,  325,   44,   44,   44,
-       50,  304,   46,  303,  305,   44,   44,   44,  325,  325,
-       46,   50,  325,  325,   44,   44,   44,   50,  306,   46,
-       44,   44,   44,   50,  325,   46,  325,  307,   44,   44,
-
-       44,   50,  325,   46,  325,   44,   44,   44,  325,   50,
-      315,   44,   44,   44,  325,  325,  316,  325,   50,  325,
-      325,  310,  325,  325,   50,  312,   44,   44,   44,  311,
-      325,   46,   50,  325,  325,  313,   44,   44,   44,   50,
-      325,   46,  325,  325,  325,   50,  325,  314,   44,   44,
-       44,  325,  325,   46,   44,   44,   44,  325,  325,   46,
-       50,   44,   44,   44,  325,  325,   46,  325,  325,  325,
-       50,   44,   44,   44,  325,  325,  322,  318,  325,  325,
-      317,  325,   50,  325,   44,   44,   44,  325,   50,  323,
-      325,   44,   44,   44,  325,   50,  324,  325,  325,  325,
-
-      325,  319,  325,  325,  325,   50,  325,  320,  325,  325,
-      325,  325,  325,  325,  321,  325,  325,  325,   50,  325,
-      325,  325,  325,  325,  325,   50,   36,   36,   36,   36,
-       36,   45,   45,   45,   45,   45,   62,  325,   62,   62,
-       62,   81,  325,   81,  325,   81,   83,   83,   83,   83,
-       83,   89,   89,   89,   89,   89,  109,  325,  109,  109,
-      109,  122,  122,  122,   11,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325
+       12,   12,   12,   12,   25,   26,   12,   27,   12,   12,
+       28,   12,   29,   12,   30,   12,   12,   12,   12,   12,
+       25,   31,   12,   12,   12,   12,   12,   12,   32,   12,
+       12,   12,   12,   33,   12,   12,   12,   12,   12,   34,
+       35,   37,   14,   37,   37,   14,   37,   38,   41,   40,
+       38,   12,   12,   40,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   41,   42,   81,   42,   66,
+       12,   12,   12,   12,   67,  194,   12,   69,   12,   69,
+
+       12,   71,   70,   70,   70,   70,   12,   12,   12,   12,
+       39,   72,   12,   42,   12,   42,   71,   82,   61,   12,
+       62,   62,   62,   62,   71,   12,   12,   44,   44,   44,
+       73,   63,   46,   61,   72,   64,   64,   64,   64,   74,
+       65,   65,   65,   65,  106,   83,   63,   63,   72,   73,
+       47,   63,   42,   73,   42,  170,   44,   44,   44,  145,
+       48,   46,   63,  215,  106,   49,   50,   63,   51,  108,
+       52,   75,   76,   53,   54,   55,   56,   57,  107,   58,
+       61,   59,   64,   64,   64,   64,   44,   44,   44,   48,
+       86,   46,  108,   63,   44,   44,   44,   45,  107,   46,
+
+      106,   44,   44,   44,  193,  140,   46,  169,  117,   63,
+      144,  117,   44,   44,   44,   89,  113,   46,   45,   48,
+      109,  140,   45,   44,   44,   44,   45,   48,   46,   70,
+       70,   70,   70,   45,   48,   84,   45,  112,   45,   87,
+      108,   90,   82,   88,   91,   48,   44,   44,   44,  107,
+       43,   46,   44,   44,   44,   80,   48,   46,   92,   78,
+       44,   44,   44,  111,  138,   46,   44,   44,   44,  110,
+       83,   46,   93,   44,   44,   44,   94,  139,   46,   48,
+      138,   44,   44,   44,  139,   48,   46,  138,   97,   77,
+       95,  140,  167,   48,   68,   96,   98,  139,   43,   48,
+
+       44,   44,   44,  141,  142,   46,   48,  143,  167,  100,
+       70,   70,   70,   70,   48,   65,   65,   65,   65,  304,
+       99,  101,  167,  304,  304,  304,   63,  304,  304,  304,
+      102,  304,   61,   48,   62,   62,   62,   62,  168,   44,
+       44,   44,   63,  304,   46,   63,  304,  304,  103,   69,
+      304,   69,  104,  304,   70,   70,   70,   70,  304,  304,
+       61,   63,   64,   64,   64,   64,   65,   65,   65,   65,
+      304,   81,   48,   63,  304,  304,  304,   63,   81,   44,
+       44,   44,  304,  304,   46,  304,  304,  115,  304,   63,
+      304,  304,  304,   63,  304,   44,   44,   44,  304,   81,
+
+       46,  304,  304,   81,   44,   44,   44,   81,  304,  121,
+      304,  304,   48,  304,   81,  304,  304,   81,  304,   81,
+      114,  118,  118,  118,  118,  304,  304,  304,   48,  118,
+      118,  118,  118,  118,   44,   44,   44,   48,  304,   46,
+      304,  304,  119,  120,  118,  118,  118,  118,  118,  118,
+       44,   44,   44,  304,  304,   46,   44,   44,   44,  304,
+      304,   46,  304,   44,   44,   44,  304,   48,   46,  304,
+      304,  122,   44,   44,   44,  304,  304,   46,  304,  304,
+       44,   44,   44,   48,  304,   46,  304,  304,  123,   48,
+       44,   44,   44,  304,  304,   46,   48,   44,   44,   44,
+
+      304,  304,   46,  304,  304,   48,   44,   44,   44,  304,
+      124,   46,  125,   48,   44,   44,   44,  127,  304,   46,
+      304,  304,  304,   48,  304,  126,  304,  304,  304,  304,
+       48,  304,  128,   44,   44,   44,  304,  304,   46,   48,
+       44,   44,   44,  304,  304,   46,  304,   48,  304,   44,
+       44,   44,  304,  129,   46,   44,   44,   44,  304,  131,
+       46,  130,  304,   44,   44,   44,   48,  304,   46,   44,
+       44,   44,  304,   48,   46,   44,   44,   44,  304,  304,
+       46,  304,   48,  304,  132,  304,  133,  135,   48,  304,
+      304,  304,  304,  304,  304,  134,   48,  304,  304,  136,
+
+      304,  304,   48,  137,  304,   44,   44,   44,   48,  304,
+       46,   44,   44,   44,  304,  304,   46,  304,  304,  304,
+      304,  304,  146,  147,  147,  147,  147,  304,  149,  304,
+      304,  147,  147,  147,  147,  147,  304,  304,   48,  304,
+       44,   44,   44,  304,   48,   46,  147,  147,  147,  147,
+      147,  147,  148,   44,   44,   44,  304,  304,   46,   44,
+       44,   44,  304,  304,   46,  150,   44,   44,   44,  304,
+      304,   46,  304,   48,   44,   44,   44,  304,  304,   46,
+       44,   44,   44,  304,  304,   46,   48,  304,  304,  304,
+      151,  304,   48,   44,   44,   44,  304,  304,   46,   48,
+
+      304,   44,   44,   44,  153,  152,   46,   48,  304,   44,
+       44,   44,  304,   48,   46,  304,  154,  304,   44,   44,
+       44,  304,  156,   46,  304,  155,   48,   44,   44,   44,
+      304,  304,   46,  304,   48,   44,   44,   44,  304,  304,
+       46,  159,   48,  304,  304,  157,  304,  304,  158,  304,
+      304,   48,  304,  304,  161,  304,   44,   44,   44,  160,
+       48,   46,   44,   44,   44,  304,  304,   46,   48,   44,
+       44,   44,  304,  304,   46,  163,   44,   44,   44,  304,
+      162,   46,   44,   44,   44,  304,  304,   46,  304,   48,
+      304,   44,   44,   44,  304,   48,   46,  304,  304,  304,
+
+      304,  164,   48,  304,  304,  304,  304,  304,  304,   48,
+      304,  304,  304,  304,  304,   48,  304,  304,  165,  304,
+      166,  304,  173,  304,   48,  304,  304,  171,  172,  172,
+      172,  172,  304,  304,  304,  304,  172,  172,  172,  172,
+      172,  304,  174,   44,   44,   44,  304,  304,   46,  304,
+      304,  172,  172,  172,  172,  172,  172,   44,   44,   44,
+      304,  304,   46,   44,   44,   44,  304,  304,   46,   44,
+       44,   44,  176,  177,   46,  304,   48,   44,   44,   44,
+      304,  304,   46,  304,  304,  175,  304,  180,  304,  304,
+       48,  304,   44,   44,   44,  304,   48,   46,   44,   44,
+
+       44,  304,   48,   46,  304,  304,  178,   44,   44,   44,
+       48,  304,   46,   44,   44,   44,  304,  304,   46,  304,
+      304,  179,   44,   44,   44,   48,  304,  185,  181,  304,
+      304,   48,   44,   44,   44,  304,  304,   46,  182,  304,
+       48,  304,   44,   44,   44,  304,   48,   46,  304,  304,
+      304,  183,  304,  184,  304,   48,  304,   44,   44,   44,
+      304,  304,   46,  304,  304,   48,   44,   44,   44,  304,
+      304,   46,   44,   44,   44,   48,  304,   46,   44,   44,
+       44,  304,  304,  191,  304,  304,  186,  304,  304,  187,
+       48,   44,   44,   44,  304,  304,   46,  188,  304,   48,
+
+      304,  192,   44,   44,   44,   48,  304,   46,   44,   44,
+       44,   48,  190,   46,   44,   44,   44,  189,  304,  199,
+      304,  304,  304,  304,   48,   44,   44,   44,  304,  304,
+       46,  304,  304,  304,  304,   48,  304,   44,   44,   44,
+      304,   48,   46,  304,  304,  304,  304,   48,  304,  304,
+      304,  195,   45,   45,   45,   45,  196,  304,   48,  304,
+       45,   45,   45,   45,   45,  304,   44,   44,   44,  304,
+       48,  200,  304,  304,  197,   45,   45,   45,   45,   45,
+       45,  304,  304,  198,   44,   44,   44,  304,  304,  201,
+       44,   44,   44,  304,  304,   46,   44,   44,   44,   48,
+
+      202,   46,   44,   44,   44,  304,  304,   46,   44,   44,
+       44,  304,  304,   46,   44,   44,   44,   48,  304,   46,
+      304,  304,  304,   48,  304,   44,   44,   44,  304,   48,
+       46,   44,   44,   44,  304,   48,   46,  304,  304,  203,
+      304,   48,  304,  304,  304,  304,  204,   48,  304,   44,
+       44,   44,  304,  205,   46,   44,   44,   44,   48,  206,
+       46,   44,   44,   44,   48,  304,   46,  304,   44,   44,
+       44,  304,  207,   46,  304,  304,  208,  304,   44,   44,
+       44,  304,   48,   46,  209,   44,   44,   44,   48,  210,
+       46,   44,   44,   44,   48,  304,   46,   44,   44,   44,
+
+      304,   48,   46,  304,  304,  212,  211,   44,   44,   44,
+      304,   48,   46,  304,  304,  304,  214,  304,   48,  304,
+      304,  213,  304,  304,   48,  304,  304,   44,   44,   44,
+       48,  216,   46,   44,   44,   44,  304,  304,   46,  304,
+       48,  304,  304,  218,  217,  304,  304,  219,   44,   44,
+       44,  304,  304,   46,   44,   44,   44,  304,  304,   46,
+       48,  304,   44,   44,   44,  304,   48,   46,  304,   44,
+       44,   44,  304,  220,   46,   44,   44,   44,  304,  304,
+      226,   48,  221,   44,   44,   44,  304,   48,  227,   44,
+       44,   44,  304,  304,   46,   48,  304,  222,   44,   44,
+
+       44,  304,   48,   46,  304,   44,   44,   44,   48,  225,
+       46,  223,  304,  304,  224,  304,   48,  304,  228,   44,
+       44,   44,   48,  304,   46,  304,  304,  304,  304,  232,
+      304,   48,   44,   44,   44,  304,  304,   46,   48,   44,
+       44,   44,  229,  304,   46,  304,  230,  304,  304,  234,
+      304,  304,   48,  304,   44,   44,   44,  304,  231,  235,
+      304,   44,   44,   44,  304,   48,   46,  304,   44,   44,
+       44,  236,   48,   46,   44,   44,   44,  304,  304,   46,
+      304,  233,  304,   44,   44,   44,  304,   48,   46,  304,
+      304,   44,   44,   44,   48,  304,   46,   44,   44,   44,
+
+      304,   48,  241,   44,   44,   44,  304,   48,  242,  304,
+       44,   44,   44,  304,  304,  243,   48,  304,  238,  304,
+       44,   44,   44,  237,   48,   46,   44,   44,   44,  304,
+       48,   46,   44,   44,   44,  239,   48,  246,  304,   44,
+       44,   44,  240,   48,   46,   44,   44,   44,  304,  304,
+       46,  304,  304,   48,  304,   44,   44,   44,  304,   48,
+       46,  304,   44,   44,   44,   48,  245,   46,  304,  244,
+      304,  304,   48,  304,   44,   44,   44,  304,   48,   46,
+       44,   44,   44,  304,  304,   46,  304,  304,   48,   44,
+       44,   44,  304,  248,   46,   48,  247,  304,  249,   44,
+
+       44,   44,  304,  250,   46,  304,  304,   48,  304,  304,
+      251,  304,  304,   48,  252,  304,   44,   44,   44,  304,
+      253,   46,   48,   44,   44,   44,  254,  304,   46,   44,
+       44,   44,   48,  304,   46,   44,   44,   44,  304,  304,
+      259,   44,   44,   44,  304,  304,   46,  304,  304,   48,
+      304,  304,  255,   44,   44,   44,   48,  304,   46,   44,
+       44,   44,   48,  304,   46,   44,   44,   44,   48,  256,
+       46,  304,  304,  257,   48,  304,  304,  260,  304,  304,
+      258,  304,   44,   44,   44,  304,   48,   46,   44,   44,
+       44,  304,   48,   46,   44,   44,   44,  304,   48,   46,
+
+       44,   44,   44,  304,  304,  267,  304,  263,  304,  304,
+      261,  304,  262,  304,  304,   48,  304,   44,   44,   44,
+      304,   48,  268,   44,   44,   44,  304,   48,   46,  304,
+      304,  264,  304,   48,  265,   44,   44,   44,  304,  304,
+       46,   44,   44,   44,  304,  266,   46,   44,   44,   44,
+       48,  304,   46,   44,   44,   44,   48,  304,   46,   44,
+       44,   44,  304,  304,   46,   44,   44,   44,   48,  304,
+       46,  304,  304,  304,   48,  304,  269,   44,   44,   44,
+       48,  304,  276,  304,  304,  304,   48,  270,  271,   44,
+       44,   44,   48,  273,   46,  304,  304,  272,   48,  274,
+
+       44,   44,   44,  275,  304,   46,   44,   44,   44,  304,
+       48,  279,   44,   44,   44,  304,  304,   46,   44,   44,
+       44,  304,   48,   46,  304,  277,   44,   44,   44,  304,
+      304,   46,  304,   48,  304,   44,   44,   44,  304,   48,
+       46,   44,   44,   44,  278,   48,   46,  304,   44,   44,
+       44,   48,  280,   46,  304,   44,   44,   44,  281,   48,
+       46,   44,   44,   44,  304,  304,  287,  304,   48,  304,
+       44,   44,   44,  304,   48,  288,  304,  304,  304,  304,
+      304,   48,  282,  283,  304,  304,  284,  304,   48,  304,
+       44,   44,   44,  304,   48,   46,   44,   44,   44,  285,
+
+      304,   46,  304,   48,  286,   44,   44,   44,  304,  304,
+       46,   44,   44,   44,  304,  304,   46,   44,   44,   44,
+      304,  304,   46,   48,  304,   44,   44,   44,  304,   48,
+      294,   44,   44,   44,  304,  304,  295,  304,   48,  304,
+      304,  304,  304,  289,   48,  291,   44,   44,   44,  290,
+       48,   46,   44,   44,   44,  292,  304,   46,   48,  304,
+      304,   44,   44,   44,   48,  293,   46,   44,   44,   44,
+      304,  304,   46,   44,   44,   44,  304,  304,   46,   48,
+      304,   44,   44,   44,  304,   48,  301,  304,   44,   44,
+       44,  304,  297,  302,   48,  304,   44,   44,   44,  296,
+
+       48,  303,  304,  304,  304,  304,   48,  304,  304,  304,
+      304,  304,  304,  298,   48,  304,  304,  304,  304,  299,
+      304,   48,  304,  304,  304,  300,  304,  304,  304,   48,
+       36,   36,   36,   36,   36,   45,   45,   45,   45,   45,
+       60,  304,   60,   60,   60,   79,  304,   79,  304,   79,
+       81,   81,   81,   81,   81,   85,   85,   85,   85,   85,
+      105,  304,  105,  105,  105,  116,  116,  116,   11,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304
     } ;
 
-static const flex_int16_t yy_chk[2228] =
+static const flex_int16_t yy_chk[2031] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1122,245 +1094,223 @@ static const flex_int16_t yy_chk[2228] =
         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,    3,    3,    3,    4,    4,    4,    3,    9,
-        7,    4,    5,    5,    8,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,   10,   13,   37,   13,
-       37,   21,    5,    5,    9,    5,   21,   26,    5,   25,
-
-        5,   25,    5,   27,   25,   25,   25,   25,    5,    5,
-        7,   10,    5,   26,    8,  337,    5,   31,   28,   44,
-       42,    5,   42,   32,   33,  336,   27,    5,    5,   15,
-       15,   15,  335,   31,   15,   17,  334,   17,   17,   17,
-       17,   28,   20,   20,   20,   20,   32,   33,   44,   17,
-      205,   75,   15,   15,   20,   73,   15,   71,   71,   71,
-       71,   74,  177,   15,  150,   17,   83,   78,   15,   15,
-       20,   15,  122,   15,   75,   73,   15,   15,   15,   15,
-       15,   74,   15,   19,   15,   19,   19,   19,   19,   22,
-       78,   22,   22,   22,   22,   83,  116,   19,   76,   45,
-
-       45,   45,  110,   22,   45,   47,   47,   47,   89,   81,
-       47,   80,   77,   19,   50,   48,   48,   48,   76,   22,
-       48,   50,   49,   49,   49,  110,  111,   49,   72,   72,
-       72,   72,   77,   45,  112,   51,   51,   51,   43,   47,
-       51,   41,  113,   50,  115,   39,  111,   50,  114,   48,
-      112,   50,   52,   52,   52,   47,   49,   52,   50,   48,
-      115,   50,   38,   50,   50,  113,   52,  144,  114,   51,
-       24,   14,   49,   53,   53,   53,   11,    0,   53,   54,
-       54,   54,    0,  144,   54,   51,   52,   55,   55,   55,
-        0,    0,   55,   52,    0,    0,   52,   56,   56,   56,
-
-      147,    0,   56,    0,   57,   57,   57,   53,    0,   57,
-       58,   58,   58,   54,    0,   58,  147,   59,   59,   59,
-       53,   55,   59,   60,   60,   60,    0,    0,   60,   54,
-        0,   56,   55,   54,   56,    0,    0,   55,   57,    0,
-        0,   57,    0,    0,   58,   61,   61,   61,    0,    0,
-       61,   59,    0,    0,   59,    0,    0,   60,   63,   63,
-       63,   63,    0,    0,   60,   58,    0,    0,    0,   65,
-       63,   65,    0,   60,   65,   65,   65,   65,   64,   61,
-       64,   64,   64,   64,    0,   66,   63,   66,   66,   66,
-       66,    0,   64,    0,   61,    0,    0,   85,   61,   66,
-
-       67,   67,   67,   67,   85,   86,   86,   86,   64,    0,
-       86,    0,   67,    0,    0,   66,   87,   87,   87,    0,
-        0,   87,   88,   88,   88,    0,   85,   88,   67,    0,
-       85,    0,    0,    0,   85,   90,   90,   90,    0,   86,
-       90,   85,    0,    0,   85,    0,   85,   85,    0,    0,
-       87,    0,    0,    0,   86,   87,   88,   92,   92,   92,
-        0,    0,   92,    0,    0,   88,    0,    0,    0,   90,
-       91,   91,   91,   91,    0,    0,    0,    0,   91,   91,
-       91,   91,   91,   91,   93,   93,   93,    0,    0,   93,
-        0,   92,    0,    0,   91,   91,   91,   91,   91,   91,
-
-        0,    0,   94,   94,   94,   92,   92,   94,   95,   95,
-       95,    0,    0,   95,   96,   96,   96,    0,   93,   96,
-       97,   97,   97,    0,    0,   97,   98,   98,   98,    0,
-        0,   98,    0,   99,   99,   99,   94,    0,   99,    0,
-       94,    0,   95,    0,  100,  100,  100,   95,   96,  100,
-      101,  101,  101,    0,   97,  101,  102,  102,  102,    0,
-       98,  102,    0,  103,  103,  103,    0,   99,  103,   96,
-       97,   99,  104,  104,  104,    0,    0,  104,  100,    0,
-       98,  105,  105,  105,  101,    0,  105,  100,    0,    0,
-      102,  106,  106,  106,    0,    0,  106,  103,  107,  107,
-
-      107,    0,    0,  107,  102,    0,  104,  101,  108,  108,
-      108,    0,    0,  108,    0,  105,    0,  103,  119,  119,
-      119,    0,    0,  119,  104,  106,  104,    0,    0,    0,
-      106,    0,  107,  120,  120,  120,    0,  105,  120,  121,
-      121,  121,  108,  107,  121,  126,  126,  126,    0,  108,
-      126,    0,  119,    0,    0,  125,  125,  125,    0,    0,
-      125,    0,    0,    0,    0,    0,    0,  120,    0,    0,
-        0,    0,  119,  121,    0,    0,    0,    0,    0,  126,
-        0,    0,  121,    0,  120,  124,  124,  124,  124,  125,
-        0,    0,    0,  124,  124,  124,  124,  124,  124,  126,
-
-      128,  128,  128,  125,    0,  128,    0,    0,    0,  124,
-      124,  124,  124,  124,  124,  129,  129,  129,    0,    0,
-      129,    0,  130,  130,  130,    0,    0,  130,  131,  131,
-      131,    0,    0,  131,  128,  132,  132,  132,    0,    0,
-      132,    0,  133,  133,  133,    0,    0,  133,    0,  129,
-        0,    0,    0,    0,    0,  128,  130,    0,  134,  134,
-      134,    0,  131,  134,    0,    0,  129,    0,    0,  132,
-        0,    0,    0,    0,  131,  130,  133,  135,  135,  135,
-        0,    0,  135,  136,  136,  136,  132,    0,  136,    0,
-        0,    0,  134,    0,  133,  137,  137,  137,    0,    0,
-
-      137,  134,  138,  138,  138,    0,    0,  138,  139,  139,
-      139,  135,    0,  139,  140,  140,  140,  136,    0,  140,
-      141,  141,  141,    0,  136,  141,  142,  142,  142,  137,
-      135,  142,    0,  135,    0,    0,  138,    0,    0,  138,
-        0,    0,  139,    0,    0,    0,  137,    0,  140,    0,
-        0,  143,  143,  143,  141,  140,  143,    0,    0,    0,
-      142,    0,  139,  152,  152,  152,  141,    0,  152,    0,
-        0,  153,  153,  153,    0,    0,  153,  154,  154,  154,
-        0,    0,  154,  142,    0,  143,  153,  153,    0,    0,
-        0,    0,    0,    0,    0,  153,    0,  152,    0,    0,
-
-        0,    0,    0,  143,    0,  153,    0,    0,    0,    0,
-        0,  154,  156,  156,  156,  152,    0,  156,    0,    0,
-        0,    0,  154,  155,  155,  155,  155,    0,    0,    0,
-        0,  155,  155,  155,  155,  155,  155,  157,  157,  157,
-        0,    0,  157,    0,    0,    0,  156,  155,  155,  155,
-      155,  155,  155,  156,  158,  158,  158,    0,    0,  158,
-      159,  159,  159,    0,    0,  159,    0,  160,  160,  160,
-        0,  157,  160,    0,    0,  159,  159,    0,  161,  161,
-      161,    0,    0,  161,    0,  162,  162,  162,  158,  157,
-      162,  163,  163,  163,  159,  162,  163,  158,  164,  164,
-
-      164,  160,    0,  164,  165,  165,  165,    0,    0,  165,
-        0,  160,  161,  166,  166,  166,    0,    0,  166,  162,
-        0,  167,  167,  167,    0,  163,  167,    0,  163,    0,
-        0,  161,  164,    0,    0,  168,  168,  168,  165,  164,
-      168,  169,  169,  169,    0,    0,  169,  166,    0,  165,
-        0,  170,  170,  170,  166,  167,  170,  171,  171,  171,
-        0,    0,  171,  172,  172,  172,    0,    0,  172,  168,
-        0,  173,  173,  173,    0,  169,  173,  174,  174,  174,
-        0,    0,  174,    0,    0,  170,    0,  174,    0,  169,
-      168,  171,  170,  179,  179,  179,    0,  172,  179,    0,
-
-        0,  180,  180,  180,  172,  173,  180,    0,    0,  171,
-        0,  174,  181,  181,  181,    0,    0,  181,  182,  182,
-      182,    0,    0,  182,    0,    0,    0,  179,  183,  183,
-      183,    0,    0,  183,    0,  180,  185,  185,  185,    0,
-        0,  185,    0,  179,    0,    0,  181,    0,  186,  186,
-      186,    0,  182,  186,    0,    0,    0,    0,  182,    0,
-        0,    0,  183,  187,  187,  187,    0,    0,  187,    0,
-      185,    0,    0,    0,    0,    0,    0,  183,  184,  184,
-      184,  184,  186,    0,    0,  185,  184,  184,  184,  184,
-      184,  184,    0,    0,  188,  188,  188,  187,  186,  188,
-
-        0,    0,  184,  184,  184,  184,  184,  184,    0,    0,
-      187,  189,  189,  189,    0,    0,  189,  190,  190,  190,
-        0,    0,  190,    0,  191,  191,  191,    0,  188,  191,
-      192,  192,  192,    0,  191,  192,  193,  193,  193,    0,
-        0,  193,  194,  194,  194,  189,    0,  194,  195,  195,
-      195,  190,    0,  195,    0,  198,  198,  198,  191,    0,
-      198,  196,  196,  196,  192,    0,  196,  199,  199,  199,
-      193,    0,  199,    0,  192,    0,  194,    0,  200,  200,
-      200,  192,  195,  200,    0,  202,  202,  202,  193,  198,
-      202,  201,  201,  201,  194,  196,  201,    0,  204,  204,
-
-      204,  199,    0,  204,    0,    0,    0,  195,  199,  198,
-        0,    0,  200,  196,    0,  207,  207,  207,    0,  202,
-      207,  210,  210,  210,    0,  201,  210,    0,    0,    0,
-      200,    0,  204,  211,  211,  211,  201,  204,  211,  202,
-      212,  212,  212,    0,    0,  212,  213,  213,  213,  207,
-        0,  213,    0,    0,    0,  210,  214,  214,  214,    0,
-        0,  214,  207,    0,  218,  218,  218,  211,    0,  218,
-      210,    0,    0,    0,  212,    0,  211,    0,    0,    0,
-      213,  219,  219,  219,    0,    0,  219,  220,  220,  220,
-      214,    0,  220,  213,  212,    0,    0,  214,  218,  221,
-
-      221,  221,    0,    0,  221,  222,  222,  222,    0,    0,
-      222,  218,  223,  223,  223,  219,    0,  223,  224,  224,
-      224,  220,    0,  224,    0,  225,  225,  225,    0,    0,
-      225,  219,    0,  221,    0,    0,    0,  220,    0,  222,
-      226,  226,  226,    0,    0,  226,  223,    0,    0,  227,
-      227,  227,  224,  223,  227,    0,    0,  221,  222,  225,
-        0,  225,  228,  228,  228,    0,    0,  228,  229,  229,
-      229,    0,    0,  229,  226,  230,  230,  230,  229,    0,
-      230,    0,    0,  227,    0,  232,  232,  232,    0,    0,
-      232,    0,    0,    0,  226,  232,  228,    0,  227,  233,
-
-      233,  233,  229,    0,  233,  234,  234,  234,    0,  230,
-      234,    0,  235,  235,  235,    0,  228,  235,    0,  232,
-        0,  236,  236,  236,    0,  230,  236,  237,  237,  237,
-        0,  236,  237,  233,    0,  238,  238,  238,    0,  234,
-      238,    0,  239,  239,  239,    0,  235,  239,  240,  240,
-      240,    0,  233,  240,    0,  236,    0,  241,  241,  241,
-        0,  237,  241,  242,  242,  242,    0,    0,  242,  238,
-      243,  243,  243,    0,    0,  243,  239,    0,    0,    0,
-      238,    0,  240,  237,  246,  246,  246,    0,    0,  246,
-        0,  241,    0,    0,    0,  239,    0,  242,    0,    0,
-
-      240,  247,  247,  247,  243,    0,  247,  248,  248,  248,
-        0,    0,  248,    0,  249,  249,  249,    0,  246,  249,
-      250,  250,  250,    0,    0,  250,  251,  251,  251,    0,
-        0,  251,    0,    0,  246,  247,    0,    0,    0,    0,
-        0,  248,  247,    0,  252,  252,  252,    0,  249,  252,
-      253,  253,  253,    0,  250,  253,  256,  256,  256,    0,
-      251,  256,  257,  257,  257,    0,    0,  257,    0,  250,
-        0,    0,  249,    0,  250,  251,    0,    0,  252,    0,
-        0,  252,    0,    0,  253,    0,  258,  258,  258,    0,
-      256,  258,  259,  259,  259,    0,  257,  259,    0,  260,
-
-      260,  260,    0,  257,  260,  264,  264,  264,    0,  256,
-      264,  265,  265,  265,    0,    0,  265,  267,  267,  267,
-      258,    0,  267,    0,  258,    0,  259,  268,  268,  268,
-        0,    0,  268,  260,    0,  269,  269,  269,    0,  264,
-      269,    0,  270,  270,  270,  265,  259,  270,    0,    0,
-        0,  267,    0,  260,    0,    0,  264,  271,  271,  271,
-        0,  268,  271,  265,  268,  273,  273,  273,    0,  269,
-      273,    0,  274,  274,  274,    0,  270,  274,  275,  275,
-      275,    0,    0,  275,  276,  276,  276,    0,    0,  276,
-        0,  271,    0,  269,    0,    0,  270,    0,    0,  273,
-
-      271,    0,  277,  277,  277,    0,  274,  277,  278,  278,
-      278,    0,  275,  278,    0,  273,    0,    0,  276,  274,
-      279,  279,  279,    0,    0,  279,  281,  281,  281,    0,
-      275,  281,  282,  282,  282,    0,  277,  282,  283,  283,
-      283,    0,  278,  283,  284,  284,  284,    0,    0,  284,
-      285,  285,  285,    0,  279,  285,  286,  286,  286,    0,
-      281,  286,  278,  287,  287,  287,  282,    0,  287,    0,
-        0,    0,  283,  279,  281,  290,  290,  290,  284,  283,
-      290,    0,    0,  282,  285,  284,    0,    0,    0,  285,
-      286,  291,  291,  291,    0,    0,  291,  287,    0,    0,
-
-      287,  292,  292,  292,    0,    0,  292,    0,    0,  290,
-      293,  293,  293,    0,    0,  293,  294,  294,  294,    0,
-      290,  294,  295,  295,  295,  291,    0,  295,  296,  296,
-      296,    0,    0,  296,    0,  292,  298,  298,  298,    0,
-        0,  298,  292,    0,  293,    0,    0,  299,  299,  299,
-      294,  293,  299,  301,  301,  301,  295,    0,  301,  302,
-      302,  302,  296,    0,  302,    0,    0,  303,  303,  303,
-      298,  295,  303,  294,  296,  304,  304,  304,    0,    0,
-      304,  299,    0,    0,  305,  305,  305,  301,  298,  305,
-      306,  306,  306,  302,    0,  306,    0,  299,  307,  307,
-
-      307,  303,    0,  307,    0,  310,  310,  310,    0,  304,
-      310,  311,  311,  311,    0,    0,  311,    0,  305,    0,
-        0,  303,    0,    0,  306,  305,  312,  312,  312,  304,
-        0,  312,  307,    0,    0,  306,  313,  313,  313,  310,
-        0,  313,    0,    0,    0,  311,    0,  307,  314,  314,
-      314,    0,    0,  314,  317,  317,  317,    0,    0,  317,
-      312,  318,  318,  318,    0,    0,  318,    0,    0,    0,
-      313,  319,  319,  319,    0,    0,  319,  313,    0,    0,
-      312,    0,  314,    0,  320,  320,  320,    0,  317,  320,
-        0,  321,  321,  321,    0,  318,  321,    0,    0,    0,
-
-        0,  314,    0,    0,    0,  319,    0,  317,    0,    0,
-        0,    0,    0,    0,  318,    0,    0,    0,  320,    0,
-        0,    0,    0,    0,    0,  321,  326,  326,  326,  326,
-      326,  327,  327,  327,  327,  327,  328,    0,  328,  328,
-      328,  329,    0,  329,    0,  329,  330,  330,  330,  330,
-      330,  331,  331,  331,  331,  331,  332,    0,  332,  332,
-      332,  333,  333,  333,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325
+        1,    3,    3,    3,    4,    4,    4,    3,    9,    7,
+        4,    5,    5,    8,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,   10,   13,  316,   13,   21,
+        5,    5,    9,    5,   21,  315,    5,   25,    5,   25,
+
+        5,   26,   25,   25,   25,   25,    5,    5,    7,   10,
+        5,   27,    8,   37,    5,   37,   26,   44,   17,    5,
+       17,   17,   17,   17,   31,    5,    5,   15,   15,   15,
+       28,   17,   15,   19,   27,   19,   19,   19,   19,   31,
+       20,   20,   20,   20,   71,   44,   19,   17,   32,   33,
+       15,   20,   42,   28,   42,  314,   45,   45,   45,  313,
+       15,   45,   19,  193,   71,   15,   15,   20,   15,   73,
+       15,   32,   33,   15,   15,   15,   15,   15,   72,   15,
+       22,   15,   22,   22,   22,   22,   47,   47,   47,   45,
+       48,   47,   73,   22,   49,   49,   49,   48,   72,   49,
+
+       74,   50,   50,   50,  169,  108,   50,  144,  116,   22,
+      112,   85,   51,   51,   51,   50,   79,   51,   48,   47,
+       74,  108,   48,   52,   52,   52,   48,   49,   52,   69,
+       69,   69,   69,   48,   50,   47,   48,   78,   48,   48,
+       76,   50,   81,   49,   50,   51,   53,   53,   53,   75,
+       43,   53,   54,   54,   54,   41,   52,   54,   51,   39,
+       55,   55,   55,   76,  106,   55,   56,   56,   56,   75,
+       81,   56,   52,   57,   57,   57,   52,  107,   57,   53,
+      109,   58,   58,   58,  110,   54,   58,  106,   54,   38,
+       53,  111,  138,   55,   24,   53,   55,  107,   14,   56,
+
+       59,   59,   59,  109,  110,   59,   57,  111,  138,   57,
+       70,   70,   70,   70,   58,   61,   61,   61,   61,   11,
+       56,   58,  141,    0,    0,    0,   61,    0,    0,    0,
+       58,    0,   62,   59,   62,   62,   62,   62,  141,   84,
+       84,   84,   61,    0,   84,   62,    0,    0,   59,   63,
+        0,   63,   59,    0,   63,   63,   63,   63,    0,    0,
+       64,   62,   64,   64,   64,   64,   65,   65,   65,   65,
+        0,   83,   84,   64,    0,    0,    0,   65,   83,   86,
+       86,   86,    0,    0,   86,    0,    0,   84,    0,   64,
+        0,    0,    0,   65,    0,   88,   88,   88,    0,   83,
+
+       88,    0,    0,   83,   89,   89,   89,   83,    0,   89,
+        0,    0,   86,    0,   83,    0,    0,   83,    0,   83,
+       83,   87,   87,   87,   87,    0,    0,    0,   88,   87,
+       87,   87,   87,   87,   90,   90,   90,   89,    0,   90,
+        0,    0,   88,   88,   87,   87,   87,   87,   87,   87,
+       91,   91,   91,    0,    0,   91,   92,   92,   92,    0,
+        0,   92,    0,   93,   93,   93,    0,   90,   93,    0,
+        0,   90,   94,   94,   94,    0,    0,   94,    0,    0,
+       95,   95,   95,   91,    0,   95,    0,    0,   91,   92,
+       96,   96,   96,    0,    0,   96,   93,   97,   97,   97,
+
+        0,    0,   97,    0,    0,   94,   99,   99,   99,    0,
+       92,   99,   93,   95,   98,   98,   98,   95,    0,   98,
+        0,    0,    0,   96,    0,   94,    0,    0,    0,    0,
+       97,    0,   96,  100,  100,  100,    0,    0,  100,   99,
+      101,  101,  101,    0,    0,  101,    0,   98,    0,  102,
+      102,  102,    0,   97,  102,  103,  103,  103,    0,   99,
+      103,   98,    0,  104,  104,  104,  100,    0,  104,  115,
+      115,  115,    0,  101,  115,  120,  120,  120,    0,    0,
+      120,    0,  102,    0,  100,    0,  100,  102,  103,    0,
+        0,    0,    0,    0,    0,  101,  104,    0,    0,  103,
+
+        0,    0,  115,  104,    0,  119,  119,  119,  120,    0,
+      119,  122,  122,  122,    0,    0,  122,    0,    0,    0,
+        0,    0,  115,  118,  118,  118,  118,    0,  120,    0,
+        0,  118,  118,  118,  118,  118,    0,    0,  119,    0,
+      123,  123,  123,    0,  122,  123,  118,  118,  118,  118,
+      118,  118,  119,  124,  124,  124,    0,    0,  124,  125,
+      125,  125,    0,    0,  125,  122,  126,  126,  126,    0,
+        0,  126,    0,  123,  127,  127,  127,    0,    0,  127,
+      128,  128,  128,    0,    0,  128,  124,    0,    0,    0,
+      123,    0,  125,  129,  129,  129,    0,    0,  129,  126,
+
+        0,  130,  130,  130,  125,  124,  130,  127,    0,  131,
+      131,  131,    0,  128,  131,    0,  126,    0,  132,  132,
+      132,    0,  128,  132,    0,  127,  129,  133,  133,  133,
+        0,    0,  133,    0,  130,  134,  134,  134,    0,    0,
+      134,  130,  131,    0,    0,  129,    0,    0,  129,    0,
+        0,  132,    0,    0,  132,    0,  135,  135,  135,  131,
+      133,  135,  136,  136,  136,    0,    0,  136,  134,  137,
+      137,  137,    0,    0,  137,  134,  146,  146,  146,    0,
+      133,  146,  148,  148,  148,    0,    0,  148,    0,  135,
+        0,  149,  149,  149,    0,  136,  149,    0,    0,    0,
+
+        0,  135,  137,    0,    0,    0,    0,    0,    0,  146,
+        0,    0,    0,    0,    0,  148,    0,    0,  136,    0,
+      137,    0,  148,    0,  149,    0,    0,  146,  147,  147,
+      147,  147,    0,    0,    0,    0,  147,  147,  147,  147,
+      147,    0,  149,  150,  150,  150,    0,    0,  150,    0,
+        0,  147,  147,  147,  147,  147,  147,  151,  151,  151,
+        0,    0,  151,  152,  152,  152,    0,    0,  152,  153,
+      153,  153,  151,  151,  153,    0,  150,  154,  154,  154,
+        0,    0,  154,    0,    0,  150,    0,  154,    0,    0,
+      151,    0,  155,  155,  155,    0,  152,  155,  156,  156,
+
+      156,    0,  153,  156,    0,    0,  152,  157,  157,  157,
+      154,    0,  157,  158,  158,  158,    0,    0,  158,    0,
+        0,  153,  159,  159,  159,  155,    0,  159,  155,    0,
+        0,  156,  160,  160,  160,    0,    0,  160,  156,    0,
+      157,    0,  161,  161,  161,    0,  158,  161,    0,    0,
+        0,  157,    0,  158,    0,  159,    0,  162,  162,  162,
+        0,    0,  162,    0,    0,  160,  163,  163,  163,    0,
+        0,  163,  164,  164,  164,  161,    0,  164,  165,  165,
+      165,    0,    0,  165,    0,    0,  160,    0,    0,  161,
+      162,  166,  166,  166,    0,    0,  166,  162,    0,  163,
+
+        0,  166,  171,  171,  171,  164,    0,  171,  173,  173,
+      173,  165,  164,  173,  176,  176,  176,  163,    0,  176,
+        0,    0,    0,    0,  166,  174,  174,  174,    0,    0,
+      174,    0,    0,    0,    0,  171,    0,  175,  175,  175,
+        0,  173,  175,    0,    0,    0,    0,  176,    0,    0,
+        0,  171,  172,  172,  172,  172,  173,    0,  174,    0,
+      172,  172,  172,  172,  172,    0,  177,  177,  177,    0,
+      175,  177,    0,    0,  174,  172,  172,  172,  172,  172,
+      172,    0,    0,  175,  178,  178,  178,    0,    0,  178,
+      179,  179,  179,    0,    0,  179,  180,  180,  180,  177,
+
+      179,  180,  181,  181,  181,    0,    0,  181,  182,  182,
+      182,    0,    0,  182,  183,  183,  183,  178,    0,  183,
+        0,    0,    0,  179,    0,  184,  184,  184,    0,  180,
+      184,  186,  186,  186,    0,  181,  186,    0,    0,  180,
+        0,  182,    0,    0,    0,    0,  180,  183,    0,  187,
+      187,  187,    0,  181,  187,  188,  188,  188,  184,  182,
+      188,  189,  189,  189,  186,    0,  189,    0,  190,  190,
+      190,    0,  183,  190,    0,    0,  184,    0,  192,  192,
+      192,    0,  187,  192,  186,  195,  195,  195,  188,  187,
+      195,  196,  196,  196,  189,    0,  196,  197,  197,  197,
+
+        0,  190,  197,    0,    0,  189,  188,  198,  198,  198,
+        0,  192,  198,    0,    0,    0,  192,    0,  195,    0,
+        0,  190,    0,    0,  196,    0,    0,  202,  202,  202,
+      197,  195,  202,  203,  203,  203,    0,    0,  203,    0,
+      198,    0,    0,  197,  196,    0,    0,  198,  204,  204,
+      204,    0,    0,  204,  205,  205,  205,    0,    0,  205,
+      202,    0,  206,  206,  206,    0,  203,  206,    0,  207,
+      207,  207,    0,  202,  207,  208,  208,  208,    0,    0,
+      208,  204,  203,  209,  209,  209,    0,  205,  209,  210,
+      210,  210,    0,    0,  210,  206,    0,  204,  211,  211,
+
+      211,    0,  207,  211,    0,  212,  212,  212,  208,  207,
+      212,  205,    0,    0,  206,    0,  209,    0,  209,  213,
+      213,  213,  210,    0,  213,    0,    0,    0,    0,  213,
+        0,  211,  214,  214,  214,    0,    0,  214,  212,  216,
+      216,  216,  210,    0,  216,    0,  211,    0,    0,  216,
+        0,    0,  213,    0,  217,  217,  217,    0,  212,  217,
+        0,  218,  218,  218,    0,  214,  218,    0,  219,  219,
+      219,  218,  216,  219,  220,  220,  220,    0,    0,  220,
+        0,  214,    0,  221,  221,  221,    0,  217,  221,    0,
+        0,  222,  222,  222,  218,    0,  222,  223,  223,  223,
+
+        0,  219,  223,  224,  224,  224,    0,  220,  224,    0,
+      225,  225,  225,    0,    0,  225,  221,    0,  220,    0,
+      228,  228,  228,  219,  222,  228,  229,  229,  229,    0,
+      223,  229,  230,  230,  230,  221,  224,  230,    0,  231,
+      231,  231,  222,  225,  231,  232,  232,  232,    0,    0,
+      232,    0,    0,  228,    0,  233,  233,  233,    0,  229,
+      233,    0,  236,  236,  236,  230,  229,  236,    0,  228,
+        0,    0,  231,    0,  234,  234,  234,    0,  232,  234,
+      237,  237,  237,    0,    0,  237,    0,    0,  233,  238,
+      238,  238,    0,  232,  238,  236,  231,    0,  232,  239,
+
+      239,  239,    0,  233,  239,    0,    0,  234,    0,    0,
+      234,    0,    0,  237,  236,    0,  240,  240,  240,    0,
+      237,  240,  238,  244,  244,  244,  238,    0,  244,  245,
+      245,  245,  239,    0,  245,  247,  247,  247,    0,    0,
+      247,  248,  248,  248,    0,    0,  248,    0,    0,  240,
+        0,    0,  239,  249,  249,  249,  244,    0,  249,  250,
+      250,  250,  245,    0,  250,  251,  251,  251,  247,  240,
+      251,    0,    0,  244,  248,    0,    0,  248,    0,    0,
+      245,    0,  252,  252,  252,    0,  249,  252,  253,  253,
+      253,    0,  250,  253,  254,  254,  254,    0,  251,  254,
+
+      255,  255,  255,    0,    0,  255,    0,  251,    0,    0,
+      249,    0,  250,    0,    0,  252,    0,  256,  256,  256,
+        0,  253,  256,  257,  257,  257,    0,  254,  257,    0,
+        0,  252,    0,  255,  253,  258,  258,  258,    0,    0,
+      258,  260,  260,  260,    0,  254,  260,  261,  261,  261,
+      256,    0,  261,  262,  262,  262,  257,    0,  262,  263,
+      263,  263,    0,    0,  263,  264,  264,  264,  258,    0,
+      264,    0,    0,    0,  260,    0,  257,  265,  265,  265,
+      261,    0,  265,    0,    0,    0,  262,  258,  260,  266,
+      266,  266,  263,  262,  266,    0,    0,  261,  264,  263,
+
+      269,  269,  269,  264,    0,  269,  270,  270,  270,    0,
+      265,  270,  271,  271,  271,    0,    0,  271,  272,  272,
+      272,    0,  266,  272,    0,  266,  273,  273,  273,    0,
+        0,  273,    0,  269,    0,  274,  274,  274,    0,  270,
+      274,  275,  275,  275,  269,  271,  275,    0,  277,  277,
+      277,  272,  271,  277,    0,  278,  278,  278,  272,  273,
+      278,  280,  280,  280,    0,    0,  280,    0,  274,    0,
+      281,  281,  281,    0,  275,  281,    0,    0,    0,    0,
+        0,  277,  273,  274,    0,    0,  275,    0,  278,    0,
+      282,  282,  282,    0,  280,  282,  283,  283,  283,  277,
+
+        0,  283,    0,  281,  278,  284,  284,  284,    0,    0,
+      284,  285,  285,  285,    0,    0,  285,  286,  286,  286,
+        0,    0,  286,  282,    0,  289,  289,  289,    0,  283,
+      289,  290,  290,  290,    0,    0,  290,    0,  284,    0,
+        0,    0,    0,  282,  285,  284,  291,  291,  291,  283,
+      286,  291,  292,  292,  292,  285,    0,  292,  289,    0,
+        0,  293,  293,  293,  290,  286,  293,  296,  296,  296,
+        0,    0,  296,  297,  297,  297,    0,    0,  297,  291,
+        0,  298,  298,  298,    0,  292,  298,    0,  299,  299,
+      299,    0,  292,  299,  293,    0,  300,  300,  300,  291,
+
+      296,  300,    0,    0,    0,    0,  297,    0,    0,    0,
+        0,    0,    0,  293,  298,    0,    0,    0,    0,  296,
+        0,  299,    0,    0,    0,  297,    0,    0,    0,  300,
+      305,  305,  305,  305,  305,  306,  306,  306,  306,  306,
+      307,    0,  307,  307,  307,  308,    0,  308,    0,  308,
+      309,  309,  309,  309,  309,  310,  310,  310,  310,  310,
+      311,    0,  311,  311,  311,  312,  312,  312,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1369,14 +1319,14 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[59] =
+static const flex_int16_t yy_rule_linenum[55] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  195,  204,  215,  226,  235,  244,  253,
-      262,  271,  280,  289,  298,  307,  316,  325,  335,  344,
-      353,  362,  371,  380,  389,  398,  407,  416,  425,  434,
-      443,  542,  547,  552,  557,  558,  559,  560,  561,  562,
-      564,  582,  595,  600,  604,  606,  608,  610
+      262,  271,  280,  289,  298,  307,  316,  325,  334,  343,
+      352,  361,  370,  379,  388,  397,  406,  505,  510,  515,
+      520,  521,  522,  523,  524,  525,  527,  545,  558,  563,
+      567,  569,  571,  573
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1388,7 +1338,7 @@ static const flex_int16_t yy_rule_linenum[59] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "agent_lexer.ll"
-/* Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2017-2020 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -1431,7 +1381,7 @@ using isc::agent::AgentParser;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1434 "agent_lexer.cc"
+#line 1384 "agent_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1457,8 +1407,8 @@ using isc::agent::AgentParser;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1460 "agent_lexer.cc"
-#line 1461 "agent_lexer.cc"
+#line 1410 "agent_lexer.cc"
+#line 1411 "agent_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1772,7 +1722,7 @@ YY_DECL
     }
 
 
-#line 1775 "agent_lexer.cc"
+#line 1725 "agent_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1801,13 +1751,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 >= 326 )
+                               if ( yy_current_state >= 305 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 325 );
+               while ( yy_current_state != 304 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1826,13 +1776,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 59 )
+                       else if ( yy_act < 55 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 59 )
+                       else if ( yy_act == 55 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 60 )
+                       else if ( yy_act == 56 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2123,31 +2073,18 @@ YY_RULE_SETUP
 case 27:
 YY_RULE_SETUP
 #line 316 "agent_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case ParserContext::CONFIG:
-        return AgentParser::make_LOGGING(driver.loc_);
-    default:
-        return AgentParser::make_STRING("Logging", driver.loc_);
-    }
-}
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 325 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::AGENT:
-    case ParserContext::LOGGING:
         return AgentParser::make_LOGGERS(driver.loc_);
     default:
         return AgentParser::make_STRING("loggers", driver.loc_);
     }
 }
        YY_BREAK
-case 29:
+case 28:
 YY_RULE_SETUP
-#line 335 "agent_lexer.ll"
+#line 325 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2157,9 +2094,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 30:
+case 29:
 YY_RULE_SETUP
-#line 344 "agent_lexer.ll"
+#line 334 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2169,9 +2106,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 31:
+case 30:
 YY_RULE_SETUP
-#line 353 "agent_lexer.ll"
+#line 343 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2181,9 +2118,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 32:
+case 31:
 YY_RULE_SETUP
-#line 362 "agent_lexer.ll"
+#line 352 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2193,9 +2130,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 32:
 YY_RULE_SETUP
-#line 371 "agent_lexer.ll"
+#line 361 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2205,9 +2142,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 34:
+case 33:
 YY_RULE_SETUP
-#line 380 "agent_lexer.ll"
+#line 370 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2217,9 +2154,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 35:
+case 34:
 YY_RULE_SETUP
-#line 389 "agent_lexer.ll"
+#line 379 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2229,9 +2166,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 36:
+case 35:
 YY_RULE_SETUP
-#line 398 "agent_lexer.ll"
+#line 388 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2241,9 +2178,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 36:
 YY_RULE_SETUP
-#line 407 "agent_lexer.ll"
+#line 397 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2253,45 +2190,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 416 "agent_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case ParserContext::CONFIG:
-        return AgentParser::make_DHCP4(driver.loc_);
-    default:
-        return AgentParser::make_STRING("Dhcp4", driver.loc_);
-    }
-}
-       YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 425 "agent_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case ParserContext::CONFIG:
-        return AgentParser::make_DHCP6(driver.loc_);
-    default:
-        return AgentParser::make_STRING("Dhcp6", driver.loc_);
-    }
-}
-       YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 434 "agent_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case ParserContext::CONFIG:
-        return AgentParser::make_DHCPDDNS(driver.loc_);
-    default:
-        return AgentParser::make_STRING("DhcpDdns", driver.loc_);
-    }
-}
-       YY_BREAK
-case 41:
+case 37:
 YY_RULE_SETUP
-#line 443 "agent_lexer.ll"
+#line 406 "agent_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -2391,65 +2292,65 @@ YY_RULE_SETUP
     return AgentParser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 42:
-/* rule 42 can match eol */
+case 38:
+/* rule 38 can match eol */
 YY_RULE_SETUP
-#line 542 "agent_lexer.ll"
+#line 505 "agent_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 43:
-/* rule 43 can match eol */
+case 39:
+/* rule 39 can match eol */
 YY_RULE_SETUP
-#line 547 "agent_lexer.ll"
+#line 510 "agent_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 44:
+case 40:
 YY_RULE_SETUP
-#line 552 "agent_lexer.ll"
+#line 515 "agent_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 45:
+case 41:
 YY_RULE_SETUP
-#line 557 "agent_lexer.ll"
+#line 520 "agent_lexer.ll"
 { return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 46:
+case 42:
 YY_RULE_SETUP
-#line 558 "agent_lexer.ll"
+#line 521 "agent_lexer.ll"
 { return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 47:
+case 43:
 YY_RULE_SETUP
-#line 559 "agent_lexer.ll"
+#line 522 "agent_lexer.ll"
 { return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 48:
+case 44:
 YY_RULE_SETUP
-#line 560 "agent_lexer.ll"
+#line 523 "agent_lexer.ll"
 { return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 49:
+case 45:
 YY_RULE_SETUP
-#line 561 "agent_lexer.ll"
+#line 524 "agent_lexer.ll"
 { return AgentParser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 50:
+case 46:
 YY_RULE_SETUP
-#line 562 "agent_lexer.ll"
+#line 525 "agent_lexer.ll"
 { return AgentParser::make_COLON(driver.loc_); }
        YY_BREAK
-case 51:
+case 47:
 YY_RULE_SETUP
-#line 564 "agent_lexer.ll"
+#line 527 "agent_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -2468,9 +2369,9 @@ YY_RULE_SETUP
     return AgentParser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 52:
+case 48:
 YY_RULE_SETUP
-#line 582 "agent_lexer.ll"
+#line 545 "agent_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -2484,43 +2385,43 @@ YY_RULE_SETUP
     return AgentParser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 53:
+case 49:
 YY_RULE_SETUP
-#line 595 "agent_lexer.ll"
+#line 558 "agent_lexer.ll"
 {
     string tmp(yytext);
     return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 54:
+case 50:
 YY_RULE_SETUP
-#line 600 "agent_lexer.ll"
+#line 563 "agent_lexer.ll"
 {
    return AgentParser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 55:
+case 51:
 YY_RULE_SETUP
-#line 604 "agent_lexer.ll"
+#line 567 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 56:
+case 52:
 YY_RULE_SETUP
-#line 606 "agent_lexer.ll"
+#line 569 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 57:
+case 53:
 YY_RULE_SETUP
-#line 608 "agent_lexer.ll"
+#line 571 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 58:
+case 54:
 YY_RULE_SETUP
-#line 610 "agent_lexer.ll"
+#line 573 "agent_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 612 "agent_lexer.ll"
+#line 575 "agent_lexer.ll"
 {
     if (driver.states_.empty()) {
         return AgentParser::make_END(driver.loc_);
@@ -2544,12 +2445,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 59:
+case 55:
 YY_RULE_SETUP
-#line 635 "agent_lexer.ll"
+#line 598 "agent_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2552 "agent_lexer.cc"
+#line 2453 "agent_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2868,7 +2769,7 @@ static int yy_get_next_buffer (void)
                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 >= 326 )
+                       if ( yy_current_state >= 305 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2901,11 +2802,11 @@ static int yy_get_next_buffer (void)
        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 >= 326 )
+               if ( yy_current_state >= 305 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 325);
+       yy_is_jam = (yy_current_state == 304);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3654,7 +3555,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 635 "agent_lexer.ll"
+#line 598 "agent_lexer.ll"
 
 
 using namespace isc::dhcp;
index 46ab60570e387d2c087eded322d58f4a3a991705..8614b227e476b2d85f8a2f53fbf65614deb8f4be 100644 (file)
@@ -209,25 +209,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -377,44 +377,44 @@ namespace isc { namespace agent {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 42: // "constant string"
-#line 104 "agent_parser.yy"
+      case 38: // "constant string"
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "agent_parser.cc"
         break;
 
-      case 43: // "integer"
-#line 104 "agent_parser.yy"
+      case 39: // "integer"
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "agent_parser.cc"
         break;
 
-      case 44: // "floating point"
-#line 104 "agent_parser.yy"
+      case 40: // "floating point"
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "agent_parser.cc"
         break;
 
-      case 45: // "boolean"
-#line 104 "agent_parser.yy"
+      case 41: // "boolean"
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "agent_parser.cc"
         break;
 
-      case 54: // value
-#line 104 "agent_parser.yy"
+      case 50: // value
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "agent_parser.cc"
         break;
 
-      case 57: // map_value
-#line 104 "agent_parser.yy"
+      case 53: // map_value
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "agent_parser.cc"
         break;
 
-      case 108: // socket_type_value
-#line 104 "agent_parser.yy"
+      case 104: // socket_type_value
+#line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "agent_parser.cc"
         break;
@@ -646,25 +646,25 @@ namespace isc { namespace agent {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -689,25 +689,25 @@ namespace isc { namespace agent {
           switch (yyn)
             {
   case 2:
-#line 115 "agent_parser.yy"
+#line 110 "agent_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 695 "agent_parser.cc"
     break;
 
   case 4:
-#line 116 "agent_parser.yy"
+#line 111 "agent_parser.yy"
                        { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "agent_parser.cc"
     break;
 
   case 6:
-#line 117 "agent_parser.yy"
+#line 112 "agent_parser.yy"
                        { ctx.ctx_ = ctx.AGENT; }
 #line 707 "agent_parser.cc"
     break;
 
   case 8:
-#line 125 "agent_parser.yy"
+#line 120 "agent_parser.yy"
                           {
     // Parse the Control-agent map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -717,7 +717,7 @@ namespace isc { namespace agent {
     break;
 
   case 9:
-#line 129 "agent_parser.yy"
+#line 124 "agent_parser.yy"
                                {
     // parsing completed
 }
@@ -725,7 +725,7 @@ namespace isc { namespace agent {
     break;
 
   case 10:
-#line 136 "agent_parser.yy"
+#line 131 "agent_parser.yy"
             {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -734,49 +734,49 @@ namespace isc { namespace agent {
     break;
 
   case 11:
-#line 142 "agent_parser.yy"
+#line 137 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 740 "agent_parser.cc"
     break;
 
   case 12:
-#line 143 "agent_parser.yy"
+#line 138 "agent_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "agent_parser.cc"
     break;
 
   case 13:
-#line 144 "agent_parser.yy"
+#line 139 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "agent_parser.cc"
     break;
 
   case 14:
-#line 145 "agent_parser.yy"
+#line 140 "agent_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "agent_parser.cc"
     break;
 
   case 15:
-#line 146 "agent_parser.yy"
+#line 141 "agent_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 764 "agent_parser.cc"
     break;
 
   case 16:
-#line 147 "agent_parser.yy"
+#line 142 "agent_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 770 "agent_parser.cc"
     break;
 
   case 17:
-#line 148 "agent_parser.yy"
+#line 143 "agent_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "agent_parser.cc"
     break;
 
   case 18:
-#line 152 "agent_parser.yy"
+#line 147 "agent_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -787,7 +787,7 @@ namespace isc { namespace agent {
     break;
 
   case 19:
-#line 157 "agent_parser.yy"
+#line 152 "agent_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -797,13 +797,13 @@ namespace isc { namespace agent {
     break;
 
   case 20:
-#line 163 "agent_parser.yy"
+#line 158 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 803 "agent_parser.cc"
     break;
 
   case 23:
-#line 177 "agent_parser.yy"
+#line 172 "agent_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -812,7 +812,7 @@ namespace isc { namespace agent {
     break;
 
   case 24:
-#line 181 "agent_parser.yy"
+#line 176 "agent_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -822,7 +822,7 @@ namespace isc { namespace agent {
     break;
 
   case 25:
-#line 188 "agent_parser.yy"
+#line 183 "agent_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -831,14 +831,14 @@ namespace isc { namespace agent {
     break;
 
   case 26:
-#line 191 "agent_parser.yy"
+#line 186 "agent_parser.yy"
                                {
 }
 #line 838 "agent_parser.cc"
     break;
 
   case 29:
-#line 198 "agent_parser.yy"
+#line 193 "agent_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -847,7 +847,7 @@ namespace isc { namespace agent {
     break;
 
   case 30:
-#line 202 "agent_parser.yy"
+#line 197 "agent_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -856,7 +856,7 @@ namespace isc { namespace agent {
     break;
 
   case 31:
-#line 215 "agent_parser.yy"
+#line 210 "agent_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -867,7 +867,7 @@ namespace isc { namespace agent {
     break;
 
   case 32:
-#line 224 "agent_parser.yy"
+#line 218 "agent_parser.yy"
                                  {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -878,7 +878,7 @@ namespace isc { namespace agent {
     break;
 
   case 33:
-#line 229 "agent_parser.yy"
+#line 223 "agent_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -887,8 +887,8 @@ namespace isc { namespace agent {
 #line 888 "agent_parser.cc"
     break;
 
-  case 42:
-#line 250 "agent_parser.yy"
+  case 36:
+#line 238 "agent_parser.yy"
                             {
 
     // Let's create a MapElement that will represent it, add it to the
@@ -903,8 +903,8 @@ namespace isc { namespace agent {
 #line 904 "agent_parser.cc"
     break;
 
-  case 43:
-#line 260 "agent_parser.yy"
+  case 37:
+#line 248 "agent_parser.yy"
                                                     {
     // Ok, we're done with parsing control-agent. Let's take the map
     // off the stack.
@@ -914,16 +914,16 @@ namespace isc { namespace agent {
 #line 915 "agent_parser.cc"
     break;
 
-  case 54:
-#line 283 "agent_parser.yy"
+  case 48:
+#line 271 "agent_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 923 "agent_parser.cc"
     break;
 
-  case 55:
-#line 285 "agent_parser.yy"
+  case 49:
+#line 273 "agent_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-host", host);
@@ -932,8 +932,8 @@ namespace isc { namespace agent {
 #line 933 "agent_parser.cc"
     break;
 
-  case 56:
-#line 291 "agent_parser.yy"
+  case 50:
+#line 279 "agent_parser.yy"
                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-port", prf);
@@ -941,16 +941,16 @@ namespace isc { namespace agent {
 #line 942 "agent_parser.cc"
     break;
 
-  case 57:
-#line 296 "agent_parser.yy"
+  case 51:
+#line 284 "agent_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 950 "agent_parser.cc"
     break;
 
-  case 58:
-#line 298 "agent_parser.yy"
+  case 52:
+#line 286 "agent_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -976,16 +976,16 @@ namespace isc { namespace agent {
 #line 977 "agent_parser.cc"
     break;
 
-  case 59:
-#line 321 "agent_parser.yy"
+  case 53:
+#line 309 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 985 "agent_parser.cc"
     break;
 
-  case 60:
-#line 323 "agent_parser.yy"
+  case 54:
+#line 311 "agent_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -1013,8 +1013,8 @@ namespace isc { namespace agent {
 #line 1014 "agent_parser.cc"
     break;
 
-  case 61:
-#line 349 "agent_parser.yy"
+  case 55:
+#line 337 "agent_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1024,8 +1024,8 @@ namespace isc { namespace agent {
 #line 1025 "agent_parser.cc"
     break;
 
-  case 62:
-#line 354 "agent_parser.yy"
+  case 56:
+#line 342 "agent_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1033,8 +1033,8 @@ namespace isc { namespace agent {
 #line 1034 "agent_parser.cc"
     break;
 
-  case 67:
-#line 367 "agent_parser.yy"
+  case 61:
+#line 355 "agent_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1043,24 +1043,24 @@ namespace isc { namespace agent {
 #line 1044 "agent_parser.cc"
     break;
 
-  case 68:
-#line 371 "agent_parser.yy"
+  case 62:
+#line 359 "agent_parser.yy"
                               {
     ctx.stack_.pop_back();
 }
 #line 1052 "agent_parser.cc"
     break;
 
-  case 74:
-#line 384 "agent_parser.yy"
+  case 68:
+#line 372 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 1060 "agent_parser.cc"
     break;
 
-  case 75:
-#line 386 "agent_parser.yy"
+  case 69:
+#line 374 "agent_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -1069,16 +1069,16 @@ namespace isc { namespace agent {
 #line 1070 "agent_parser.cc"
     break;
 
-  case 76:
-#line 392 "agent_parser.yy"
+  case 70:
+#line 380 "agent_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 1078 "agent_parser.cc"
     break;
 
-  case 77:
-#line 394 "agent_parser.yy"
+  case 71:
+#line 382 "agent_parser.yy"
               {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1086,8 +1086,8 @@ namespace isc { namespace agent {
 #line 1087 "agent_parser.cc"
     break;
 
-  case 78:
-#line 402 "agent_parser.yy"
+  case 72:
+#line 390 "agent_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
     ctx.stack_.back()->set("control-sockets", m);
@@ -1097,8 +1097,8 @@ namespace isc { namespace agent {
 #line 1098 "agent_parser.cc"
     break;
 
-  case 79:
-#line 407 "agent_parser.yy"
+  case 73:
+#line 395 "agent_parser.yy"
                                         {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1106,8 +1106,8 @@ namespace isc { namespace agent {
 #line 1107 "agent_parser.cc"
     break;
 
-  case 86:
-#line 428 "agent_parser.yy"
+  case 80:
+#line 416 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4", m);
@@ -1117,8 +1117,8 @@ namespace isc { namespace agent {
 #line 1118 "agent_parser.cc"
     break;
 
-  case 87:
-#line 433 "agent_parser.yy"
+  case 81:
+#line 421 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1126,8 +1126,8 @@ namespace isc { namespace agent {
 #line 1127 "agent_parser.cc"
     break;
 
-  case 88:
-#line 439 "agent_parser.yy"
+  case 82:
+#line 427 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp6", m);
@@ -1137,8 +1137,8 @@ namespace isc { namespace agent {
 #line 1138 "agent_parser.cc"
     break;
 
-  case 89:
-#line 444 "agent_parser.yy"
+  case 83:
+#line 432 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1146,8 +1146,8 @@ namespace isc { namespace agent {
 #line 1147 "agent_parser.cc"
     break;
 
-  case 90:
-#line 450 "agent_parser.yy"
+  case 84:
+#line 438 "agent_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("d2", m);
@@ -1157,8 +1157,8 @@ namespace isc { namespace agent {
 #line 1158 "agent_parser.cc"
     break;
 
-  case 91:
-#line 455 "agent_parser.yy"
+  case 85:
+#line 443 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1166,16 +1166,16 @@ namespace isc { namespace agent {
 #line 1167 "agent_parser.cc"
     break;
 
-  case 99:
-#line 474 "agent_parser.yy"
+  case 93:
+#line 462 "agent_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 1175 "agent_parser.cc"
     break;
 
-  case 100:
-#line 476 "agent_parser.yy"
+  case 94:
+#line 464 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -1184,16 +1184,16 @@ namespace isc { namespace agent {
 #line 1185 "agent_parser.cc"
     break;
 
-  case 101:
-#line 483 "agent_parser.yy"
+  case 95:
+#line 471 "agent_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
 }
 #line 1193 "agent_parser.cc"
     break;
 
-  case 102:
-#line 485 "agent_parser.yy"
+  case 96:
+#line 473 "agent_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1201,269 +1201,198 @@ namespace isc { namespace agent {
 #line 1202 "agent_parser.cc"
     break;
 
-  case 103:
-#line 491 "agent_parser.yy"
+  case 97:
+#line 479 "agent_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1208 "agent_parser.cc"
     break;
 
-  case 104:
-#line 497 "agent_parser.yy"
-                         {
-    ctx.enter(ctx.NO_KEYWORDS);
-}
-#line 1216 "agent_parser.cc"
-    break;
-
-  case 105:
-#line 499 "agent_parser.yy"
-              {
-    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1225 "agent_parser.cc"
-    break;
-
-  case 106:
-#line 504 "agent_parser.yy"
-                         {
-    ctx.enter(ctx.NO_KEYWORDS);
-}
-#line 1233 "agent_parser.cc"
-    break;
-
-  case 107:
-#line 506 "agent_parser.yy"
-              {
-    ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1242 "agent_parser.cc"
-    break;
-
-  case 108:
-#line 511 "agent_parser.yy"
-                               {
-    ctx.enter(ctx.NO_KEYWORDS);
-}
-#line 1250 "agent_parser.cc"
-    break;
-
-  case 109:
-#line 513 "agent_parser.yy"
-              {
-    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1259 "agent_parser.cc"
-    break;
-
-  case 110:
-#line 523 "agent_parser.yy"
-                        {
-    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("Logging", m);
-    ctx.stack_.push_back(m);
-    ctx.enter(ctx.LOGGING);
-}
-#line 1270 "agent_parser.cc"
-    break;
-
-  case 111:
-#line 528 "agent_parser.yy"
-                                                     {
-    ctx.stack_.pop_back();
-    ctx.leave();
-}
-#line 1279 "agent_parser.cc"
-    break;
-
-  case 115:
-#line 545 "agent_parser.yy"
+  case 98:
+#line 486 "agent_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 1290 "agent_parser.cc"
+#line 1219 "agent_parser.cc"
     break;
 
-  case 116:
-#line 550 "agent_parser.yy"
+  case 99:
+#line 491 "agent_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1299 "agent_parser.cc"
+#line 1228 "agent_parser.cc"
     break;
 
-  case 119:
-#line 562 "agent_parser.yy"
+  case 102:
+#line 503 "agent_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1309 "agent_parser.cc"
+#line 1238 "agent_parser.cc"
     break;
 
-  case 120:
-#line 566 "agent_parser.yy"
+  case 103:
+#line 507 "agent_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 1317 "agent_parser.cc"
+#line 1246 "agent_parser.cc"
     break;
 
-  case 130:
-#line 583 "agent_parser.yy"
+  case 113:
+#line 524 "agent_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1325 "agent_parser.cc"
+#line 1254 "agent_parser.cc"
     break;
 
-  case 131:
-#line 585 "agent_parser.yy"
+  case 114:
+#line 526 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1335 "agent_parser.cc"
+#line 1264 "agent_parser.cc"
     break;
 
-  case 132:
-#line 591 "agent_parser.yy"
+  case 115:
+#line 532 "agent_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 1344 "agent_parser.cc"
+#line 1273 "agent_parser.cc"
     break;
 
-  case 133:
-#line 596 "agent_parser.yy"
+  case 116:
+#line 537 "agent_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1352 "agent_parser.cc"
+#line 1281 "agent_parser.cc"
     break;
 
-  case 134:
-#line 598 "agent_parser.yy"
+  case 117:
+#line 539 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 1362 "agent_parser.cc"
+#line 1291 "agent_parser.cc"
     break;
 
-  case 135:
-#line 604 "agent_parser.yy"
+  case 118:
+#line 545 "agent_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1373 "agent_parser.cc"
+#line 1302 "agent_parser.cc"
     break;
 
-  case 136:
-#line 609 "agent_parser.yy"
+  case 119:
+#line 550 "agent_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1382 "agent_parser.cc"
+#line 1311 "agent_parser.cc"
     break;
 
-  case 139:
-#line 618 "agent_parser.yy"
+  case 122:
+#line 559 "agent_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1392 "agent_parser.cc"
+#line 1321 "agent_parser.cc"
     break;
 
-  case 140:
-#line 622 "agent_parser.yy"
+  case 123:
+#line 563 "agent_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 1400 "agent_parser.cc"
+#line 1329 "agent_parser.cc"
     break;
 
-  case 148:
-#line 637 "agent_parser.yy"
+  case 131:
+#line 578 "agent_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1408 "agent_parser.cc"
+#line 1337 "agent_parser.cc"
     break;
 
-  case 149:
-#line 639 "agent_parser.yy"
+  case 132:
+#line 580 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 1418 "agent_parser.cc"
+#line 1347 "agent_parser.cc"
     break;
 
-  case 150:
-#line 645 "agent_parser.yy"
+  case 133:
+#line 586 "agent_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 1427 "agent_parser.cc"
+#line 1356 "agent_parser.cc"
     break;
 
-  case 151:
-#line 650 "agent_parser.yy"
+  case 134:
+#line 591 "agent_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 1436 "agent_parser.cc"
+#line 1365 "agent_parser.cc"
     break;
 
-  case 152:
-#line 655 "agent_parser.yy"
+  case 135:
+#line 596 "agent_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 1445 "agent_parser.cc"
+#line 1374 "agent_parser.cc"
     break;
 
-  case 153:
-#line 660 "agent_parser.yy"
+  case 136:
+#line 601 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1453 "agent_parser.cc"
+#line 1382 "agent_parser.cc"
     break;
 
-  case 154:
-#line 662 "agent_parser.yy"
+  case 137:
+#line 603 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 1463 "agent_parser.cc"
+#line 1392 "agent_parser.cc"
     break;
 
 
-#line 1467 "agent_parser.cc"
+#line 1396 "agent_parser.cc"
 
             default:
               break;
@@ -1812,40 +1741,37 @@ namespace isc { namespace agent {
   }
 
 
-  const signed char AgentParser::yypact_ninf_ = -115;
+  const signed char AgentParser::yypact_ninf_ = -94;
 
   const signed char AgentParser::yytable_ninf_ = -1;
 
   const short
   AgentParser::yypact_[] =
   {
-      71,  -115,  -115,  -115,     8,     2,    -5,     3,  -115,  -115,
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,
-    -115,  -115,  -115,  -115,     2,   -19,    12,    13,  -115,    15,
-      35,    48,    51,    74,  -115,  -115,  -115,  -115,  -115,    75,
-    -115,    28,  -115,  -115,  -115,  -115,  -115,  -115,  -115,    83,
-    -115,  -115,    84,  -115,  -115,  -115,    53,  -115,  -115,  -115,
-    -115,  -115,  -115,  -115,  -115,  -115,     2,     2,  -115,    65,
-     104,   109,   110,   111,   112,  -115,    12,  -115,   113,    76,
-     114,   116,   115,   120,   121,    13,  -115,  -115,  -115,   125,
-     123,   124,     2,     2,     2,  -115,    90,  -115,   126,    92,
-    -115,   130,   131,  -115,     2,    13,   117,  -115,  -115,  -115,
-    -115,  -115,  -115,  -115,    -2,   132,   133,  -115,    57,    70,
-    -115,  -115,  -115,  -115,  -115,  -115,    73,  -115,  -115,  -115,
-    -115,  -115,   135,   134,  -115,  -115,    14,  -115,  -115,   117,
-    -115,   138,   140,   141,    -2,  -115,     9,  -115,   132,    44,
-     133,  -115,  -115,   139,   142,   143,  -115,  -115,  -115,  -115,
-      82,  -115,  -115,  -115,  -115,  -115,  -115,   144,  -115,  -115,
-    -115,  -115,    93,  -115,  -115,  -115,  -115,  -115,  -115,    -1,
-      -1,    -1,   147,   148,     6,  -115,   149,   150,   118,   151,
-      44,  -115,  -115,  -115,  -115,  -115,  -115,    94,  -115,  -115,
-    -115,    95,    96,   105,     2,  -115,   122,   152,  -115,   128,
-    -115,   154,   155,    -1,  -115,  -115,  -115,  -115,  -115,  -115,
-     153,  -115,   129,   145,  -115,  -115,   103,  -115,  -115,  -115,
-    -115,    60,   153,  -115,  -115,   158,   159,   161,  -115,    97,
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,   168,   136,   146,
-     156,   169,    60,  -115,   137,  -115,  -115,  -115,   160,  -115,
-    -115,  -115
+      66,   -94,   -94,   -94,     7,     1,     2,    11,   -94,   -94,
+     -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,
+     -94,   -94,   -94,   -94,     1,   -18,    60,     0,   -94,    74,
+      82,    84,    61,    83,   -94,    85,   -94,   -94,   -94,    87,
+     -94,   -94,    90,   -94,   -94,    92,   -94,    13,   -94,   -94,
+     -94,   -94,   -94,   -94,   -94,   -94,   -94,     1,     1,   -94,
+      51,    93,   -94,    96,    67,   100,   101,   102,   103,   104,
+     -94,     0,   -94,   -94,   -94,   106,   105,    77,   -94,   107,
+      78,   -94,   108,   112,   -94,     1,     0,   -94,   -94,   -94,
+     -94,    36,   111,   113,   -94,    16,   -94,   -94,   -94,   -94,
+      29,   -94,   -94,   -94,   -94,   -94,   115,   116,   -94,   -94,
+      76,   -94,   -94,   118,   119,   120,    36,   -94,   -21,   -94,
+     111,    17,   113,   -94,   121,   122,   123,   -94,   -94,   -94,
+     -94,    59,   -94,   -94,   -94,   -94,   -94,   -94,   127,   -94,
+     -94,   -94,   -94,    63,   -94,   -94,   -94,   -94,   -94,   -94,
+      37,    37,    37,   128,   129,    12,   -94,   130,   132,    72,
+     133,    17,   -94,   -94,   -94,   -94,   -94,   -94,    65,   -94,
+     -94,   -94,    69,    73,    88,     1,   -94,    89,   135,   -94,
+     109,   -94,   137,   138,    37,   -94,   -94,   -94,   -94,   -94,
+     -94,   136,   -94,   110,   124,   -94,   -94,    81,   -94,   -94,
+     -94,   -94,    -5,   136,   -94,   -94,   140,   142,   145,   -94,
+      75,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   146,   114,
+      86,   117,   148,    -5,   -94,   125,   -94,   -94,   -94,   126,
+     -94,   -94,   -94
   };
 
   const unsigned char
@@ -1854,165 +1780,147 @@ namespace isc { namespace agent {
        0,     2,     4,     6,     0,     0,     0,     0,     1,    25,
       18,    15,    14,    11,    12,    13,     3,    10,    16,    17,
       32,     5,     8,     7,    27,    21,     0,     0,    29,     0,
-      28,     0,     0,    22,    42,   110,   104,   106,   108,     0,
-      41,     0,    34,    36,    38,    39,    40,    37,    54,     0,
-      57,    59,     0,    61,   115,    53,     0,    44,    46,    47,
-      51,    52,    49,    48,    50,    26,     0,     0,    19,     0,
-       0,     0,     0,     0,     0,    31,     0,    33,     0,     0,
-       0,     0,     0,     0,     0,     0,     9,    30,    23,     0,
-       0,     0,     0,     0,     0,    35,     0,    56,     0,     0,
-      78,     0,     0,    45,     0,     0,     0,   105,   107,   109,
-      55,    20,    58,    60,     0,    63,     0,    24,     0,     0,
-     112,   114,    86,    88,    90,    85,     0,    80,    82,    83,
-      84,    67,     0,    64,    65,   119,     0,   117,    43,     0,
-     111,     0,     0,     0,     0,    79,     0,    62,     0,     0,
-       0,   116,   113,     0,     0,     0,    81,    74,    76,    71,
-       0,    69,    72,    73,    66,   130,   135,     0,   133,   129,
-     127,   128,     0,   121,   123,   125,   126,   124,   118,     0,
-       0,     0,     0,     0,     0,    68,     0,     0,     0,     0,
-       0,   120,    99,   101,    98,    96,    97,     0,    92,    94,
-      95,     0,     0,     0,     0,    70,     0,     0,   132,     0,
-     122,     0,     0,     0,    87,    89,    91,    75,    77,   131,
-       0,   134,     0,     0,    93,   139,     0,   137,   100,   103,
-     102,     0,     0,   136,   148,     0,     0,     0,   153,     0,
-     141,   143,   144,   145,   146,   147,   138,     0,     0,     0,
-       0,     0,     0,   140,     0,   150,   151,   152,     0,   142,
-     149,   154
+      28,     0,     0,    22,    36,     0,    34,    35,    48,     0,
+      51,    53,     0,    55,    98,     0,    47,     0,    38,    40,
+      41,    45,    46,    43,    42,    44,    26,     0,     0,    19,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+      31,     0,     9,    30,    23,     0,     0,     0,    50,     0,
+       0,    72,     0,     0,    39,     0,     0,    49,    20,    52,
+      54,     0,    57,     0,    24,     0,    80,    82,    84,    79,
+       0,    74,    76,    77,    78,    61,     0,    58,    59,   102,
+       0,   100,    37,     0,     0,     0,     0,    73,     0,    56,
+       0,     0,     0,    99,     0,     0,     0,    75,    68,    70,
+      65,     0,    63,    66,    67,    60,   113,   118,     0,   116,
+     112,   110,   111,     0,   104,   106,   108,   109,   107,   101,
+       0,     0,     0,     0,     0,     0,    62,     0,     0,     0,
+       0,     0,   103,    93,    95,    92,    90,    91,     0,    86,
+      88,    89,     0,     0,     0,     0,    64,     0,     0,   115,
+       0,   105,     0,     0,     0,    81,    83,    85,    69,    71,
+     114,     0,   117,     0,     0,    87,   122,     0,   120,    94,
+      97,    96,     0,     0,   119,   131,     0,     0,     0,   136,
+       0,   124,   126,   127,   128,   129,   130,   121,     0,     0,
+       0,     0,     0,     0,   123,     0,   133,   134,   135,     0,
+     125,   132,   137
   };
 
   const signed char
   AgentParser::yypgoto_[] =
   {
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,   -24,    40,
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,   -23,  -115,
-    -115,  -115,    80,  -115,  -115,    69,    91,  -115,  -115,  -115,
-     -22,  -115,   -21,  -115,  -115,  -115,  -115,  -115,    27,  -115,
-    -115,    -7,  -115,  -115,  -115,  -115,  -115,  -115,  -115,    34,
-    -115,  -115,  -115,  -115,  -115,  -115,  -114,   -31,  -115,  -115,
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,
-    -115,  -115,    45,  -105,  -115,  -115,    33,  -115,  -115,    -4,
-    -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,   -47,  -115,
-    -115,   -65,  -115,  -115,  -115,  -115,  -115,  -115,  -115
+     -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   -24,    79,
+     -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   -26,   -94,
+     -94,   -94,   -94,   -94,   -94,    68,    91,   -94,   -94,   -94,
+     -23,   -94,   -22,   -94,   -94,   -94,   -94,   -94,    33,   -94,
+     -94,     4,   -94,   -94,   -94,   -94,   -94,   -94,   -94,    41,
+     -94,   -94,   -94,   -94,   -94,   -94,   -93,   -19,   -94,   -94,
+     -94,   -94,   -94,   -94,   -94,   -94,    38,   -94,   -94,     5,
+     -94,   -94,   -94,   -94,   -94,   -94,   -94,   -94,   -42,   -94,
+     -94,   -56,   -94,   -94,   -94,   -94,   -94,   -94,   -94
   };
 
   const short
   AgentParser::yydefgoto_[] =
   {
       -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
-      25,   112,    32,    33,    19,    24,    29,    30,   194,    21,
-      26,    41,    42,    43,    70,    56,    57,    58,    78,    59,
-     195,    80,   196,    81,    62,    83,   132,   133,   134,   146,
-     160,   161,   162,   182,   163,   183,    63,   114,   126,   127,
-     128,   141,   129,   142,   130,   143,   197,   198,   199,   211,
-     200,   212,   230,    44,    72,    45,    73,    46,    74,    47,
-      71,   119,   120,    64,    84,   136,   137,   149,   172,   173,
-     174,   186,   175,   176,   189,   177,   187,   226,   227,   231,
-     239,   240,   241,   247,   242,   243,   244,   245,   251
+      25,    89,    32,    33,    19,    24,    29,    30,   165,    21,
+      26,    35,    36,    37,    61,    47,    48,    49,    63,    50,
+     166,    65,   167,    66,    53,    68,   106,   107,   108,   118,
+     131,   132,   133,   153,   134,   154,    54,    91,   100,   101,
+     102,   113,   103,   114,   104,   115,   168,   169,   170,   182,
+     171,   183,   201,    55,    69,   110,   111,   121,   143,   144,
+     145,   157,   146,   147,   160,   148,   158,   197,   198,   202,
+     210,   211,   212,   218,   213,   214,   215,   216,   222
   };
 
-  const short
+  const unsigned char
   AgentParser::yytable_[] =
   {
-      28,   121,    20,    40,    55,    60,    61,     9,     8,    10,
-      22,    11,    50,    51,   122,   123,   124,   150,   192,   193,
-     151,    65,    34,    31,    48,    49,    50,    51,    52,   157,
-     158,    76,   157,   158,   121,    53,    77,    35,    66,    54,
-      39,    39,    87,    88,    12,    13,    14,    15,    36,    37,
-      38,    39,    67,    40,    39,    39,    85,    50,    51,    68,
-      85,    86,    55,    60,    61,   138,   201,   202,   107,   108,
-     109,   165,   166,   139,   167,   168,   144,    69,   140,    75,
-     117,   145,    55,    60,    61,   184,    39,    79,    82,   234,
-     185,   125,   235,   236,   237,   238,   190,   213,   213,   213,
-     252,   191,   214,   215,   216,   253,   232,    89,    90,   233,
-       1,     2,     3,    91,    92,    93,    94,    96,    98,    97,
-      99,   125,   100,   159,   101,   102,   169,   170,   171,   104,
-     105,   106,   110,    10,   113,   115,   116,   148,   111,   131,
-     135,   147,   153,    54,   154,   155,   179,   217,   188,   180,
-     181,   203,   204,   206,   207,   209,    95,   220,   222,   223,
-     225,   208,   248,   249,   219,   250,   229,   169,   170,   171,
-     221,   228,   254,   258,   118,   164,   103,   205,   156,   260,
-     218,   255,   224,   178,   152,   246,   210,   259,     0,   256,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   257,
-       0,     0,   261
+      28,    46,   128,   129,    51,    52,     9,     8,    10,    20,
+      11,    38,    39,    40,    41,    42,    71,    45,    22,    71,
+      31,    72,    43,   205,   112,    44,   206,   207,   208,   209,
+      40,    41,   116,    73,    74,   128,   129,   117,    45,    12,
+      13,    14,    15,   136,   137,    46,   138,   139,    51,    52,
+      40,    41,    96,    97,    98,    45,   163,   164,   172,   173,
+      46,    94,   155,    51,    52,    99,   161,   156,   184,    59,
+      34,   162,   184,   185,    45,    45,   184,   186,   223,   122,
+      56,   187,   123,   224,   203,    57,    60,   204,    58,    75,
+      99,    64,   130,    62,    67,   140,    70,    76,   141,   142,
+      77,     1,     2,     3,    79,    80,    78,    82,    83,    81,
+      85,   179,    86,    92,    10,    87,    90,    93,   105,   120,
+     109,   119,   124,   125,   126,   227,   188,   190,   150,   151,
+     152,   159,   174,   175,   177,   140,   178,   180,   141,   142,
+     191,   193,   194,   196,   219,   200,   220,   192,   199,   221,
+     225,   189,   229,   135,    95,   226,   228,   127,    88,   176,
+     149,   217,    84,   231,   232,   195,   181,   230
   };
 
-  const short
+  const unsigned char
   AgentParser::yycheck_[] =
   {
-      24,   106,     7,    26,    27,    27,    27,     5,     0,     7,
-       7,     9,    13,    14,    16,    17,    18,     3,    19,    20,
-       6,     6,    10,    42,    11,    12,    13,    14,    15,    23,
-      24,     3,    23,    24,   139,    22,     8,    25,     3,    26,
-      42,    42,    66,    67,    42,    43,    44,    45,    36,    37,
-      38,    42,     4,    76,    42,    42,     3,    13,    14,     8,
-       3,     8,    85,    85,    85,     8,   180,   181,    92,    93,
-      94,    27,    28,     3,    30,    31,     3,     3,     8,     4,
-     104,     8,   105,   105,   105,     3,    42,     4,     4,    29,
-       8,   114,    32,    33,    34,    35,     3,     3,     3,     3,
-       3,     8,     8,     8,     8,     8,     3,    42,     4,     6,
-      39,    40,    41,     4,     4,     4,     4,     4,     4,    43,
-       4,   144,     7,   146,     4,     4,   149,   149,   149,     4,
-       7,     7,    42,     7,    42,     5,     5,     3,    98,     7,
-       7,     6,     4,    26,     4,     4,     7,    42,     4,     7,
-       7,     4,     4,     4,     4,     4,    76,     5,     4,     4,
-       7,    43,     4,     4,    42,     4,    21,   190,   190,   190,
-      42,    42,     4,     4,   105,   148,    85,   184,   144,    42,
-     204,    45,   213,   150,   139,   232,   190,   252,    -1,    43,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,
-      -1,    -1,    42
+      24,    27,    23,    24,    27,    27,     5,     0,     7,     7,
+       9,    11,    12,    13,    14,    15,     3,    38,     7,     3,
+      38,     8,    22,    28,     8,    25,    31,    32,    33,    34,
+      13,    14,     3,    57,    58,    23,    24,     8,    38,    38,
+      39,    40,    41,    26,    27,    71,    29,    30,    71,    71,
+      13,    14,    16,    17,    18,    38,    19,    20,   151,   152,
+      86,    85,     3,    86,    86,    91,     3,     8,     3,     8,
+      10,     8,     3,     8,    38,    38,     3,     8,     3,     3,
+       6,     8,     6,     8,     3,     3,     3,     6,     4,    38,
+     116,     4,   118,     8,     4,   121,     4,     4,   121,   121,
+       4,    35,    36,    37,     4,     4,    39,     4,     4,     7,
+       4,    39,     7,     5,     7,    38,    38,     5,     7,     3,
+       7,     6,     4,     4,     4,    39,    38,    38,     7,     7,
+       7,     4,     4,     4,     4,   161,     4,     4,   161,   161,
+       5,     4,     4,     7,     4,    21,     4,    38,    38,     4,
+       4,   175,     4,   120,    86,    41,    39,   116,    79,   155,
+     122,   203,    71,    38,    38,   184,   161,   223
   };
 
   const unsigned char
   AgentParser::yystos_[] =
   {
-       0,    39,    40,    41,    47,    48,    49,    50,     0,     5,
-       7,     9,    42,    43,    44,    45,    53,    54,    55,    60,
-       7,    65,     7,    51,    61,    56,    66,    52,    54,    62,
-      63,    42,    58,    59,    10,    25,    36,    37,    38,    42,
-      64,    67,    68,    69,   109,   111,   113,   115,    11,    12,
-      13,    14,    15,    22,    26,    64,    71,    72,    73,    75,
-      76,    78,    80,    92,   119,     6,     3,     4,     8,     3,
-      70,   116,   110,   112,   114,     4,     3,     8,    74,     4,
-      77,    79,     4,    81,   120,     3,     8,    54,    54,    42,
-       4,     4,     4,     4,     4,    68,     4,    43,     4,     4,
-       7,     4,     4,    72,     4,     7,     7,    54,    54,    54,
-      42,    55,    57,    42,    93,     5,     5,    54,    71,   117,
-     118,   119,    16,    17,    18,    64,    94,    95,    96,    98,
-     100,     7,    82,    83,    84,     7,   121,   122,     8,     3,
-       8,    97,    99,   101,     3,     8,    85,     6,     3,   123,
-       3,     6,   118,     4,     4,     4,    95,    23,    24,    64,
-      86,    87,    88,    90,    84,    27,    28,    30,    31,    64,
-      76,    78,   124,   125,   126,   128,   129,   131,   122,     7,
-       7,     7,    89,    91,     3,     8,   127,   132,     4,   130,
-       3,     8,    19,    20,    64,    76,    78,   102,   103,   104,
-     106,   102,   102,     4,     4,    87,     4,     4,    43,     4,
-     125,   105,   107,     3,     8,     8,     8,    42,    54,    42,
-       5,    42,     4,     4,   103,     7,   133,   134,    42,    21,
-     108,   135,     3,     6,    29,    32,    33,    34,    35,   136,
-     137,   138,   140,   141,   142,   143,   134,   139,     4,     4,
-       4,   144,     3,     8,     4,    45,    43,    43,     4,   137,
-      42,    42
+       0,    35,    36,    37,    43,    44,    45,    46,     0,     5,
+       7,     9,    38,    39,    40,    41,    49,    50,    51,    56,
+       7,    61,     7,    47,    57,    52,    62,    48,    50,    58,
+      59,    38,    54,    55,    10,    63,    64,    65,    11,    12,
+      13,    14,    15,    22,    25,    38,    60,    67,    68,    69,
+      71,    72,    74,    76,    88,   105,     6,     3,     4,     8,
+       3,    66,     8,    70,     4,    73,    75,     4,    77,   106,
+       4,     3,     8,    50,    50,    38,     4,     4,    39,     4,
+       4,     7,     4,     4,    68,     4,     7,    38,    51,    53,
+      38,    89,     5,     5,    50,    67,    16,    17,    18,    60,
+      90,    91,    92,    94,    96,     7,    78,    79,    80,     7,
+     107,   108,     8,    93,    95,    97,     3,     8,    81,     6,
+       3,   109,     3,     6,     4,     4,     4,    91,    23,    24,
+      60,    82,    83,    84,    86,    80,    26,    27,    29,    30,
+      60,    72,    74,   110,   111,   112,   114,   115,   117,   108,
+       7,     7,     7,    85,    87,     3,     8,   113,   118,     4,
+     116,     3,     8,    19,    20,    60,    72,    74,    98,    99,
+     100,   102,    98,    98,     4,     4,    83,     4,     4,    39,
+       4,   111,   101,   103,     3,     8,     8,     8,    38,    50,
+      38,     5,    38,     4,     4,    99,     7,   119,   120,    38,
+      21,   104,   121,     3,     6,    28,    31,    32,    33,    34,
+     122,   123,   124,   126,   127,   128,   129,   120,   125,     4,
+       4,     4,   130,     3,     8,     4,    41,    39,    39,     4,
+     123,    38,    38
   };
 
   const unsigned char
   AgentParser::yyr1_[] =
   {
-       0,    46,    48,    47,    49,    47,    50,    47,    52,    51,
-      53,    54,    54,    54,    54,    54,    54,    54,    56,    55,
-      57,    58,    58,    59,    59,    61,    60,    62,    62,    63,
-      63,    64,    66,    65,    67,    67,    68,    68,    68,    68,
-      68,    68,    70,    69,    71,    71,    72,    72,    72,    72,
-      72,    72,    72,    72,    74,    73,    75,    77,    76,    79,
-      78,    81,    80,    82,    82,    83,    83,    85,    84,    86,
-      86,    86,    87,    87,    89,    88,    91,    90,    93,    92,
-      94,    94,    95,    95,    95,    95,    97,    96,    99,    98,
-     101,   100,   102,   102,   103,   103,   103,   103,   103,   105,
-     104,   107,   106,   108,   110,   109,   112,   111,   114,   113,
-     116,   115,   117,   117,   118,   120,   119,   121,   121,   123,
-     122,   124,   124,   125,   125,   125,   125,   125,   125,   125,
-     127,   126,   128,   130,   129,   132,   131,   133,   133,   135,
-     134,   136,   136,   137,   137,   137,   137,   137,   139,   138,
-     140,   141,   142,   144,   143
+       0,    42,    44,    43,    45,    43,    46,    43,    48,    47,
+      49,    50,    50,    50,    50,    50,    50,    50,    52,    51,
+      53,    54,    54,    55,    55,    57,    56,    58,    58,    59,
+      59,    60,    62,    61,    63,    64,    66,    65,    67,    67,
+      68,    68,    68,    68,    68,    68,    68,    68,    70,    69,
+      71,    73,    72,    75,    74,    77,    76,    78,    78,    79,
+      79,    81,    80,    82,    82,    82,    83,    83,    85,    84,
+      87,    86,    89,    88,    90,    90,    91,    91,    91,    91,
+      93,    92,    95,    94,    97,    96,    98,    98,    99,    99,
+      99,    99,    99,   101,   100,   103,   102,   104,   106,   105,
+     107,   107,   109,   108,   110,   110,   111,   111,   111,   111,
+     111,   111,   111,   113,   112,   114,   116,   115,   118,   117,
+     119,   119,   121,   120,   122,   122,   123,   123,   123,   123,
+     123,   125,   124,   126,   127,   128,   130,   129
   };
 
   const signed char
@@ -2021,19 +1929,17 @@ namespace isc { namespace agent {
        0,     2,     0,     3,     0,     3,     0,     3,     0,     4,
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        1,     0,     1,     3,     5,     0,     4,     0,     1,     1,
-       3,     2,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     3,     0,     4,     0,
-       4,     0,     6,     0,     1,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     1,     1,     1,     0,     6,     0,     6,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     1,     0,     4,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     0,     6,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     3,     0,     4,     0,     6,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     0,     4,
-       3,     3,     3,     0,     4
+       3,     2,     0,     4,     1,     1,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       3,     0,     4,     0,     4,     0,     6,     0,     1,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     0,     4,
+       0,     4,     0,     6,     1,     3,     1,     1,     1,     1,
+       0,     6,     0,     6,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     1,     0,     6,
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     3,     0,     4,     0,     6,
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     0,     4,     3,     3,     3,     0,     4
   };
 
 
@@ -2048,11 +1954,10 @@ namespace isc { namespace agent {
   "\"http-host\"", "\"http-port\"", "\"user-context\"", "\"comment\"",
   "\"control-sockets\"", "\"dhcp4\"", "\"dhcp6\"", "\"d2\"",
   "\"socket-name\"", "\"socket-type\"", "\"unix\"", "\"hooks-libraries\"",
-  "\"library\"", "\"parameters\"", "\"Logging\"", "\"loggers\"",
-  "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
-  "\"Dhcp4\"", "\"Dhcp6\"", "\"DhcpDdns\"", "START_JSON", "START_AGENT",
-  "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
+  "\"library\"", "\"parameters\"", "\"loggers\"", "\"name\"",
+  "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
+  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", "START_JSON",
+  "START_AGENT", "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
   "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
   "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5", "map_value",
   "map_content", "not_empty_map", "list_generic", "$@6", "list_content",
@@ -2066,14 +1971,12 @@ namespace isc { namespace agent {
   "control_sockets_params", "control_socket", "dhcp4_server_socket",
   "$@17", "dhcp6_server_socket", "$@18", "d2_server_socket", "$@19",
   "control_socket_params", "control_socket_param", "socket_name", "$@20",
-  "socket_type", "$@21", "socket_type_value", "dhcp4_json_object", "$@22",
-  "dhcp6_json_object", "$@23", "dhcpddns_json_object", "$@24",
-  "logging_object", "$@25", "logging_params", "logging_param", "loggers",
-  "$@26", "loggers_entries", "logger_entry", "$@27", "logger_params",
-  "logger_param", "name", "$@28", "debuglevel", "severity", "$@29",
-  "output_options_list", "$@30", "output_options_list_content",
-  "output_entry", "$@31", "output_params_list", "output_params", "output",
-  "$@32", "flush", "maxsize", "maxver", "pattern", "$@33", YY_NULLPTR
+  "socket_type", "$@21", "socket_type_value", "loggers", "$@22",
+  "loggers_entries", "logger_entry", "$@23", "logger_params",
+  "logger_param", "name", "$@24", "debuglevel", "severity", "$@25",
+  "output_options_list", "$@26", "output_options_list_content",
+  "output_entry", "$@27", "output_params_list", "output_params", "output",
+  "$@28", "flush", "maxsize", "maxver", "pattern", "$@29", YY_NULLPTR
   };
 #endif
 
@@ -2082,22 +1985,20 @@ namespace isc { namespace agent {
   const short
   AgentParser::yyrline_[] =
   {
-       0,   115,   115,   115,   116,   116,   117,   117,   125,   125,
-     136,   142,   143,   144,   145,   146,   147,   148,   152,   152,
-     163,   168,   169,   177,   181,   188,   188,   194,   195,   198,
-     202,   215,   224,   224,   236,   237,   241,   242,   243,   244,
-     245,   246,   250,   250,   267,   268,   273,   274,   275,   276,
-     277,   278,   279,   280,   283,   283,   291,   296,   296,   321,
-     321,   349,   349,   359,   360,   363,   364,   367,   367,   375,
-     376,   377,   380,   381,   384,   384,   392,   392,   402,   402,
-     415,   416,   421,   422,   423,   424,   428,   428,   439,   439,
-     450,   450,   461,   462,   466,   467,   468,   469,   470,   474,
-     474,   483,   483,   491,   497,   497,   504,   504,   511,   511,
-     523,   523,   536,   537,   541,   545,   545,   557,   558,   562,
-     562,   570,   571,   574,   575,   576,   577,   578,   579,   580,
-     583,   583,   591,   596,   596,   604,   604,   614,   615,   618,
-     618,   626,   627,   630,   631,   632,   633,   634,   637,   637,
-     645,   650,   655,   660,   660
+       0,   110,   110,   110,   111,   111,   112,   112,   120,   120,
+     131,   137,   138,   139,   140,   141,   142,   143,   147,   147,
+     158,   163,   164,   172,   176,   183,   183,   189,   190,   193,
+     197,   210,   218,   218,   230,   234,   238,   238,   255,   256,
+     261,   262,   263,   264,   265,   266,   267,   268,   271,   271,
+     279,   284,   284,   309,   309,   337,   337,   347,   348,   351,
+     352,   355,   355,   363,   364,   365,   368,   369,   372,   372,
+     380,   380,   390,   390,   403,   404,   409,   410,   411,   412,
+     416,   416,   427,   427,   438,   438,   449,   450,   454,   455,
+     456,   457,   458,   462,   462,   471,   471,   479,   486,   486,
+     498,   499,   503,   503,   511,   512,   515,   516,   517,   518,
+     519,   520,   521,   524,   524,   532,   537,   537,   545,   545,
+     555,   556,   559,   559,   567,   568,   571,   572,   573,   574,
+     575,   578,   578,   586,   591,   596,   601,   601
   };
 
   void
@@ -2130,9 +2031,9 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2134 "agent_parser.cc"
+#line 2035 "agent_parser.cc"
 
-#line 668 "agent_parser.yy"
+#line 609 "agent_parser.yy"
 
 
 void
index e310eeb5a5ebd87a824fbec058c4dd2dd41f1687..4b29a1c9718771bb3bd011295baf9cff9dbd9fe6 100644 (file)
@@ -502,27 +502,23 @@ namespace isc { namespace agent {
     TOKEN_HOOKS_LIBRARIES = 277,   // "hooks-libraries"
     TOKEN_LIBRARY = 278,           // "library"
     TOKEN_PARAMETERS = 279,        // "parameters"
-    TOKEN_LOGGING = 280,           // "Logging"
-    TOKEN_LOGGERS = 281,           // "loggers"
-    TOKEN_NAME = 282,              // "name"
-    TOKEN_OUTPUT_OPTIONS = 283,    // "output_options"
-    TOKEN_OUTPUT = 284,            // "output"
-    TOKEN_DEBUGLEVEL = 285,        // "debuglevel"
-    TOKEN_SEVERITY = 286,          // "severity"
-    TOKEN_FLUSH = 287,             // "flush"
-    TOKEN_MAXSIZE = 288,           // "maxsize"
-    TOKEN_MAXVER = 289,            // "maxver"
-    TOKEN_PATTERN = 290,           // "pattern"
-    TOKEN_DHCP4 = 291,             // "Dhcp4"
-    TOKEN_DHCP6 = 292,             // "Dhcp6"
-    TOKEN_DHCPDDNS = 293,          // "DhcpDdns"
-    TOKEN_START_JSON = 294,        // START_JSON
-    TOKEN_START_AGENT = 295,       // START_AGENT
-    TOKEN_START_SUB_AGENT = 296,   // START_SUB_AGENT
-    TOKEN_STRING = 297,            // "constant string"
-    TOKEN_INTEGER = 298,           // "integer"
-    TOKEN_FLOAT = 299,             // "floating point"
-    TOKEN_BOOLEAN = 300            // "boolean"
+    TOKEN_LOGGERS = 280,           // "loggers"
+    TOKEN_NAME = 281,              // "name"
+    TOKEN_OUTPUT_OPTIONS = 282,    // "output_options"
+    TOKEN_OUTPUT = 283,            // "output"
+    TOKEN_DEBUGLEVEL = 284,        // "debuglevel"
+    TOKEN_SEVERITY = 285,          // "severity"
+    TOKEN_FLUSH = 286,             // "flush"
+    TOKEN_MAXSIZE = 287,           // "maxsize"
+    TOKEN_MAXVER = 288,            // "maxver"
+    TOKEN_PATTERN = 289,           // "pattern"
+    TOKEN_START_JSON = 290,        // START_JSON
+    TOKEN_START_AGENT = 291,       // START_AGENT
+    TOKEN_START_SUB_AGENT = 292,   // START_SUB_AGENT
+    TOKEN_STRING = 293,            // "constant string"
+    TOKEN_INTEGER = 294,           // "integer"
+    TOKEN_FLOAT = 295,             // "floating point"
+    TOKEN_BOOLEAN = 296            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -539,7 +535,7 @@ namespace isc { namespace agent {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 46, ///< Number of tokens.
+        YYNTOKENS = 42, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -566,126 +562,112 @@ namespace isc { namespace agent {
         S_HOOKS_LIBRARIES = 22,                  // "hooks-libraries"
         S_LIBRARY = 23,                          // "library"
         S_PARAMETERS = 24,                       // "parameters"
-        S_LOGGING = 25,                          // "Logging"
-        S_LOGGERS = 26,                          // "loggers"
-        S_NAME = 27,                             // "name"
-        S_OUTPUT_OPTIONS = 28,                   // "output_options"
-        S_OUTPUT = 29,                           // "output"
-        S_DEBUGLEVEL = 30,                       // "debuglevel"
-        S_SEVERITY = 31,                         // "severity"
-        S_FLUSH = 32,                            // "flush"
-        S_MAXSIZE = 33,                          // "maxsize"
-        S_MAXVER = 34,                           // "maxver"
-        S_PATTERN = 35,                          // "pattern"
-        S_DHCP4 = 36,                            // "Dhcp4"
-        S_DHCP6 = 37,                            // "Dhcp6"
-        S_DHCPDDNS = 38,                         // "DhcpDdns"
-        S_START_JSON = 39,                       // START_JSON
-        S_START_AGENT = 40,                      // START_AGENT
-        S_START_SUB_AGENT = 41,                  // START_SUB_AGENT
-        S_STRING = 42,                           // "constant string"
-        S_INTEGER = 43,                          // "integer"
-        S_FLOAT = 44,                            // "floating point"
-        S_BOOLEAN = 45,                          // "boolean"
-        S_YYACCEPT = 46,                         // $accept
-        S_start = 47,                            // start
-        S_48_1 = 48,                             // $@1
-        S_49_2 = 49,                             // $@2
-        S_50_3 = 50,                             // $@3
-        S_sub_agent = 51,                        // sub_agent
-        S_52_4 = 52,                             // $@4
-        S_json = 53,                             // json
-        S_value = 54,                            // value
-        S_map = 55,                              // map
-        S_56_5 = 56,                             // $@5
-        S_map_value = 57,                        // map_value
-        S_map_content = 58,                      // map_content
-        S_not_empty_map = 59,                    // not_empty_map
-        S_list_generic = 60,                     // list_generic
-        S_61_6 = 61,                             // $@6
-        S_list_content = 62,                     // list_content
-        S_not_empty_list = 63,                   // not_empty_list
-        S_unknown_map_entry = 64,                // unknown_map_entry
-        S_agent_syntax_map = 65,                 // agent_syntax_map
-        S_66_7 = 66,                             // $@7
-        S_global_objects = 67,                   // global_objects
-        S_global_object = 68,                    // global_object
-        S_agent_object = 69,                     // agent_object
-        S_70_8 = 70,                             // $@8
-        S_global_params = 71,                    // global_params
-        S_global_param = 72,                     // global_param
-        S_http_host = 73,                        // http_host
-        S_74_9 = 74,                             // $@9
-        S_http_port = 75,                        // http_port
-        S_user_context = 76,                     // user_context
-        S_77_10 = 77,                            // $@10
-        S_comment = 78,                          // comment
-        S_79_11 = 79,                            // $@11
-        S_hooks_libraries = 80,                  // hooks_libraries
-        S_81_12 = 81,                            // $@12
-        S_hooks_libraries_list = 82,             // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 83,   // not_empty_hooks_libraries_list
-        S_hooks_library = 84,                    // hooks_library
-        S_85_13 = 85,                            // $@13
-        S_hooks_params = 86,                     // hooks_params
-        S_hooks_param = 87,                      // hooks_param
-        S_library = 88,                          // library
-        S_89_14 = 89,                            // $@14
-        S_parameters = 90,                       // parameters
-        S_91_15 = 91,                            // $@15
-        S_control_sockets = 92,                  // control_sockets
-        S_93_16 = 93,                            // $@16
-        S_control_sockets_params = 94,           // control_sockets_params
-        S_control_socket = 95,                   // control_socket
-        S_dhcp4_server_socket = 96,              // dhcp4_server_socket
-        S_97_17 = 97,                            // $@17
-        S_dhcp6_server_socket = 98,              // dhcp6_server_socket
-        S_99_18 = 99,                            // $@18
-        S_d2_server_socket = 100,                // d2_server_socket
-        S_101_19 = 101,                          // $@19
-        S_control_socket_params = 102,           // control_socket_params
-        S_control_socket_param = 103,            // control_socket_param
-        S_socket_name = 104,                     // socket_name
-        S_105_20 = 105,                          // $@20
-        S_socket_type = 106,                     // socket_type
-        S_107_21 = 107,                          // $@21
-        S_socket_type_value = 108,               // socket_type_value
-        S_dhcp4_json_object = 109,               // dhcp4_json_object
-        S_110_22 = 110,                          // $@22
-        S_dhcp6_json_object = 111,               // dhcp6_json_object
-        S_112_23 = 112,                          // $@23
-        S_dhcpddns_json_object = 113,            // dhcpddns_json_object
-        S_114_24 = 114,                          // $@24
-        S_logging_object = 115,                  // logging_object
+        S_LOGGERS = 25,                          // "loggers"
+        S_NAME = 26,                             // "name"
+        S_OUTPUT_OPTIONS = 27,                   // "output_options"
+        S_OUTPUT = 28,                           // "output"
+        S_DEBUGLEVEL = 29,                       // "debuglevel"
+        S_SEVERITY = 30,                         // "severity"
+        S_FLUSH = 31,                            // "flush"
+        S_MAXSIZE = 32,                          // "maxsize"
+        S_MAXVER = 33,                           // "maxver"
+        S_PATTERN = 34,                          // "pattern"
+        S_START_JSON = 35,                       // START_JSON
+        S_START_AGENT = 36,                      // START_AGENT
+        S_START_SUB_AGENT = 37,                  // START_SUB_AGENT
+        S_STRING = 38,                           // "constant string"
+        S_INTEGER = 39,                          // "integer"
+        S_FLOAT = 40,                            // "floating point"
+        S_BOOLEAN = 41,                          // "boolean"
+        S_YYACCEPT = 42,                         // $accept
+        S_start = 43,                            // start
+        S_44_1 = 44,                             // $@1
+        S_45_2 = 45,                             // $@2
+        S_46_3 = 46,                             // $@3
+        S_sub_agent = 47,                        // sub_agent
+        S_48_4 = 48,                             // $@4
+        S_json = 49,                             // json
+        S_value = 50,                            // value
+        S_map = 51,                              // map
+        S_52_5 = 52,                             // $@5
+        S_map_value = 53,                        // map_value
+        S_map_content = 54,                      // map_content
+        S_not_empty_map = 55,                    // not_empty_map
+        S_list_generic = 56,                     // list_generic
+        S_57_6 = 57,                             // $@6
+        S_list_content = 58,                     // list_content
+        S_not_empty_list = 59,                   // not_empty_list
+        S_unknown_map_entry = 60,                // unknown_map_entry
+        S_agent_syntax_map = 61,                 // agent_syntax_map
+        S_62_7 = 62,                             // $@7
+        S_global_objects = 63,                   // global_objects
+        S_global_object = 64,                    // global_object
+        S_agent_object = 65,                     // agent_object
+        S_66_8 = 66,                             // $@8
+        S_global_params = 67,                    // global_params
+        S_global_param = 68,                     // global_param
+        S_http_host = 69,                        // http_host
+        S_70_9 = 70,                             // $@9
+        S_http_port = 71,                        // http_port
+        S_user_context = 72,                     // user_context
+        S_73_10 = 73,                            // $@10
+        S_comment = 74,                          // comment
+        S_75_11 = 75,                            // $@11
+        S_hooks_libraries = 76,                  // hooks_libraries
+        S_77_12 = 77,                            // $@12
+        S_hooks_libraries_list = 78,             // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 79,   // not_empty_hooks_libraries_list
+        S_hooks_library = 80,                    // hooks_library
+        S_81_13 = 81,                            // $@13
+        S_hooks_params = 82,                     // hooks_params
+        S_hooks_param = 83,                      // hooks_param
+        S_library = 84,                          // library
+        S_85_14 = 85,                            // $@14
+        S_parameters = 86,                       // parameters
+        S_87_15 = 87,                            // $@15
+        S_control_sockets = 88,                  // control_sockets
+        S_89_16 = 89,                            // $@16
+        S_control_sockets_params = 90,           // control_sockets_params
+        S_control_socket = 91,                   // control_socket
+        S_dhcp4_server_socket = 92,              // dhcp4_server_socket
+        S_93_17 = 93,                            // $@17
+        S_dhcp6_server_socket = 94,              // dhcp6_server_socket
+        S_95_18 = 95,                            // $@18
+        S_d2_server_socket = 96,                 // d2_server_socket
+        S_97_19 = 97,                            // $@19
+        S_control_socket_params = 98,            // control_socket_params
+        S_control_socket_param = 99,             // control_socket_param
+        S_socket_name = 100,                     // socket_name
+        S_101_20 = 101,                          // $@20
+        S_socket_type = 102,                     // socket_type
+        S_103_21 = 103,                          // $@21
+        S_socket_type_value = 104,               // socket_type_value
+        S_loggers = 105,                         // loggers
+        S_106_22 = 106,                          // $@22
+        S_loggers_entries = 107,                 // loggers_entries
+        S_logger_entry = 108,                    // logger_entry
+        S_109_23 = 109,                          // $@23
+        S_logger_params = 110,                   // logger_params
+        S_logger_param = 111,                    // logger_param
+        S_name = 112,                            // name
+        S_113_24 = 113,                          // $@24
+        S_debuglevel = 114,                      // debuglevel
+        S_severity = 115,                        // severity
         S_116_25 = 116,                          // $@25
-        S_logging_params = 117,                  // logging_params
-        S_logging_param = 118,                   // logging_param
-        S_loggers = 119,                         // loggers
-        S_120_26 = 120,                          // $@26
-        S_loggers_entries = 121,                 // loggers_entries
-        S_logger_entry = 122,                    // logger_entry
-        S_123_27 = 123,                          // $@27
-        S_logger_params = 124,                   // logger_params
-        S_logger_param = 125,                    // logger_param
-        S_name = 126,                            // name
-        S_127_28 = 127,                          // $@28
-        S_debuglevel = 128,                      // debuglevel
-        S_severity = 129,                        // severity
-        S_130_29 = 130,                          // $@29
-        S_output_options_list = 131,             // output_options_list
-        S_132_30 = 132,                          // $@30
-        S_output_options_list_content = 133,     // output_options_list_content
-        S_output_entry = 134,                    // output_entry
-        S_135_31 = 135,                          // $@31
-        S_output_params_list = 136,              // output_params_list
-        S_output_params = 137,                   // output_params
-        S_output = 138,                          // output
-        S_139_32 = 139,                          // $@32
-        S_flush = 140,                           // flush
-        S_maxsize = 141,                         // maxsize
-        S_maxver = 142,                          // maxver
-        S_pattern = 143,                         // pattern
-        S_144_33 = 144                           // $@33
+        S_output_options_list = 117,             // output_options_list
+        S_118_26 = 118,                          // $@26
+        S_output_options_list_content = 119,     // output_options_list_content
+        S_output_entry = 120,                    // output_entry
+        S_121_27 = 121,                          // $@27
+        S_output_params_list = 122,              // output_params_list
+        S_output_params = 123,                   // output_params
+        S_output = 124,                          // output
+        S_125_28 = 125,                          // $@28
+        S_flush = 126,                           // flush
+        S_maxsize = 127,                         // maxsize
+        S_maxver = 128,                          // maxver
+        S_pattern = 129,                         // pattern
+        S_130_29 = 130                           // $@29
       };
     };
 
@@ -722,25 +704,25 @@ namespace isc { namespace agent {
       {
         switch (this->kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -854,25 +836,25 @@ namespace isc { namespace agent {
         // Value type destructor.
 switch (yykind)
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -966,13 +948,13 @@ switch (yykind)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1450,21 +1432,6 @@ switch (yykind)
         return symbol_type (token::TOKEN_PARAMETERS, l);
       }
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, l);
-      }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -1615,51 +1582,6 @@ switch (yykind)
         return symbol_type (token::TOKEN_PATTERN, l);
       }
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCPDDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCPDDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, l);
-      }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -1795,7 +1717,7 @@ switch (yykind)
 
 
     /// Stored state numbers (used for stacks).
-    typedef short state_type;
+    typedef unsigned char state_type;
 
     /// The arguments of the error message.
     int yy_syntax_error_arguments_ (const context& yyctx,
@@ -1851,9 +1773,9 @@ switch (yykind)
     // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     // positive, shift that token.  If negative, reduce the rule whose
     // number is the opposite.  If YYTABLE_NINF, syntax error.
-    static const short yytable_[];
+    static const unsigned char yytable_[];
 
-    static const short yycheck_[];
+    static const unsigned char yycheck_[];
 
     // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     // symbol of state STATE-NUM.
@@ -2095,8 +2017,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 202,     ///< Last index in yytable_.
-      yynnts_ = 99,  ///< Number of nonterminal symbols.
+      yylast_ = 167,     ///< Last index in yytable_.
+      yynnts_ = 89,  ///< Number of nonterminal symbols.
       yyfinal_ = 8 ///< Termination state number.
     };
 
@@ -2145,10 +2067,9 @@ switch (yykind)
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45
+      35,    36,    37,    38,    39,    40,    41
     };
-    const int user_token_number_max_ = 300;
+    const int user_token_number_max_ = 296;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -2167,25 +2088,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2218,25 +2139,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 54: // value
-      case 57: // map_value
-      case 108: // socket_type_value
+      case 50: // value
+      case 53: // map_value
+      case 104: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 45: // "boolean"
+      case 41: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 44: // "floating point"
+      case 40: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 43: // "integer"
+      case 39: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 42: // "constant string"
+      case 38: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2303,7 +2224,7 @@ switch (yykind)
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2307 "agent_parser.h"
+#line 2228 "agent_parser.h"
 
 
 
index ecf93a26d340d34082e89cc68acb5a77565e7f72..8bc31def007c851178b20571d032afa302c7dd0c 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 68
-#define YY_END_OF_BUFFER 69
+#define YY_NUM_RULES 64
+#define YY_END_OF_BUFFER 65
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,55 +700,52 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[424] =
+static const flex_int16_t yy_accept[398] =
     {   0,
-       61,   61,    0,    0,    0,    0,    0,    0,    0,    0,
-       69,   67,   10,   11,   67,    1,   61,   58,   61,   61,
-       67,   60,   59,   67,   67,   67,   67,   67,   54,   55,
-       67,   67,   67,   56,   57,    5,    5,    5,   67,   67,
-       67,   10,   11,    0,    0,   50,    0,    0,    0,    0,
+       57,   57,    0,    0,    0,    0,    0,    0,    0,    0,
+       65,   63,   10,   11,   63,    1,   57,   54,   57,   57,
+       63,   56,   55,   63,   63,   63,   63,   63,   50,   51,
+       63,   63,   63,   52,   53,    5,    5,    5,   63,   63,
+       63,   10,   11,    0,    0,   46,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
-       61,   61,    0,   60,   61,    3,    2,    6,    0,   61,
-        0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
-        0,   51,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    1,   57,   57,
+        0,   56,   57,    3,    2,    6,    0,   57,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,   47,
+        0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
 
-       53,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    2,    0,    0,    0,    0,
-        0,    0,    0,    8,    0,    0,    0,    0,    0,    0,
-        0,    0,   52,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
+        0,    0,    0,    0,    0,    0,   48,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       66,   64,    0,   63,   62,    0,    0,    0,    0,    0,
-        0,   19,   18,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
+        0,    0,    0,    0,   62,   60,    0,   59,   58,    0,
+        0,    0,    0,   19,   18,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       65,   62,    0,    0,    0,    0,    0,    0,   20,    0,
+
+        0,    0,   61,   58,    0,    0,    0,   20,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   44,    0,    0,    0,
-        0,   14,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   47,   48,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   40,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   43,    0,    0,    0,    0,   14,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   42,    0,    0,
-
-       39,    0,    0,    0,   32,    0,    0,    0,    0,    0,
-        0,   36,    0,   22,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   37,   41,    0,    0,    0,   43,    0,
-        0,    0,    0,    0,    0,    0,   12,    0,    0,    0,
-        0,    0,    0,    0,   28,    0,   26,    0,    0,    0,
-        0,   46,    0,    0,    0,    0,    0,   30,    0,    0,
+        0,    0,    0,    0,    0,    0,   39,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   29,    0,    0,    0,    0,   45,    0,    0,    0,
-        0,   13,   17,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   31,    0,   27,    0,    0,    0,    0,   35,
+        0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   41,
+        0,    0,   38,    0,    0,    0,   32,    0,    0,    0,
+        0,    0,    0,   22,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   36,   40,    0,    0,    0,   42,    0,
+        0,    0,    0,    0,    0,   12,    0,    0,    0,    0,
+        0,    0,    0,   28,    0,   26,    0,    0,    0,    0,
+       45,    0,    0,    0,    0,   30,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   29,
+        0,    0,    0,   44,    0,    0,    0,    0,   13,   17,
+        0,    0,    0,    0,    0,    0,    0,    0,   31,    0,
+       27,    0,    0,    0,    0,   35,   34,    0,    0,   25,
+        0,   23,   16,    0,   24,   21,    0,    0,    0,   33,
+        0,   37,    0,    0,    0,   15,    0
 
-       34,    0,    0,    0,   25,    0,   23,   16,    0,   24,
-       21,   49,    0,    0,    0,   33,    0,   38,    0,    0,
-        0,   15,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -758,15 +755,15 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    4,    5,    6,    7,    5,    5,    5,    5,    5,
         5,    8,    9,   10,   11,   12,   13,   14,   14,   14,
-       14,   15,   14,   16,   14,   14,   14,   17,    5,   18,
-        5,   19,   20,    5,   21,   22,   23,   24,   25,   26,
-        5,    5,    5,   27,    5,   28,    5,   29,   30,   31,
-        5,   32,   33,   34,   35,    5,    5,    5,    5,    5,
-       36,   37,   38,    5,   39,    5,   40,   41,   42,   43,
-
-       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
-       54,   55,    5,   56,   57,   58,   59,   60,   61,   62,
-       63,   64,   65,    5,   66,    5,    5,    5,    5,    5,
+       14,   14,   14,   14,   14,   14,   14,   15,    5,   16,
+        5,   17,   18,    5,   19,   20,   21,   22,   23,   24,
+        5,    5,    5,   25,    5,   26,    5,   27,   28,   29,
+        5,   30,   31,   32,   33,    5,    5,    5,    5,    5,
+       34,   35,   36,    5,   37,    5,   38,   39,   40,   41,
+
+       42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
+       52,   53,    5,   54,   55,   56,   57,   58,   59,   60,
+       61,   62,   63,    5,   64,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -783,305 +780,281 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[67] =
+static const YY_CHAR yy_meta[65] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
-        3,    3,    3,    5,    5,    5,    3,    3,    3,    3,
-        5,    5,    5,    5,    5,    5,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    5,
-        5,    5,    5,    5,    5,    3,    3,    3,    3,    3,
+        3,    3,    3,    5,    3,    3,    3,    3,    5,    5,
+        5,    5,    5,    5,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    5,    5,    5,
+        5,    5,    5,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3
+        3,    3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[435] =
+static const flex_int16_t yy_base[410] =
     {   0,
-        0,    0,   65,   68,   71,    0,   69,   73,   54,   70,
-      742,  743,   89,  738,  137,    0,  192,  743,  197,  200,
-       86,  212,  743,  720,   97,   74,   63,   69,  743,  743,
-       83,   68,   78,  743,  743,  743,  124,  726,  685,    0,
-      718,  128,  733,  212,  234,  743,  681,  687,  172,  679,
-      196,  196,  257,  681,  677,  187,  191,  676,  674,  684,
-      673,  686,   91,  666,  192,  680,  179,  255,  210,    0,
-      289,  305,  313,  320,  293,  743,    0,  743,  236,  250,
-      220,  244,  240,  245,  272,  266,  743,  681,  716,  743,
-      274,  743,  325,  668,  678,  296,  673,  308,  310,  712,
-
-        0,  371,  671,  202,  663,  674,  668,  656,  653,  655,
-      653,  698,  645,  661,  644,  653,  648,  645,  644,  645,
-      640,  298,  657,  650,  653,    0,  310,  318,  317,  311,
-      320,  328,  645,  743,    0,  637,  639,  322,  647,  686,
-      685,  684,  743,  403,  635,  636,  629,  629,  626,  640,
-      672,  625,  620,  622,  639,  667,  631,  295,  632,  664,
-      619,  615,  614,  627,  614,  625,  618,  621,  610,  329,
-      743,  743,  332,  743,  743,  606,    0,  608,  364,  657,
-      614,  743,  743,  435,  605,  616,  603,  647,  611,  599,
-      598,  607,  613,  599,  608,  597,  605,  600,  603,  640,
-
-      344,  586,  600,  637,  586,  597,  584,  595,  627,  626,
-      743,  743,  593,    0,  581,  628,  627,  589,  743,  578,
-      467,  582,  576,  574,  584,  575,  567,  580,  617,  566,
-      581,  577,  579,  562,  553,  560,  743,  561,  558,  555,
-      556,  743,  554,  552,  561,  550,  557,  564,  561,    0,
-      553,  743,  743,  550,  556,  543,  542,  548,  544,  553,
-      585,  539,  743,  551,  541,  536,  539,  533,  545,  582,
-      531,  532,  204,  532,  540,  577,  524,  570,  536,  525,
-      743,  567,  520,  570,  528,  568,  562,  520,  511,  529,
-      509,  557,  523,  522,  521,  558,  557,  743,  510,  503,
-
-      743,  506,  553,  547,  743,  494,  324,  493,  502,  514,
-      547,  743,  500,  743,  494,  510,  505,  500,  503,  503,
-      533,  469,  518,  743,  743,  479,  452,  450,  743,  461,
-      497,  462,  438,  443,  441,  452,  743,  491,  442,  447,
-      443,  429,  430,  442,  743,  427,  743,  416,  431,  414,
-      428,  743,  418,  414,  462,  423,  422,  743,  423,  411,
-      457,  405,  249,  402,  448,  447,  398,  394,  388,  396,
-      395,  743,  376,  384,  386,  378,  743,  428,  375,  426,
-      374,  743,  743,  379,  369,  365,  415,  414,  352,  351,
-      364,  401,  743,  358,  743,  399,  398,  350,  396,  743,
-
-      743,  395,  394,  340,  743,  339,  743,  743,  333,  743,
-      743,  743,  368,  316,  353,  743,  302,  743,  288,  201,
-      241,  743,  743,  512,  517,  522,  527,  532,  537,  540,
-      216,  130,  115,   87
+        0,   63,   17,   27,   35,   42,   46,   51,   80,   89,
+      663,  664,   24,  659,  127,    0,  180,  664,  181,   66,
+        9,  184,  664,  643,  101,   21,   14,   31,  664,  664,
+       22,   61,   66,  664,  664,  664,   98,  647,  608,    0,
+      641,   99,  654,   27,  205,  664,  611,  166,   83,  177,
+      228,  606,  602,  159,   64,  601,  599,  609,  598,  611,
+       71,  591,  164,  605,   16,  185,  187,    0,  194,  252,
+      259,  260,  197,  664,    0,  664,  632,  631,  186,  198,
+      232,  243,  250,  244,  664,  604,  637,  664,  209,  664,
+      274,  602,  253,  257,  259,  635,    0,  318,  596,   71,
+
+      588,  599,  593,  581,  578,  580,  578,  621,  570,  586,
+      569,  578,  573,  570,  569,  570,  565,  173,  582,  575,
+      578,    0,  259,  267,  191,  260,  269,  255,  570,  664,
+        0,  565,  269,  611,  610,  609,  664,  348,  562,  563,
+      556,  556,  553,  567,  597,  552,  547,  549,  566,  592,
+      558,  174,  559,  589,  546,  542,  541,  554,  541,  552,
+      545,  548,  537,  277,  664,  664,  280,  664,  664,  533,
+        0,  567,  582,  664,  664,  378,  533,  544,  531,  573,
+      539,  527,  526,  535,  541,  527,  536,  525,  533,  528,
+      531,  566,  255,  514,  528,  563,  514,  525,  512,  523,
+
+      553,  552,  664,  664,  521,    0,  520,  664,  408,  514,
+      508,  506,  516,  507,  499,  512,  547,  498,  513,  509,
+      511,  494,  485,  492,  664,  493,  490,  487,  488,  664,
+      486,  484,  493,  482,  489,  496,  493,    0,  483,  477,
+      476,  482,  478,  487,  517,  473,  664,  485,  475,  470,
+      473,  467,  479,  514,  465,  466,  298,  466,  474,  509,
+      458,  502,  470,  459,  664,  455,  464,  502,  496,  456,
+      447,  465,  445,  491,  459,  458,  457,  492,  491,  664,
+      446,  439,  664,  442,  487,  481,  664,  430,  255,  429,
+      432,  464,  418,  664,  408,  407,  402,  397,  400,  400,
+
+      434,  384,  432,  664,  664,  399,  384,  382,  664,  393,
+      427,  388,  364,  369,  367,  664,  409,  362,  367,  363,
+      355,  356,  368,  664,  353,  664,  351,  366,  349,  363,
+      664,  353,  343,  389,  352,  664,  353,  334,  378,  328,
+      296,  331,  375,  374,  327,  332,  326,  334,  333,  664,
+      314,  325,  311,  664,  359,  308,  357,  300,  664,  664,
+      305,  301,  297,  344,  343,  292,  305,  340,  664,  299,
+      664,  338,  337,  285,  328,  664,  664,  327,  273,  664,
+      277,  664,  664,  271,  664,  664,  318,  281,  315,  664,
+      197,  664,  162,   69,  118,  664,  664,  451,  456,  461,
+
+      466,  471,  476,  481,  484,  112,   13,    3,    0
     } ;
 
-static const flex_int16_t yy_def[435] =
+static const flex_int16_t yy_def[410] =
     {   0,
-      423,    1,  424,  424,    1,    5,    5,    5,    5,    5,
-      423,  423,  423,  423,  423,  425,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  426,
-      423,  423,  423,  427,   15,  423,   45,   45,   45,   45,
-       45,   45,  428,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  425,
-      423,  423,  423,  423,  423,  423,  429,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  426,  423,
-      427,  423,  423,   45,   45,   45,   45,   45,   45,  430,
-
-       45,  428,   45,   45,   45,   45,   45,   45,   45,   45,
+      398,  398,  399,  399,  398,  398,  398,  398,  398,  398,
+      397,  397,  397,  397,  397,  400,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  401,
+      397,  397,  397,  402,   15,  397,   45,   45,   45,   45,
+      403,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  400,  397,  397,
+      397,  397,  397,  397,  404,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  401,  397,  402,  397,
+      397,   45,   45,   45,   45,  405,   45,  403,   45,   45,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,  429,  423,  423,  423,  423,
-      423,  423,  423,  423,  431,   45,   45,   45,   45,   45,
-       45,  430,  423,  428,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  423,
-      423,  423,  423,  423,  423,  423,  432,   45,   45,   45,
-       45,  423,  423,  428,   45,   45,   45,   45,   45,   45,
+       45,  404,  397,  397,  397,  397,  397,  397,  397,  397,
+      406,   45,   45,   45,   45,  405,  397,  403,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      423,  423,  423,  433,   45,   45,   45,   45,  423,   45,
-      428,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,  423,   45,   45,   45,
-       45,  423,   45,   45,   45,   45,   45,   45,  423,  434,
-       45,  423,  423,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  423,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  397,  397,  397,  397,  397,  397,  397,
+      407,   45,   45,  397,  397,  403,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,  397,  397,  397,  408,   45,  397,  403,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      423,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,  423,   45,   45,
-
-      423,   45,   45,   45,  423,   45,   45,   45,   45,   45,
-       45,  423,   45,  423,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  423,  423,   45,   45,   45,  423,   45,
-       45,   45,   45,   45,   45,   45,  423,   45,   45,   45,
-       45,   45,   45,   45,  423,   45,  423,   45,   45,   45,
-       45,  423,   45,   45,   45,   45,   45,  423,   45,   45,
+       45,   45,   45,   45,  397,   45,   45,   45,   45,  397,
+       45,   45,   45,   45,   45,   45,  397,  409,   45,   45,
+       45,   45,   45,   45,   45,   45,  397,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,  423,   45,   45,   45,   45,  423,   45,   45,   45,
-       45,  423,  423,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  423,   45,  423,   45,   45,   45,   45,  423,
-
-      423,   45,   45,   45,  423,   45,  423,  423,   45,  423,
-      423,  423,   45,   45,   45,  423,   45,  423,   45,   45,
-       45,  423,    0,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423
+       45,   45,   45,   45,  397,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  397,
+       45,   45,  397,   45,   45,   45,  397,   45,   45,   45,
+       45,   45,   45,  397,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,  397,  397,   45,   45,   45,  397,   45,
+       45,   45,   45,   45,   45,  397,   45,   45,   45,   45,
+       45,   45,   45,  397,   45,  397,   45,   45,   45,   45,
+      397,   45,   45,   45,   45,  397,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  397,
+       45,   45,   45,  397,   45,   45,   45,   45,  397,  397,
+       45,   45,   45,   45,   45,   45,   45,   45,  397,   45,
+      397,   45,   45,   45,   45,  397,  397,   45,   45,  397,
+       45,  397,  397,   45,  397,  397,   45,   45,   45,  397,
+       45,  397,   45,   45,   45,  397,    0,  397,  397,  397,
+
+      397,  397,  397,  397,  397,  397,  397,  397,  397
     } ;
 
-static const flex_int16_t yy_nxt[810] =
+static const flex_int16_t yy_nxt[729] =
     {   0,
-       12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
-       12,   12,   12,   12,   25,   26,   12,   12,   27,   12,
-       12,   12,   12,   28,   12,   29,   12,   30,   12,   12,
-       12,   12,   12,   25,   31,   12,   12,   12,   12,   12,
-       12,   12,   32,   12,   12,   12,   12,   33,   12,   12,
-       12,   12,   12,   12,   34,   35,   37,   14,   37,   37,
-       14,   37,   38,   41,   40,   38,   12,   12,   40,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   41,
-       42,   91,   42,   76,   81,   12,   12,   82,   77,   12,
-
-       83,   12,   82,   81,   12,   79,   12,   79,   12,   83,
-       80,   80,   80,   81,   12,   12,   12,   12,   39,  250,
-       12,   82,   84,   12,   83,   42,   85,   42,   12,   42,
-      116,   42,  117,   86,  214,   12,   12,   44,   44,   44,
+      397,   13,   14,   13,   89,   15,   16,  238,   17,   18,
+       19,   20,   21,   22,   23,   24,   74,  206,   37,   14,
+       37,   75,   25,   26,   38,   42,   27,   42,   37,   14,
+       37,   28,   90,   29,   38,   30,   13,   14,   13,   79,
+       79,   25,   31,   13,   14,   13,   80,   13,   14,   13,
+       32,   40,   13,   14,   13,   33,   40,  118,   79,   82,
+       81,   91,   34,   35,   13,   14,   13,  119,   15,   16,
+       80,   17,   18,   19,   20,   21,   22,   23,   24,   73,
+       39,   13,   14,   13,   81,   25,   26,   39,   71,   27,
+       13,   14,   13,   80,   28,   81,   29,   41,   30,   42,
+
+       42,   42,   42,   94,   25,   31,   41,   71,  112,   77,
+      113,   77,  105,   32,   78,  106,  171,   83,   33,   84,
+      140,  141,   94,  396,  395,   34,   35,   44,   44,   44,
        45,   45,   46,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   47,
-       48,   45,   45,   49,   50,   45,   45,   45,   45,   45,
-       51,   52,   45,   53,   45,   45,   54,   45,   55,   56,
-       45,   57,   45,   58,   59,   49,   60,   61,   62,   63,
-       64,   65,   66,   67,   68,   69,   45,   45,   45,   45,
-
-       45,   45,   45,   71,   96,   72,   72,   72,   71,  301,
-       74,   74,   74,   75,   75,   75,   73,   92,   98,   99,
-      177,   73,  122,   71,   73,   74,   74,   74,   96,  105,
-      106,  119,  123,   99,  107,   73,   73,   98,   99,  108,
-       73,  109,  302,   73,  110,  120,  422,  127,   93,   80,
-       80,   80,   99,  146,  147,   73,   45,   45,  421,  379,
-       45,   45,  101,   80,   80,   80,  125,   45,   45,   45,
-      127,  128,  127,   45,  129,   45,   45,   98,   45,   92,
+       45,   45,   45,   45,   45,   45,   45,   45,   47,   45,
+       45,   48,   45,   45,   45,   45,   45,   45,   49,   50,
+       45,   51,   45,   45,   52,   45,   53,   54,   45,   55,
+       45,   56,   57,   48,   58,   59,   60,   61,   62,   63,
+       64,   65,   66,   67,   45,   45,   45,   45,   45,   45,
+       45,   69,   69,   70,   72,   69,   93,   72,   95,  101,
+
+      102,  115,   71,   71,  103,   94,   71,   73,   95,  104,
+       73,  123,  159,  166,   90,  116,   71,   95,  394,   71,
+       93,   71,   71,  124,   94,   71,   45,   95,  190,   45,
+      160,  191,  166,   97,  123,   71,   45,   45,   71,  120,
+       45,  121,   45,   91,   45,   45,  124,   45,  393,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  128,  130,   98,   45,  129,  128,
-
-      129,   45,   75,   75,   75,  380,   75,   75,   75,   45,
-       93,  124,   45,   73,   45,  102,   71,   73,   72,   72,
-       72,   79,  131,   79,  132,  138,   80,   80,   80,   73,
-       91,   71,   73,   74,   74,   74,   73,   91,  140,  165,
-      141,  172,  170,  170,   73,  171,  420,  171,   73,  138,
-      180,  198,  172,  211,  199,  419,  211,  166,  418,  417,
-      172,   91,  140,   73,  141,   91,  170,  173,  171,   91,
-      174,  175,  211,  416,  180,  212,  332,   91,  216,  217,
-       91,  333,   91,  135,  144,  144,  144,  218,  238,  415,
-      414,  144,  144,  144,  144,  144,  144,  413,  239,  412,
-
-      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
-      144,  144,  144,  144,  144,  144,  184,  184,  184,  401,
-      400,  399,  398,  184,  184,  184,  184,  184,  184,  397,
-      396,  395,  394,  393,  392,  391,  390,  389,  388,  387,
-      386,  385,  184,  184,  184,  184,  184,  184,  221,  221,
-      221,  384,  383,  382,  381,  221,  221,  221,  221,  221,
-      221,  378,  377,  376,  375,  374,  373,  372,  371,  370,
-      369,  368,  367,  366,  221,  221,  221,  221,  221,  221,
-       45,   45,   45,  365,  364,  363,  362,   45,   45,   45,
-       45,   45,   45,  361,  360,  359,  358,  357,  356,  355,
-
-      354,  353,  352,  351,  350,  349,   45,   45,   45,   45,
-       45,   45,   36,   36,   36,   36,   36,   70,  348,   70,
-       70,   70,   89,  347,   89,  346,   89,   91,   91,   91,
-       91,   91,  100,  100,  100,  100,  100,  126,  345,  126,
-      126,  126,  142,  142,  142,  344,  343,  342,  341,  340,
-      339,  338,  337,  336,  335,  334,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  303,  300,  299,  298,  297,  296,
-      295,  294,  293,  292,  291,  290,  289,  288,  287,  286,
-
-      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
-      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  253,  252,  251,  249,  248,  247,  246,  245,
-      244,  243,  242,  241,  240,  237,  236,  235,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  220,  219,  215,  213,  210,  209,  208,  207,  206,
-      205,  204,  203,  202,  201,  200,  197,  196,  195,  194,
-      193,  192,  191,  190,  189,  188,  187,  186,  185,  143,
-      183,  182,  181,  179,  178,  176,  169,  168,  167,  164,
-
-      163,  162,  161,  160,  159,  158,  157,  156,  155,  154,
-      153,  152,  151,  150,  149,  148,  145,  143,  139,  137,
-      136,  134,  133,  121,  118,  115,  114,  113,  112,  111,
-      104,  103,   97,   95,   94,   43,   90,   88,   87,   78,
-       43,  423,   11,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-
-      423,  423,  423,  423,  423,  423,  423,  423,  423
+       45,   45,   45,   69,  125,   70,   45,   77,  123,   77,
+       45,   69,   78,   72,   71,  124,  125,  166,   45,   89,
+      133,   45,   71,   45,   98,  134,   89,  135,  125,  164,
+      164,  126,  165,   71,  165,  173,  169,  226,  127,  203,
+
+      128,   71,  203,  283,  133,  312,  356,  227,   89,  134,
+      313,  135,   89,  164,  167,  165,   89,  168,  203,  173,
+      392,  204,  391,  390,   89,  389,  388,   89,  387,   89,
+      131,  138,  386,  385,  284,  384,  138,  138,  138,  138,
+      138,  138,  383,  382,  381,  380,  379,  378,  377,  376,
+      357,  375,  374,  373,  372,  138,  138,  138,  138,  138,
+      138,  176,  371,  370,  369,  368,  176,  176,  176,  176,
+      176,  176,  367,  366,  365,  364,  363,  362,  361,  360,
+      359,  358,  355,  354,  353,  176,  176,  176,  176,  176,
+      176,  209,  352,  351,  350,  349,  209,  209,  209,  209,
+
+      209,  209,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  337,  336,  209,  209,  209,  209,  209,
+      209,   45,  335,  334,  333,  332,   45,   45,   45,   45,
+       45,   45,  331,  330,  329,  328,  327,  326,  325,  324,
+      323,  322,  321,  320,  319,   45,   45,   45,   45,   45,
+       45,   12,   12,   12,   12,   12,   36,   36,   36,   36,
+       36,   68,  318,   68,   68,   68,   87,  317,   87,  316,
+       87,   89,   89,   89,   89,   89,   96,   96,   96,   96,
+       96,  122,  315,  122,  122,  122,  136,  136,  136,  314,
+      311,  310,  309,  308,  307,  306,  305,  304,  303,  302,
+
+      301,  300,  299,  298,  297,  296,  295,  294,  293,  292,
+      291,  290,  289,  288,  287,  286,  285,  282,  281,  280,
+      279,  278,  277,  276,  275,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
+      249,  248,  247,  246,  245,  244,  243,  242,  241,  240,
+      239,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  225,  224,  223,  222,  221,  220,  219,  218,  217,
+      216,  215,  214,  213,  212,  211,  210,  208,  207,  205,
+      202,  201,  200,  199,  198,  197,  196,  195,  194,  193,
+
+      192,  189,  188,  187,  186,  185,  184,  183,  182,  181,
+      180,  179,  178,  177,  137,  175,  174,  172,  170,  163,
+      162,  161,  158,  157,  156,  155,  154,  153,  152,  151,
+      150,  149,  148,  147,  146,  145,  144,  143,  142,  139,
+      137,  132,  130,  129,   78,   78,  117,  114,  111,  110,
+      109,  108,  107,  100,   99,   92,   43,   88,   86,   85,
+       76,   43,  397,   11,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397
     } ;
 
-static const flex_int16_t yy_chk[810] =
+static const flex_int16_t yy_chk[729] =
     {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    3,    3,    3,    4,
-        4,    4,    3,    9,    7,    4,    5,    5,    8,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,   10,
-       13,  434,   13,   21,   26,    5,    5,   27,   21,    5,
-
-       28,    9,   32,   31,    5,   25,    5,   25,    5,   33,
-       25,   25,   25,   26,    5,    5,    7,   10,    5,  433,
-        8,   27,   31,    5,   28,   37,   32,   37,    5,   42,
-       63,   42,   63,   33,  432,    5,    5,   15,   15,   15,
+        0,    1,    1,    1,  409,    1,    1,  408,    1,    1,
+        1,    1,    1,    1,    1,    1,   21,  407,    3,    3,
+        3,   21,    1,    1,    3,   13,    1,   13,    4,    4,
+        4,    1,   44,    1,    4,    1,    5,    5,    5,   26,
+       31,    1,    1,    6,    6,    6,   27,    7,    7,    7,
+        1,    7,    8,    8,    8,    1,    8,   65,   26,   31,
+       28,   44,    1,    1,    2,    2,    2,   65,    2,    2,
+       27,    2,    2,    2,    2,    2,    2,    2,    2,   20,
+        5,    9,    9,    9,   28,    2,    2,    6,   20,    2,
+       10,   10,   10,   32,    2,   33,    2,    9,    2,   37,
+
+       42,   37,   42,   49,    2,    2,   10,   20,   61,   25,
+       61,   25,   55,    2,   25,   55,  406,   32,    2,   33,
+      100,  100,   49,  395,  394,    2,    2,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   17,   19,   17,   19,   22,   48,   22,   50,   54,
 
-       15,   15,   15,   17,   49,   17,   17,   17,   19,  273,
-       19,   19,   19,   20,   20,   20,   17,   44,   51,   52,
-      431,   19,   67,   22,   20,   22,   22,   22,   49,   56,
-       56,   65,   67,   69,   56,   17,   22,   51,   52,   56,
-       19,   57,  273,   20,   57,   65,  421,   81,   44,   79,
-       79,   79,   69,  104,  104,   22,   45,   45,  420,  363,
-       45,   45,   53,   80,   80,   80,   69,   45,   45,   53,
-       81,   82,   84,   45,   83,   45,   45,   68,   45,   91,
+       54,   63,   17,   19,   54,   66,   22,   69,   67,   54,
+       73,   79,  118,  125,   89,   63,   69,   50,  393,   73,
+       48,   17,   19,   80,   66,   22,   45,   67,  152,   45,
+      118,  152,  125,   51,   79,   69,   45,   45,   73,   66,
+       51,   67,   45,   89,   45,   45,   80,   45,  391,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   53,   82,   84,   68,   53,   83,   85,
-
-       86,   53,   71,   71,   71,  363,   75,   75,   75,   53,
-       91,   68,   53,   71,   53,   53,   72,   75,   72,   72,
-       72,   73,   85,   73,   86,   96,   73,   73,   73,   72,
-       93,   74,   71,   74,   74,   74,   75,   93,   98,  122,
-       99,  129,  127,  130,   74,  128,  419,  131,   72,   96,
-      138,  158,  132,  170,  158,  417,  173,  122,  415,  414,
-      129,   93,   98,   74,   99,   93,  127,  130,  128,   93,
-      131,  132,  170,  413,  138,  173,  307,   93,  179,  179,
-       93,  307,   93,   93,  102,  102,  102,  179,  201,  409,
-      406,  102,  102,  102,  102,  102,  102,  404,  201,  403,
-
-      402,  399,  398,  397,  396,  394,  392,  391,  390,  389,
-      102,  102,  102,  102,  102,  102,  144,  144,  144,  388,
-      387,  386,  385,  144,  144,  144,  144,  144,  144,  384,
-      381,  380,  379,  378,  376,  375,  374,  373,  371,  370,
-      369,  368,  144,  144,  144,  144,  144,  144,  184,  184,
-      184,  367,  366,  365,  364,  184,  184,  184,  184,  184,
-      184,  362,  361,  360,  359,  357,  356,  355,  354,  353,
-      351,  350,  349,  348,  184,  184,  184,  184,  184,  184,
-      221,  221,  221,  346,  344,  343,  342,  221,  221,  221,
-      221,  221,  221,  341,  340,  339,  338,  336,  335,  334,
-
-      333,  332,  331,  330,  328,  327,  221,  221,  221,  221,
-      221,  221,  424,  424,  424,  424,  424,  425,  326,  425,
-      425,  425,  426,  323,  426,  322,  426,  427,  427,  427,
-      427,  427,  428,  428,  428,  428,  428,  429,  321,  429,
-      429,  429,  430,  430,  430,  320,  319,  318,  317,  316,
-      315,  313,  311,  310,  309,  308,  306,  304,  303,  302,
-      300,  299,  297,  296,  295,  294,  293,  292,  291,  290,
-      289,  288,  287,  286,  285,  284,  283,  282,  280,  279,
-      278,  277,  276,  275,  274,  272,  271,  270,  269,  268,
-      267,  266,  265,  264,  262,  261,  260,  259,  258,  257,
-
-      256,  255,  254,  251,  249,  248,  247,  246,  245,  244,
-      243,  241,  240,  239,  238,  236,  235,  234,  233,  232,
-      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
-      220,  218,  217,  216,  215,  213,  210,  209,  208,  207,
-      206,  205,  204,  203,  202,  200,  199,  198,  197,  196,
-      195,  194,  193,  192,  191,  190,  189,  188,  187,  186,
-      185,  181,  180,  178,  176,  169,  168,  167,  166,  165,
-      164,  163,  162,  161,  160,  159,  157,  156,  155,  154,
-      153,  152,  151,  150,  149,  148,  147,  146,  145,  142,
-      141,  140,  139,  137,  136,  133,  125,  124,  123,  121,
-
-      120,  119,  118,  117,  116,  115,  114,  113,  112,  111,
-      110,  109,  108,  107,  106,  105,  103,  100,   97,   95,
-       94,   89,   88,   66,   64,   62,   61,   60,   59,   58,
-       55,   54,   50,   48,   47,   43,   41,   39,   38,   24,
-       14,   11,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-
-      423,  423,  423,  423,  423,  423,  423,  423,  423
+       45,   45,   51,   70,   81,   70,   51,   71,   82,   71,
+       51,   72,   71,   72,   70,   83,   84,  128,   51,   91,
+       93,   51,   72,   51,   51,   94,   91,   95,   81,  123,
+      126,   82,  124,   70,  127,  133,  128,  193,   83,  164,
+
+       84,   72,  167,  257,   93,  289,  341,  193,   91,   94,
+      289,   95,   91,  123,  126,  124,   91,  127,  164,  133,
+      389,  167,  388,  387,   91,  384,  381,   91,  379,   91,
+       91,   98,  378,  375,  257,  374,   98,   98,   98,   98,
+       98,   98,  373,  372,  370,  368,  367,  366,  365,  364,
+      341,  363,  362,  361,  358,   98,   98,   98,   98,   98,
+       98,  138,  357,  356,  355,  353,  138,  138,  138,  138,
+      138,  138,  352,  351,  349,  348,  347,  346,  345,  344,
+      343,  342,  340,  339,  338,  138,  138,  138,  138,  138,
+      138,  176,  337,  335,  334,  333,  176,  176,  176,  176,
+
+      176,  176,  332,  330,  329,  328,  327,  325,  323,  322,
+      321,  320,  319,  318,  317,  176,  176,  176,  176,  176,
+      176,  209,  315,  314,  313,  312,  209,  209,  209,  209,
+      209,  209,  311,  310,  308,  307,  306,  303,  302,  301,
+      300,  299,  298,  297,  296,  209,  209,  209,  209,  209,
+      209,  398,  398,  398,  398,  398,  399,  399,  399,  399,
+      399,  400,  295,  400,  400,  400,  401,  293,  401,  292,
+      401,  402,  402,  402,  402,  402,  403,  403,  403,  403,
+      403,  404,  291,  404,  404,  404,  405,  405,  405,  290,
+      288,  286,  285,  284,  282,  281,  279,  278,  277,  276,
+
+      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
+      264,  263,  262,  261,  260,  259,  258,  256,  255,  254,
+      253,  252,  251,  250,  249,  248,  246,  245,  244,  243,
+      242,  241,  240,  239,  237,  236,  235,  234,  233,  232,
+      231,  229,  228,  227,  226,  224,  223,  222,  221,  220,
+      219,  218,  217,  216,  215,  214,  213,  212,  211,  210,
+      207,  205,  202,  201,  200,  199,  198,  197,  196,  195,
+      194,  192,  191,  190,  189,  188,  187,  186,  185,  184,
+      183,  182,  181,  180,  179,  178,  177,  173,  172,  170,
+      163,  162,  161,  160,  159,  158,  157,  156,  155,  154,
+
+      153,  151,  150,  149,  148,  147,  146,  145,  144,  143,
+      142,  141,  140,  139,  136,  135,  134,  132,  129,  121,
+      120,  119,  117,  116,  115,  114,  113,  112,  111,  110,
+      109,  108,  107,  106,  105,  104,  103,  102,  101,   99,
+       96,   92,   87,   86,   78,   77,   64,   62,   60,   59,
+       58,   57,   56,   53,   52,   47,   43,   41,   39,   38,
+       24,   14,   11,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  397
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1090,15 +1063,15 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[68] =
+static const flex_int16_t yy_rule_linenum[64] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  176,  185,  196,  207,  216,  225,  234,  244,  254,
       264,  281,  298,  307,  316,  326,  336,  346,  357,  366,
-      376,  386,  396,  405,  414,  424,  433,  443,  452,  461,
-      470,  479,  488,  497,  510,  519,  528,  537,  546,  556,
-      655,  660,  665,  670,  671,  672,  673,  674,  675,  677,
-      695,  708,  713,  717,  719,  721,  723
+      376,  386,  396,  405,  414,  423,  432,  441,  450,  459,
+      468,  477,  486,  499,  508,  517,  616,  621,  626,  631,
+      632,  633,  634,  635,  636,  638,  656,  669,  674,  678,
+      680,  682,  684
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1110,7 +1083,7 @@ static const flex_int16_t yy_rule_linenum[68] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "d2_lexer.ll"
-/* Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2017-2020 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -1149,7 +1122,7 @@ unsigned int comment_start_line = 0;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::d2::D2ParserContext::fatal(msg)
-#line 1152 "d2_lexer.cc"
+#line 1125 "d2_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1175,8 +1148,8 @@ unsigned int comment_start_line = 0;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1178 "d2_lexer.cc"
-#line 1179 "d2_lexer.cc"
+#line 1151 "d2_lexer.cc"
+#line 1152 "d2_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1494,7 +1467,7 @@ YY_DECL
     }
 
 
-#line 1497 "d2_lexer.cc"
+#line 1470 "d2_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1523,13 +1496,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 >= 424 )
+                               if ( yy_current_state >= 398 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 423 );
+               while ( yy_current_state != 397 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1548,13 +1521,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 68 )
+                       else if ( yy_act < 64 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 68 )
+                       else if ( yy_act == 64 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 69 )
+                       else if ( yy_act == 65 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1978,32 +1951,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 424 "d2_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::d2::D2ParserContext::CONFIG:
-        return isc::d2::D2Parser::make_LOGGING(driver.loc_);
-    default:
-        return isc::d2::D2Parser::make_STRING("Logging", driver.loc_);
-    }
-}
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 433 "d2_lexer.ll"
+#line 423 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::DHCPDDNS:
-    case isc::d2::D2ParserContext::LOGGING:
         return isc::d2::D2Parser::make_LOGGERS(driver.loc_);
     default:
         return isc::d2::D2Parser::make_STRING("loggers", driver.loc_);
     }
 }
        YY_BREAK
-case 38:
+case 37:
 YY_RULE_SETUP
-#line 443 "d2_lexer.ll"
+#line 432 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2013,9 +1973,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 38:
 YY_RULE_SETUP
-#line 452 "d2_lexer.ll"
+#line 441 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
@@ -2025,9 +1985,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 39:
 YY_RULE_SETUP
-#line 461 "d2_lexer.ll"
+#line 450 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
@@ -2037,9 +1997,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 40:
 YY_RULE_SETUP
-#line 470 "d2_lexer.ll"
+#line 459 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
@@ -2049,9 +2009,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 41:
 YY_RULE_SETUP
-#line 479 "d2_lexer.ll"
+#line 468 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
@@ -2061,9 +2021,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 42:
 YY_RULE_SETUP
-#line 488 "d2_lexer.ll"
+#line 477 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
@@ -2073,9 +2033,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 43:
 YY_RULE_SETUP
-#line 497 "d2_lexer.ll"
+#line 486 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2089,9 +2049,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 44:
 YY_RULE_SETUP
-#line 510 "d2_lexer.ll"
+#line 499 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2101,9 +2061,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 45:
 YY_RULE_SETUP
-#line 519 "d2_lexer.ll"
+#line 508 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2113,45 +2073,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 528 "d2_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::d2::D2ParserContext::CONFIG:
-        return isc::d2::D2Parser::make_DHCP4(driver.loc_);
-    default:
-        return isc::d2::D2Parser::make_STRING("Dhcp4", driver.loc_);
-    }
-}
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 537 "d2_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::d2::D2ParserContext::CONFIG:
-        return isc::d2::D2Parser::make_DHCP6(driver.loc_);
-    default:
-        return isc::d2::D2Parser::make_STRING("Dhcp6", driver.loc_);
-    }
-}
-       YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 546 "d2_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::d2::D2ParserContext::CONFIG:
-        return isc::d2::D2Parser::make_CONTROL_AGENT(driver.loc_);
-    default:
-        return isc::d2::D2Parser::make_STRING("Control-agent", driver.loc_);
-    }
-}
-       YY_BREAK
-case 50:
+case 46:
 YY_RULE_SETUP
-#line 556 "d2_lexer.ll"
+#line 517 "d2_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -2251,65 +2175,65 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 51:
-/* rule 51 can match eol */
+case 47:
+/* rule 47 can match eol */
 YY_RULE_SETUP
-#line 655 "d2_lexer.ll"
+#line 616 "d2_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 52:
-/* rule 52 can match eol */
+case 48:
+/* rule 48 can match eol */
 YY_RULE_SETUP
-#line 660 "d2_lexer.ll"
+#line 621 "d2_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 53:
+case 49:
 YY_RULE_SETUP
-#line 665 "d2_lexer.ll"
+#line 626 "d2_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 54:
+case 50:
 YY_RULE_SETUP
-#line 670 "d2_lexer.ll"
+#line 631 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 55:
+case 51:
 YY_RULE_SETUP
-#line 671 "d2_lexer.ll"
+#line 632 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 56:
+case 52:
 YY_RULE_SETUP
-#line 672 "d2_lexer.ll"
+#line 633 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 57:
+case 53:
 YY_RULE_SETUP
-#line 673 "d2_lexer.ll"
+#line 634 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 58:
+case 54:
 YY_RULE_SETUP
-#line 674 "d2_lexer.ll"
+#line 635 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 59:
+case 55:
 YY_RULE_SETUP
-#line 675 "d2_lexer.ll"
+#line 636 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 60:
+case 56:
 YY_RULE_SETUP
-#line 677 "d2_lexer.ll"
+#line 638 "d2_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -2328,9 +2252,9 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 61:
+case 57:
 YY_RULE_SETUP
-#line 695 "d2_lexer.ll"
+#line 656 "d2_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -2344,43 +2268,43 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 62:
+case 58:
 YY_RULE_SETUP
-#line 708 "d2_lexer.ll"
+#line 669 "d2_lexer.ll"
 {
     string tmp(yytext);
     return isc::d2::D2Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 63:
+case 59:
 YY_RULE_SETUP
-#line 713 "d2_lexer.ll"
+#line 674 "d2_lexer.ll"
 {
    return isc::d2::D2Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 64:
+case 60:
 YY_RULE_SETUP
-#line 717 "d2_lexer.ll"
+#line 678 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 65:
+case 61:
 YY_RULE_SETUP
-#line 719 "d2_lexer.ll"
+#line 680 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 66:
+case 62:
 YY_RULE_SETUP
-#line 721 "d2_lexer.ll"
+#line 682 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 67:
+case 63:
 YY_RULE_SETUP
-#line 723 "d2_lexer.ll"
+#line 684 "d2_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 725 "d2_lexer.ll"
+#line 686 "d2_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::d2::D2Parser::make_END(driver.loc_);
@@ -2404,12 +2328,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 68:
+case 64:
 YY_RULE_SETUP
-#line 748 "d2_lexer.ll"
+#line 709 "d2_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2412 "d2_lexer.cc"
+#line 2336 "d2_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2728,7 +2652,7 @@ static int yy_get_next_buffer (void)
                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 >= 424 )
+                       if ( yy_current_state >= 398 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2761,11 +2685,11 @@ static int yy_get_next_buffer (void)
        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 >= 424 )
+               if ( yy_current_state >= 398 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 423);
+       yy_is_jam = (yy_current_state == 397);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3514,7 +3438,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 748 "d2_lexer.ll"
+#line 709 "d2_lexer.ll"
 
 
 using namespace isc::dhcp;
index 529c3dfa856b413a5e39d5f8a30ced4889c3afbb..1dd1012cb42f345cd95dad44bda9aac227701ada 100644 (file)
@@ -209,25 +209,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -377,44 +377,44 @@ namespace isc { namespace d2 {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 57: // "constant string"
-#line 116 "d2_parser.yy"
+      case 53: // "constant string"
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "d2_parser.cc"
         break;
 
-      case 58: // "integer"
-#line 116 "d2_parser.yy"
+      case 54: // "integer"
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "d2_parser.cc"
         break;
 
-      case 59: // "floating point"
-#line 116 "d2_parser.yy"
+      case 55: // "floating point"
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "d2_parser.cc"
         break;
 
-      case 60: // "boolean"
-#line 116 "d2_parser.yy"
+      case 56: // "boolean"
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "d2_parser.cc"
         break;
 
-      case 72: // value
-#line 116 "d2_parser.yy"
+      case 68: // value
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "d2_parser.cc"
         break;
 
-      case 76: // map_value
-#line 116 "d2_parser.yy"
+      case 72: // map_value
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "d2_parser.cc"
         break;
 
-      case 100: // ncr_protocol_value
-#line 116 "d2_parser.yy"
+      case 96: // ncr_protocol_value
+#line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "d2_parser.cc"
         break;
@@ -646,25 +646,25 @@ namespace isc { namespace d2 {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -689,103 +689,103 @@ namespace isc { namespace d2 {
           switch (yyn)
             {
   case 2:
-#line 125 "d2_parser.yy"
+#line 120 "d2_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 695 "d2_parser.cc"
     break;
 
   case 4:
-#line 126 "d2_parser.yy"
+#line 121 "d2_parser.yy"
                          { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "d2_parser.cc"
     break;
 
   case 6:
-#line 127 "d2_parser.yy"
+#line 122 "d2_parser.yy"
                     { ctx.ctx_ = ctx.DHCPDDNS; }
 #line 707 "d2_parser.cc"
     break;
 
   case 8:
-#line 128 "d2_parser.yy"
+#line 123 "d2_parser.yy"
                     { ctx.ctx_ = ctx.TSIG_KEY; }
 #line 713 "d2_parser.cc"
     break;
 
   case 10:
-#line 129 "d2_parser.yy"
+#line 124 "d2_parser.yy"
                      { ctx.ctx_ = ctx.TSIG_KEYS; }
 #line 719 "d2_parser.cc"
     break;
 
   case 12:
-#line 130 "d2_parser.yy"
+#line 125 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 #line 725 "d2_parser.cc"
     break;
 
   case 14:
-#line 131 "d2_parser.yy"
+#line 126 "d2_parser.yy"
                         { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 #line 731 "d2_parser.cc"
     break;
 
   case 16:
-#line 132 "d2_parser.yy"
+#line 127 "d2_parser.yy"
                       { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 737 "d2_parser.cc"
     break;
 
   case 18:
-#line 133 "d2_parser.yy"
+#line 128 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 743 "d2_parser.cc"
     break;
 
   case 20:
-#line 141 "d2_parser.yy"
+#line 136 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 749 "d2_parser.cc"
     break;
 
   case 21:
-#line 142 "d2_parser.yy"
+#line 137 "d2_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 755 "d2_parser.cc"
     break;
 
   case 22:
-#line 143 "d2_parser.yy"
+#line 138 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 761 "d2_parser.cc"
     break;
 
   case 23:
-#line 144 "d2_parser.yy"
+#line 139 "d2_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 767 "d2_parser.cc"
     break;
 
   case 24:
-#line 145 "d2_parser.yy"
+#line 140 "d2_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 773 "d2_parser.cc"
     break;
 
   case 25:
-#line 146 "d2_parser.yy"
+#line 141 "d2_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 779 "d2_parser.cc"
     break;
 
   case 26:
-#line 147 "d2_parser.yy"
+#line 142 "d2_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 785 "d2_parser.cc"
     break;
 
   case 27:
-#line 150 "d2_parser.yy"
+#line 145 "d2_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -794,7 +794,7 @@ namespace isc { namespace d2 {
     break;
 
   case 28:
-#line 155 "d2_parser.yy"
+#line 150 "d2_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -805,7 +805,7 @@ namespace isc { namespace d2 {
     break;
 
   case 29:
-#line 160 "d2_parser.yy"
+#line 155 "d2_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -815,13 +815,13 @@ namespace isc { namespace d2 {
     break;
 
   case 30:
-#line 166 "d2_parser.yy"
+#line 161 "d2_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 821 "d2_parser.cc"
     break;
 
   case 33:
-#line 173 "d2_parser.yy"
+#line 168 "d2_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -830,7 +830,7 @@ namespace isc { namespace d2 {
     break;
 
   case 34:
-#line 177 "d2_parser.yy"
+#line 172 "d2_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -840,7 +840,7 @@ namespace isc { namespace d2 {
     break;
 
   case 35:
-#line 184 "d2_parser.yy"
+#line 179 "d2_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -849,7 +849,7 @@ namespace isc { namespace d2 {
     break;
 
   case 36:
-#line 187 "d2_parser.yy"
+#line 182 "d2_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -857,7 +857,7 @@ namespace isc { namespace d2 {
     break;
 
   case 39:
-#line 195 "d2_parser.yy"
+#line 190 "d2_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -866,7 +866,7 @@ namespace isc { namespace d2 {
     break;
 
   case 40:
-#line 199 "d2_parser.yy"
+#line 194 "d2_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -875,7 +875,7 @@ namespace isc { namespace d2 {
     break;
 
   case 41:
-#line 210 "d2_parser.yy"
+#line 205 "d2_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -886,7 +886,7 @@ namespace isc { namespace d2 {
     break;
 
   case 42:
-#line 220 "d2_parser.yy"
+#line 214 "d2_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -897,7 +897,7 @@ namespace isc { namespace d2 {
     break;
 
   case 43:
-#line 225 "d2_parser.yy"
+#line 219 "d2_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -906,8 +906,8 @@ namespace isc { namespace d2 {
 #line 907 "d2_parser.cc"
     break;
 
-  case 52:
-#line 247 "d2_parser.yy"
+  case 46:
+#line 235 "d2_parser.yy"
                           {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("DhcpDdns", m);
@@ -917,8 +917,8 @@ namespace isc { namespace d2 {
 #line 918 "d2_parser.cc"
     break;
 
-  case 53:
-#line 252 "d2_parser.yy"
+  case 47:
+#line 240 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -926,8 +926,8 @@ namespace isc { namespace d2 {
 #line 927 "d2_parser.cc"
     break;
 
-  case 54:
-#line 257 "d2_parser.yy"
+  case 48:
+#line 245 "d2_parser.yy"
                              {
     // Parse the dhcpddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -936,24 +936,24 @@ namespace isc { namespace d2 {
 #line 937 "d2_parser.cc"
     break;
 
-  case 55:
-#line 261 "d2_parser.yy"
+  case 49:
+#line 249 "d2_parser.yy"
                                  {
     // parsing completed
 }
 #line 945 "d2_parser.cc"
     break;
 
-  case 71:
-#line 285 "d2_parser.yy"
+  case 65:
+#line 273 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 953 "d2_parser.cc"
     break;
 
-  case 72:
-#line 287 "d2_parser.yy"
+  case 66:
+#line 275 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", s);
@@ -962,8 +962,8 @@ namespace isc { namespace d2 {
 #line 963 "d2_parser.cc"
     break;
 
-  case 73:
-#line 293 "d2_parser.yy"
+  case 67:
+#line 281 "d2_parser.yy"
                          {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
         error(yystack_[0].location, "port must be greater than zero but less than 65536");
@@ -974,8 +974,8 @@ namespace isc { namespace d2 {
 #line 975 "d2_parser.cc"
     break;
 
-  case 74:
-#line 301 "d2_parser.yy"
+  case 68:
+#line 289 "d2_parser.yy"
                                                      {
     if (yystack_[0].value.as < int64_t > () <= 0) {
         error(yystack_[0].location, "dns-server-timeout must be greater than zero");
@@ -987,16 +987,16 @@ namespace isc { namespace d2 {
 #line 988 "d2_parser.cc"
     break;
 
-  case 75:
-#line 310 "d2_parser.yy"
+  case 69:
+#line 298 "d2_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
 #line 996 "d2_parser.cc"
     break;
 
-  case 76:
-#line 312 "d2_parser.yy"
+  case 70:
+#line 300 "d2_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1004,28 +1004,28 @@ namespace isc { namespace d2 {
 #line 1005 "d2_parser.cc"
     break;
 
-  case 77:
-#line 318 "d2_parser.yy"
+  case 71:
+#line 306 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 1011 "d2_parser.cc"
     break;
 
-  case 78:
-#line 319 "d2_parser.yy"
+  case 72:
+#line 307 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 1017 "d2_parser.cc"
     break;
 
-  case 79:
-#line 322 "d2_parser.yy"
+  case 73:
+#line 310 "d2_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
 #line 1025 "d2_parser.cc"
     break;
 
-  case 80:
-#line 324 "d2_parser.yy"
+  case 74:
+#line 312 "d2_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -1034,16 +1034,16 @@ namespace isc { namespace d2 {
 #line 1035 "d2_parser.cc"
     break;
 
-  case 81:
-#line 330 "d2_parser.yy"
+  case 75:
+#line 318 "d2_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1043 "d2_parser.cc"
     break;
 
-  case 82:
-#line 332 "d2_parser.yy"
+  case 76:
+#line 320 "d2_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -1069,16 +1069,16 @@ namespace isc { namespace d2 {
 #line 1070 "d2_parser.cc"
     break;
 
-  case 83:
-#line 355 "d2_parser.yy"
+  case 77:
+#line 343 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1078 "d2_parser.cc"
     break;
 
-  case 84:
-#line 357 "d2_parser.yy"
+  case 78:
+#line 345 "d2_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -1106,8 +1106,8 @@ namespace isc { namespace d2 {
 #line 1107 "d2_parser.cc"
     break;
 
-  case 85:
-#line 382 "d2_parser.yy"
+  case 79:
+#line 370 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("forward-ddns", m);
@@ -1117,8 +1117,8 @@ namespace isc { namespace d2 {
 #line 1118 "d2_parser.cc"
     break;
 
-  case 86:
-#line 387 "d2_parser.yy"
+  case 80:
+#line 375 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1126,8 +1126,8 @@ namespace isc { namespace d2 {
 #line 1127 "d2_parser.cc"
     break;
 
-  case 87:
-#line 392 "d2_parser.yy"
+  case 81:
+#line 380 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reverse-ddns", m);
@@ -1137,8 +1137,8 @@ namespace isc { namespace d2 {
 #line 1138 "d2_parser.cc"
     break;
 
-  case 88:
-#line 397 "d2_parser.yy"
+  case 82:
+#line 385 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1146,8 +1146,8 @@ namespace isc { namespace d2 {
 #line 1147 "d2_parser.cc"
     break;
 
-  case 95:
-#line 416 "d2_parser.yy"
+  case 89:
+#line 404 "d2_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-domains", l);
@@ -1157,8 +1157,8 @@ namespace isc { namespace d2 {
 #line 1158 "d2_parser.cc"
     break;
 
-  case 96:
-#line 421 "d2_parser.yy"
+  case 90:
+#line 409 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1166,8 +1166,8 @@ namespace isc { namespace d2 {
 #line 1167 "d2_parser.cc"
     break;
 
-  case 97:
-#line 426 "d2_parser.yy"
+  case 91:
+#line 414 "d2_parser.yy"
                                   {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1175,16 +1175,16 @@ namespace isc { namespace d2 {
 #line 1176 "d2_parser.cc"
     break;
 
-  case 98:
-#line 429 "d2_parser.yy"
+  case 92:
+#line 417 "d2_parser.yy"
                                    {
     // parsing completed
 }
 #line 1184 "d2_parser.cc"
     break;
 
-  case 103:
-#line 441 "d2_parser.yy"
+  case 97:
+#line 429 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1193,16 +1193,16 @@ namespace isc { namespace d2 {
 #line 1194 "d2_parser.cc"
     break;
 
-  case 104:
-#line 445 "d2_parser.yy"
+  case 98:
+#line 433 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 1202 "d2_parser.cc"
     break;
 
-  case 105:
-#line 449 "d2_parser.yy"
+  case 99:
+#line 437 "d2_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1210,24 +1210,24 @@ namespace isc { namespace d2 {
 #line 1211 "d2_parser.cc"
     break;
 
-  case 106:
-#line 452 "d2_parser.yy"
+  case 100:
+#line 440 "d2_parser.yy"
                                     {
     // parsing completed
 }
 #line 1219 "d2_parser.cc"
     break;
 
-  case 115:
-#line 469 "d2_parser.yy"
+  case 109:
+#line 457 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1227 "d2_parser.cc"
     break;
 
-  case 116:
-#line 471 "d2_parser.yy"
+  case 110:
+#line 459 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
         error(yystack_[1].location, "Ddns domain name cannot be blank");
@@ -1240,16 +1240,16 @@ namespace isc { namespace d2 {
 #line 1241 "d2_parser.cc"
     break;
 
-  case 117:
-#line 481 "d2_parser.yy"
+  case 111:
+#line 469 "d2_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1249 "d2_parser.cc"
     break;
 
-  case 118:
-#line 483 "d2_parser.yy"
+  case 112:
+#line 471 "d2_parser.yy"
                {
     ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1259,8 +1259,8 @@ namespace isc { namespace d2 {
 #line 1260 "d2_parser.cc"
     break;
 
-  case 119:
-#line 493 "d2_parser.yy"
+  case 113:
+#line 481 "d2_parser.yy"
                          {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dns-servers", l);
@@ -1270,8 +1270,8 @@ namespace isc { namespace d2 {
 #line 1271 "d2_parser.cc"
     break;
 
-  case 120:
-#line 498 "d2_parser.yy"
+  case 114:
+#line 486 "d2_parser.yy"
                                                         {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1279,8 +1279,8 @@ namespace isc { namespace d2 {
 #line 1280 "d2_parser.cc"
     break;
 
-  case 121:
-#line 503 "d2_parser.yy"
+  case 115:
+#line 491 "d2_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1288,16 +1288,16 @@ namespace isc { namespace d2 {
 #line 1289 "d2_parser.cc"
     break;
 
-  case 122:
-#line 506 "d2_parser.yy"
+  case 116:
+#line 494 "d2_parser.yy"
                                   {
     // parsing completed
 }
 #line 1297 "d2_parser.cc"
     break;
 
-  case 125:
-#line 514 "d2_parser.yy"
+  case 119:
+#line 502 "d2_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1306,16 +1306,16 @@ namespace isc { namespace d2 {
 #line 1307 "d2_parser.cc"
     break;
 
-  case 126:
-#line 518 "d2_parser.yy"
+  case 120:
+#line 506 "d2_parser.yy"
                                    {
     ctx.stack_.pop_back();
 }
 #line 1315 "d2_parser.cc"
     break;
 
-  case 127:
-#line 522 "d2_parser.yy"
+  case 121:
+#line 510 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1323,24 +1323,24 @@ namespace isc { namespace d2 {
 #line 1324 "d2_parser.cc"
     break;
 
-  case 128:
-#line 525 "d2_parser.yy"
+  case 122:
+#line 513 "d2_parser.yy"
                                    {
     // parsing completed
 }
 #line 1332 "d2_parser.cc"
     break;
 
-  case 137:
-#line 541 "d2_parser.yy"
+  case 131:
+#line 529 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1340 "d2_parser.cc"
     break;
 
-  case 138:
-#line 543 "d2_parser.yy"
+  case 132:
+#line 531 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () != "") {
         error(yystack_[1].location, "hostname is not yet supported");
@@ -1353,16 +1353,16 @@ namespace isc { namespace d2 {
 #line 1354 "d2_parser.cc"
     break;
 
-  case 139:
-#line 553 "d2_parser.yy"
+  case 133:
+#line 541 "d2_parser.yy"
                                   {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1362 "d2_parser.cc"
     break;
 
-  case 140:
-#line 555 "d2_parser.yy"
+  case 134:
+#line 543 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", s);
@@ -1371,8 +1371,8 @@ namespace isc { namespace d2 {
 #line 1372 "d2_parser.cc"
     break;
 
-  case 141:
-#line 561 "d2_parser.yy"
+  case 135:
+#line 549 "d2_parser.yy"
                                     {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
         error(yystack_[0].location, "port must be greater than zero but less than 65536");
@@ -1383,8 +1383,8 @@ namespace isc { namespace d2 {
 #line 1384 "d2_parser.cc"
     break;
 
-  case 142:
-#line 575 "d2_parser.yy"
+  case 136:
+#line 563 "d2_parser.yy"
                      {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tsig-keys", l);
@@ -1394,8 +1394,8 @@ namespace isc { namespace d2 {
 #line 1395 "d2_parser.cc"
     break;
 
-  case 143:
-#line 580 "d2_parser.yy"
+  case 137:
+#line 568 "d2_parser.yy"
                                                        {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1403,8 +1403,8 @@ namespace isc { namespace d2 {
 #line 1404 "d2_parser.cc"
     break;
 
-  case 144:
-#line 585 "d2_parser.yy"
+  case 138:
+#line 573 "d2_parser.yy"
                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1412,16 +1412,16 @@ namespace isc { namespace d2 {
 #line 1413 "d2_parser.cc"
     break;
 
-  case 145:
-#line 588 "d2_parser.yy"
+  case 139:
+#line 576 "d2_parser.yy"
                                  {
     // parsing completed
 }
 #line 1421 "d2_parser.cc"
     break;
 
-  case 150:
-#line 600 "d2_parser.yy"
+  case 144:
+#line 588 "d2_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1430,16 +1430,16 @@ namespace isc { namespace d2 {
 #line 1431 "d2_parser.cc"
     break;
 
-  case 151:
-#line 604 "d2_parser.yy"
+  case 145:
+#line 592 "d2_parser.yy"
                                  {
     ctx.stack_.pop_back();
 }
 #line 1439 "d2_parser.cc"
     break;
 
-  case 152:
-#line 608 "d2_parser.yy"
+  case 146:
+#line 596 "d2_parser.yy"
                              {
     // Parse tsig key list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1448,24 +1448,24 @@ namespace isc { namespace d2 {
 #line 1449 "d2_parser.cc"
     break;
 
-  case 153:
-#line 612 "d2_parser.yy"
+  case 147:
+#line 600 "d2_parser.yy"
                                  {
     // parsing completed
 }
 #line 1457 "d2_parser.cc"
     break;
 
-  case 163:
-#line 630 "d2_parser.yy"
+  case 157:
+#line 618 "d2_parser.yy"
                     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1465 "d2_parser.cc"
     break;
 
-  case 164:
-#line 632 "d2_parser.yy"
+  case 158:
+#line 620 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
         error(yystack_[1].location, "TSIG key name cannot be blank");
@@ -1478,16 +1478,16 @@ namespace isc { namespace d2 {
 #line 1479 "d2_parser.cc"
     break;
 
-  case 165:
-#line 642 "d2_parser.yy"
+  case 159:
+#line 630 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1487 "d2_parser.cc"
     break;
 
-  case 166:
-#line 644 "d2_parser.yy"
+  case 160:
+#line 632 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
         error(yystack_[1].location, "TSIG key algorithm cannot be blank");
@@ -1499,8 +1499,8 @@ namespace isc { namespace d2 {
 #line 1500 "d2_parser.cc"
     break;
 
-  case 167:
-#line 653 "d2_parser.yy"
+  case 161:
+#line 641 "d2_parser.yy"
                                                 {
     if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0  && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
         error(yystack_[0].location, "TSIG key digest-bits must either be zero or a positive, multiple of eight");
@@ -1511,16 +1511,16 @@ namespace isc { namespace d2 {
 #line 1512 "d2_parser.cc"
     break;
 
-  case 168:
-#line 661 "d2_parser.yy"
+  case 162:
+#line 649 "d2_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1520 "d2_parser.cc"
     break;
 
-  case 169:
-#line 663 "d2_parser.yy"
+  case 163:
+#line 651 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
         error(yystack_[1].location, "TSIG key secret cannot be blank");
@@ -1532,8 +1532,8 @@ namespace isc { namespace d2 {
 #line 1533 "d2_parser.cc"
     break;
 
-  case 170:
-#line 677 "d2_parser.yy"
+  case 164:
+#line 665 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -1543,8 +1543,8 @@ namespace isc { namespace d2 {
 #line 1544 "d2_parser.cc"
     break;
 
-  case 171:
-#line 682 "d2_parser.yy"
+  case 165:
+#line 670 "d2_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1552,16 +1552,16 @@ namespace isc { namespace d2 {
 #line 1553 "d2_parser.cc"
     break;
 
-  case 179:
-#line 698 "d2_parser.yy"
+  case 173:
+#line 686 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1561 "d2_parser.cc"
     break;
 
-  case 180:
-#line 700 "d2_parser.yy"
+  case 174:
+#line 688 "d2_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -1570,16 +1570,16 @@ namespace isc { namespace d2 {
 #line 1571 "d2_parser.cc"
     break;
 
-  case 181:
-#line 706 "d2_parser.yy"
+  case 175:
+#line 694 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1579 "d2_parser.cc"
     break;
 
-  case 182:
-#line 708 "d2_parser.yy"
+  case 176:
+#line 696 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -1588,263 +1588,192 @@ namespace isc { namespace d2 {
 #line 1589 "d2_parser.cc"
     break;
 
-  case 183:
-#line 716 "d2_parser.yy"
-                         {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1597 "d2_parser.cc"
-    break;
-
-  case 184:
-#line 718 "d2_parser.yy"
-              {
-    ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1606 "d2_parser.cc"
-    break;
-
-  case 185:
-#line 723 "d2_parser.yy"
-                         {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1614 "d2_parser.cc"
-    break;
-
-  case 186:
-#line 725 "d2_parser.yy"
-              {
-    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1623 "d2_parser.cc"
-    break;
-
-  case 187:
-#line 730 "d2_parser.yy"
-                                         {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1631 "d2_parser.cc"
-    break;
-
-  case 188:
-#line 732 "d2_parser.yy"
-              {
-    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 1640 "d2_parser.cc"
-    break;
-
-  case 189:
-#line 742 "d2_parser.yy"
-                        {
-    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("Logging", m);
-    ctx.stack_.push_back(m);
-    ctx.enter(ctx.LOGGING);
-}
-#line 1651 "d2_parser.cc"
-    break;
-
-  case 190:
-#line 747 "d2_parser.yy"
-                                                     {
-    ctx.stack_.pop_back();
-    ctx.leave();
-}
-#line 1660 "d2_parser.cc"
-    break;
-
-  case 194:
-#line 764 "d2_parser.yy"
+  case 177:
+#line 705 "d2_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 1671 "d2_parser.cc"
+#line 1600 "d2_parser.cc"
     break;
 
-  case 195:
-#line 769 "d2_parser.yy"
+  case 178:
+#line 710 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1680 "d2_parser.cc"
+#line 1609 "d2_parser.cc"
     break;
 
-  case 198:
-#line 781 "d2_parser.yy"
+  case 181:
+#line 722 "d2_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1690 "d2_parser.cc"
+#line 1619 "d2_parser.cc"
     break;
 
-  case 199:
-#line 785 "d2_parser.yy"
+  case 182:
+#line 726 "d2_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 1698 "d2_parser.cc"
+#line 1627 "d2_parser.cc"
     break;
 
-  case 209:
-#line 802 "d2_parser.yy"
+  case 192:
+#line 743 "d2_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1706 "d2_parser.cc"
+#line 1635 "d2_parser.cc"
     break;
 
-  case 210:
-#line 804 "d2_parser.yy"
+  case 193:
+#line 745 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1716 "d2_parser.cc"
+#line 1645 "d2_parser.cc"
     break;
 
-  case 211:
-#line 810 "d2_parser.yy"
+  case 194:
+#line 751 "d2_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 1725 "d2_parser.cc"
+#line 1654 "d2_parser.cc"
     break;
 
-  case 212:
-#line 814 "d2_parser.yy"
+  case 195:
+#line 755 "d2_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1733 "d2_parser.cc"
+#line 1662 "d2_parser.cc"
     break;
 
-  case 213:
-#line 816 "d2_parser.yy"
+  case 196:
+#line 757 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 1743 "d2_parser.cc"
+#line 1672 "d2_parser.cc"
     break;
 
-  case 214:
-#line 822 "d2_parser.yy"
+  case 197:
+#line 763 "d2_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1754 "d2_parser.cc"
+#line 1683 "d2_parser.cc"
     break;
 
-  case 215:
-#line 827 "d2_parser.yy"
+  case 198:
+#line 768 "d2_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1763 "d2_parser.cc"
+#line 1692 "d2_parser.cc"
     break;
 
-  case 218:
-#line 836 "d2_parser.yy"
+  case 201:
+#line 777 "d2_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1773 "d2_parser.cc"
+#line 1702 "d2_parser.cc"
     break;
 
-  case 219:
-#line 840 "d2_parser.yy"
+  case 202:
+#line 781 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 1781 "d2_parser.cc"
+#line 1710 "d2_parser.cc"
     break;
 
-  case 227:
-#line 855 "d2_parser.yy"
+  case 210:
+#line 796 "d2_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1789 "d2_parser.cc"
+#line 1718 "d2_parser.cc"
     break;
 
-  case 228:
-#line 857 "d2_parser.yy"
+  case 211:
+#line 798 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 1799 "d2_parser.cc"
+#line 1728 "d2_parser.cc"
     break;
 
-  case 229:
-#line 863 "d2_parser.yy"
+  case 212:
+#line 804 "d2_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 1808 "d2_parser.cc"
+#line 1737 "d2_parser.cc"
     break;
 
-  case 230:
-#line 868 "d2_parser.yy"
+  case 213:
+#line 809 "d2_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 1817 "d2_parser.cc"
+#line 1746 "d2_parser.cc"
     break;
 
-  case 231:
-#line 873 "d2_parser.yy"
+  case 214:
+#line 814 "d2_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 1826 "d2_parser.cc"
+#line 1755 "d2_parser.cc"
     break;
 
-  case 232:
-#line 878 "d2_parser.yy"
+  case 215:
+#line 819 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1834 "d2_parser.cc"
+#line 1763 "d2_parser.cc"
     break;
 
-  case 233:
-#line 880 "d2_parser.yy"
+  case 216:
+#line 821 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 1844 "d2_parser.cc"
+#line 1773 "d2_parser.cc"
     break;
 
 
-#line 1848 "d2_parser.cc"
+#line 1777 "d2_parser.cc"
 
             default:
               break;
@@ -2193,52 +2122,49 @@ namespace isc { namespace d2 {
   }
 
 
-  const short D2Parser::yypact_ninf_ = -238;
+  const signed char D2Parser::yypact_ninf_ = -83;
 
   const signed char D2Parser::yytable_ninf_ = -1;
 
   const short
   D2Parser::yypact_[] =
   {
-      69,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-      14,     2,     1,    23,    37,    11,    39,    43,    47,    51,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,     2,    22,
-       8,     9,    18,    85,    50,   104,    13,   120,  -238,    84,
-     125,   132,   129,   135,  -238,  -238,  -238,  -238,  -238,   140,
-    -238,    55,  -238,  -238,  -238,  -238,  -238,  -238,  -238,   142,
-     150,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,    66,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,   160,  -238,  -238,  -238,
-    -238,  -238,    68,  -238,  -238,  -238,  -238,  -238,  -238,   167,
-     153,  -238,  -238,  -238,  -238,  -238,  -238,  -238,    83,  -238,
-    -238,  -238,  -238,  -238,   168,   162,  -238,  -238,   171,  -238,
-    -238,  -238,  -238,    97,  -238,  -238,  -238,  -238,  -238,    49,
-    -238,  -238,     2,     2,  -238,   119,   174,   175,   176,   177,
-     178,  -238,     8,  -238,   179,   126,   128,   181,   183,   184,
-     185,   186,   187,   188,   189,   190,     9,  -238,   191,   138,
-     193,   194,    18,  -238,    18,  -238,    85,   195,   196,   197,
-      50,  -238,    50,  -238,   104,   198,   145,   200,    13,  -238,
-      13,   120,  -238,  -238,  -238,   201,     2,     2,     2,   205,
-     206,  -238,   157,  -238,  -238,    19,   199,   208,   161,   209,
-     210,   202,   212,   216,  -238,   166,  -238,   170,   172,  -238,
-      98,  -238,   173,   219,   180,  -238,   100,  -238,   182,  -238,
-     192,  -238,   101,  -238,     2,  -238,  -238,  -238,     9,   203,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,    -4,    -4,
-      85,    59,   218,  -238,  -238,  -238,  -238,  -238,   120,  -238,
-    -238,  -238,  -238,  -238,  -238,   127,   149,  -238,  -238,  -238,
-    -238,   152,  -238,  -238,  -238,   155,   220,  -238,  -238,  -238,
-    -238,  -238,   159,  -238,  -238,  -238,  -238,    77,  -238,   107,
-    -238,   203,  -238,   224,    -4,  -238,  -238,  -238,   227,   228,
-      59,  -238,    45,   218,  -238,  -238,  -238,   229,  -238,   207,
-     211,  -238,  -238,  -238,   231,  -238,  -238,  -238,  -238,   163,
-    -238,  -238,  -238,  -238,  -238,  -238,   104,  -238,  -238,   232,
-     234,   214,   236,    45,  -238,   237,   213,   239,  -238,   217,
-    -238,  -238,  -238,   226,  -238,  -238,   123,  -238,    52,   226,
-    -238,  -238,   238,   241,   242,  -238,   169,  -238,  -238,  -238,
-    -238,  -238,  -238,  -238,   243,   215,   221,   222,   244,    52,
-    -238,   225,  -238,  -238,  -238,   230,  -238,  -238,  -238
+      38,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+       7,     1,     2,     8,    17,    26,    34,    53,    60,    86,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,     1,    40,
+       3,     6,    15,    94,    46,    95,    10,   105,   -83,   115,
+     110,   118,   121,   128,   -83,   131,   -83,   -83,   -83,   151,
+     152,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     153,   -83,    39,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   154,   -83,   -83,
+     -83,   -83,   -83,    45,   -83,   -83,   -83,   -83,   -83,   -83,
+     135,   148,   -83,   -83,   -83,   -83,   -83,   -83,   -83,    61,
+     -83,   -83,   -83,   -83,   -83,   155,   156,   -83,   -83,   158,
+     -83,   -83,   -83,   -83,    70,   -83,   -83,   -83,   -83,   -83,
+      43,   -83,   -83,     1,     1,   -83,   111,   159,   -83,   161,
+     106,   112,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   -83,     6,   -83,   172,   123,   174,   175,    15,   -83,
+      15,   -83,    94,   176,   177,   178,    46,   -83,    46,   -83,
+      95,   181,   136,   185,    10,   -83,    10,   105,   -83,   -83,
+     -83,   187,   186,   139,   -83,   -83,    59,   179,   188,   141,
+     189,   192,   195,   194,   197,   -83,   150,   -83,   157,   160,
+     -83,    97,   -83,   162,   199,   173,   -83,   100,   -83,   182,
+     -83,   183,   -83,   101,   -83,     1,     6,   -83,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,     9,     9,    94,    19,   198,
+     -83,   -83,   -83,   -83,   -83,   105,   -83,   -83,   -83,   -83,
+     -83,   -83,   107,   -83,   -83,   134,   -83,   -83,   -83,   137,
+     200,   -83,   -83,   -83,   -83,   -83,   140,   -83,   -83,   -83,
+     -83,   108,   -83,   117,   -83,   203,     9,   -83,   -83,   -83,
+     204,   205,    19,   -83,    41,   198,   -83,   -83,   206,   -83,
+     184,   190,   -83,   -83,   -83,   208,   -83,   -83,   -83,   -83,
+     144,   -83,   -83,   -83,   -83,   -83,   -83,    95,   -83,   -83,
+     210,   212,   180,   213,    41,   -83,   214,   193,   216,   -83,
+     196,   -83,   -83,   -83,   211,   -83,   -83,   147,   -83,    55,
+     211,   -83,   -83,   215,   218,   219,   -83,   146,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   221,   191,   201,   202,   223,
+      55,   -83,   207,   -83,   -83,   -83,   217,   -83,   -83,   -83
   };
 
   const unsigned char
@@ -2247,227 +2173,211 @@ namespace isc { namespace d2 {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    35,    28,    24,    23,    20,    21,    22,    27,     3,
-      25,    26,    42,     5,    54,     7,   152,     9,   144,    11,
-     105,    13,    97,    15,   127,    17,   121,    19,    37,    31,
-       0,     0,     0,   146,     0,    99,     0,     0,    39,     0,
-      38,     0,     0,    32,   183,   185,   187,    52,   189,     0,
-      51,     0,    44,    49,    46,    48,    50,    47,    71,     0,
-       0,    75,    79,    81,    83,    85,    87,   142,   170,   194,
-      70,     0,    56,    58,    59,    60,    61,    62,    68,    69,
-      63,    64,    65,    66,    67,   165,     0,   168,   163,   162,
-     160,   161,     0,   154,   156,   157,   158,   159,   150,     0,
-     147,   148,   117,   119,   115,   114,   112,   113,     0,   107,
-     109,   110,   111,   103,     0,   100,   101,   139,     0,   137,
-     136,   134,   135,     0,   129,   131,   132,   133,   125,     0,
-     123,    36,     0,     0,    29,     0,     0,     0,     0,     0,
-       0,    41,     0,    43,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    55,     0,     0,
-       0,     0,     0,   153,     0,   145,     0,     0,     0,     0,
-       0,   106,     0,    98,     0,     0,     0,     0,     0,   128,
-       0,     0,   122,    40,    33,     0,     0,     0,     0,     0,
-       0,    45,     0,    73,    74,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    57,     0,   167,     0,     0,   155,
-       0,   149,     0,     0,     0,   108,     0,   102,     0,   141,
-       0,   130,     0,   124,     0,   184,   186,   188,     0,     0,
-      72,    77,    78,    76,    80,    30,    82,    84,    89,    89,
-     146,     0,     0,   166,   169,   164,   151,   118,     0,   116,
-     104,   140,   138,   126,    34,     0,     0,   191,   193,    95,
-      94,     0,    90,    91,    93,     0,     0,   179,   181,   178,
-     176,   177,     0,   172,   174,   175,   198,     0,   196,     0,
-      53,     0,   190,     0,     0,    86,    88,   143,     0,     0,
-       0,   171,     0,     0,   195,   120,   192,     0,    92,     0,
-       0,   173,   209,   214,     0,   212,   208,   206,   207,     0,
-     200,   202,   204,   205,   203,   197,    99,   180,   182,     0,
-       0,     0,     0,     0,   199,     0,     0,     0,   211,     0,
-     201,    96,   210,     0,   213,   218,     0,   216,     0,     0,
-     215,   227,     0,     0,     0,   232,     0,   220,   222,   223,
-     224,   225,   226,   217,     0,     0,     0,     0,     0,     0,
-     219,     0,   229,   230,   231,     0,   221,   228,   233
+      25,    26,    42,     5,    48,     7,   146,     9,   138,    11,
+      99,    13,    91,    15,   121,    17,   115,    19,    37,    31,
+       0,     0,     0,   140,     0,    93,     0,     0,    39,     0,
+      38,     0,     0,    32,    46,     0,    44,    45,    65,     0,
+       0,    69,    73,    75,    77,    79,    81,   136,   164,   177,
+       0,    64,     0,    50,    52,    53,    54,    55,    56,    62,
+      63,    57,    58,    59,    60,    61,   159,     0,   162,   157,
+     156,   154,   155,     0,   148,   150,   151,   152,   153,   144,
+       0,   141,   142,   111,   113,   109,   108,   106,   107,     0,
+     101,   103,   104,   105,    97,     0,    94,    95,   133,     0,
+     131,   130,   128,   129,     0,   123,   125,   126,   127,   119,
+       0,   117,    36,     0,     0,    29,     0,     0,    43,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    41,     0,    49,     0,     0,     0,     0,     0,   147,
+       0,   139,     0,     0,     0,     0,     0,   100,     0,    92,
+       0,     0,     0,     0,     0,   122,     0,     0,   116,    40,
+      33,     0,     0,     0,    67,    68,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    51,     0,   161,     0,     0,
+     149,     0,   143,     0,     0,     0,   102,     0,    96,     0,
+     135,     0,   124,     0,   118,     0,     0,    66,    71,    72,
+      70,    74,    30,    76,    78,    83,    83,   140,     0,     0,
+     160,   163,   158,   145,   112,     0,   110,    98,   134,   132,
+     120,    34,     0,    89,    88,     0,    84,    85,    87,     0,
+       0,   173,   175,   172,   170,   171,     0,   166,   168,   169,
+     181,     0,   179,     0,    47,     0,     0,    80,    82,   137,
+       0,     0,     0,   165,     0,     0,   178,   114,     0,    86,
+       0,     0,   167,   192,   197,     0,   195,   191,   189,   190,
+       0,   183,   185,   187,   188,   186,   180,    93,   174,   176,
+       0,     0,     0,     0,     0,   182,     0,     0,     0,   194,
+       0,   184,    90,   193,     0,   196,   201,     0,   199,     0,
+       0,   198,   210,     0,     0,     0,   215,     0,   203,   205,
+     206,   207,   208,   209,   200,     0,     0,     0,     0,     0,
+       0,   202,     0,   212,   213,   214,     0,   204,   211,   216
   };
 
-  const short
+  const signed char
   D2Parser::yypgoto_[] =
   {
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,   -38,  -238,    33,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,   -50,  -238,  -238,  -238,    89,  -238,  -238,  -238,
-    -238,     4,    79,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,   -51,  -238,   -39,  -238,  -238,  -238,  -238,  -238,
-      -6,  -238,   -48,  -238,  -238,  -238,  -238,   -79,  -238,    64,
-    -238,  -238,  -238,    71,    75,  -238,  -238,  -238,  -238,  -238,
-    -238,  -238,  -238,    -2,    76,  -238,  -238,  -238,    67,    78,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,    21,
-    -238,    92,  -238,  -238,  -238,    99,    87,  -238,  -238,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,   -26,  -238,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,  -238,
-    -238,   -16,  -237,  -238,  -238,   -27,  -238,  -238,   -55,  -238,
-    -238,  -238,  -238,  -238,  -238,  -238,  -238,   -70,  -238,  -238,
-     -89,  -238,  -238,  -238,  -238,  -238,  -238,  -238
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -37,   -83,    30,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -52,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,    12,    67,   -83,   -83,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -51,   -83,   -40,   -83,   -83,   -83,   -83,   -83,
+       4,   -83,   -35,   -83,   -83,   -83,   -83,   -68,   -83,    65,
+     -83,   -83,   -83,    72,    75,   -83,   -83,   -83,   -83,   -83,
+     -83,   -83,   -83,    13,    66,   -83,   -83,   -83,    62,    68,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,   -83,    20,
+     -83,    82,   -83,   -83,   -83,    89,    93,   -83,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -18,   -83,   -83,
+     -83,   -83,   -83,   -83,   -83,   -20,   -83,   -83,   -48,   -83,
+     -83,   -83,   -83,   -83,   -83,   -83,   -83,   -63,   -83,   -83,
+     -82,   -83,   -83,   -83,   -83,   -83,   -83,   -83
   };
 
   const short
   D2Parser::yydefgoto_[] =
   {
       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    28,    29,    30,    49,   256,    62,    63,    31,    48,
-      59,    60,    90,    33,    50,    71,    72,    73,   159,    35,
-      51,    91,    92,    93,   164,    94,    95,    96,   167,   253,
-      97,   168,    98,   169,    99,   170,   100,   171,   101,   172,
-     281,   282,   283,   284,   303,    43,    55,   134,   135,   136,
-     192,    41,    54,   128,   129,   130,   189,   131,   187,   132,
-     188,    47,    57,   149,   150,   200,    45,    56,   143,   144,
-     145,   197,   146,   195,   147,   102,   173,    39,    53,   119,
-     120,   121,   184,    37,    52,   112,   113,   114,   181,   115,
-     178,   116,   117,   180,   103,   174,   292,   293,   294,   308,
-     295,   309,    74,   156,    75,   157,    76,   158,    77,   160,
-     276,   277,   104,   175,   297,   298,   312,   329,   330,   331,
-     339,   332,   333,   342,   334,   340,   356,   357,   358,   366,
-     367,   368,   374,   369,   370,   371,   372,   378
+      19,    28,    29,    30,    49,   233,    62,    63,    31,    48,
+      59,    60,    81,    33,    50,    65,    66,    67,   147,    35,
+      51,    82,    83,    84,   149,    85,    86,    87,   152,   230,
+      88,   153,    89,   154,    90,   155,    91,   156,    92,   157,
+     255,   256,   257,   258,   275,    43,    55,   125,   126,   127,
+     178,    41,    54,   119,   120,   121,   175,   122,   173,   123,
+     174,    47,    57,   140,   141,   186,    45,    56,   134,   135,
+     136,   183,   137,   181,   138,    93,   158,    39,    53,   110,
+     111,   112,   170,    37,    52,   103,   104,   105,   167,   106,
+     164,   107,   108,   166,    94,   159,   266,   267,   268,   280,
+     269,   281,    95,   160,   271,   272,   284,   300,   301,   302,
+     310,   303,   304,   313,   305,   311,   327,   328,   329,   337,
+     338,   339,   345,   340,   341,   342,   343,   349
   };
 
   const short
   D2Parser::yytable_[] =
   {
-      70,   110,   109,   126,   125,   141,   140,    21,    32,    22,
-      58,    23,   278,   111,    20,   127,    38,   142,    64,    65,
-      66,    67,   279,    78,    79,    80,    81,   137,   138,    82,
-      34,    83,    84,    85,    86,    83,    84,   251,   252,    87,
-      83,    84,   139,    88,    36,    68,    40,    89,    42,   105,
-     106,   107,   201,    69,    44,   202,    46,   108,   162,    24,
-      25,    26,    27,   163,   278,    69,    69,    83,    84,   176,
-      69,   182,    83,    84,   177,    69,   183,   122,   123,    61,
-     313,    83,    84,   314,   322,   323,   190,   324,   325,   124,
-     151,   191,   118,   361,   287,   288,   362,   363,   364,   365,
-     198,   182,    69,   190,   198,   199,   266,    69,   270,   273,
-     201,   133,    70,   315,   203,   204,    69,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,   359,   148,   152,   360,
-     176,   110,   109,   110,   109,   300,   153,   154,   155,   126,
-     125,   126,   125,   111,   161,   111,   165,   141,   140,   141,
-     140,   127,   301,   127,   166,   304,   186,   302,   304,   142,
-     305,   142,   310,   306,   179,   194,   343,   311,   245,   246,
-     247,   344,   379,   185,   193,   196,   205,   380,   206,   207,
-     208,   209,   210,   212,   213,   215,   214,   216,   217,   218,
-     219,   220,   221,   222,   223,   225,   226,   227,   228,   232,
-     233,   234,   238,   239,   240,   244,   274,   260,   280,   280,
-     290,   289,   248,   249,   250,    22,   258,   259,   257,   261,
-     254,   262,   291,   263,   268,   296,   307,   264,   317,   265,
-     267,   319,   320,   355,   336,   341,   346,   269,   347,   271,
-     349,    89,   375,   351,   353,   376,   377,   381,   385,   272,
-     255,   211,   275,   285,   280,   224,   318,   345,   237,   290,
-     289,   327,   326,   236,   337,   235,   299,   242,   338,   229,
-     352,   291,   348,   328,   354,   382,   241,   243,   231,   383,
-     384,   286,   387,   230,   321,   316,   335,   388,   350,   373,
-     386,     0,   327,   326,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   328
+     100,   101,   116,   117,   131,   132,    21,    20,    22,    32,
+      23,    58,   102,    64,   118,    34,   133,    68,    69,    70,
+      71,   128,   129,    72,    36,    73,    74,    75,    76,    73,
+      74,    38,   253,    77,    73,    74,   130,    78,    73,    74,
+      79,    40,   162,    96,    97,    98,   187,   163,   168,   188,
+      99,   261,   262,   169,    24,    25,    26,    27,    42,    80,
+      73,    74,    80,    80,   176,    73,    74,    44,    80,   177,
+     113,   114,    80,   184,   228,   229,   293,   294,   185,   295,
+     296,   115,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    46,   332,    61,    80,   333,   334,   335,   336,    80,
+     168,   109,   124,   176,   184,   243,   189,   190,   247,   250,
+     162,   285,   139,   143,   286,   274,   100,   101,   100,   101,
+     187,   142,   144,   287,   116,   117,   116,   117,   102,   145,
+     102,   146,   131,   132,   131,   132,   118,   276,   118,   148,
+     276,   171,   277,   282,   133,   278,   133,   314,   283,   350,
+     330,   172,   315,   331,   351,   150,   151,   161,   165,   180,
+     194,   179,   182,   192,   191,   193,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   206,   207,   208,   209,
+     213,   214,   215,   254,   254,   219,   263,   264,   251,   221,
+     220,   225,   227,   226,   234,    22,   235,   231,   265,   236,
+     237,   238,   239,   240,   245,   270,   279,   288,   290,   291,
+     241,   307,   312,   242,   317,   244,   318,   320,   326,   346,
+     322,   324,   347,   348,   254,   352,   246,   356,   232,   205,
+     263,   264,   297,   298,   319,   248,   249,   308,   252,   316,
+     259,   289,   265,   309,   299,   218,   323,   353,   223,   325,
+     217,   216,   222,   224,   212,   354,   355,   260,   273,   211,
+     358,   210,   297,   298,   292,   306,   321,   344,   357,     0,
+     359,     0,     0,     0,   299
   };
 
   const short
   D2Parser::yycheck_[] =
   {
-      50,    52,    52,    54,    54,    56,    56,     5,     7,     7,
-      48,     9,   249,    52,     0,    54,     5,    56,    10,    11,
-      12,    13,    26,    14,    15,    16,    17,    14,    15,    20,
-       7,    22,    23,    24,    25,    22,    23,    18,    19,    30,
-      22,    23,    29,    34,     7,    37,     7,    38,     5,    31,
-      32,    33,     3,    57,     7,     6,     5,    39,     3,    57,
-      58,    59,    60,     8,   301,    57,    57,    22,    23,     3,
-      57,     3,    22,    23,     8,    57,     8,    27,    28,    57,
-       3,    22,    23,     6,    39,    40,     3,    42,    43,    39,
-       6,     8,     7,    41,    35,    36,    44,    45,    46,    47,
-       3,     3,    57,     3,     3,     8,     8,    57,     8,     8,
-       3,     7,   162,     6,   152,   153,    57,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,     3,     7,     3,     6,
-       3,   182,   182,   184,   184,     8,     4,     8,     3,   190,
-     190,   192,   192,   182,     4,   184,     4,   198,   198,   200,
-     200,   190,     3,   192,     4,     3,     3,     8,     3,   198,
-       8,   200,     3,     8,     4,     3,     3,     8,   206,   207,
-     208,     8,     3,     6,     6,     4,    57,     8,     4,     4,
-       4,     4,     4,     4,    58,     4,    58,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,    58,     4,     4,     4,
-       4,     4,     4,    58,     4,     4,   244,     5,   258,   259,
-     261,   261,     7,     7,    57,     7,     7,     7,    57,     7,
-      21,     5,   261,    57,     5,     7,     6,    57,     4,    57,
-      57,     4,     4,     7,     5,     4,     4,    57,     4,    57,
-       4,    38,     4,     6,     5,     4,     4,     4,     4,    57,
-     217,   162,   248,   259,   304,   176,   304,   336,   194,   310,
-     310,   312,   312,   192,    57,   190,   268,   200,    57,   182,
-      57,   310,    58,   312,    57,    60,   198,   201,   186,    58,
-      58,   260,    57,   184,   310,   301,   313,    57,   343,   359,
-     379,    -1,   343,   343,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   343
+      52,    52,    54,    54,    56,    56,     5,     0,     7,     7,
+       9,    48,    52,    10,    54,     7,    56,    11,    12,    13,
+      14,    11,    12,    17,     7,    19,    20,    21,    22,    19,
+      20,     5,    23,    27,    19,    20,    26,    31,    19,    20,
+      34,     7,     3,    28,    29,    30,     3,     8,     3,     6,
+      35,    32,    33,     8,    53,    54,    55,    56,     5,    53,
+      19,    20,    53,    53,     3,    19,    20,     7,    53,     8,
+      24,    25,    53,     3,    15,    16,    35,    36,     8,    38,
+      39,    35,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,     5,    37,    53,    53,    40,    41,    42,    43,    53,
+       3,     7,     7,     3,     3,     8,   143,   144,     8,     8,
+       3,     3,     7,     3,     6,     8,   168,   168,   170,   170,
+       3,     6,     4,     6,   176,   176,   178,   178,   168,     8,
+     170,     3,   184,   184,   186,   186,   176,     3,   178,     8,
+       3,     6,     8,     3,   184,     8,   186,     3,     8,     3,
+       3,     3,     8,     6,     8,     4,     4,     4,     4,     3,
+      54,     6,     4,     4,    53,     4,    54,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,    54,     4,     4,
+       4,     4,     4,   235,   236,     4,   238,   238,   225,     4,
+      54,     4,    53,     7,    53,     7,     7,    18,   238,     7,
+       5,     7,     5,    53,     5,     7,     6,     4,     4,     4,
+      53,     5,     4,    53,     4,    53,     4,     4,     7,     4,
+       6,     5,     4,     4,   276,     4,    53,     4,   198,   162,
+     282,   282,   284,   284,    54,    53,    53,    53,   226,   307,
+     236,   276,   282,    53,   284,   180,    53,    56,   186,    53,
+     178,   176,   184,   187,   172,    54,    54,   237,   245,   170,
+      53,   168,   314,   314,   282,   285,   314,   330,   350,    -1,
+      53,    -1,    -1,    -1,   314
   };
 
   const unsigned char
   D2Parser::yystos_[] =
   {
-       0,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       0,     5,     7,     9,    57,    58,    59,    60,    72,    73,
-      74,    79,     7,    84,     7,    90,     7,   154,     5,   148,
-       7,   122,     5,   116,     7,   137,     5,   132,    80,    75,
-      85,    91,   155,   149,   123,   117,   138,   133,    72,    81,
-      82,    57,    77,    78,    10,    11,    12,    13,    37,    57,
-      83,    86,    87,    88,   173,   175,   177,   179,    14,    15,
-      16,    17,    20,    22,    23,    24,    25,    30,    34,    38,
-      83,    92,    93,    94,    96,    97,    98,   101,   103,   105,
-     107,   109,   146,   165,   183,    31,    32,    33,    39,    83,
-     103,   105,   156,   157,   158,   160,   162,   163,     7,   150,
-     151,   152,    27,    28,    39,    83,   103,   105,   124,   125,
-     126,   128,   130,     7,   118,   119,   120,    14,    15,    29,
-      83,   103,   105,   139,   140,   141,   143,   145,     7,   134,
-     135,     6,     3,     4,     8,     3,   174,   176,   178,    89,
-     180,     4,     3,     8,    95,     4,     4,    99,   102,   104,
-     106,   108,   110,   147,   166,   184,     3,     8,   161,     4,
-     164,   159,     3,     8,   153,     6,     3,   129,   131,   127,
-       3,     8,   121,     6,     3,   144,     4,   142,     3,     8,
-     136,     3,     6,    72,    72,    57,     4,     4,     4,     4,
-       4,    87,     4,    58,    58,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,    93,     4,    58,     4,     4,   157,
-     156,   152,     4,     4,     4,   125,   124,   120,     4,    58,
-       4,   140,   139,   135,     4,    72,    72,    72,     7,     7,
-      57,    18,    19,   100,    21,    74,    76,    57,     7,     7,
-       5,     7,     5,    57,    57,    57,     8,    57,     5,    57,
-       8,    57,    57,     8,    72,    92,   181,   182,   183,    26,
-      83,   111,   112,   113,   114,   111,   150,    35,    36,    83,
-     103,   105,   167,   168,   169,   171,     7,   185,   186,   134,
-       8,     3,     8,   115,     3,     8,     8,     6,   170,   172,
-       3,     8,   187,     3,     6,     6,   182,     4,   113,     4,
-       4,   168,    39,    40,    42,    43,    83,   103,   105,   188,
-     189,   190,   192,   193,   195,   186,     5,    57,    57,   191,
-     196,     4,   194,     3,     8,   118,     4,     4,    58,     4,
-     189,     6,    57,     5,    57,     7,   197,   198,   199,     3,
-       6,    41,    44,    45,    46,    47,   200,   201,   202,   204,
-     205,   206,   207,   198,   203,     4,     4,     4,   208,     3,
-       8,     4,    60,    58,    58,     4,   201,    57,    57
+       0,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+       0,     5,     7,     9,    53,    54,    55,    56,    68,    69,
+      70,    75,     7,    80,     7,    86,     7,   150,     5,   144,
+       7,   118,     5,   112,     7,   133,     5,   128,    76,    71,
+      81,    87,   151,   145,   119,   113,   134,   129,    68,    77,
+      78,    53,    73,    74,    10,    82,    83,    84,    11,    12,
+      13,    14,    17,    19,    20,    21,    22,    27,    31,    34,
+      53,    79,    88,    89,    90,    92,    93,    94,    97,    99,
+     101,   103,   105,   142,   161,   169,    28,    29,    30,    35,
+      79,    99,   101,   152,   153,   154,   156,   158,   159,     7,
+     146,   147,   148,    24,    25,    35,    79,    99,   101,   120,
+     121,   122,   124,   126,     7,   114,   115,   116,    11,    12,
+      26,    79,    99,   101,   135,   136,   137,   139,   141,     7,
+     130,   131,     6,     3,     4,     8,     3,    85,     8,    91,
+       4,     4,    95,    98,   100,   102,   104,   106,   143,   162,
+     170,     4,     3,     8,   157,     4,   160,   155,     3,     8,
+     149,     6,     3,   125,   127,   123,     3,     8,   117,     6,
+       3,   140,     4,   138,     3,     8,   132,     3,     6,    68,
+      68,    53,     4,     4,    54,    54,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,    89,     4,    54,     4,     4,
+     153,   152,   148,     4,     4,     4,   121,   120,   116,     4,
+      54,     4,   136,   135,   131,     4,     7,    53,    15,    16,
+      96,    18,    70,    72,    53,     7,     7,     5,     7,     5,
+      53,    53,    53,     8,    53,     5,    53,     8,    53,    53,
+       8,    68,    88,    23,    79,   107,   108,   109,   110,   107,
+     146,    32,    33,    79,    99,   101,   163,   164,   165,   167,
+       7,   171,   172,   130,     8,   111,     3,     8,     8,     6,
+     166,   168,     3,     8,   173,     3,     6,     6,     4,   109,
+       4,     4,   164,    35,    36,    38,    39,    79,    99,   101,
+     174,   175,   176,   178,   179,   181,   172,     5,    53,    53,
+     177,   182,     4,   180,     3,     8,   114,     4,     4,    54,
+       4,   175,     6,    53,     5,    53,     7,   183,   184,   185,
+       3,     6,    37,    40,    41,    42,    43,   186,   187,   188,
+     190,   191,   192,   193,   184,   189,     4,     4,     4,   194,
+       3,     8,     4,    56,    54,    54,     4,   187,    53,    53
   };
 
   const unsigned char
   D2Parser::yyr1_[] =
   {
-       0,    61,    63,    62,    64,    62,    65,    62,    66,    62,
-      67,    62,    68,    62,    69,    62,    70,    62,    71,    62,
-      72,    72,    72,    72,    72,    72,    72,    73,    75,    74,
-      76,    77,    77,    78,    78,    80,    79,    81,    81,    82,
-      82,    83,    85,    84,    86,    86,    87,    87,    87,    87,
-      87,    87,    89,    88,    91,    90,    92,    92,    93,    93,
-      93,    93,    93,    93,    93,    93,    93,    93,    93,    93,
-      93,    95,    94,    96,    97,    99,    98,   100,   100,   102,
-     101,   104,   103,   106,   105,   108,   107,   110,   109,   111,
-     111,   112,   112,   113,   113,   115,   114,   117,   116,   118,
-     118,   119,   119,   121,   120,   123,   122,   124,   124,   125,
-     125,   125,   125,   125,   125,   127,   126,   129,   128,   131,
-     130,   133,   132,   134,   134,   136,   135,   138,   137,   139,
-     139,   140,   140,   140,   140,   140,   140,   142,   141,   144,
-     143,   145,   147,   146,   149,   148,   150,   150,   151,   151,
-     153,   152,   155,   154,   156,   156,   157,   157,   157,   157,
-     157,   157,   157,   159,   158,   161,   160,   162,   164,   163,
-     166,   165,   167,   167,   168,   168,   168,   168,   168,   170,
-     169,   172,   171,   174,   173,   176,   175,   178,   177,   180,
-     179,   181,   181,   182,   184,   183,   185,   185,   187,   186,
-     188,   188,   189,   189,   189,   189,   189,   189,   189,   191,
-     190,   192,   194,   193,   196,   195,   197,   197,   199,   198,
-     200,   200,   201,   201,   201,   201,   201,   203,   202,   204,
-     205,   206,   208,   207
+       0,    57,    59,    58,    60,    58,    61,    58,    62,    58,
+      63,    58,    64,    58,    65,    58,    66,    58,    67,    58,
+      68,    68,    68,    68,    68,    68,    68,    69,    71,    70,
+      72,    73,    73,    74,    74,    76,    75,    77,    77,    78,
+      78,    79,    81,    80,    82,    83,    85,    84,    87,    86,
+      88,    88,    89,    89,    89,    89,    89,    89,    89,    89,
+      89,    89,    89,    89,    89,    91,    90,    92,    93,    95,
+      94,    96,    96,    98,    97,   100,    99,   102,   101,   104,
+     103,   106,   105,   107,   107,   108,   108,   109,   109,   111,
+     110,   113,   112,   114,   114,   115,   115,   117,   116,   119,
+     118,   120,   120,   121,   121,   121,   121,   121,   121,   123,
+     122,   125,   124,   127,   126,   129,   128,   130,   130,   132,
+     131,   134,   133,   135,   135,   136,   136,   136,   136,   136,
+     136,   138,   137,   140,   139,   141,   143,   142,   145,   144,
+     146,   146,   147,   147,   149,   148,   151,   150,   152,   152,
+     153,   153,   153,   153,   153,   153,   153,   155,   154,   157,
+     156,   158,   160,   159,   162,   161,   163,   163,   164,   164,
+     164,   164,   164,   166,   165,   168,   167,   170,   169,   171,
+     171,   173,   172,   174,   174,   175,   175,   175,   175,   175,
+     175,   175,   177,   176,   178,   180,   179,   182,   181,   183,
+     183,   185,   184,   186,   186,   187,   187,   187,   187,   187,
+     189,   188,   190,   191,   192,   194,   193
   };
 
   const signed char
@@ -2477,26 +2387,24 @@ namespace isc { namespace d2 {
        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        1,     0,     1,     3,     5,     0,     4,     0,     1,     1,
-       3,     2,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     0,     6,     0,     4,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     3,     3,     0,     4,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     6,     0,
-       1,     1,     3,     1,     1,     0,     6,     0,     4,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       6,     0,     4,     1,     3,     0,     4,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     3,     0,     6,     0,     4,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     0,     4,     3,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       6,     1,     3,     1,     0,     6,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     3,     0,     4,     0,     6,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     3,
-       3,     3,     0,     4
+       3,     2,     0,     4,     1,     1,     0,     6,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     3,     3,     0,
+       4,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       6,     0,     6,     0,     1,     1,     3,     1,     1,     0,
+       6,     0,     4,     0,     1,     1,     3,     0,     4,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     6,     0,     4,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     3,     0,     6,     0,     4,
+       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     3,     0,     4,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     6,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     4,     0,     6,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       0,     4,     3,     3,     3,     0,     4
   };
 
 
@@ -2507,18 +2415,18 @@ namespace isc { namespace d2 {
   const D2Parser::yytname_[] =
   {
   "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
-  "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"Dhcp4\"",
-  "\"Control-agent\"", "\"DhcpDdns\"", "\"ip-address\"", "\"port\"",
-  "\"dns-server-timeout\"", "\"ncr-protocol\"", "\"UDP\"", "\"TCP\"",
-  "\"ncr-format\"", "\"JSON\"", "\"user-context\"", "\"comment\"",
-  "\"forward-ddns\"", "\"reverse-ddns\"", "\"ddns-domains\"",
-  "\"key-name\"", "\"dns-servers\"", "\"hostname\"", "\"tsig-keys\"",
-  "\"algorithm\"", "\"digest-bits\"", "\"secret\"", "\"control-socket\"",
-  "\"socket-type\"", "\"socket-name\"", "\"Logging\"", "\"loggers\"",
-  "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
-  "TOPLEVEL_JSON", "TOPLEVEL_DHCPDDNS", "SUB_DHCPDDNS", "SUB_TSIG_KEY",
-  "SUB_TSIG_KEYS", "SUB_DDNS_DOMAIN", "SUB_DDNS_DOMAINS", "SUB_DNS_SERVER",
+  "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"DhcpDdns\"",
+  "\"ip-address\"", "\"port\"", "\"dns-server-timeout\"",
+  "\"ncr-protocol\"", "\"UDP\"", "\"TCP\"", "\"ncr-format\"", "\"JSON\"",
+  "\"user-context\"", "\"comment\"", "\"forward-ddns\"",
+  "\"reverse-ddns\"", "\"ddns-domains\"", "\"key-name\"",
+  "\"dns-servers\"", "\"hostname\"", "\"tsig-keys\"", "\"algorithm\"",
+  "\"digest-bits\"", "\"secret\"", "\"control-socket\"", "\"socket-type\"",
+  "\"socket-name\"", "\"loggers\"", "\"name\"", "\"output_options\"",
+  "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"",
+  "\"maxsize\"", "\"maxver\"", "\"pattern\"", "TOPLEVEL_JSON",
+  "TOPLEVEL_DHCPDDNS", "SUB_DHCPDDNS", "SUB_TSIG_KEY", "SUB_TSIG_KEYS",
+  "SUB_DDNS_DOMAIN", "SUB_DDNS_DOMAINS", "SUB_DNS_SERVER",
   "SUB_DNS_SERVERS", "\"constant string\"", "\"integer\"",
   "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
   "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "value", "sub_json",
@@ -2544,15 +2452,12 @@ namespace isc { namespace d2 {
   "tsig_key_name", "$@38", "tsig_key_algorithm", "$@39",
   "tsig_key_digest_bits", "tsig_key_secret", "$@40", "control_socket",
   "$@41", "control_socket_params", "control_socket_param",
-  "control_socket_type", "$@42", "control_socket_name", "$@43",
-  "dhcp6_json_object", "$@44", "dhcp4_json_object", "$@45",
-  "control_agent_json_object", "$@46", "logging_object", "$@47",
-  "logging_params", "logging_param", "loggers", "$@48", "loggers_entries",
-  "logger_entry", "$@49", "logger_params", "logger_param", "name", "$@50",
-  "debuglevel", "severity", "$@51", "output_options_list", "$@52",
-  "output_options_list_content", "output_entry", "$@53",
-  "output_params_list", "output_params", "output", "$@54", "flush",
-  "maxsize", "maxver", "pattern", "$@55", YY_NULLPTR
+  "control_socket_type", "$@42", "control_socket_name", "$@43", "loggers",
+  "$@44", "loggers_entries", "logger_entry", "$@45", "logger_params",
+  "logger_param", "name", "$@46", "debuglevel", "severity", "$@47",
+  "output_options_list", "$@48", "output_options_list_content",
+  "output_entry", "$@49", "output_params_list", "output_params", "output",
+  "$@50", "flush", "maxsize", "maxver", "pattern", "$@51", YY_NULLPTR
   };
 #endif
 
@@ -2561,30 +2466,28 @@ namespace isc { namespace d2 {
   const short
   D2Parser::yyrline_[] =
   {
-       0,   125,   125,   125,   126,   126,   127,   127,   128,   128,
-     129,   129,   130,   130,   131,   131,   132,   132,   133,   133,
-     141,   142,   143,   144,   145,   146,   147,   150,   155,   155,
-     166,   169,   170,   173,   177,   184,   184,   191,   192,   195,
-     199,   210,   220,   220,   232,   233,   237,   238,   239,   240,
-     241,   242,   247,   247,   257,   257,   265,   266,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   285,   285,   293,   301,   310,   310,   318,   319,   322,
-     322,   330,   330,   355,   355,   382,   382,   392,   392,   402,
-     403,   406,   407,   410,   411,   416,   416,   426,   426,   433,
-     434,   437,   438,   441,   441,   449,   449,   456,   457,   460,
-     461,   462,   463,   464,   465,   469,   469,   481,   481,   493,
-     493,   503,   503,   510,   511,   514,   514,   522,   522,   529,
-     530,   533,   534,   535,   536,   537,   538,   541,   541,   553,
-     553,   561,   575,   575,   585,   585,   592,   593,   596,   597,
-     600,   600,   608,   608,   617,   618,   621,   622,   623,   624,
-     625,   626,   627,   630,   630,   642,   642,   653,   661,   661,
-     677,   677,   687,   688,   691,   692,   693,   694,   695,   698,
-     698,   706,   706,   716,   716,   723,   723,   730,   730,   742,
-     742,   755,   756,   760,   764,   764,   776,   777,   781,   781,
-     789,   790,   793,   794,   795,   796,   797,   798,   799,   802,
-     802,   810,   814,   814,   822,   822,   832,   833,   836,   836,
-     844,   845,   848,   849,   850,   851,   852,   855,   855,   863,
-     868,   873,   878,   878
+       0,   120,   120,   120,   121,   121,   122,   122,   123,   123,
+     124,   124,   125,   125,   126,   126,   127,   127,   128,   128,
+     136,   137,   138,   139,   140,   141,   142,   145,   150,   150,
+     161,   164,   165,   168,   172,   179,   179,   186,   187,   190,
+     194,   205,   214,   214,   226,   230,   235,   235,   245,   245,
+     253,   254,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   273,   273,   281,   289,   298,
+     298,   306,   307,   310,   310,   318,   318,   343,   343,   370,
+     370,   380,   380,   390,   391,   394,   395,   398,   399,   404,
+     404,   414,   414,   421,   422,   425,   426,   429,   429,   437,
+     437,   444,   445,   448,   449,   450,   451,   452,   453,   457,
+     457,   469,   469,   481,   481,   491,   491,   498,   499,   502,
+     502,   510,   510,   517,   518,   521,   522,   523,   524,   525,
+     526,   529,   529,   541,   541,   549,   563,   563,   573,   573,
+     580,   581,   584,   585,   588,   588,   596,   596,   605,   606,
+     609,   610,   611,   612,   613,   614,   615,   618,   618,   630,
+     630,   641,   649,   649,   665,   665,   675,   676,   679,   680,
+     681,   682,   683,   686,   686,   694,   694,   705,   705,   717,
+     718,   722,   722,   730,   731,   734,   735,   736,   737,   738,
+     739,   740,   743,   743,   751,   755,   755,   763,   763,   773,
+     774,   777,   777,   785,   786,   789,   790,   791,   792,   793,
+     796,   796,   804,   809,   814,   819,   819
   };
 
   void
@@ -2617,9 +2520,9 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 2621 "d2_parser.cc"
+#line 2524 "d2_parser.cc"
 
-#line 886 "d2_parser.yy"
+#line 827 "d2_parser.yy"
 
 
 void
index 4a92d2b00b01f96b259902fd2cceccb71c3887b2..b7d5c6f981f89b352d083373367ab5edf4deec93 100644 (file)
@@ -488,57 +488,53 @@ namespace isc { namespace d2 {
     TOKEN_LCURLY_BRACKET = 262,    // "{"
     TOKEN_RCURLY_BRACKET = 263,    // "}"
     TOKEN_NULL_TYPE = 264,         // "null"
-    TOKEN_DHCP6 = 265,             // "Dhcp6"
-    TOKEN_DHCP4 = 266,             // "Dhcp4"
-    TOKEN_CONTROL_AGENT = 267,     // "Control-agent"
-    TOKEN_DHCPDDNS = 268,          // "DhcpDdns"
-    TOKEN_IP_ADDRESS = 269,        // "ip-address"
-    TOKEN_PORT = 270,              // "port"
-    TOKEN_DNS_SERVER_TIMEOUT = 271, // "dns-server-timeout"
-    TOKEN_NCR_PROTOCOL = 272,      // "ncr-protocol"
-    TOKEN_UDP = 273,               // "UDP"
-    TOKEN_TCP = 274,               // "TCP"
-    TOKEN_NCR_FORMAT = 275,        // "ncr-format"
-    TOKEN_JSON = 276,              // "JSON"
-    TOKEN_USER_CONTEXT = 277,      // "user-context"
-    TOKEN_COMMENT = 278,           // "comment"
-    TOKEN_FORWARD_DDNS = 279,      // "forward-ddns"
-    TOKEN_REVERSE_DDNS = 280,      // "reverse-ddns"
-    TOKEN_DDNS_DOMAINS = 281,      // "ddns-domains"
-    TOKEN_KEY_NAME = 282,          // "key-name"
-    TOKEN_DNS_SERVERS = 283,       // "dns-servers"
-    TOKEN_HOSTNAME = 284,          // "hostname"
-    TOKEN_TSIG_KEYS = 285,         // "tsig-keys"
-    TOKEN_ALGORITHM = 286,         // "algorithm"
-    TOKEN_DIGEST_BITS = 287,       // "digest-bits"
-    TOKEN_SECRET = 288,            // "secret"
-    TOKEN_CONTROL_SOCKET = 289,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 290,       // "socket-type"
-    TOKEN_SOCKET_NAME = 291,       // "socket-name"
-    TOKEN_LOGGING = 292,           // "Logging"
-    TOKEN_LOGGERS = 293,           // "loggers"
-    TOKEN_NAME = 294,              // "name"
-    TOKEN_OUTPUT_OPTIONS = 295,    // "output_options"
-    TOKEN_OUTPUT = 296,            // "output"
-    TOKEN_DEBUGLEVEL = 297,        // "debuglevel"
-    TOKEN_SEVERITY = 298,          // "severity"
-    TOKEN_FLUSH = 299,             // "flush"
-    TOKEN_MAXSIZE = 300,           // "maxsize"
-    TOKEN_MAXVER = 301,            // "maxver"
-    TOKEN_PATTERN = 302,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 303,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCPDDNS = 304, // TOPLEVEL_DHCPDDNS
-    TOKEN_SUB_DHCPDDNS = 305,      // SUB_DHCPDDNS
-    TOKEN_SUB_TSIG_KEY = 306,      // SUB_TSIG_KEY
-    TOKEN_SUB_TSIG_KEYS = 307,     // SUB_TSIG_KEYS
-    TOKEN_SUB_DDNS_DOMAIN = 308,   // SUB_DDNS_DOMAIN
-    TOKEN_SUB_DDNS_DOMAINS = 309,  // SUB_DDNS_DOMAINS
-    TOKEN_SUB_DNS_SERVER = 310,    // SUB_DNS_SERVER
-    TOKEN_SUB_DNS_SERVERS = 311,   // SUB_DNS_SERVERS
-    TOKEN_STRING = 312,            // "constant string"
-    TOKEN_INTEGER = 313,           // "integer"
-    TOKEN_FLOAT = 314,             // "floating point"
-    TOKEN_BOOLEAN = 315            // "boolean"
+    TOKEN_DHCPDDNS = 265,          // "DhcpDdns"
+    TOKEN_IP_ADDRESS = 266,        // "ip-address"
+    TOKEN_PORT = 267,              // "port"
+    TOKEN_DNS_SERVER_TIMEOUT = 268, // "dns-server-timeout"
+    TOKEN_NCR_PROTOCOL = 269,      // "ncr-protocol"
+    TOKEN_UDP = 270,               // "UDP"
+    TOKEN_TCP = 271,               // "TCP"
+    TOKEN_NCR_FORMAT = 272,        // "ncr-format"
+    TOKEN_JSON = 273,              // "JSON"
+    TOKEN_USER_CONTEXT = 274,      // "user-context"
+    TOKEN_COMMENT = 275,           // "comment"
+    TOKEN_FORWARD_DDNS = 276,      // "forward-ddns"
+    TOKEN_REVERSE_DDNS = 277,      // "reverse-ddns"
+    TOKEN_DDNS_DOMAINS = 278,      // "ddns-domains"
+    TOKEN_KEY_NAME = 279,          // "key-name"
+    TOKEN_DNS_SERVERS = 280,       // "dns-servers"
+    TOKEN_HOSTNAME = 281,          // "hostname"
+    TOKEN_TSIG_KEYS = 282,         // "tsig-keys"
+    TOKEN_ALGORITHM = 283,         // "algorithm"
+    TOKEN_DIGEST_BITS = 284,       // "digest-bits"
+    TOKEN_SECRET = 285,            // "secret"
+    TOKEN_CONTROL_SOCKET = 286,    // "control-socket"
+    TOKEN_SOCKET_TYPE = 287,       // "socket-type"
+    TOKEN_SOCKET_NAME = 288,       // "socket-name"
+    TOKEN_LOGGERS = 289,           // "loggers"
+    TOKEN_NAME = 290,              // "name"
+    TOKEN_OUTPUT_OPTIONS = 291,    // "output_options"
+    TOKEN_OUTPUT = 292,            // "output"
+    TOKEN_DEBUGLEVEL = 293,        // "debuglevel"
+    TOKEN_SEVERITY = 294,          // "severity"
+    TOKEN_FLUSH = 295,             // "flush"
+    TOKEN_MAXSIZE = 296,           // "maxsize"
+    TOKEN_MAXVER = 297,            // "maxver"
+    TOKEN_PATTERN = 298,           // "pattern"
+    TOKEN_TOPLEVEL_JSON = 299,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCPDDNS = 300, // TOPLEVEL_DHCPDDNS
+    TOKEN_SUB_DHCPDDNS = 301,      // SUB_DHCPDDNS
+    TOKEN_SUB_TSIG_KEY = 302,      // SUB_TSIG_KEY
+    TOKEN_SUB_TSIG_KEYS = 303,     // SUB_TSIG_KEYS
+    TOKEN_SUB_DDNS_DOMAIN = 304,   // SUB_DDNS_DOMAIN
+    TOKEN_SUB_DDNS_DOMAINS = 305,  // SUB_DDNS_DOMAINS
+    TOKEN_SUB_DNS_SERVER = 306,    // SUB_DNS_SERVER
+    TOKEN_SUB_DNS_SERVERS = 307,   // SUB_DNS_SERVERS
+    TOKEN_STRING = 308,            // "constant string"
+    TOKEN_INTEGER = 309,           // "integer"
+    TOKEN_FLOAT = 310,             // "floating point"
+    TOKEN_BOOLEAN = 311            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -555,7 +551,7 @@ namespace isc { namespace d2 {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 61, ///< Number of tokens.
+        YYNTOKENS = 57, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -567,205 +563,191 @@ namespace isc { namespace d2 {
         S_LCURLY_BRACKET = 7,                    // "{"
         S_RCURLY_BRACKET = 8,                    // "}"
         S_NULL_TYPE = 9,                         // "null"
-        S_DHCP6 = 10,                            // "Dhcp6"
-        S_DHCP4 = 11,                            // "Dhcp4"
-        S_CONTROL_AGENT = 12,                    // "Control-agent"
-        S_DHCPDDNS = 13,                         // "DhcpDdns"
-        S_IP_ADDRESS = 14,                       // "ip-address"
-        S_PORT = 15,                             // "port"
-        S_DNS_SERVER_TIMEOUT = 16,               // "dns-server-timeout"
-        S_NCR_PROTOCOL = 17,                     // "ncr-protocol"
-        S_UDP = 18,                              // "UDP"
-        S_TCP = 19,                              // "TCP"
-        S_NCR_FORMAT = 20,                       // "ncr-format"
-        S_JSON = 21,                             // "JSON"
-        S_USER_CONTEXT = 22,                     // "user-context"
-        S_COMMENT = 23,                          // "comment"
-        S_FORWARD_DDNS = 24,                     // "forward-ddns"
-        S_REVERSE_DDNS = 25,                     // "reverse-ddns"
-        S_DDNS_DOMAINS = 26,                     // "ddns-domains"
-        S_KEY_NAME = 27,                         // "key-name"
-        S_DNS_SERVERS = 28,                      // "dns-servers"
-        S_HOSTNAME = 29,                         // "hostname"
-        S_TSIG_KEYS = 30,                        // "tsig-keys"
-        S_ALGORITHM = 31,                        // "algorithm"
-        S_DIGEST_BITS = 32,                      // "digest-bits"
-        S_SECRET = 33,                           // "secret"
-        S_CONTROL_SOCKET = 34,                   // "control-socket"
-        S_SOCKET_TYPE = 35,                      // "socket-type"
-        S_SOCKET_NAME = 36,                      // "socket-name"
-        S_LOGGING = 37,                          // "Logging"
-        S_LOGGERS = 38,                          // "loggers"
-        S_NAME = 39,                             // "name"
-        S_OUTPUT_OPTIONS = 40,                   // "output_options"
-        S_OUTPUT = 41,                           // "output"
-        S_DEBUGLEVEL = 42,                       // "debuglevel"
-        S_SEVERITY = 43,                         // "severity"
-        S_FLUSH = 44,                            // "flush"
-        S_MAXSIZE = 45,                          // "maxsize"
-        S_MAXVER = 46,                           // "maxver"
-        S_PATTERN = 47,                          // "pattern"
-        S_TOPLEVEL_JSON = 48,                    // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCPDDNS = 49,                // TOPLEVEL_DHCPDDNS
-        S_SUB_DHCPDDNS = 50,                     // SUB_DHCPDDNS
-        S_SUB_TSIG_KEY = 51,                     // SUB_TSIG_KEY
-        S_SUB_TSIG_KEYS = 52,                    // SUB_TSIG_KEYS
-        S_SUB_DDNS_DOMAIN = 53,                  // SUB_DDNS_DOMAIN
-        S_SUB_DDNS_DOMAINS = 54,                 // SUB_DDNS_DOMAINS
-        S_SUB_DNS_SERVER = 55,                   // SUB_DNS_SERVER
-        S_SUB_DNS_SERVERS = 56,                  // SUB_DNS_SERVERS
-        S_STRING = 57,                           // "constant string"
-        S_INTEGER = 58,                          // "integer"
-        S_FLOAT = 59,                            // "floating point"
-        S_BOOLEAN = 60,                          // "boolean"
-        S_YYACCEPT = 61,                         // $accept
-        S_start = 62,                            // start
-        S_63_1 = 63,                             // $@1
-        S_64_2 = 64,                             // $@2
-        S_65_3 = 65,                             // $@3
-        S_66_4 = 66,                             // $@4
-        S_67_5 = 67,                             // $@5
-        S_68_6 = 68,                             // $@6
-        S_69_7 = 69,                             // $@7
-        S_70_8 = 70,                             // $@8
-        S_71_9 = 71,                             // $@9
-        S_value = 72,                            // value
-        S_sub_json = 73,                         // sub_json
-        S_map2 = 74,                             // map2
-        S_75_10 = 75,                            // $@10
-        S_map_value = 76,                        // map_value
-        S_map_content = 77,                      // map_content
-        S_not_empty_map = 78,                    // not_empty_map
-        S_list_generic = 79,                     // list_generic
-        S_80_11 = 80,                            // $@11
-        S_list_content = 81,                     // list_content
-        S_not_empty_list = 82,                   // not_empty_list
-        S_unknown_map_entry = 83,                // unknown_map_entry
-        S_syntax_map = 84,                       // syntax_map
-        S_85_12 = 85,                            // $@12
-        S_global_objects = 86,                   // global_objects
-        S_global_object = 87,                    // global_object
-        S_dhcpddns_object = 88,                  // dhcpddns_object
-        S_89_13 = 89,                            // $@13
-        S_sub_dhcpddns = 90,                     // sub_dhcpddns
-        S_91_14 = 91,                            // $@14
-        S_dhcpddns_params = 92,                  // dhcpddns_params
-        S_dhcpddns_param = 93,                   // dhcpddns_param
-        S_ip_address = 94,                       // ip_address
-        S_95_15 = 95,                            // $@15
-        S_port = 96,                             // port
-        S_dns_server_timeout = 97,               // dns_server_timeout
-        S_ncr_protocol = 98,                     // ncr_protocol
-        S_99_16 = 99,                            // $@16
-        S_ncr_protocol_value = 100,              // ncr_protocol_value
-        S_ncr_format = 101,                      // ncr_format
-        S_102_17 = 102,                          // $@17
-        S_user_context = 103,                    // user_context
-        S_104_18 = 104,                          // $@18
-        S_comment = 105,                         // comment
-        S_106_19 = 106,                          // $@19
-        S_forward_ddns = 107,                    // forward_ddns
-        S_108_20 = 108,                          // $@20
-        S_reverse_ddns = 109,                    // reverse_ddns
-        S_110_21 = 110,                          // $@21
-        S_ddns_mgr_params = 111,                 // ddns_mgr_params
-        S_not_empty_ddns_mgr_params = 112,       // not_empty_ddns_mgr_params
-        S_ddns_mgr_param = 113,                  // ddns_mgr_param
-        S_ddns_domains = 114,                    // ddns_domains
-        S_115_22 = 115,                          // $@22
-        S_sub_ddns_domains = 116,                // sub_ddns_domains
-        S_117_23 = 117,                          // $@23
-        S_ddns_domain_list = 118,                // ddns_domain_list
-        S_not_empty_ddns_domain_list = 119,      // not_empty_ddns_domain_list
-        S_ddns_domain = 120,                     // ddns_domain
-        S_121_24 = 121,                          // $@24
-        S_sub_ddns_domain = 122,                 // sub_ddns_domain
-        S_123_25 = 123,                          // $@25
-        S_ddns_domain_params = 124,              // ddns_domain_params
-        S_ddns_domain_param = 125,               // ddns_domain_param
-        S_ddns_domain_name = 126,                // ddns_domain_name
-        S_127_26 = 127,                          // $@26
-        S_ddns_domain_key_name = 128,            // ddns_domain_key_name
-        S_129_27 = 129,                          // $@27
-        S_dns_servers = 130,                     // dns_servers
-        S_131_28 = 131,                          // $@28
-        S_sub_dns_servers = 132,                 // sub_dns_servers
-        S_133_29 = 133,                          // $@29
-        S_dns_server_list = 134,                 // dns_server_list
-        S_dns_server = 135,                      // dns_server
-        S_136_30 = 136,                          // $@30
-        S_sub_dns_server = 137,                  // sub_dns_server
-        S_138_31 = 138,                          // $@31
-        S_dns_server_params = 139,               // dns_server_params
-        S_dns_server_param = 140,                // dns_server_param
-        S_dns_server_hostname = 141,             // dns_server_hostname
-        S_142_32 = 142,                          // $@32
-        S_dns_server_ip_address = 143,           // dns_server_ip_address
-        S_144_33 = 144,                          // $@33
-        S_dns_server_port = 145,                 // dns_server_port
-        S_tsig_keys = 146,                       // tsig_keys
-        S_147_34 = 147,                          // $@34
-        S_sub_tsig_keys = 148,                   // sub_tsig_keys
-        S_149_35 = 149,                          // $@35
-        S_tsig_keys_list = 150,                  // tsig_keys_list
-        S_not_empty_tsig_keys_list = 151,        // not_empty_tsig_keys_list
-        S_tsig_key = 152,                        // tsig_key
-        S_153_36 = 153,                          // $@36
-        S_sub_tsig_key = 154,                    // sub_tsig_key
-        S_155_37 = 155,                          // $@37
-        S_tsig_key_params = 156,                 // tsig_key_params
-        S_tsig_key_param = 157,                  // tsig_key_param
-        S_tsig_key_name = 158,                   // tsig_key_name
-        S_159_38 = 159,                          // $@38
-        S_tsig_key_algorithm = 160,              // tsig_key_algorithm
-        S_161_39 = 161,                          // $@39
-        S_tsig_key_digest_bits = 162,            // tsig_key_digest_bits
-        S_tsig_key_secret = 163,                 // tsig_key_secret
-        S_164_40 = 164,                          // $@40
-        S_control_socket = 165,                  // control_socket
-        S_166_41 = 166,                          // $@41
-        S_control_socket_params = 167,           // control_socket_params
-        S_control_socket_param = 168,            // control_socket_param
-        S_control_socket_type = 169,             // control_socket_type
-        S_170_42 = 170,                          // $@42
-        S_control_socket_name = 171,             // control_socket_name
-        S_172_43 = 172,                          // $@43
-        S_dhcp6_json_object = 173,               // dhcp6_json_object
-        S_174_44 = 174,                          // $@44
-        S_dhcp4_json_object = 175,               // dhcp4_json_object
-        S_176_45 = 176,                          // $@45
-        S_control_agent_json_object = 177,       // control_agent_json_object
-        S_178_46 = 178,                          // $@46
-        S_logging_object = 179,                  // logging_object
+        S_DHCPDDNS = 10,                         // "DhcpDdns"
+        S_IP_ADDRESS = 11,                       // "ip-address"
+        S_PORT = 12,                             // "port"
+        S_DNS_SERVER_TIMEOUT = 13,               // "dns-server-timeout"
+        S_NCR_PROTOCOL = 14,                     // "ncr-protocol"
+        S_UDP = 15,                              // "UDP"
+        S_TCP = 16,                              // "TCP"
+        S_NCR_FORMAT = 17,                       // "ncr-format"
+        S_JSON = 18,                             // "JSON"
+        S_USER_CONTEXT = 19,                     // "user-context"
+        S_COMMENT = 20,                          // "comment"
+        S_FORWARD_DDNS = 21,                     // "forward-ddns"
+        S_REVERSE_DDNS = 22,                     // "reverse-ddns"
+        S_DDNS_DOMAINS = 23,                     // "ddns-domains"
+        S_KEY_NAME = 24,                         // "key-name"
+        S_DNS_SERVERS = 25,                      // "dns-servers"
+        S_HOSTNAME = 26,                         // "hostname"
+        S_TSIG_KEYS = 27,                        // "tsig-keys"
+        S_ALGORITHM = 28,                        // "algorithm"
+        S_DIGEST_BITS = 29,                      // "digest-bits"
+        S_SECRET = 30,                           // "secret"
+        S_CONTROL_SOCKET = 31,                   // "control-socket"
+        S_SOCKET_TYPE = 32,                      // "socket-type"
+        S_SOCKET_NAME = 33,                      // "socket-name"
+        S_LOGGERS = 34,                          // "loggers"
+        S_NAME = 35,                             // "name"
+        S_OUTPUT_OPTIONS = 36,                   // "output_options"
+        S_OUTPUT = 37,                           // "output"
+        S_DEBUGLEVEL = 38,                       // "debuglevel"
+        S_SEVERITY = 39,                         // "severity"
+        S_FLUSH = 40,                            // "flush"
+        S_MAXSIZE = 41,                          // "maxsize"
+        S_MAXVER = 42,                           // "maxver"
+        S_PATTERN = 43,                          // "pattern"
+        S_TOPLEVEL_JSON = 44,                    // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCPDDNS = 45,                // TOPLEVEL_DHCPDDNS
+        S_SUB_DHCPDDNS = 46,                     // SUB_DHCPDDNS
+        S_SUB_TSIG_KEY = 47,                     // SUB_TSIG_KEY
+        S_SUB_TSIG_KEYS = 48,                    // SUB_TSIG_KEYS
+        S_SUB_DDNS_DOMAIN = 49,                  // SUB_DDNS_DOMAIN
+        S_SUB_DDNS_DOMAINS = 50,                 // SUB_DDNS_DOMAINS
+        S_SUB_DNS_SERVER = 51,                   // SUB_DNS_SERVER
+        S_SUB_DNS_SERVERS = 52,                  // SUB_DNS_SERVERS
+        S_STRING = 53,                           // "constant string"
+        S_INTEGER = 54,                          // "integer"
+        S_FLOAT = 55,                            // "floating point"
+        S_BOOLEAN = 56,                          // "boolean"
+        S_YYACCEPT = 57,                         // $accept
+        S_start = 58,                            // start
+        S_59_1 = 59,                             // $@1
+        S_60_2 = 60,                             // $@2
+        S_61_3 = 61,                             // $@3
+        S_62_4 = 62,                             // $@4
+        S_63_5 = 63,                             // $@5
+        S_64_6 = 64,                             // $@6
+        S_65_7 = 65,                             // $@7
+        S_66_8 = 66,                             // $@8
+        S_67_9 = 67,                             // $@9
+        S_value = 68,                            // value
+        S_sub_json = 69,                         // sub_json
+        S_map2 = 70,                             // map2
+        S_71_10 = 71,                            // $@10
+        S_map_value = 72,                        // map_value
+        S_map_content = 73,                      // map_content
+        S_not_empty_map = 74,                    // not_empty_map
+        S_list_generic = 75,                     // list_generic
+        S_76_11 = 76,                            // $@11
+        S_list_content = 77,                     // list_content
+        S_not_empty_list = 78,                   // not_empty_list
+        S_unknown_map_entry = 79,                // unknown_map_entry
+        S_syntax_map = 80,                       // syntax_map
+        S_81_12 = 81,                            // $@12
+        S_global_objects = 82,                   // global_objects
+        S_global_object = 83,                    // global_object
+        S_dhcpddns_object = 84,                  // dhcpddns_object
+        S_85_13 = 85,                            // $@13
+        S_sub_dhcpddns = 86,                     // sub_dhcpddns
+        S_87_14 = 87,                            // $@14
+        S_dhcpddns_params = 88,                  // dhcpddns_params
+        S_dhcpddns_param = 89,                   // dhcpddns_param
+        S_ip_address = 90,                       // ip_address
+        S_91_15 = 91,                            // $@15
+        S_port = 92,                             // port
+        S_dns_server_timeout = 93,               // dns_server_timeout
+        S_ncr_protocol = 94,                     // ncr_protocol
+        S_95_16 = 95,                            // $@16
+        S_ncr_protocol_value = 96,               // ncr_protocol_value
+        S_ncr_format = 97,                       // ncr_format
+        S_98_17 = 98,                            // $@17
+        S_user_context = 99,                     // user_context
+        S_100_18 = 100,                          // $@18
+        S_comment = 101,                         // comment
+        S_102_19 = 102,                          // $@19
+        S_forward_ddns = 103,                    // forward_ddns
+        S_104_20 = 104,                          // $@20
+        S_reverse_ddns = 105,                    // reverse_ddns
+        S_106_21 = 106,                          // $@21
+        S_ddns_mgr_params = 107,                 // ddns_mgr_params
+        S_not_empty_ddns_mgr_params = 108,       // not_empty_ddns_mgr_params
+        S_ddns_mgr_param = 109,                  // ddns_mgr_param
+        S_ddns_domains = 110,                    // ddns_domains
+        S_111_22 = 111,                          // $@22
+        S_sub_ddns_domains = 112,                // sub_ddns_domains
+        S_113_23 = 113,                          // $@23
+        S_ddns_domain_list = 114,                // ddns_domain_list
+        S_not_empty_ddns_domain_list = 115,      // not_empty_ddns_domain_list
+        S_ddns_domain = 116,                     // ddns_domain
+        S_117_24 = 117,                          // $@24
+        S_sub_ddns_domain = 118,                 // sub_ddns_domain
+        S_119_25 = 119,                          // $@25
+        S_ddns_domain_params = 120,              // ddns_domain_params
+        S_ddns_domain_param = 121,               // ddns_domain_param
+        S_ddns_domain_name = 122,                // ddns_domain_name
+        S_123_26 = 123,                          // $@26
+        S_ddns_domain_key_name = 124,            // ddns_domain_key_name
+        S_125_27 = 125,                          // $@27
+        S_dns_servers = 126,                     // dns_servers
+        S_127_28 = 127,                          // $@28
+        S_sub_dns_servers = 128,                 // sub_dns_servers
+        S_129_29 = 129,                          // $@29
+        S_dns_server_list = 130,                 // dns_server_list
+        S_dns_server = 131,                      // dns_server
+        S_132_30 = 132,                          // $@30
+        S_sub_dns_server = 133,                  // sub_dns_server
+        S_134_31 = 134,                          // $@31
+        S_dns_server_params = 135,               // dns_server_params
+        S_dns_server_param = 136,                // dns_server_param
+        S_dns_server_hostname = 137,             // dns_server_hostname
+        S_138_32 = 138,                          // $@32
+        S_dns_server_ip_address = 139,           // dns_server_ip_address
+        S_140_33 = 140,                          // $@33
+        S_dns_server_port = 141,                 // dns_server_port
+        S_tsig_keys = 142,                       // tsig_keys
+        S_143_34 = 143,                          // $@34
+        S_sub_tsig_keys = 144,                   // sub_tsig_keys
+        S_145_35 = 145,                          // $@35
+        S_tsig_keys_list = 146,                  // tsig_keys_list
+        S_not_empty_tsig_keys_list = 147,        // not_empty_tsig_keys_list
+        S_tsig_key = 148,                        // tsig_key
+        S_149_36 = 149,                          // $@36
+        S_sub_tsig_key = 150,                    // sub_tsig_key
+        S_151_37 = 151,                          // $@37
+        S_tsig_key_params = 152,                 // tsig_key_params
+        S_tsig_key_param = 153,                  // tsig_key_param
+        S_tsig_key_name = 154,                   // tsig_key_name
+        S_155_38 = 155,                          // $@38
+        S_tsig_key_algorithm = 156,              // tsig_key_algorithm
+        S_157_39 = 157,                          // $@39
+        S_tsig_key_digest_bits = 158,            // tsig_key_digest_bits
+        S_tsig_key_secret = 159,                 // tsig_key_secret
+        S_160_40 = 160,                          // $@40
+        S_control_socket = 161,                  // control_socket
+        S_162_41 = 162,                          // $@41
+        S_control_socket_params = 163,           // control_socket_params
+        S_control_socket_param = 164,            // control_socket_param
+        S_control_socket_type = 165,             // control_socket_type
+        S_166_42 = 166,                          // $@42
+        S_control_socket_name = 167,             // control_socket_name
+        S_168_43 = 168,                          // $@43
+        S_loggers = 169,                         // loggers
+        S_170_44 = 170,                          // $@44
+        S_loggers_entries = 171,                 // loggers_entries
+        S_logger_entry = 172,                    // logger_entry
+        S_173_45 = 173,                          // $@45
+        S_logger_params = 174,                   // logger_params
+        S_logger_param = 175,                    // logger_param
+        S_name = 176,                            // name
+        S_177_46 = 177,                          // $@46
+        S_debuglevel = 178,                      // debuglevel
+        S_severity = 179,                        // severity
         S_180_47 = 180,                          // $@47
-        S_logging_params = 181,                  // logging_params
-        S_logging_param = 182,                   // logging_param
-        S_loggers = 183,                         // loggers
-        S_184_48 = 184,                          // $@48
-        S_loggers_entries = 185,                 // loggers_entries
-        S_logger_entry = 186,                    // logger_entry
-        S_187_49 = 187,                          // $@49
-        S_logger_params = 188,                   // logger_params
-        S_logger_param = 189,                    // logger_param
-        S_name = 190,                            // name
-        S_191_50 = 191,                          // $@50
-        S_debuglevel = 192,                      // debuglevel
-        S_severity = 193,                        // severity
-        S_194_51 = 194,                          // $@51
-        S_output_options_list = 195,             // output_options_list
-        S_196_52 = 196,                          // $@52
-        S_output_options_list_content = 197,     // output_options_list_content
-        S_output_entry = 198,                    // output_entry
-        S_199_53 = 199,                          // $@53
-        S_output_params_list = 200,              // output_params_list
-        S_output_params = 201,                   // output_params
-        S_output = 202,                          // output
-        S_203_54 = 203,                          // $@54
-        S_flush = 204,                           // flush
-        S_maxsize = 205,                         // maxsize
-        S_maxver = 206,                          // maxver
-        S_pattern = 207,                         // pattern
-        S_208_55 = 208                           // $@55
+        S_output_options_list = 181,             // output_options_list
+        S_182_48 = 182,                          // $@48
+        S_output_options_list_content = 183,     // output_options_list_content
+        S_output_entry = 184,                    // output_entry
+        S_185_49 = 185,                          // $@49
+        S_output_params_list = 186,              // output_params_list
+        S_output_params = 187,                   // output_params
+        S_output = 188,                          // output
+        S_189_50 = 189,                          // $@50
+        S_flush = 190,                           // flush
+        S_maxsize = 191,                         // maxsize
+        S_maxver = 192,                          // maxver
+        S_pattern = 193,                         // pattern
+        S_194_51 = 194                           // $@51
       };
     };
 
@@ -802,25 +784,25 @@ namespace isc { namespace d2 {
       {
         switch (this->kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -934,25 +916,25 @@ namespace isc { namespace d2 {
         // Value type destructor.
 switch (yykind)
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1046,13 +1028,13 @@ switch (yykind)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1305,51 +1287,6 @@ switch (yykind)
         return symbol_type (token::TOKEN_NULL_TYPE, l);
       }
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_AGENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_AGENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, l);
-      }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -1710,21 +1647,6 @@ switch (yykind)
         return symbol_type (token::TOKEN_SOCKET_NAME, l);
       }
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, l);
-      }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -2122,7 +2044,7 @@ switch (yykind)
     /// \param yyvalue   the value to check
     static bool yy_table_value_is_error_ (int yyvalue);
 
-    static const short yypact_ninf_;
+    static const signed char yypact_ninf_;
     static const signed char yytable_ninf_;
 
     /// Convert a scanner token kind \a t to a symbol kind.
@@ -2400,8 +2322,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 304,     ///< Last index in yytable_.
-      yynnts_ = 148,  ///< Number of nonterminal symbols.
+      yylast_ = 274,     ///< Last index in yytable_.
+      yynnts_ = 138,  ///< Number of nonterminal symbols.
       yyfinal_ = 20 ///< Termination state number.
     };
 
@@ -2452,9 +2374,9 @@ switch (yykind)
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60
+      55,    56
     };
-    const int user_token_number_max_ = 315;
+    const int user_token_number_max_ = 311;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -2473,25 +2395,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2524,25 +2446,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 72: // value
-      case 76: // map_value
-      case 100: // ncr_protocol_value
+      case 68: // value
+      case 72: // map_value
+      case 96: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 60: // "boolean"
+      case 56: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 59: // "floating point"
+      case 55: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 58: // "integer"
+      case 54: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 57: // "constant string"
+      case 53: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2609,7 +2531,7 @@ switch (yykind)
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 2613 "d2_parser.h"
+#line 2535 "d2_parser.h"
 
 
 
index 2a43acee6bc8ec6b507a94756d97af8b4e1e2cfe..342b80dee3621d75a2c939a10f391084deb89ed8 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 63
-#define YY_END_OF_BUFFER 64
+#define YY_NUM_RULES 62
+#define YY_END_OF_BUFFER 63
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,49 +700,48 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[373] =
+static const flex_int16_t yy_accept[365] =
     {   0,
-       56,   56,    0,    0,    0,    0,    0,    0,    0,    0,
-       64,   62,   10,   11,   62,    1,   56,   53,   56,   56,
-       62,   55,   54,   62,   62,   62,   62,   62,   49,   50,
-       62,   62,   62,   51,   52,    5,    5,    5,   62,   62,
-       62,   10,   11,    0,    0,   45,    0,    0,    0,    0,
+       55,   55,    0,    0,    0,    0,    0,    0,    0,    0,
+       63,   61,   10,   11,   61,    1,   55,   52,   55,   55,
+       61,   54,   53,   61,   61,   61,   61,   61,   48,   49,
+       61,   61,   61,   50,   51,    5,    5,    5,   61,   61,
+       61,   10,   11,    0,    0,   44,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    1,   56,   56,    0,   55,   56,    3,    2,
-        6,    0,   56,    0,    0,    0,    0,    0,    0,    4,
-        0,    0,    9,    0,   46,    0,    0,    0,    0,   48,
+        0,    1,   55,   55,    0,   54,   55,    3,    2,    6,
+        0,   55,    0,    0,    0,    0,    0,    0,    4,    0,
+        0,    9,    0,   45,    0,    0,    0,   47,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
-        0,    0,    8,    0,    0,    0,    0,   47,    0,    0,
-       22,    0,    0,   21,    0,    0,    0,    0,    0,    0,
+        0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
+        8,    0,    0,    0,   46,    0,    0,   22,    0,    0,
+       21,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   61,   59,    0,   58,
-       57,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   60,   58,    0,   57,   56,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   60,   57,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,   26,    0,    0,    0,
-        0,    0,    0,   36,    0,    0,    0,    0,    0,    0,
-        0,   25,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   19,   20,   39,    0,    0,    0,    0,    0,
-        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    7,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   41,   38,    0,    0,    0,    0,    0,
-       27,    0,    0,    0,   34,   12,    0,   14,    0,    0,
-        0,   32,   35,    0,   40,    0,    0,   42,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   59,   56,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,   44,    0,    0,    0,    0,    0,    0,    0,
+        0,   26,    0,    0,    0,    0,    0,    0,   35,    0,
+        0,    0,    0,    0,    0,    0,   25,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   19,   20,   38,    0,
+        0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   40,   37,    0,    0,
+        0,    0,    0,   27,    0,    0,    0,   12,    0,   14,
+        0,    0,    0,   32,   34,    0,   39,    0,    0,   41,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   43,    0,    0,    0,   33,    0,
-        0,   30,    0,    0,    0,   15,    0,    0,    0,    0,
-       29,   28,    0,    0,    0,    0,    0,    0,    0,    0,
-       13,    0,    0,    0,    0,    0,    0,    0,   24,    0,
-        0,   37,    0,    0,   31,   18,    0,    0,    0,   17,
-       16,    0
+        0,    0,    0,    0,   43,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   42,    0,    0,    0,
+       33,    0,    0,   30,    0,    0,    0,   15,    0,    0,
+        0,    0,   29,   28,    0,    0,    0,    0,    0,    0,
+        0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
+       24,    0,    0,   36,    0,    0,   31,   18,    0,    0,
+        0,   17,   16,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -787,99 +786,97 @@ static const YY_CHAR yy_meta[61] =
         5,    3,    5,    5,    3,    3,    3,    3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[386] =
+static const flex_int16_t yy_base[378] =
     {   0,
         0,    0,   59,   62,   65,    0,   63,   67,   47,   64,
-      291, 2525,   84,  286,  125,    0,  105, 2525,  120,  125,
-       85,  169, 2525,  262,  139,   65,   69,   82, 2525, 2525,
-       80,   84,  118, 2525, 2525, 2525,   92,  269,  230,    0,
-      256,  110,  270,   97,  186, 2525,  193,  199,  197,  210,
-      219,  234,  255,  263,  269,  278,  284,  291,  297,  303,
-      320,  338,    0,  345,  363,  375,  381,  385, 2525,    0,
-     2525,  332,  349,  121,  144,  128,  152,  171,  160, 2525,
-      222,  248, 2525,  198, 2525,  169,  405,  411,  209,  417,
-      451,  428,  439,  450,  478,  493,  499,  506,  512,  518,
-
-      532,  540,  546,  552,  574,  586,  594,  602,  608,  622,
-      630,  647,  663,  669,    0,  177,  181,  184,  189,  207,
-      204,  130, 2525,    0,  675,  681,  155, 2525,  706,  703,
-     2525,  691,  731, 2525,  747,  756,  764,  770,  776,  784,
-      790,  818,  827,  835,  841,  847,  855,  861,  870,  883,
-      898,  905,  916,  923,  931,  222, 2525, 2525,  223, 2525,
-     2525,  103,    0,  938,  952,  988,  959,  975,  985, 1029,
-     1036, 1042, 1048, 1054, 1062, 1071, 1077, 1087, 1100, 1106,
-     1112, 1120, 1126, 1135, 1145, 1154, 1160, 1178, 1189, 1196,
-     1202, 2525, 2525,  104,    0, 1217, 1224, 1259, 1231, 1245,
-
-     1237, 1257, 1286, 1303, 1309, 1315, 2525, 1321, 1327, 1337,
-     1343, 1349, 1355, 2525, 1361, 1378, 1384, 1390, 1396, 1403,
-     1418, 2525, 1424, 1437,   64,    0, 1444, 1452, 1458, 1465,
-     1473, 1481, 2525, 2525, 2525, 1493, 1499, 1509, 1521, 1532,
-     1542, 2525, 1549, 1556, 1565, 1575, 1584, 1590, 1598, 1604,
-     1613, 2525, 1619, 1632, 1638, 1648, 1656, 1667, 1673, 1681,
-     1690, 1696, 1702, 2525, 2525, 1709, 1724, 1718, 1730, 1737,
-     2525, 1743, 1753, 1759, 2525, 2525, 1771, 2525, 1765, 1794,
-     1807, 2525, 2525, 1813, 2525, 1819, 1827, 2525, 1835, 1847,
-     1853, 1860, 1869, 1886, 1893, 1911, 1919, 1926, 1932, 1940,
-
-     1948, 1954, 2525, 1960, 1976, 1983, 1989, 2002, 2011, 2017,
-     2030, 2037, 2045, 2052, 2058, 2071, 2081, 2087, 2093, 2104,
-     2110, 2116, 2122, 2128, 2525, 2138, 2144, 2151, 2525, 2161,
-     2173, 2525, 2179, 2185, 2195, 2525, 2201, 2207, 2213, 2223,
-     2525, 2525, 2241, 2256, 2262, 2278, 2284, 2290, 2296, 2302,
-     2525, 2312, 2319, 2331, 2337, 2354, 2360, 2366, 2525, 2372,
-     2378, 2525, 2389, 2395, 2525, 2525, 2406, 2412, 2418, 2525,
-     2525, 2525, 2458, 2465, 2472, 2479, 2486, 2493, 2500, 2504,
-     2509, 2511, 2513, 2515, 2517
+      289, 2465,   84,  283,  125,    0,  105, 2465,  120,  125,
+       85,  169, 2465,  241,  139,   65,   69,   82, 2465, 2465,
+       80,   84,  118, 2465, 2465, 2465,   92,  246,  170,    0,
+      196,  110,  210,   97,  186, 2465,  193,  184,  201,  209,
+      221,  238,  245,  264,  254,  271,  279,  290,  299,  308,
+      314,    0,  314,  347,  358,  364,  368, 2465,    0, 2465,
+      214,  320,  121,  152,  128,  174,  217,  160, 2465,  170,
+      200, 2465,  137, 2465,  151,  388,  195,  394,  428,  400,
+      413,  423,  429,  457,  471,  477,  483,  490,  496,  505,
+
+      511,  518,  533,  539,  552,  562,  568,  575,  585,  596,
+      609,  618,    0,  223,  223,  255,  224,  242,  259,  130,
+     2465,    0,  624,  155, 2465,  651,  630, 2465,  652,  644,
+     2465,  678,  692,  700,  706,  712,  720,  728,  753,  735,
+      763,  771,  777,  792,  799,  806,  812,  818,  828,  835,
+      841,  852,  282, 2465, 2465,  300, 2465, 2465,  103,    0,
+      869,  905,  875,  892,  898,  881,  934,  951,  957,  963,
+      969,  975,  985,  997, 1010, 1018, 1030, 1036, 1046, 1052,
+     1064, 1070, 1080, 1093, 1099, 1105, 1116, 2465, 2465,  112,
+        0, 1127, 1162, 1134, 1141, 1160, 1150, 1189, 1204, 1210,
+
+     1217, 2465, 1223, 1229, 1238, 1246, 1252, 1258, 2465, 1264,
+     1280, 1286, 1292, 1299, 1305, 1320, 2465, 1327, 1339,   64,
+        0, 1345, 1360, 1367, 1378, 1386, 2465, 2465, 2465, 1395,
+     1401, 1411, 1429, 1436, 1444, 2465, 1450, 1458, 1464, 1472,
+     1487, 1493, 1500, 1507, 1513, 2465, 1521, 1528, 1535, 1546,
+     1557, 1569, 1575, 1581, 1590, 1597, 2465, 2465, 1603, 1614,
+     1623, 1631, 1637, 2465, 1643, 1656, 1665, 2465, 1676, 2465,
+     1691, 1700, 1712, 2465, 2465, 1719, 2465, 1725, 1733, 2465,
+     1745, 1753, 1759, 1766, 1779, 1792, 1799, 1805, 1820, 1827,
+     1833, 1841, 1849, 1861, 2465, 1874, 1884, 1890, 1897, 1908,
+
+     1923, 1936, 1944, 1951, 1957, 1964, 1972, 1985, 1993, 2001,
+     2007, 2018, 2026, 2036, 2042, 2051, 2465, 2059, 2065, 2075,
+     2465, 2084, 2098, 2465, 2110, 2124, 2131, 2465, 2138, 2146,
+     2153, 2159, 2465, 2465, 2167, 2179, 2193, 2203, 2212, 2218,
+     2226, 2232, 2465, 2241, 2252, 2260, 2269, 2285, 2293, 2303,
+     2465, 2313, 2321, 2465, 2327, 2336, 2465, 2465, 2346, 2356,
+     2362, 2465, 2465, 2465, 2398, 2405, 2412, 2419, 2426, 2433,
+     2440, 2444, 2449, 2451, 2453, 2455, 2457
     } ;
 
-static const flex_int16_t yy_def[386] =
+static const flex_int16_t yy_def[378] =
     {   0,
-      372,    1,  373,  373,    1,    5,    5,    5,    5,    5,
-      372,  372,  372,  372,  374,  375,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  376,
-      372,  372,  372,  377,  374,  372,  374,  374,  378,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  375,  372,  372,  372,  372,  372,  372,  379,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  376,  372,  377,  372,  380,  374,  374,  381,  374,
-      378,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  379,  372,  372,  372,  372,  372,
-      372,  372,  372,  382,  374,  374,  381,  372,  378,  374,
-      372,  374,  374,  372,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  374,  372,  372,  372,  372,  372,
-      372,  372,  383,  374,  374,  378,  374,  374,  374,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  372,  372,  372,  384,  374,  374,  378,  374,  374,
-
-      374,  374,  374,  374,  374,  374,  372,  374,  374,  374,
-      374,  374,  374,  372,  374,  374,  374,  374,  374,  374,
-      374,  372,  374,  374,  372,  385,  374,  374,  374,  374,
-      374,  374,  372,  372,  372,  374,  374,  374,  374,  374,
-      374,  372,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  372,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  372,  372,  374,  374,  374,  374,  374,
-      372,  374,  374,  374,  372,  372,  374,  372,  374,  374,
-      374,  372,  372,  374,  372,  374,  374,  372,  374,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-
-      374,  374,  372,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,  372,  374,  374,  374,  372,  374,
-      374,  372,  374,  374,  374,  372,  374,  374,  374,  374,
-      372,  372,  374,  374,  374,  374,  374,  374,  374,  374,
-      372,  374,  374,  374,  374,  374,  374,  374,  372,  374,
-      374,  372,  374,  374,  372,  372,  374,  374,  374,  372,
-      372,    0,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372
+      364,    1,  365,  365,    1,    5,    5,    5,    5,    5,
+      364,  364,  364,  364,  366,  367,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  368,
+      364,  364,  364,  369,  366,  364,  366,  370,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  367,  364,  364,  364,  364,  364,  364,  371,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      368,  364,  369,  364,  372,  366,  373,  366,  370,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  371,  364,  364,  364,  364,  364,  364,  364,
+      364,  374,  366,  373,  364,  370,  366,  364,  366,  366,
+      364,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  364,  364,  364,  364,  364,  364,  364,  375,
+      366,  370,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  364,  364,  364,
+      376,  366,  370,  366,  366,  366,  366,  366,  366,  366,
+
+      366,  364,  366,  366,  366,  366,  366,  366,  364,  366,
+      366,  366,  366,  366,  366,  366,  364,  366,  366,  364,
+      377,  366,  366,  366,  366,  366,  364,  364,  364,  366,
+      366,  366,  366,  366,  366,  364,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  364,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  364,  364,  366,  366,
+      366,  366,  366,  364,  366,  366,  366,  364,  366,  364,
+      366,  366,  366,  364,  364,  366,  364,  366,  366,  364,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  364,  366,  366,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  364,  366,  366,  366,
+      364,  366,  366,  364,  366,  366,  366,  364,  366,  366,
+      366,  366,  364,  364,  366,  366,  366,  366,  366,  366,
+      366,  366,  364,  366,  366,  366,  366,  366,  366,  366,
+      364,  366,  366,  364,  366,  366,  364,  364,  366,  366,
+      366,  364,  364,    0,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364
     } ;
 
-static const flex_int16_t yy_nxt[2586] =
+static const flex_int16_t yy_nxt[2526] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,   24,   12,
@@ -889,285 +886,279 @@ static const flex_int16_t yy_nxt[2586] =
        12,   12,   33,   12,   12,   12,   12,   12,   34,   35,
        37,   14,   37,   37,   14,   37,   38,   41,   40,   38,
        12,   12,   40,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   41,   42,   74,   42,   12,   12,
-       12,   12,   69,   42,   12,   42,   12,   70,   12,   75,
-
-       74,   74,   85,  252,   12,   12,   12,   12,   39,   76,
-       12,   42,   12,   42,   75,   77,   64,   12,   65,   65,
-       65,   65,   75,   12,   12,   44,   44,   44,   66,   86,
-       46,   64,   76,   67,   67,   67,   67,   78,   68,   68,
-       68,   68,  225,   66,   66,   76,  116,   72,   66,   72,
-       47,   48,   73,   73,   73,   73,  194,   49,  118,   66,
-      128,   50,   51,   52,   66,   53,  116,   54,   79,  117,
-       55,   56,   57,   58,   59,  162,   60,  116,   61,   62,
-       64,  118,   67,   67,   67,   67,   44,   44,   44,  117,
-      118,   46,   66,   44,   44,   44,  117,  119,   46,   44,
-
-       44,   44,   90,   85,   46,  156,  157,  158,   66,   45,
-       44,   44,   44,  121,  128,   46,  120,  156,   49,   44,
-       44,   44,  124,  158,   46,   49,  157,  158,  156,   45,
-       86,   49,  157,   45,   44,   44,   44,   45,   88,   46,
-      159,   87,   49,  161,   45,  192,  192,   45,   95,   45,
-       91,   49,  160,  123,   93,   44,   44,   44,   92,  122,
-       46,  192,  193,   44,   44,   44,   49,   94,   46,   44,
-       44,   44,   43,   96,   46,   83,   97,   81,   44,   44,
-       44,   80,   71,   46,   44,   44,   44,   49,   43,   46,
-      372,   44,   44,   44,  372,   49,   46,   44,   44,   44,
-
-       98,   49,   46,   44,   44,   44,  372,  372,   46,  372,
-       49,   99,  101,  103,  372,  100,   49,  102,  372,  105,
-       44,   44,   44,   49,  372,   46,  104,  372,  372,   49,
-      372,  372,  107,  372,  372,   49,  372,  372,   44,   44,
-       44,  372,  108,   46,  106,   73,   73,   73,   73,  372,
-      372,  109,   49,  372,  372,  110,  111,  372,   68,   68,
-       68,   68,   73,   73,   73,   73,  372,  112,   66,  372,
-       49,  113,  372,  114,   64,  372,   65,   65,   65,   65,
-      372,  372,  372,   72,   66,   72,   66,  372,   73,   73,
-       73,   73,   64,  372,   67,   67,   67,   67,   68,   68,
-
-       68,   68,   66,  372,   66,   44,   44,   44,   66,  372,
-       46,   44,   44,   44,  372,  372,   46,   44,   44,   44,
-       66,  372,   46,  372,   66,  372,  372,  372,   44,   44,
-       44,  372,  372,   46,  372,  372,  372,   49,  372,   44,
-       44,   44,  372,   49,  131,  372,  125,  372,  372,   49,
-       44,   44,   44,  372,  372,   46,  372,  372,  372,  372,
-       49,  372,  372,  126,  129,  129,  129,  129,  372,  372,
-      372,   49,  129,  129,  129,  129,  130,  372,   44,   44,
-       44,  372,   49,  134,  372,  372,  129,  129,  129,  129,
-      129,  129,  372,   44,   44,   44,  132,  133,   46,   44,
-
-       44,   44,  372,  372,   46,  372,   44,   44,   44,  372,
-       49,   46,   44,   44,   44,  372,  372,   46,   44,   44,
-       44,  372,  372,   46,  372,   49,  372,  372,  372,  135,
-      372,   49,   44,   44,   44,  372,  136,   46,   49,  372,
-       44,   44,   44,  372,   49,   46,   44,   44,   44,  372,
-       49,   46,   44,   44,   44,  372,  372,   46,  372,  137,
-      138,  372,  372,  372,   49,  372,  372,  372,  140,  372,
-      139,  372,   49,  372,   44,   44,   44,  372,   49,   46,
-      372,  141,  372,  372,   49,  372,   44,   44,   44,  372,
-      144,   46,  372,  142,   44,   44,   44,  372,  372,   46,
-
-      372,  143,   44,   44,   44,  372,   49,   46,   44,   44,
-       44,  372,  372,   46,  372,  372,  372,  372,   49,  372,
-      145,  372,   44,   44,   44,  372,   49,   46,  372,  372,
-       44,   44,   44,  372,   49,   46,  372,  372,  146,  372,
-       49,  372,  372,  372,  147,  150,  148,   44,   44,   44,
-      372,  372,   46,  372,   49,  372,  149,  372,  372,  372,
-      151,  372,   49,   44,   44,   44,  152,  372,   46,   44,
-       44,   44,  372,  372,   46,   44,   44,   44,  372,   49,
-       46,   44,   44,   44,  372,  372,   46,  372,  372,  372,
-      153,   44,   44,   44,  372,   49,   46,  372,  372,  372,
-
-      372,   49,  154,   44,   44,   44,  372,   49,   46,  372,
-      372,  372,  372,   49,  155,  372,  164,  372,  165,  166,
-      166,  166,  166,   49,  372,  372,  372,  166,  166,  166,
-      166,   44,   44,   44,  372,   49,   46,  168,  372,  372,
-      372,  166,  166,  166,  166,  166,  166,   44,   44,   44,
-      372,  372,   46,  372,  372,  167,   44,   44,   44,  372,
-      372,   46,  372,   49,   44,   44,   44,  372,  372,   46,
-       44,   44,   44,  372,  372,   46,   44,   44,   44,   49,
-      372,   46,  372,  169,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  372,  372,   46,   49,  372,  372,  372,
-
-      170,  372,   49,  372,  372,  171,  372,  372,   49,  372,
-      372,  372,  372,  372,  173,  172,   49,  372,   44,   44,
-       44,  372,   49,   46,  372,  174,  372,   44,   44,   44,
-      372,  176,   46,  372,  175,   44,   44,   44,  372,  372,
-       46,   44,   44,   44,  372,  372,   46,   44,   44,   44,
-       49,  372,   46,  177,  372,   44,   44,   44,  372,   49,
-       46,   44,   44,   44,  372,  372,   46,   49,  372,  372,
-       44,   44,   44,   49,  180,   46,  372,  372,  178,   49,
-      181,  179,  372,   44,   44,   44,  372,   49,   46,  372,
-      183,  372,  372,   49,  372,  372,  182,  372,   44,   44,
-
-       44,  372,   49,   46,  372,   44,   44,   44,  372,  185,
-       46,  372,  372,  184,  372,   49,   44,   44,   44,  372,
-      372,   46,  372,   44,   44,   44,  372,  186,   46,  372,
-       49,   44,   44,   44,  372,  372,   46,   49,   44,   44,
-       44,  372,  372,   46,  372,  372,  187,  372,   49,  372,
-      372,  372,   44,   44,   44,   49,  188,   46,  372,   44,
-       44,   44,  372,   49,   46,  372,  372,  372,  372,  199,
-       49,  189,  372,  190,  191,   44,   44,   44,  372,  372,
-       46,  196,  372,  372,   49,   44,   44,   44,  372,  372,
-       46,   49,  372,  372,  372,  372,  372,  372,  372,  372,
-
-      197,  198,  198,  198,  198,  372,  372,   49,  372,  198,
-      198,  198,  198,  372,  200,  372,  372,   49,  372,  372,
-      372,  372,  372,  198,  198,  198,  198,  198,  198,   44,
-       44,   44,  372,  372,   46,  201,   44,   44,   44,  372,
-      372,   46,   44,   44,   44,  372,  372,   46,   44,   44,
-       44,  203,  204,   46,   44,   44,   44,  372,  372,  207,
-      372,   49,   44,   44,   44,  372,  372,   46,   49,  372,
-      202,   44,   44,   44,   49,  372,   46,   44,   44,   44,
-       49,  372,   46,  372,  205,  372,   49,   44,   44,   44,
-      372,  372,   46,  372,   49,  372,  372,  208,  372,  206,
-
-       44,   44,   44,   49,  372,   46,   44,   44,   44,   49,
-      209,   46,   44,   44,   44,  372,  372,  214,  210,   49,
-       44,   44,   44,  372,  372,   46,   44,   44,   44,  372,
-      211,   46,   49,  372,  372,   44,   44,   44,   49,  212,
-       46,  372,  372,  372,   49,   44,   44,   44,  372,  372,
-       46,  213,   49,  372,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  372,  372,   46,  372,   49,  372,  372,
-      372,  372,  216,  215,  217,  372,  372,   49,   44,   44,
-       44,  372,  372,   46,  372,  372,   49,  372,  372,   44,
-       44,   44,   49,  219,  222,  218,   44,   44,   44,  372,
-
-      372,   46,   44,   44,   44,  372,  223,   46,  372,  372,
-       49,  372,  372,  220,  372,  221,  372,   44,   44,   44,
-      372,   49,   46,  372,   44,   44,   44,  372,   49,   46,
-      372,   44,   44,   44,   49,  372,   46,   44,   44,   44,
-      224,  372,   46,  372,  372,   44,   44,   44,  372,   49,
-       46,  372,  372,  372,  372,  372,   49,   44,   44,   44,
-      372,  372,   46,   49,  227,  372,  372,  372,  372,   49,
-      372,  228,   45,   45,   45,   45,  372,   49,  372,  372,
-       45,   45,   45,   45,  229,  231,   44,   44,   44,   49,
-      372,  233,  230,  372,   45,   45,   45,   45,   45,   45,
-
-      372,  372,  232,   44,   44,   44,  372,  372,  234,   44,
-       44,   44,  372,  372,  235,   44,   44,   44,   49,  372,
-       46,   44,   44,   44,  372,  236,   46,   44,   44,   44,
-      372,  372,   46,  372,  372,   49,  372,   44,   44,   44,
-      372,   49,   46,   44,   44,   44,  372,   49,   46,   44,
-       44,   44,  372,   49,   46,   44,   44,   44,  372,   49,
-      242,   44,   44,   44,  372,  372,   46,  372,  372,   49,
-      372,  237,  372,  372,  372,   49,  239,  238,   44,   44,
-       44,   49,  372,   46,   44,   44,   44,   49,  372,   46,
-       44,   44,   44,   49,  372,   46,   44,   44,   44,  241,
-
-      240,   46,  372,   44,   44,   44,  372,  372,   46,  372,
-       49,  372,  372,  243,  372,  372,   49,  244,   44,   44,
-       44,  372,   49,   46,   44,   44,   44,  372,   49,   46,
-      372,  372,  372,  246,  245,   49,  372,   44,   44,   44,
-      372,  372,   46,  372,   44,   44,   44,  372,  247,   46,
-       49,  372,   44,   44,   44,  248,   49,   46,   44,   44,
-       44,  250,  372,   46,  372,   44,   44,   44,  249,   49,
-       46,  372,  251,   44,   44,   44,   49,  372,   46,  372,
-      372,   44,   44,   44,   49,  253,   46,  372,  372,  372,
-       49,  372,  254,   44,   44,   44,  372,   49,   46,   44,
-
-       44,   44,  372,  372,   46,   49,  372,  255,  372,   44,
-       44,   44,  372,   49,   46,  372,  372,  256,  257,  372,
-      258,   44,   44,   44,  372,   49,   46,  372,  372,  372,
-      372,   49,   44,   44,   44,  372,  372,   46,  259,  372,
-      372,   49,   44,   44,   44,  372,  372,  264,  372,   44,
-       44,   44,  372,   49,  265,  260,   44,   44,   44,  262,
-      261,   46,  372,  372,   49,   44,   44,   44,  372,  372,
-       46,  263,  372,  372,   49,   44,   44,   44,  372,  372,
-       46,   49,  372,  266,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  372,  270,  271,  372,   49,   44,   44,
-
-       44,  372,  372,   46,   44,   44,   44,   49,  267,   46,
-      372,  372,  268,   44,   44,   44,   49,  372,   46,   44,
-       44,   44,   49,  372,  275,  372,  372,  269,  372,  372,
-       49,  372,   44,   44,   44,  372,   49,  276,   44,   44,
-       44,  272,  372,   46,  372,   49,  372,  372,   44,   44,
-       44,   49,  273,  278,  372,  372,   44,   44,   44,  372,
-      372,   46,  372,  372,   49,  274,  279,   44,   44,   44,
-       49,  372,   46,   44,   44,   44,  277,  372,   46,  372,
-       49,   44,   44,   44,  372,  372,  282,  372,   49,  372,
-       44,   44,   44,  372,  372,  283,   44,   44,   44,   49,
-
-      372,   46,   44,   44,   44,   49,  284,  285,  372,   44,
-       44,   44,  372,   49,   46,  372,  281,  372,   44,   44,
-       44,  280,   49,  288,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  372,   49,   46,  372,   44,   44,   44,
-      372,   49,   46,   44,   44,   44,  372,  372,   46,  372,
-       49,  372,  372,   44,   44,   44,   49,  286,   46,   44,
-       44,   44,   49,  287,   46,   44,   44,   44,  372,   49,
-       46,   44,   44,   44,  372,   49,   46,  372,  372,  293,
-      372,  372,  372,  372,  290,   49,  289,  372,  372,  291,
-      292,   49,  372,  372,   44,   44,   44,   49,  295,   46,
-
-      294,  372,  372,   49,  372,  372,  296,   44,   44,   44,
-      372,  372,   46,   44,   44,   44,  297,  372,   46,   44,
-       44,   44,  372,  372,   46,  372,   49,   44,   44,   44,
-      372,  372,   46,  298,  372,   44,   44,   44,  372,   49,
-      303,  372,  372,  299,  372,   49,  372,   44,   44,   44,
-      372,   49,   46,   44,   44,   44,  372,  372,   46,   49,
-       44,   44,   44,  372,  300,   46,  372,   49,  301,   44,
-       44,   44,  372,  372,   46,  372,  372,  302,  372,   49,
-      372,  372,  304,  372,  372,   49,   44,   44,   44,  372,
-      372,   46,   49,   44,   44,   44,  372,  372,   46,  372,
-
-      372,   49,  372,  309,  372,  372,  372,  372,  307,  305,
-      306,   44,   44,   44,  372,  372,   46,  372,   49,   44,
-       44,   44,  372,  372,   46,   49,   44,   44,   44,  372,
-      372,   46,   44,   44,   44,  372,  372,   46,  308,  372,
-       44,   44,   44,   49,  372,   46,  372,  372,   44,   44,
-       44,   49,  372,   46,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  310,   49,   46,  372,  311,  372,  372,
-      372,  312,   49,  372,  372,  372,   44,   44,   44,  314,
-       49,   46,  313,   44,   44,   44,   49,  372,   46,   44,
-       44,   44,   49,  372,   46,  372,  372,  372,  372,  320,
-
-      315,  372,   44,   44,   44,  316,  317,   46,   49,  372,
-      372,   44,   44,   44,  372,   49,   46,   44,   44,   44,
-      372,   49,   46,  372,  372,  318,  372,  372,  319,  372,
-       44,   44,   44,  372,   49,   46,  372,   44,   44,   44,
-      372,  321,  325,   49,  372,   44,   44,   44,  322,   49,
-       46,  372,   44,   44,   44,  372,  323,   46,   44,   44,
-       44,  372,   49,   46,  372,  372,  372,  324,  372,   49,
-      372,   44,   44,   44,  372,  372,  329,   49,  372,  372,
-      326,   44,   44,   44,   49,  372,   46,   44,   44,   44,
-       49,  372,   46,   44,   44,   44,  372,  372,  332,  372,
-
-      372,  328,  327,   49,   44,   44,   44,  372,  372,   46,
-       44,   44,   44,   49,  372,   46,   44,   44,   44,   49,
-      330,   46,   44,   44,   44,   49,  331,  336,   44,   44,
-       44,  372,  372,   46,  372,  372,   49,  372,   44,   44,
-       44,  333,   49,   46,   44,   44,   44,  372,   49,   46,
-      372,   44,   44,   44,   49,  372,   46,  372,  335,  372,
-       49,   44,   44,   44,  372,  334,  341,  372,  372,  372,
-       49,  372,  337,   44,   44,   44,   49,  372,  342,   44,
-       44,   44,  372,   49,   46,   44,   44,   44,  338,  372,
-       46,  372,  372,   49,  372,   44,   44,   44,  339,  340,
-
-       46,   44,   44,   44,  372,   49,   46,   44,   44,   44,
-      372,   49,   46,   44,   44,   44,  372,   49,   46,  372,
-      372,  343,  372,   44,   44,   44,  372,   49,   46,  372,
-      345,  372,  372,   49,  372,  372,  372,  344,  372,   49,
-      346,   44,   44,   44,  372,   49,   46,  372,  372,  372,
-      347,  372,  348,  372,  372,   49,   44,   44,   44,  372,
-      372,  351,   44,   44,   44,  372,  372,   46,  372,  372,
-      349,  372,  372,   49,  372,  372,  350,  372,   44,   44,
-       44,  372,  372,   46,   44,   44,   44,  372,   49,   46,
-       44,   44,   44,  372,   49,   46,   44,   44,   44,  372,
-
-      372,   46,   44,   44,   44,  372,  372,   46,  372,  352,
-       49,  372,   44,   44,   44,  372,   49,   46,  372,   44,
-       44,   44,   49,  354,  359,  372,  372,  372,   49,  372,
-      353,   44,   44,   44,   49,  372,   46,   44,   44,   44,
-      355,  372,   46,  372,   49,  372,  372,  356,  372,  357,
-      372,   49,  372,  358,   44,   44,   44,  372,  372,  362,
-       44,   44,   44,   49,  372,   46,   44,   44,   44,   49,
-      372,   46,   44,   44,   44,  372,  372,  365,   44,   44,
-       44,  372,  360,  366,  372,  372,   49,  372,  361,   44,
-       44,   44,   49,  372,   46,   44,   44,   44,   49,  372,
-
-       46,  363,  372,  372,   49,  364,   44,   44,   44,  372,
-       49,   46,   44,   44,   44,  372,  372,  370,   44,   44,
-       44,   49,  372,  371,  372,  372,  372,   49,  367,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,   49,  372,
-      372,  372,  372,  372,   49,  372,  368,  372,  372,  372,
-       49,  372,  372,  372,  372,  372,  372,  369,   36,   36,
+       12,   12,   12,   12,   41,   42,   73,   42,   12,   12,
+       12,   12,   68,   42,   12,   42,   12,   69,   12,   74,
+
+       73,   73,   84,  246,   12,   12,   12,   12,   39,   75,
+       12,   42,   12,   42,   74,   76,   63,   12,   64,   64,
+       64,   64,   74,   12,   12,   44,   44,   44,   65,   85,
+       46,   63,   75,   66,   66,   66,   66,   77,   67,   67,
+       67,   67,   84,   65,   65,   75,  114,   71,   65,   71,
+      220,   47,   72,   72,   72,   72,  190,   48,  116,   65,
+      125,   49,   50,   51,   65,   52,  114,   53,   78,   85,
+       54,   55,   56,   57,   58,  159,   59,  115,   60,   61,
+       63,  116,   66,   66,   66,   66,   44,   44,   44,   88,
+      116,   46,   65,   44,   44,   44,   45,  115,   46,  114,
+
+      125,   44,   44,   44,  122,  121,   46,  120,   65,   44,
+       44,   44,   43,  119,   46,   82,   45,   80,   48,  117,
+       45,   44,   44,   44,   45,   48,   46,   72,   72,   72,
+       72,   45,   86,   48,   45,   93,   45,   89,   44,   44,
+       44,   48,  115,   46,   91,   44,   44,   44,  154,   90,
+       46,  153,  153,   48,   44,   44,   44,   92,   79,   46,
+       94,   70,  118,   95,   44,   44,   44,  154,  154,   46,
+       48,   44,   44,   44,  153,  156,   46,   48,  155,   44,
+       44,   44,  155,   96,   46,   43,   48,  157,  364,  101,
+       44,   44,   44,   97,  155,   46,   48,   98,  158,   44,
+
+       44,   44,  102,   48,   46,  188,  103,   99,   44,   44,
+       44,   48,  100,   46,   44,   44,   44,  364,  364,   46,
+      364,  188,   48,  188,  364,  105,  364,   67,   67,   67,
+       67,   48,  104,   72,   72,   72,   72,   65,  106,  189,
+       48,  364,  364,  364,  364,  364,   48,  107,  364,  112,
+      364,  108,  109,   65,  364,  110,  364,  364,   63,  111,
+       64,   64,   64,   64,  364,  364,   71,  364,   71,  364,
+       65,   72,   72,   72,   72,   63,  364,   66,   66,   66,
+       66,   67,   67,   67,   67,  364,   65,   65,   44,   44,
+       44,   65,  364,   46,   44,   44,   44,  364,  364,   46,
+
+       44,   44,   44,   65,  364,   46,  364,   65,  364,  364,
+      364,  364,  364,   44,   44,   44,  364,  364,  128,  364,
+       48,  364,  364,   44,   44,   44,   48,  364,   46,   44,
+       44,   44,   48,  364,  131,  364,  364,  364,  364,  364,
+      123,  126,  126,  126,  126,   48,  364,  364,  127,  126,
+      126,  126,  126,  364,  364,   48,  364,   44,   44,   44,
+      364,   48,   46,  126,  126,  126,  126,  126,  126,  129,
+      130,   44,   44,   44,  364,  364,   46,   44,   44,   44,
+      364,  364,   46,   44,   44,   44,  364,  364,   46,   48,
+       44,   44,   44,  132,  364,   46,   44,   44,   44,  364,
+
+      364,   46,  364,   48,  364,   44,   44,   44,  133,   48,
+       46,   44,   44,   44,  364,   48,   46,  364,   44,   44,
+       44,  364,   48,   46,  364,  364,  364,  364,   48,  364,
+      134,  135,  137,   44,   44,   44,  364,   48,   46,   44,
+       44,   44,  136,   48,   46,  364,  138,  364,  364,  364,
+       48,  364,   44,   44,   44,  364,  141,   46,  139,  364,
+      364,  364,   44,   44,   44,   48,  140,   46,   44,   44,
+       44,   48,  364,   46,  364,   44,   44,   44,  364,  142,
+       46,  364,  364,  364,   48,   44,   44,   44,  364,  364,
+       46,  143,  364,  364,   48,  364,   44,   44,   44,  364,
+
+       48,   46,  144,  364,  145,  147,  364,   48,  364,   44,
+       44,   44,  364,  148,   46,  364,  146,   48,   44,   44,
+       44,  149,  364,   46,   44,   44,   44,  364,   48,   46,
+       44,   44,   44,  364,  364,   46,  364,  364,  364,  150,
+      364,   48,  364,  364,   44,   44,   44,  364,  151,   46,
+       48,  364,   44,   44,   44,  364,   48,   46,  364,  364,
+      364,  161,   48,  152,  162,  162,  162,  162,  364,  364,
+      364,  364,  162,  162,  162,  162,   48,  364,   44,   44,
+       44,  364,  163,   46,   48,  364,  162,  162,  162,  162,
+      162,  162,   44,   44,   44,  364,  165,   46,  164,  364,
+
+       44,   44,   44,  364,  364,   46,   44,   44,   44,  364,
+       48,   46,   44,   44,   44,  364,  364,   46,  364,  364,
+       44,   44,   44,  364,   48,   46,  364,  364,   44,   44,
+       44,  166,   48,   46,  364,   44,   44,   44,   48,  364,
+       46,  167,  364,  364,   48,  364,  364,  364,  364,  364,
+      169,  168,   48,   44,   44,   44,  364,  364,   46,  364,
+       48,  170,  364,   44,   44,   44,  364,   48,   46,  172,
+      171,   44,   44,   44,  364,  364,   46,   44,   44,   44,
+      364,  364,   46,  364,  364,   48,  174,  364,  173,  175,
+      364,  364,   44,   44,   44,   48,  364,   46,  364,   44,
+
+       44,   44,  176,   48,   46,  364,   44,   44,   44,   48,
+      177,   46,   44,   44,   44,  364,  364,   46,   44,   44,
+       44,  364,  364,   46,   48,  364,  178,  179,   44,   44,
+       44,   48,  364,   46,  364,   44,   44,   44,   48,  364,
+       46,   44,   44,   44,   48,  181,   46,  364,  364,  364,
+       48,  180,   44,   44,   44,  364,  182,   46,  364,  364,
+       48,  364,  364,  364,  364,  364,  183,   48,  364,   44,
+       44,   44,  364,   48,   46,   44,   44,   44,  364,  184,
+       46,   44,   44,   44,   48,  194,   46,  364,  364,  364,
+      185,  186,   44,   44,   44,  187,  364,   46,   44,   44,
+
+       44,   48,  364,   46,  364,  364,  364,   48,  364,  364,
+      364,  364,  364,   48,  364,  364,  364,  192,  193,  193,
+      193,  193,  197,  364,   48,  364,  193,  193,  193,  193,
+       48,  195,  364,  364,   44,   44,   44,  364,  364,   46,
+      193,  193,  193,  193,  193,  193,  364,  364,  196,  198,
+      199,   44,   44,   44,  364,  364,   46,   44,   44,   44,
+      364,  364,   46,   44,   44,   44,   48,  364,  202,   44,
+       44,   44,  364,  364,   46,   44,   44,   44,  364,  364,
+       46,  364,  364,   48,  364,   44,   44,   44,  364,   48,
+       46,  364,  364,  200,  364,   48,  364,   44,   44,   44,
+
+      364,   48,   46,  364,  203,  364,  364,   48,  201,  364,
+       44,   44,   44,  364,  204,   46,  364,   48,   44,   44,
+       44,  364,  364,   46,  364,  364,  205,  364,  364,   48,
+       44,   44,   44,  364,  364,  209,   44,   44,   44,  364,
+      206,   46,   48,  364,  364,  364,   44,   44,   44,  207,
+       48,   46,   44,   44,   44,  364,  364,   46,  364,  364,
+      364,  364,   48,  208,   44,   44,   44,  364,   48,   46,
+       44,   44,   44,  364,  364,   46,  364,  364,   48,  364,
+       44,   44,   44,  364,   48,   46,  364,  364,  364,  210,
+      364,  212,  211,   44,   44,   44,   48,  364,   46,   44,
+
+       44,   44,   48,  364,  217,   44,   44,   44,  364,  214,
+       46,  364,   48,  364,  213,  218,   44,   44,   44,  364,
+      364,   46,  364,  364,  364,   48,  364,   44,   44,   44,
+      216,   48,   46,  215,   44,   44,   44,   48,  364,   46,
+      364,   44,   44,   44,  364,  364,   46,  364,   48,  364,
+       44,   44,   44,  364,  219,   46,  364,  364,  364,   48,
+       44,   44,   44,  364,  364,   46,   48,  364,  364,  364,
+      364,  364,  364,   48,  222,   45,   45,   45,   45,  364,
+      364,  364,   48,   45,   45,   45,   45,  223,  224,   44,
+       44,   44,   48,  364,  227,  226,  364,   45,   45,   45,
+
+       45,   45,   45,  364,   44,   44,   44,  364,  225,  228,
+       44,   44,   44,  364,  364,  229,  364,   44,   44,   44,
+      364,   48,   46,   44,   44,   44,  364,  230,   46,   44,
+       44,   44,  364,  364,   46,  364,   48,  364,   44,   44,
+       44,  364,   48,   46,  364,  364,   44,   44,   44,   48,
+      364,   46,   44,   44,   44,   48,  364,   46,   44,   44,
+       44,   48,  364,  236,   44,   44,   44,  364,  364,   46,
+       48,  364,  364,  231,  364,  364,  364,  233,   48,  232,
+       44,   44,   44,  364,   48,   46,   44,   44,   44,  364,
+       48,   46,   44,   44,   44,  364,   48,   46,  364,   44,
+
+       44,   44,  235,  234,   46,   44,   44,   44,  364,  364,
+       46,  364,   48,  364,  364,  364,  237,  364,   48,  238,
+       44,   44,   44,  364,   48,   46,  364,   44,   44,   44,
+      364,   48,   46,  364,  364,  240,  239,   48,  364,   44,
+       44,   44,  364,  364,   46,   44,   44,   44,  364,  364,
+       46,  241,   48,  364,  364,  364,  364,  242,  364,   48,
+       44,   44,   44,  364,  244,   46,  364,   44,   44,   44,
+      243,   48,   46,  364,  245,  364,  364,   48,   44,   44,
+       44,  364,  364,   46,  364,  247,   44,   44,   44,  364,
+      364,   46,   48,  364,  364,   44,   44,   44,  364,   48,
+
+       46,   44,   44,   44,  364,  364,   46,  364,  364,  248,
+       48,   44,   44,   44,  364,  364,   46,  364,   48,  249,
+      364,  364,  364,  250,  364,  251,  364,   48,  364,   44,
+       44,   44,  364,   48,   46,  364,   44,   44,   44,  364,
+      252,   46,  364,   48,   44,   44,   44,  364,  364,  257,
+       44,   44,   44,  364,  364,  258,  364,  253,   44,   44,
+       44,   48,  254,   46,   44,   44,   44,  255,   48,   46,
+      364,  364,   44,   44,   44,  256,   48,   46,  364,  364,
+      364,  364,   48,  364,  259,  364,  364,   44,   44,   44,
+       48,  364,   46,   44,   44,   44,   48,  263,  264,  364,
+
+       44,   44,   44,  364,   48,   46,  364,   44,   44,   44,
+      260,  261,   46,   44,   44,   44,  364,  364,   46,   48,
+      364,   44,   44,   44,  262,   48,  268,  364,   44,   44,
+       44,  364,   48,   46,  364,   44,   44,   44,  364,   48,
+      270,  364,  364,  265,  364,   48,   44,   44,   44,  364,
+      364,   46,  364,   48,  364,  266,  271,   44,   44,   44,
+       48,  364,   46,  364,  364,  267,  269,   48,  364,   44,
+       44,   44,  364,  364,   46,   44,   44,   44,   48,  364,
+      274,   44,   44,   44,  364,  364,  275,  364,  364,   48,
+       44,   44,   44,  364,  364,   46,  364,   44,   44,   44,
+
+      276,   48,  277,   44,   44,   44,  364,   48,   46,  364,
+      364,  272,  273,   48,   44,   44,   44,  364,  364,   46,
+      364,  364,   48,   44,   44,   44,  364,  364,  280,   48,
+      364,   44,   44,   44,  364,   48,   46,   44,   44,   44,
+      364,  364,   46,   44,   44,   44,   48,  364,   46,  364,
+      364,  278,  364,  279,  364,   48,   44,   44,   44,  364,
+      364,   46,  364,   48,  364,   44,   44,   44,  364,   48,
+       46,  364,  364,  364,  364,   48,   44,   44,   44,  285,
+      364,   46,  364,  364,  282,  364,  364,  281,   48,  283,
+      284,   44,   44,   44,  364,  364,   46,   48,  364,  364,
+
+       44,   44,   44,  286,  287,   46,  364,  364,   48,  364,
+      364,  288,   44,   44,   44,  364,  364,   46,  364,   44,
+       44,   44,  364,   48,   46,   44,   44,   44,  364,  364,
+       46,  364,   48,   44,   44,   44,  364,  364,   46,  290,
+      364,  364,  289,  364,   48,   44,   44,   44,  291,  364,
+      295,   48,  364,   44,   44,   44,  364,   48,   46,   44,
+       44,   44,  364,  364,   46,   48,   44,   44,   44,  364,
+      292,   46,  364,  364,  293,  364,  364,   48,  364,   44,
+       44,   44,  364,  294,   46,   48,  364,  364,  296,  364,
+      364,   48,   44,   44,   44,  364,  364,   46,   48,   44,
+
+       44,   44,  364,  364,   46,   44,   44,   44,  364,  301,
+       46,   48,  364,  364,  364,  297,  298,  364,  299,  364,
+       44,   44,   44,  364,   48,   46,  364,   44,   44,   44,
+      364,   48,   46,   44,   44,   44,  364,   48,   46,  364,
+      364,   44,   44,   44,  300,  364,   46,  364,  364,   44,
+       44,   44,   48,  364,   46,  364,  364,  302,  364,   48,
+      364,   44,   44,   44,  364,   48,   46,  364,  303,  364,
+      364,  364,  304,   48,   44,   44,   44,  364,  364,   46,
+      306,   48,  364,  305,   44,   44,   44,  364,  364,   46,
+       44,   44,   44,   48,  364,   46,  364,   44,   44,   44,
+
+      364,  307,   46,  364,  364,  364,   48,  312,   44,   44,
+       44,  364,  308,   46,  364,  364,   48,  364,  364,  364,
+      309,  364,   48,   44,   44,   44,  364,  364,   46,   48,
+      364,  364,  364,  310,  364,  311,   44,   44,   44,  364,
+       48,   46,  364,  364,   44,   44,   44,  313,  364,   46,
+      364,   44,   44,   44,  364,   48,  317,   44,   44,   44,
+      314,  364,   46,  364,   44,   44,   44,  364,   48,   46,
+      364,  364,   44,   44,   44,  315,   48,   46,  364,  364,
+      364,  316,  364,   48,  364,   44,   44,   44,  364,   48,
+      321,  364,  318,   44,   44,   44,   48,  364,   46,  364,
+
+      364,   44,   44,   44,   48,  364,   46,   44,   44,   44,
+      364,  364,  324,  364,  319,  320,  364,   48,   44,   44,
+       44,  364,  364,   46,  364,   48,   44,   44,   44,  364,
+      364,   46,  322,   48,  364,  364,   44,   44,   44,   48,
+      323,   46,   44,   44,   44,  364,  364,  328,  364,  364,
+       48,   44,   44,   44,  364,  325,   46,  364,   48,   44,
+       44,   44,  364,  364,   46,   44,   44,   44,   48,  364,
+       46,  364,  364,  364,   48,   44,   44,   44,  327,  364,
+       46,  326,  364,   48,   44,   44,   44,  364,  364,  333,
+      364,   48,  364,  364,  364,  329,  364,   48,   44,   44,
+
+       44,  364,  364,  334,  364,  364,  364,   48,  364,  330,
+       44,   44,   44,  364,  364,   46,   48,  364,  364,  331,
+      364,  364,  364,  332,   44,   44,   44,  364,  364,   46,
+       48,   44,   44,   44,  364,  364,   46,  364,   44,   44,
+       44,  364,   48,   46,  364,  364,   44,   44,   44,  364,
+      364,   46,  335,   44,   44,   44,   48,  364,   46,   44,
+       44,   44,  364,   48,   46,  364,  337,   44,   44,   44,
+       48,  364,   46,  364,  364,  364,  336,  338,   48,   44,
+       44,   44,  364,  364,  343,   48,  364,  364,  364,  339,
+      364,   48,  340,   44,   44,   44,  364,  364,   46,   48,
+
+      364,  364,  342,   44,   44,   44,  341,  364,   46,  364,
+      364,   48,   44,   44,   44,  364,  364,   46,   44,   44,
+       44,  364,  364,   46,  364,   48,   44,   44,   44,  364,
+      364,   46,   44,   44,   44,   48,  364,   46,  364,  364,
+      344,   44,   44,   44,   48,  364,   46,  364,  364,  364,
+       48,  346,   44,   44,   44,  345,  364,  351,   48,  364,
+       44,   44,   44,  364,   48,   46,  364,  364,  347,   44,
+       44,   44,  364,   48,   46,  364,  364,  348,  364,  349,
+      364,  364,  350,  364,   48,   44,   44,   44,  364,  364,
+      354,  364,   48,   44,   44,   44,  364,  364,   46,  364,
+
+      364,   48,  364,   44,   44,   44,  364,  364,   46,  364,
+      364,  352,  364,   44,   44,   44,  364,   48,  357,  364,
+      353,   44,   44,   44,  364,   48,  358,   44,   44,   44,
+      364,  364,   46,  364,  355,   48,   44,   44,   44,  364,
+      364,   46,  356,  364,  364,   48,   44,   44,   44,  364,
+      364,   46,  364,   48,  364,  364,   44,   44,   44,   48,
+      364,  362,   44,   44,   44,  364,  359,  363,   48,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,   48,  364,
+      364,  364,  364,  364,  364,  364,  364,  360,   48,  364,
+      364,  364,  364,  364,   48,  364,  364,  361,   36,   36,
+
        36,   36,   36,   36,   36,   45,   45,   45,   45,   45,
-       45,   45,   63,  372,   63,   63,   63,   63,   63,   82,
-      372,   82,  372,   82,   82,   82,   84,   84,   84,   84,
-       84,   84,   84,   89,   89,   89,   89,   89,   89,   89,
-
-      115,  372,  115,  115,  115,  115,  115,   84,   84,  372,
-       84,  127,  127,  127,  127,  127,  163,  163,  195,  195,
-      226,  226,   84,   84,   11,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372
+       45,   45,   62,  364,   62,   62,   62,   62,   62,   81,
+      364,   81,  364,   81,   81,   81,   83,   83,   83,   83,
+       83,   83,   83,   87,   87,   87,   87,   87,   87,   87,
+      113,  364,  113,  113,  113,  113,  113,   83,   83,  364,
+       83,  124,  124,  124,  124,  124,  160,  160,  191,  191,
+      221,  221,   83,   83,   11,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364
     } ;
 
-static const flex_int16_t yy_chk[2586] =
+static const flex_int16_t yy_chk[2526] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1180,279 +1171,273 @@ static const flex_int16_t yy_chk[2586] =
         5,    5,    5,    5,   10,   13,   26,   13,    5,    5,
         9,    5,   21,   37,    5,   37,    5,   21,    5,   27,
 
-       26,   31,   44,  225,    5,    5,    7,   10,    5,   28,
+       26,   31,   44,  220,    5,    5,    7,   10,    5,   28,
         8,   42,    5,   42,   32,   31,   17,    5,   17,   17,
        17,   17,   27,    5,    5,   15,   15,   15,   17,   44,
        15,   19,   28,   19,   19,   19,   19,   32,   20,   20,
-       20,   20,  194,   19,   17,   33,   74,   25,   20,   25,
-       15,   15,   25,   25,   25,   25,  162,   15,   76,   19,
-      127,   15,   15,   15,   20,   15,   74,   15,   33,   75,
-       15,   15,   15,   15,   15,  122,   15,   77,   15,   15,
-       22,   76,   22,   22,   22,   22,   45,   45,   45,   75,
-       79,   45,   22,   47,   47,   47,   78,   77,   47,   48,
-
-       48,   48,   49,   84,   48,  116,  117,  118,   22,   49,
-       50,   50,   50,   79,   89,   50,   78,  119,   45,   51,
-       51,   51,   86,  118,   51,   47,  117,  121,  116,   49,
-       84,   48,  120,   49,   52,   52,   52,   49,   48,   52,
-      119,   47,   50,  121,   49,  156,  159,   49,   52,   49,
-       49,   51,  120,   82,   51,   53,   53,   53,   50,   81,
-       53,  156,  159,   54,   54,   54,   52,   51,   54,   55,
-       55,   55,   43,   52,   55,   41,   52,   39,   56,   56,
-       56,   38,   24,   56,   57,   57,   57,   53,   14,   57,
-       11,   58,   58,   58,    0,   54,   58,   59,   59,   59,
-
-       53,   55,   59,   60,   60,   60,    0,    0,   60,    0,
-       56,   54,   55,   56,    0,   54,   57,   55,    0,   57,
-       61,   61,   61,   58,    0,   61,   56,    0,    0,   59,
-        0,    0,   59,    0,    0,   60,    0,    0,   62,   62,
-       62,    0,   60,   62,   58,   72,   72,   72,   72,    0,
-        0,   60,   61,    0,    0,   60,   60,    0,   64,   64,
-       64,   64,   73,   73,   73,   73,    0,   61,   64,    0,
-       62,   61,    0,   62,   65,    0,   65,   65,   65,   65,
-        0,    0,    0,   66,   64,   66,   65,    0,   66,   66,
-       66,   66,   67,    0,   67,   67,   67,   67,   68,   68,
-
-       68,   68,   65,    0,   67,   87,   87,   87,   68,    0,
-       87,   88,   88,   88,    0,    0,   88,   90,   90,   90,
-       67,    0,   90,    0,   68,    0,    0,    0,   92,   92,
-       92,    0,    0,   92,    0,    0,    0,   87,    0,   93,
-       93,   93,    0,   88,   93,    0,   87,    0,    0,   90,
-       94,   94,   94,    0,    0,   94,    0,    0,    0,    0,
-       92,    0,    0,   88,   91,   91,   91,   91,    0,    0,
-        0,   93,   91,   91,   91,   91,   92,    0,   95,   95,
-       95,    0,   94,   95,    0,    0,   91,   91,   91,   91,
-       91,   91,    0,   96,   96,   96,   94,   94,   96,   97,
-
-       97,   97,    0,    0,   97,    0,   98,   98,   98,    0,
-       95,   98,   99,   99,   99,    0,    0,   99,  100,  100,
-      100,    0,    0,  100,    0,   96,    0,    0,    0,   96,
-        0,   97,  101,  101,  101,    0,   97,  101,   98,    0,
-      102,  102,  102,    0,   99,  102,  103,  103,  103,    0,
-      100,  103,  104,  104,  104,    0,    0,  104,    0,   98,
-       99,    0,    0,    0,  101,    0,    0,    0,  101,    0,
-      100,    0,  102,    0,  105,  105,  105,    0,  103,  105,
-        0,  102,    0,    0,  104,    0,  106,  106,  106,    0,
-      104,  106,    0,  103,  107,  107,  107,    0,    0,  107,
-
-        0,  103,  108,  108,  108,    0,  105,  108,  109,  109,
-      109,    0,    0,  109,    0,    0,    0,    0,  106,    0,
-      105,    0,  110,  110,  110,    0,  107,  110,    0,    0,
-      111,  111,  111,    0,  108,  111,    0,    0,  106,    0,
-      109,    0,    0,    0,  107,  109,  107,  112,  112,  112,
-        0,    0,  112,    0,  110,    0,  108,    0,    0,    0,
-      110,    0,  111,  113,  113,  113,  111,    0,  113,  114,
-      114,  114,    0,    0,  114,  125,  125,  125,    0,  112,
-      125,  126,  126,  126,    0,    0,  126,    0,    0,    0,
-      112,  132,  132,  132,    0,  113,  132,    0,    0,    0,
-
-        0,  114,  113,  130,  130,  130,    0,  125,  130,    0,
-        0,    0,    0,  126,  114,    0,  125,    0,  126,  129,
-      129,  129,  129,  132,    0,    0,    0,  129,  129,  129,
-      129,  133,  133,  133,    0,  130,  133,  132,    0,    0,
-        0,  129,  129,  129,  129,  129,  129,  135,  135,  135,
-        0,    0,  135,    0,    0,  130,  136,  136,  136,    0,
-        0,  136,    0,  133,  137,  137,  137,    0,    0,  137,
-      138,  138,  138,    0,    0,  138,  139,  139,  139,  135,
-        0,  139,    0,  133,  140,  140,  140,    0,  136,  140,
-      141,  141,  141,    0,    0,  141,  137,    0,    0,    0,
-
-      135,    0,  138,    0,    0,  136,    0,    0,  139,    0,
-        0,    0,    0,    0,  138,  137,  140,    0,  142,  142,
-      142,    0,  141,  142,    0,  139,    0,  143,  143,  143,
-        0,  141,  143,    0,  140,  144,  144,  144,    0,    0,
-      144,  145,  145,  145,    0,    0,  145,  146,  146,  146,
-      142,    0,  146,  142,    0,  147,  147,  147,    0,  143,
-      147,  148,  148,  148,    0,    0,  148,  144,    0,    0,
-      149,  149,  149,  145,  144,  149,    0,    0,  143,  146,
-      145,  143,    0,  150,  150,  150,    0,  147,  150,    0,
-      147,    0,    0,  148,    0,    0,  146,    0,  151,  151,
-
-      151,    0,  149,  151,    0,  152,  152,  152,    0,  149,
-      152,    0,    0,  148,    0,  150,  153,  153,  153,    0,
-        0,  153,    0,  154,  154,  154,    0,  150,  154,    0,
-      151,  155,  155,  155,    0,    0,  155,  152,  164,  164,
-      164,    0,    0,  164,    0,    0,  151,    0,  153,    0,
-        0,    0,  165,  165,  165,  154,  152,  165,    0,  167,
-      167,  167,    0,  155,  167,    0,    0,    0,    0,  167,
-      164,  153,    0,  154,  155,  168,  168,  168,    0,    0,
-      168,  164,    0,    0,  165,  169,  169,  169,    0,    0,
-      169,  167,    0,    0,    0,    0,    0,    0,    0,    0,
-
-      165,  166,  166,  166,  166,    0,    0,  168,    0,  166,
-      166,  166,  166,    0,  168,    0,    0,  169,    0,    0,
-        0,    0,    0,  166,  166,  166,  166,  166,  166,  170,
-      170,  170,    0,    0,  170,  169,  171,  171,  171,    0,
-        0,  171,  172,  172,  172,    0,    0,  172,  173,  173,
-      173,  171,  171,  173,  174,  174,  174,    0,    0,  174,
-        0,  170,  175,  175,  175,    0,    0,  175,  171,    0,
-      170,  176,  176,  176,  172,    0,  176,  177,  177,  177,
-      173,    0,  177,    0,  172,    0,  174,  178,  178,  178,
-        0,    0,  178,    0,  175,    0,    0,  175,    0,  173,
-
-      179,  179,  179,  176,    0,  179,  180,  180,  180,  177,
-      176,  180,  181,  181,  181,    0,    0,  181,  177,  178,
-      182,  182,  182,    0,    0,  182,  183,  183,  183,    0,
-      178,  183,  179,    0,    0,  184,  184,  184,  180,  179,
-      184,    0,    0,    0,  181,  185,  185,  185,    0,    0,
-      185,  180,  182,    0,  186,  186,  186,    0,  183,  186,
-      187,  187,  187,    0,    0,  187,    0,  184,    0,    0,
-        0,    0,  183,  182,  184,    0,    0,  185,  188,  188,
-      188,    0,    0,  188,    0,    0,  186,    0,    0,  189,
-      189,  189,  187,  186,  189,  185,  190,  190,  190,    0,
-
-        0,  190,  191,  191,  191,    0,  190,  191,    0,    0,
-      188,    0,    0,  187,    0,  188,    0,  196,  196,  196,
-        0,  189,  196,    0,  197,  197,  197,    0,  190,  197,
-        0,  199,  199,  199,  191,    0,  199,  201,  201,  201,
-      191,    0,  201,    0,    0,  200,  200,  200,    0,  196,
-      200,    0,    0,    0,    0,    0,  197,  202,  202,  202,
-        0,    0,  202,  199,  196,    0,    0,    0,    0,  201,
-        0,  197,  198,  198,  198,  198,    0,  200,    0,    0,
-      198,  198,  198,  198,  199,  201,  203,  203,  203,  202,
-        0,  203,  200,    0,  198,  198,  198,  198,  198,  198,
-
-        0,    0,  202,  204,  204,  204,    0,    0,  204,  205,
-      205,  205,    0,    0,  205,  206,  206,  206,  203,    0,
-      206,  208,  208,  208,    0,  206,  208,  209,  209,  209,
-        0,    0,  209,    0,    0,  204,    0,  210,  210,  210,
-        0,  205,  210,  211,  211,  211,    0,  206,  211,  212,
-      212,  212,    0,  208,  212,  213,  213,  213,    0,  209,
-      213,  215,  215,  215,    0,    0,  215,    0,    0,  210,
-        0,  208,    0,    0,    0,  211,  210,  209,  216,  216,
-      216,  212,    0,  216,  217,  217,  217,  213,    0,  217,
-      218,  218,  218,  215,    0,  218,  219,  219,  219,  212,
-
-      211,  219,    0,  220,  220,  220,    0,    0,  220,    0,
-      216,    0,    0,  215,    0,    0,  217,  216,  221,  221,
-      221,    0,  218,  221,  223,  223,  223,    0,  219,  223,
-        0,    0,    0,  218,  217,  220,    0,  224,  224,  224,
-        0,    0,  224,    0,  227,  227,  227,    0,  219,  227,
-      221,    0,  228,  228,  228,  220,  223,  228,  229,  229,
-      229,  223,    0,  229,    0,  230,  230,  230,  221,  224,
-      230,    0,  224,  231,  231,  231,  227,    0,  231,    0,
-        0,  232,  232,  232,  228,  227,  232,    0,    0,    0,
-      229,    0,  228,  236,  236,  236,    0,  230,  236,  237,
-
-      237,  237,    0,    0,  237,  231,    0,  229,    0,  238,
-      238,  238,    0,  232,  238,    0,    0,  230,  231,    0,
-      232,  239,  239,  239,    0,  236,  239,    0,    0,    0,
-        0,  237,  240,  240,  240,    0,    0,  240,  236,    0,
-        0,  238,  241,  241,  241,    0,    0,  241,    0,  243,
-      243,  243,    0,  239,  243,  237,  244,  244,  244,  239,
-      238,  244,    0,    0,  240,  245,  245,  245,    0,    0,
-      245,  240,    0,    0,  241,  246,  246,  246,    0,    0,
-      246,  243,    0,  243,  247,  247,  247,    0,  244,  247,
-      248,  248,  248,    0,  247,  248,    0,  245,  249,  249,
-
-      249,    0,    0,  249,  250,  250,  250,  246,  244,  250,
-        0,    0,  245,  251,  251,  251,  247,    0,  251,  253,
-      253,  253,  248,    0,  253,    0,    0,  246,    0,    0,
-      249,    0,  254,  254,  254,    0,  250,  254,  255,  255,
-      255,  249,    0,  255,    0,  251,    0,    0,  256,  256,
-      256,  253,  250,  256,    0,    0,  257,  257,  257,    0,
-        0,  257,    0,    0,  254,  251,  257,  258,  258,  258,
-      255,    0,  258,  259,  259,  259,  255,    0,  259,    0,
-      256,  260,  260,  260,    0,    0,  260,    0,  257,    0,
-      261,  261,  261,    0,    0,  261,  262,  262,  262,  258,
-
-        0,  262,  263,  263,  263,  259,  262,  263,    0,  266,
-      266,  266,    0,  260,  266,    0,  259,    0,  268,  268,
-      268,  258,  261,  268,  267,  267,  267,    0,  262,  267,
-      269,  269,  269,    0,  263,  269,    0,  270,  270,  270,
-        0,  266,  270,  272,  272,  272,    0,    0,  272,    0,
-      268,    0,    0,  273,  273,  273,  267,  266,  273,  274,
-      274,  274,  269,  267,  274,  279,  279,  279,    0,  270,
-      279,  277,  277,  277,    0,  272,  277,    0,    0,  272,
-        0,    0,    0,    0,  270,  273,  269,    0,    0,  270,
-      270,  274,    0,    0,  280,  280,  280,  279,  274,  280,
-
-      273,    0,    0,  277,    0,    0,  277,  281,  281,  281,
-        0,    0,  281,  284,  284,  284,  279,    0,  284,  286,
-      286,  286,    0,    0,  286,    0,  280,  287,  287,  287,
-        0,    0,  287,  280,    0,  289,  289,  289,    0,  281,
-      289,    0,    0,  281,    0,  284,    0,  290,  290,  290,
-        0,  286,  290,  291,  291,  291,    0,    0,  291,  287,
-      292,  292,  292,    0,  284,  292,    0,  289,  286,  293,
-      293,  293,    0,    0,  293,    0,    0,  287,    0,  290,
-        0,    0,  290,    0,    0,  291,  294,  294,  294,    0,
-        0,  294,  292,  295,  295,  295,    0,    0,  295,    0,
-
-        0,  293,    0,  295,    0,    0,    0,    0,  293,  291,
-      292,  296,  296,  296,    0,    0,  296,    0,  294,  297,
-      297,  297,    0,    0,  297,  295,  298,  298,  298,    0,
-        0,  298,  299,  299,  299,    0,    0,  299,  294,    0,
-      300,  300,  300,  296,    0,  300,    0,    0,  301,  301,
-      301,  297,    0,  301,  302,  302,  302,    0,  298,  302,
-      304,  304,  304,  296,  299,  304,    0,  297,    0,    0,
-        0,  298,  300,    0,    0,    0,  305,  305,  305,  300,
-      301,  305,  299,  306,  306,  306,  302,    0,  306,  307,
-      307,  307,  304,    0,  307,    0,    0,    0,    0,  307,
-
-      301,    0,  308,  308,  308,  302,  304,  308,  305,    0,
-        0,  309,  309,  309,    0,  306,  309,  310,  310,  310,
-        0,  307,  310,    0,    0,  305,    0,    0,  306,    0,
-      311,  311,  311,    0,  308,  311,    0,  312,  312,  312,
-        0,  308,  312,  309,    0,  313,  313,  313,  309,  310,
-      313,    0,  314,  314,  314,    0,  310,  314,  315,  315,
-      315,    0,  311,  315,    0,    0,    0,  311,    0,  312,
-        0,  316,  316,  316,    0,    0,  316,  313,    0,    0,
-      313,  317,  317,  317,  314,    0,  317,  318,  318,  318,
-      315,    0,  318,  319,  319,  319,    0,    0,  319,    0,
-
-        0,  315,  314,  316,  320,  320,  320,    0,    0,  320,
-      321,  321,  321,  317,    0,  321,  322,  322,  322,  318,
-      317,  322,  323,  323,  323,  319,  318,  323,  324,  324,
-      324,    0,    0,  324,    0,    0,  320,    0,  326,  326,
-      326,  320,  321,  326,  327,  327,  327,    0,  322,  327,
-        0,  328,  328,  328,  323,    0,  328,    0,  322,    0,
-      324,  330,  330,  330,    0,  321,  330,    0,    0,    0,
-      326,    0,  324,  331,  331,  331,  327,    0,  331,  333,
-      333,  333,    0,  328,  333,  334,  334,  334,  326,    0,
-      334,    0,    0,  330,    0,  335,  335,  335,  327,  328,
-
-      335,  337,  337,  337,    0,  331,  337,  338,  338,  338,
-        0,  333,  338,  339,  339,  339,    0,  334,  339,    0,
-        0,  333,    0,  340,  340,  340,    0,  335,  340,    0,
-      335,    0,    0,  337,    0,    0,    0,  334,    0,  338,
-      337,  343,  343,  343,    0,  339,  343,    0,    0,    0,
-      338,    0,  339,    0,    0,  340,  344,  344,  344,    0,
-        0,  344,  345,  345,  345,    0,    0,  345,    0,    0,
-      340,    0,    0,  343,    0,    0,  343,    0,  346,  346,
-      346,    0,    0,  346,  347,  347,  347,    0,  344,  347,
-      348,  348,  348,    0,  345,  348,  349,  349,  349,    0,
-
-        0,  349,  350,  350,  350,    0,    0,  350,    0,  345,
-      346,    0,  352,  352,  352,    0,  347,  352,    0,  353,
-      353,  353,  348,  347,  353,    0,    0,    0,  349,    0,
-      346,  354,  354,  354,  350,    0,  354,  355,  355,  355,
-      348,    0,  355,    0,  352,    0,    0,  349,    0,  350,
-        0,  353,    0,  352,  356,  356,  356,    0,    0,  356,
-      357,  357,  357,  354,    0,  357,  358,  358,  358,  355,
-        0,  358,  360,  360,  360,    0,    0,  360,  361,  361,
-      361,    0,  354,  361,    0,    0,  356,    0,  355,  363,
-      363,  363,  357,    0,  363,  364,  364,  364,  358,    0,
-
-      364,  357,    0,    0,  360,  358,  367,  367,  367,    0,
-      361,  367,  368,  368,  368,    0,    0,  368,  369,  369,
-      369,  363,    0,  369,    0,    0,    0,  364,  363,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  367,    0,
-        0,    0,    0,    0,  368,    0,  364,    0,    0,    0,
-      369,    0,    0,    0,    0,    0,    0,  367,  373,  373,
-      373,  373,  373,  373,  373,  374,  374,  374,  374,  374,
-      374,  374,  375,    0,  375,  375,  375,  375,  375,  376,
-        0,  376,    0,  376,  376,  376,  377,  377,  377,  377,
-      377,  377,  377,  378,  378,  378,  378,  378,  378,  378,
-
-      379,    0,  379,  379,  379,  379,  379,  380,  380,    0,
-      380,  381,  381,  381,  381,  381,  382,  382,  383,  383,
-      384,  384,  385,  385,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  372
+       20,   20,   83,   19,   17,   33,   73,   25,   20,   25,
+      190,   15,   25,   25,   25,   25,  159,   15,   75,   19,
+      124,   15,   15,   15,   20,   15,   73,   15,   33,   83,
+       15,   15,   15,   15,   15,  120,   15,   74,   15,   15,
+       22,   75,   22,   22,   22,   22,   45,   45,   45,   48,
+       78,   45,   22,   47,   47,   47,   48,   74,   47,   76,
+
+       87,   49,   49,   49,   85,   81,   49,   80,   22,   50,
+       50,   50,   43,   78,   50,   41,   48,   39,   45,   76,
+       48,   51,   51,   51,   48,   47,   51,   71,   71,   71,
+       71,   48,   47,   49,   48,   51,   48,   48,   52,   52,
+       52,   50,   77,   52,   50,   53,   53,   53,  115,   49,
+       53,  114,  117,   51,   55,   55,   55,   50,   38,   55,
+       51,   24,   77,   51,   54,   54,   54,  118,  115,   54,
+       52,   56,   56,   56,  114,  117,   56,   53,  116,   57,
+       57,   57,  119,   52,   57,   14,   55,  118,   11,   55,
+       58,   58,   58,   53,  116,   58,   54,   53,  119,   59,
+
+       59,   59,   55,   56,   59,  153,   56,   54,   60,   60,
+       60,   57,   54,   60,   61,   61,   61,    0,    0,   61,
+        0,  153,   58,  156,    0,   58,    0,   63,   63,   63,
+       63,   59,   57,   72,   72,   72,   72,   63,   59,  156,
+       60,    0,    0,    0,    0,    0,   61,   59,    0,   61,
+        0,   59,   59,   63,    0,   60,    0,    0,   64,   60,
+       64,   64,   64,   64,    0,    0,   65,    0,   65,    0,
+       64,   65,   65,   65,   65,   66,    0,   66,   66,   66,
+       66,   67,   67,   67,   67,    0,   64,   66,   86,   86,
+       86,   67,    0,   86,   88,   88,   88,    0,    0,   88,
+
+       90,   90,   90,   66,    0,   90,    0,   67,    0,    0,
+        0,    0,    0,   91,   91,   91,    0,    0,   91,    0,
+       86,    0,    0,   92,   92,   92,   88,    0,   92,   93,
+       93,   93,   90,    0,   93,    0,    0,    0,    0,    0,
+       86,   89,   89,   89,   89,   91,    0,    0,   90,   89,
+       89,   89,   89,    0,    0,   92,    0,   94,   94,   94,
+        0,   93,   94,   89,   89,   89,   89,   89,   89,   92,
+       92,   95,   95,   95,    0,    0,   95,   96,   96,   96,
+        0,    0,   96,   97,   97,   97,    0,    0,   97,   94,
+       98,   98,   98,   94,    0,   98,   99,   99,   99,    0,
+
+        0,   99,    0,   95,    0,  100,  100,  100,   95,   96,
+      100,  101,  101,  101,    0,   97,  101,    0,  102,  102,
+      102,    0,   98,  102,    0,    0,    0,    0,   99,    0,
+       96,   97,   99,  103,  103,  103,    0,  100,  103,  104,
+      104,  104,   98,  101,  104,    0,  100,    0,    0,    0,
+      102,    0,  105,  105,  105,    0,  102,  105,  101,    0,
+        0,    0,  106,  106,  106,  103,  101,  106,  107,  107,
+      107,  104,    0,  107,    0,  108,  108,  108,    0,  103,
+      108,    0,    0,    0,  105,  109,  109,  109,    0,    0,
+      109,  104,    0,    0,  106,    0,  110,  110,  110,    0,
+
+      107,  110,  105,    0,  105,  107,    0,  108,    0,  111,
+      111,  111,    0,  108,  111,    0,  106,  109,  112,  112,
+      112,  109,    0,  112,  123,  123,  123,    0,  110,  123,
+      127,  127,  127,    0,    0,  127,    0,    0,    0,  110,
+        0,  111,    0,    0,  130,  130,  130,    0,  111,  130,
+      112,    0,  129,  129,  129,    0,  123,  129,    0,    0,
+        0,  123,  127,  112,  126,  126,  126,  126,    0,    0,
+        0,    0,  126,  126,  126,  126,  130,    0,  132,  132,
+      132,    0,  127,  132,  129,    0,  126,  126,  126,  126,
+      126,  126,  133,  133,  133,    0,  130,  133,  129,    0,
+
+      134,  134,  134,    0,    0,  134,  135,  135,  135,    0,
+      132,  135,  136,  136,  136,    0,    0,  136,    0,    0,
+      137,  137,  137,    0,  133,  137,    0,    0,  138,  138,
+      138,  132,  134,  138,    0,  140,  140,  140,  135,    0,
+      140,  133,    0,    0,  136,    0,    0,    0,    0,    0,
+      135,  134,  137,  139,  139,  139,    0,    0,  139,    0,
+      138,  136,    0,  141,  141,  141,    0,  140,  141,  138,
+      137,  142,  142,  142,    0,    0,  142,  143,  143,  143,
+        0,    0,  143,    0,    0,  139,  140,    0,  139,  140,
+        0,    0,  144,  144,  144,  141,    0,  144,    0,  145,
+
+      145,  145,  141,  142,  145,    0,  146,  146,  146,  143,
+      142,  146,  147,  147,  147,    0,    0,  147,  148,  148,
+      148,    0,    0,  148,  144,    0,  143,  144,  149,  149,
+      149,  145,    0,  149,    0,  150,  150,  150,  146,    0,
+      150,  151,  151,  151,  147,  146,  151,    0,    0,    0,
+      148,  145,  152,  152,  152,    0,  147,  152,    0,    0,
+      149,    0,    0,    0,    0,    0,  148,  150,    0,  161,
+      161,  161,    0,  151,  161,  163,  163,  163,    0,  149,
+      163,  166,  166,  166,  152,  163,  166,    0,    0,    0,
+      150,  151,  164,  164,  164,  152,    0,  164,  165,  165,
+
+      165,  161,    0,  165,    0,    0,    0,  163,    0,    0,
+        0,    0,    0,  166,    0,    0,    0,  161,  162,  162,
+      162,  162,  166,    0,  164,    0,  162,  162,  162,  162,
+      165,  164,    0,    0,  167,  167,  167,    0,    0,  167,
+      162,  162,  162,  162,  162,  162,    0,    0,  165,  167,
+      167,  168,  168,  168,    0,    0,  168,  169,  169,  169,
+        0,    0,  169,  170,  170,  170,  167,    0,  170,  171,
+      171,  171,    0,    0,  171,  172,  172,  172,    0,    0,
+      172,    0,    0,  168,    0,  173,  173,  173,    0,  169,
+      173,    0,    0,  168,    0,  170,    0,  174,  174,  174,
+
+        0,  171,  174,    0,  171,    0,    0,  172,  169,    0,
+      175,  175,  175,    0,  172,  175,    0,  173,  176,  176,
+      176,    0,    0,  176,    0,    0,  173,    0,    0,  174,
+      177,  177,  177,    0,    0,  177,  178,  178,  178,    0,
+      174,  178,  175,    0,    0,    0,  179,  179,  179,  175,
+      176,  179,  180,  180,  180,    0,    0,  180,    0,    0,
+        0,    0,  177,  176,  181,  181,  181,    0,  178,  181,
+      182,  182,  182,    0,    0,  182,    0,    0,  179,    0,
+      183,  183,  183,    0,  180,  183,    0,    0,    0,  178,
+        0,  180,  179,  184,  184,  184,  181,    0,  184,  185,
+
+      185,  185,  182,    0,  185,  186,  186,  186,    0,  182,
+      186,    0,  183,    0,  181,  186,  187,  187,  187,    0,
+        0,  187,    0,    0,    0,  184,    0,  192,  192,  192,
+      184,  185,  192,  183,  194,  194,  194,  186,    0,  194,
+        0,  195,  195,  195,    0,    0,  195,    0,  187,    0,
+      197,  197,  197,    0,  187,  197,    0,    0,    0,  192,
+      196,  196,  196,    0,    0,  196,  194,    0,    0,    0,
+        0,    0,    0,  195,  192,  193,  193,  193,  193,    0,
+        0,    0,  197,  193,  193,  193,  193,  194,  195,  198,
+      198,  198,  196,    0,  198,  197,    0,  193,  193,  193,
+
+      193,  193,  193,    0,  199,  199,  199,    0,  196,  199,
+      200,  200,  200,    0,    0,  200,    0,  201,  201,  201,
+        0,  198,  201,  203,  203,  203,    0,  201,  203,  204,
+      204,  204,    0,    0,  204,    0,  199,    0,  205,  205,
+      205,    0,  200,  205,    0,    0,  206,  206,  206,  201,
+        0,  206,  207,  207,  207,  203,    0,  207,  208,  208,
+      208,  204,    0,  208,  210,  210,  210,    0,    0,  210,
+      205,    0,    0,  203,    0,    0,    0,  205,  206,  204,
+      211,  211,  211,    0,  207,  211,  212,  212,  212,    0,
+      208,  212,  213,  213,  213,    0,  210,  213,    0,  214,
+
+      214,  214,  207,  206,  214,  215,  215,  215,    0,    0,
+      215,    0,  211,    0,    0,    0,  210,    0,  212,  211,
+      216,  216,  216,    0,  213,  216,    0,  218,  218,  218,
+        0,  214,  218,    0,    0,  213,  212,  215,    0,  219,
+      219,  219,    0,    0,  219,  222,  222,  222,    0,    0,
+      222,  214,  216,    0,    0,    0,    0,  215,    0,  218,
+      223,  223,  223,    0,  218,  223,    0,  224,  224,  224,
+      216,  219,  224,    0,  219,    0,    0,  222,  225,  225,
+      225,    0,    0,  225,    0,  222,  226,  226,  226,    0,
+        0,  226,  223,    0,    0,  230,  230,  230,    0,  224,
+
+      230,  231,  231,  231,    0,    0,  231,    0,    0,  223,
+      225,  232,  232,  232,    0,    0,  232,    0,  226,  224,
+        0,    0,    0,  225,    0,  226,    0,  230,    0,  233,
+      233,  233,    0,  231,  233,    0,  234,  234,  234,    0,
+      230,  234,    0,  232,  235,  235,  235,    0,    0,  235,
+      237,  237,  237,    0,    0,  237,    0,  231,  238,  238,
+      238,  233,  232,  238,  239,  239,  239,  233,  234,  239,
+        0,    0,  240,  240,  240,  234,  235,  240,    0,    0,
+        0,    0,  237,    0,  237,    0,    0,  241,  241,  241,
+      238,    0,  241,  242,  242,  242,  239,  241,  242,    0,
+
+      243,  243,  243,    0,  240,  243,    0,  244,  244,  244,
+      238,  239,  244,  245,  245,  245,    0,    0,  245,  241,
+        0,  247,  247,  247,  240,  242,  247,    0,  248,  248,
+      248,    0,  243,  248,    0,  249,  249,  249,    0,  244,
+      249,    0,    0,  243,    0,  245,  250,  250,  250,    0,
+        0,  250,    0,  247,    0,  244,  250,  251,  251,  251,
+      248,    0,  251,    0,    0,  245,  248,  249,    0,  252,
+      252,  252,    0,    0,  252,  253,  253,  253,  250,    0,
+      253,  254,  254,  254,    0,    0,  254,    0,    0,  251,
+      255,  255,  255,    0,    0,  255,    0,  256,  256,  256,
+
+      255,  252,  256,  259,  259,  259,    0,  253,  259,    0,
+        0,  251,  252,  254,  260,  260,  260,    0,    0,  260,
+        0,    0,  255,  261,  261,  261,    0,    0,  261,  256,
+        0,  262,  262,  262,    0,  259,  262,  263,  263,  263,
+        0,    0,  263,  265,  265,  265,  260,    0,  265,    0,
+        0,  259,    0,  260,    0,  261,  266,  266,  266,    0,
+        0,  266,    0,  262,    0,  267,  267,  267,    0,  263,
+      267,    0,    0,    0,    0,  265,  269,  269,  269,  265,
+        0,  269,    0,    0,  263,    0,    0,  262,  266,  263,
+      263,  271,  271,  271,    0,    0,  271,  267,    0,    0,
+
+      272,  272,  272,  266,  267,  272,    0,    0,  269,    0,
+        0,  269,  273,  273,  273,    0,    0,  273,    0,  276,
+      276,  276,    0,  271,  276,  278,  278,  278,    0,    0,
+      278,    0,  272,  279,  279,  279,    0,    0,  279,  272,
+        0,    0,  271,    0,  273,  281,  281,  281,  273,    0,
+      281,  276,    0,  282,  282,  282,    0,  278,  282,  283,
+      283,  283,    0,    0,  283,  279,  284,  284,  284,    0,
+      276,  284,    0,    0,  278,    0,    0,  281,    0,  285,
+      285,  285,    0,  279,  285,  282,    0,    0,  282,    0,
+        0,  283,  286,  286,  286,    0,    0,  286,  284,  287,
+
+      287,  287,    0,    0,  287,  288,  288,  288,    0,  287,
+      288,  285,    0,    0,    0,  283,  284,    0,  285,    0,
+      289,  289,  289,    0,  286,  289,    0,  290,  290,  290,
+        0,  287,  290,  291,  291,  291,    0,  288,  291,    0,
+        0,  292,  292,  292,  286,    0,  292,    0,    0,  293,
+      293,  293,  289,    0,  293,    0,    0,  288,    0,  290,
+        0,  294,  294,  294,    0,  291,  294,    0,  289,    0,
+        0,    0,  290,  292,  296,  296,  296,    0,    0,  296,
+      292,  293,    0,  291,  297,  297,  297,    0,    0,  297,
+      298,  298,  298,  294,    0,  298,    0,  299,  299,  299,
+
+        0,  293,  299,    0,    0,    0,  296,  299,  300,  300,
+      300,    0,  294,  300,    0,    0,  297,    0,    0,    0,
+      296,    0,  298,  301,  301,  301,    0,    0,  301,  299,
+        0,    0,    0,  297,    0,  298,  302,  302,  302,    0,
+      300,  302,    0,    0,  303,  303,  303,  300,    0,  303,
+        0,  304,  304,  304,    0,  301,  304,  305,  305,  305,
+      301,    0,  305,    0,  306,  306,  306,    0,  302,  306,
+        0,    0,  307,  307,  307,  302,  303,  307,    0,    0,
+        0,  303,    0,  304,    0,  308,  308,  308,    0,  305,
+      308,    0,  305,  309,  309,  309,  306,    0,  309,    0,
+
+        0,  310,  310,  310,  307,    0,  310,  311,  311,  311,
+        0,    0,  311,    0,  306,  307,    0,  308,  312,  312,
+      312,    0,    0,  312,    0,  309,  313,  313,  313,    0,
+        0,  313,  309,  310,    0,    0,  314,  314,  314,  311,
+      310,  314,  315,  315,  315,    0,    0,  315,    0,    0,
+      312,  316,  316,  316,    0,  312,  316,    0,  313,  318,
+      318,  318,    0,    0,  318,  319,  319,  319,  314,    0,
+      319,    0,    0,    0,  315,  320,  320,  320,  314,    0,
+      320,  313,    0,  316,  322,  322,  322,    0,    0,  322,
+        0,  318,    0,    0,    0,  316,    0,  319,  323,  323,
+
+      323,    0,    0,  323,    0,    0,    0,  320,    0,  318,
+      325,  325,  325,    0,    0,  325,  322,    0,    0,  319,
+        0,    0,    0,  320,  326,  326,  326,    0,    0,  326,
+      323,  327,  327,  327,    0,    0,  327,    0,  329,  329,
+      329,    0,  325,  329,    0,    0,  330,  330,  330,    0,
+        0,  330,  325,  331,  331,  331,  326,    0,  331,  332,
+      332,  332,    0,  327,  332,    0,  327,  335,  335,  335,
+      329,    0,  335,    0,    0,    0,  326,  329,  330,  336,
+      336,  336,    0,    0,  336,  331,    0,    0,    0,  330,
+        0,  332,  331,  337,  337,  337,    0,    0,  337,  335,
+
+        0,    0,  335,  338,  338,  338,  332,    0,  338,    0,
+        0,  336,  339,  339,  339,    0,    0,  339,  340,  340,
+      340,    0,    0,  340,    0,  337,  341,  341,  341,    0,
+        0,  341,  342,  342,  342,  338,    0,  342,    0,    0,
+      337,  344,  344,  344,  339,    0,  344,    0,    0,    0,
+      340,  339,  345,  345,  345,  338,    0,  345,  341,    0,
+      346,  346,  346,    0,  342,  346,    0,    0,  340,  347,
+      347,  347,    0,  344,  347,    0,    0,  341,    0,  342,
+        0,    0,  344,    0,  345,  348,  348,  348,    0,    0,
+      348,    0,  346,  349,  349,  349,    0,    0,  349,    0,
+
+        0,  347,    0,  350,  350,  350,    0,    0,  350,    0,
+        0,  346,    0,  352,  352,  352,    0,  348,  352,    0,
+      347,  353,  353,  353,    0,  349,  353,  355,  355,  355,
+        0,    0,  355,    0,  349,  350,  356,  356,  356,    0,
+        0,  356,  350,    0,    0,  352,  359,  359,  359,    0,
+        0,  359,    0,  353,    0,    0,  360,  360,  360,  355,
+        0,  360,  361,  361,  361,    0,  355,  361,  356,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  359,    0,
+        0,    0,    0,    0,    0,    0,    0,  356,  360,    0,
+        0,    0,    0,    0,  361,    0,    0,  359,  365,  365,
+
+      365,  365,  365,  365,  365,  366,  366,  366,  366,  366,
+      366,  366,  367,    0,  367,  367,  367,  367,  367,  368,
+        0,  368,    0,  368,  368,  368,  369,  369,  369,  369,
+      369,  369,  369,  370,  370,  370,  370,  370,  370,  370,
+      371,    0,  371,  371,  371,  371,  371,  372,  372,    0,
+      372,  373,  373,  373,  373,  373,  374,  374,  375,  375,
+      376,  376,  377,  377,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1461,15 +1446,15 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[63] =
+static const flex_int16_t yy_rule_linenum[62] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  198,  210,  220,  230,  240,  249,  258,
       267,  276,  285,  294,  303,  312,  321,  330,  339,  348,
-      357,  366,  375,  384,  393,  403,  412,  421,  430,  439,
-      448,  457,  466,  475,  484,  583,  588,  593,  598,  599,
-      600,  601,  602,  603,  605,  623,  636,  641,  645,  647,
-      649,  651
+      357,  366,  375,  384,  393,  402,  411,  420,  429,  438,
+      447,  456,  465,  474,  573,  578,  583,  588,  589,  590,
+      591,  592,  593,  595,  613,  626,  631,  635,  637,  639,
+      641
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1481,7 +1466,7 @@ static const flex_int16_t yy_rule_linenum[63] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "netconf_lexer.ll"
-/* Copyright (C) 2018-2019 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -1524,7 +1509,7 @@ using isc::netconf::NetconfParser;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::netconf::ParserContext::fatal(msg)
-#line 1527 "netconf_lexer.cc"
+#line 1512 "netconf_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1550,8 +1535,8 @@ using isc::netconf::NetconfParser;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1553 "netconf_lexer.cc"
-#line 1554 "netconf_lexer.cc"
+#line 1538 "netconf_lexer.cc"
+#line 1539 "netconf_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1865,7 +1850,7 @@ YY_DECL
     }
 
 
-#line 1868 "netconf_lexer.cc"
+#line 1853 "netconf_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1894,13 +1879,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 >= 373 )
+                               if ( yy_current_state >= 365 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 372 );
+               while ( yy_current_state != 364 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1919,13 +1904,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 63 )
+                       else if ( yy_act < 62 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 63 )
+                       else if ( yy_act == 62 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 64 )
+                       else if ( yy_act == 63 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2305,31 +2290,18 @@ YY_RULE_SETUP
 case 34:
 YY_RULE_SETUP
 #line 384 "netconf_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case ParserContext::CONFIG:
-        return NetconfParser::make_LOGGING(driver.loc_);
-    default:
-        return NetconfParser::make_STRING("Logging", driver.loc_);
-    }
-}
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 393 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::NETCONF:
-    case ParserContext::LOGGING:
         return NetconfParser::make_LOGGERS(driver.loc_);
     default:
         return NetconfParser::make_STRING("loggers", driver.loc_);
     }
 }
        YY_BREAK
-case 36:
+case 35:
 YY_RULE_SETUP
-#line 403 "netconf_lexer.ll"
+#line 393 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2339,9 +2311,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 36:
 YY_RULE_SETUP
-#line 412 "netconf_lexer.ll"
+#line 402 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2351,9 +2323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 37:
 YY_RULE_SETUP
-#line 421 "netconf_lexer.ll"
+#line 411 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2363,9 +2335,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 38:
 YY_RULE_SETUP
-#line 430 "netconf_lexer.ll"
+#line 420 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2375,9 +2347,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 39:
 YY_RULE_SETUP
-#line 439 "netconf_lexer.ll"
+#line 429 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2387,9 +2359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 40:
 YY_RULE_SETUP
-#line 448 "netconf_lexer.ll"
+#line 438 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2399,9 +2371,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 41:
 YY_RULE_SETUP
-#line 457 "netconf_lexer.ll"
+#line 447 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::OUTPUT_OPTIONS:
@@ -2411,9 +2383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 42:
 YY_RULE_SETUP
-#line 466 "netconf_lexer.ll"
+#line 456 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2423,9 +2395,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 43:
 YY_RULE_SETUP
-#line 475 "netconf_lexer.ll"
+#line 465 "netconf_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -2435,9 +2407,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 44:
 YY_RULE_SETUP
-#line 484 "netconf_lexer.ll"
+#line 474 "netconf_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -2537,65 +2509,65 @@ YY_RULE_SETUP
     return NetconfParser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 46:
-/* rule 46 can match eol */
+case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 583 "netconf_lexer.ll"
+#line 573 "netconf_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 47:
-/* rule 47 can match eol */
+case 46:
+/* rule 46 can match eol */
 YY_RULE_SETUP
-#line 588 "netconf_lexer.ll"
+#line 578 "netconf_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 48:
+case 47:
 YY_RULE_SETUP
-#line 593 "netconf_lexer.ll"
+#line 583 "netconf_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 49:
+case 48:
 YY_RULE_SETUP
-#line 598 "netconf_lexer.ll"
+#line 588 "netconf_lexer.ll"
 { return NetconfParser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 50:
+case 49:
 YY_RULE_SETUP
-#line 599 "netconf_lexer.ll"
+#line 589 "netconf_lexer.ll"
 { return NetconfParser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 51:
+case 50:
 YY_RULE_SETUP
-#line 600 "netconf_lexer.ll"
+#line 590 "netconf_lexer.ll"
 { return NetconfParser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 52:
+case 51:
 YY_RULE_SETUP
-#line 601 "netconf_lexer.ll"
+#line 591 "netconf_lexer.ll"
 { return NetconfParser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 53:
+case 52:
 YY_RULE_SETUP
-#line 602 "netconf_lexer.ll"
+#line 592 "netconf_lexer.ll"
 { return NetconfParser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 54:
+case 53:
 YY_RULE_SETUP
-#line 603 "netconf_lexer.ll"
+#line 593 "netconf_lexer.ll"
 { return NetconfParser::make_COLON(driver.loc_); }
        YY_BREAK
-case 55:
+case 54:
 YY_RULE_SETUP
-#line 605 "netconf_lexer.ll"
+#line 595 "netconf_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -2614,9 +2586,9 @@ YY_RULE_SETUP
     return NetconfParser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 56:
+case 55:
 YY_RULE_SETUP
-#line 623 "netconf_lexer.ll"
+#line 613 "netconf_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -2630,43 +2602,43 @@ YY_RULE_SETUP
     return NetconfParser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 57:
+case 56:
 YY_RULE_SETUP
-#line 636 "netconf_lexer.ll"
+#line 626 "netconf_lexer.ll"
 {
     string tmp(yytext);
     return NetconfParser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 58:
+case 57:
 YY_RULE_SETUP
-#line 641 "netconf_lexer.ll"
+#line 631 "netconf_lexer.ll"
 {
    return NetconfParser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 59:
+case 58:
 YY_RULE_SETUP
-#line 645 "netconf_lexer.ll"
+#line 635 "netconf_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 60:
+case 59:
 YY_RULE_SETUP
-#line 647 "netconf_lexer.ll"
+#line 637 "netconf_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 61:
+case 60:
 YY_RULE_SETUP
-#line 649 "netconf_lexer.ll"
+#line 639 "netconf_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 62:
+case 61:
 YY_RULE_SETUP
-#line 651 "netconf_lexer.ll"
+#line 641 "netconf_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 653 "netconf_lexer.ll"
+#line 643 "netconf_lexer.ll"
 {
     if (driver.states_.empty()) {
         return NetconfParser::make_END(driver.loc_);
@@ -2690,12 +2662,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 63:
+case 62:
 YY_RULE_SETUP
-#line 676 "netconf_lexer.ll"
+#line 666 "netconf_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2698 "netconf_lexer.cc"
+#line 2670 "netconf_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -3014,7 +2986,7 @@ static int yy_get_next_buffer (void)
                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 >= 373 )
+                       if ( yy_current_state >= 365 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -3047,11 +3019,11 @@ static int yy_get_next_buffer (void)
        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 >= 373 )
+               if ( yy_current_state >= 365 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 372);
+       yy_is_jam = (yy_current_state == 364);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3800,7 +3772,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 676 "netconf_lexer.ll"
+#line 666 "netconf_lexer.ll"
 
 
 using namespace isc::dhcp;