]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5187] parsers regenerated
authorTomek Mrugalski <tomasz@isc.org>
Tue, 18 Apr 2017 20:00:24 +0000 (20:00 +0000)
committerTomek Mrugalski <tomasz@isc.org>
Tue, 18 Apr 2017 20:00:24 +0000 (20:00 +0000)
24 files changed:
src/bin/agent/agent_lexer.cc
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh
src/bin/d2/d2_lexer.cc
src/bin/d2/d2_parser.cc
src/bin/d2/d2_parser.h
src/bin/d2/location.hh
src/bin/d2/position.hh
src/bin/d2/stack.hh
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

index d8bcc6f93d46dfe5cb5fec9fbb49f3ef007bba52..581d41065aff2333da9cc248ebfdf803cf999cf2 100644 (file)
@@ -524,8 +524,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to agent_text[] 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 53
-#define YY_END_OF_BUFFER 54
+#define YY_NUM_RULES 56
+#define YY_END_OF_BUFFER 57
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -533,42 +533,44 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[305] =
+static const flex_int16_t yy_accept[323] =
     {   0,
-       46,   46,    0,    0,    0,    0,    0,    0,    0,    0,
-       54,   52,   10,   11,   52,    1,   46,   43,   46,   46,
-       52,   45,   44,   52,   52,   52,   52,   52,   39,   40,
-       52,   52,   52,   41,   42,    5,    5,    5,   52,   52,
-       52,   10,   11,    0,    0,   35,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
-       46,   46,    0,   45,   46,    3,    2,    6,    0,   46,
-        0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
-        0,   36,    0,    0,    0,    0,    0,   38,    0,    0,
+       49,   49,    0,    0,    0,    0,    0,    0,    0,    0,
+       57,   55,   10,   11,   55,    1,   49,   46,   49,   49,
+       55,   48,   47,   55,   55,   55,   55,   55,   42,   43,
+       55,   55,   55,   44,   45,    5,    5,    5,   55,   55,
+       55,   10,   11,    0,    0,   38,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    1,   49,   49,    0,   48,   49,    3,    2,    6,
+        0,   49,    0,    0,    0,    0,    0,    0,    4,    0,
+        0,    9,    0,   39,    0,    0,    0,    0,    0,   41,
         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,   37,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
+        0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
+        0,   40,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       54,   52,    0,   51,   50,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   51,   49,    0,   48,   47,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   53,   50,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
-       47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   27,    0,
-        0,    0,    0,   21,    0,    0,    0,   32,   33,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       27,    0,    0,    0,    0,   21,    0,    0,    0,   35,
 
-        0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   29,
-        0,    0,    0,    0,    0,    0,   25,    0,    0,    0,
-        0,    0,    0,    0,    0,   23,   26,    0,    0,    0,
-        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   31,    0,    0,    0,    0,   18,
-        0,    0,    0,    0,   13,   14,    0,    0,    0,    0,
-        0,    0,   30,    0,    0,    0,    0,   24,    0,    0,
-        0,    0,    0,    0,    0,    0,   19,   20,    0,    0,
-       16,   17,    0,    0,   12,    0,    0,    0,    0,    0,
-
-       28,   15,   22,    0
+       36,    0,    0,    0,    0,    0,    0,    0,   30,    0,
+        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,   32,   29,    0,    0,    0,
+        0,    0,    0,   25,    0,    0,    0,    0,    0,    0,
+        0,    0,   23,   26,   31,    0,    0,    0,    0,    0,
+        0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   34,    0,    0,    0,    0,   18,    0,    0,
+        0,    0,   13,   14,    0,    0,    0,    0,    0,    0,
+       33,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   19,   20,    0,    0,   16,   17,
+        0,    0,   12,    0,    0,    0,    0,    0,   28,   15,
+       22,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -586,7 +588,7 @@ static const YY_CHAR yy_ec[256] =
 
        42,   43,   44,   45,   46,    5,   47,   48,   49,   50,
        51,   52,    5,   53,   54,   55,   56,   57,    5,   58,
-       59,    5,   60,    5,   61,    5,    5,    5,    5,    5,
+       59,   60,   61,    5,   62,    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,
@@ -603,7 +605,7 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[62] =
+static const YY_CHAR yy_meta[63] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
         3,    3,    3,    5,    5,    5,    5,    3,    3,    3,
@@ -611,321 +613,336 @@ static const YY_CHAR yy_meta[62] =
         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
     } ;
 
-static const flex_int16_t yy_base[317] =
+static const flex_int16_t yy_base[335] =
     {   0,
-        0,    0,   60,   63,   66,    0,   64,   68,   48,   65,
-      287, 2023,   85,  279,  127,    0,   89, 2023,  108,  121,
-       83,  127, 2023,  260,  171,   75,   84,  118, 2023, 2023,
-      123,  133,  140, 2023, 2023, 2023,   86,  263,  225,    0,
-      249,  152,  245,  159,  189, 2023,  195,  202,  208,  210,
-      216,  226,  271,  277,  283,  289,  295,  301,  307,    0,
-      323,  344,  241,  352,  357, 2023,    0, 2023,  143,  219,
-       71,  136,  143,  172,  178,  169, 2023,  200,  225, 2023,
-      207, 2023,  342,  387,  399,  405,  215,  411,  436,  422,
-      430,  465,  479,  485,  491,  500,  506,  521,  527,  541,
-
-      551,  557,  563,    0,  184,  216,  228,  208,  266,  273,
-      164, 2023,    0,  571,  577,  587,  201, 2023,  618,  612,
-      601,  618,  648,  662,  669,  675,  683,  689,  700,  710,
-      731,  737,  748,  274, 2023, 2023,  285, 2023, 2023,  118,
-        0,  754,  761,  768,  801,  796,  831,  844,  851,  857,
-      869,  875,  881,  892,  899,  916,  906,  927,  936, 2023,
-     2023,  132,    0,  942,  951,  972,  978,  986, 1023,  993,
-      999, 1008, 1024, 1066, 1072, 1052, 1078, 1087, 2023, 1093,
-     1108, 1114, 1123, 2023,  107,    0, 1131, 2023, 2023, 1150,
-     1161, 1167, 1174, 1181, 1187, 1205, 1218, 1211, 1226, 1232,
-
-     1241, 1248, 1254, 1262, 1268, 2023, 1299, 1305, 1312, 1318,
-     1325, 1335, 1342, 1348, 1360, 1370, 1379, 1385, 1395, 2023,
-     1401, 1407, 1415, 1425, 1432, 1438, 2023, 1452, 1460, 1475,
-     1483, 1490, 1496, 1502, 1513, 2023, 2023, 1520, 1526, 1538,
-     1548, 1557, 1563, 2023, 1574, 1587, 1593, 1599, 1609, 1617,
-     1629, 1636, 1644, 1652, 2023, 1659, 1666, 1672, 1680, 2023,
-     1687, 1694, 1710, 1722, 2023, 2023, 1729, 1736, 1745, 1753,
-     1764, 1771, 2023, 1780, 1788, 1795, 1801, 2023, 1807, 1818,
-     1825, 1837, 1843, 1853, 1860, 1867, 2023, 2023, 1880, 1888,
-     2023, 2023, 1895, 1906, 2023, 1918, 1926, 1932, 1943, 1949,
-
-     2023, 2023, 2023, 2023, 1984, 1989, 1994, 1999, 2004, 2009,
-     2014, 2017,  141,  127,  113,  102
+        0,    0,   61,   64,   67,    0,   65,   69,   49,   66,
+      277, 2128,   86,  269,  129,    0,  124, 2128,  172,  129,
+       84,  178, 2128,  250,   91,   76,   71,   89, 2128, 2128,
+       96,   91,   95, 2128, 2128, 2128,   87,  250,  196,    0,
+      222,  119,  236,  114,  199, 2128,  205,  215,  222,  209,
+      235,  252,  273,  279,  287,  297,  304,  310,  317,  323,
+      345,    0,  345,  367,  361,  374,  382, 2128,    0, 2128,
+      144,  215,  128,  134,  119,  171,  185,  135, 2128,  172,
+      204, 2128,  161, 2128,  379,  401,  409,  424,  203,  436,
+      458,  444,  451,  486,  501,  507,  513,  521,  527,  537,
+
+      543,  549,  567,  584,  590,  603,  609,    0,  172,  199,
+      209,  212,  221,  219,  149, 2128,    0,  615,  625,  639,
+      167, 2128,  670,  633,  663,  670,  655,  698,  713,  719,
+      726,  733,  739,  756,  764,  779,  786,  799,  805,  242,
+     2128, 2128,  275, 2128, 2128,  109,    0,  817,  841,  829,
+      863,  847,  890,  906,  912,  918,  932,  943,  859,  954,
+      963,  969,  978,  989,  999, 1014, 1020, 1026, 2128, 2128,
+      122,    0, 1034, 1040, 1051, 1057, 1070, 1107, 1076, 1100,
+     1093, 1107, 1153, 1137, 1159, 1165, 1172, 1178, 1184, 1195,
+     2128, 1202, 1220, 1226, 1232, 2128,  109,    0, 1240, 2128,
+
+     2128, 1248, 1257, 1267, 1275, 1283, 1293, 1302, 2128, 1310,
+     1318, 1328, 1337, 1348, 1358, 1364, 1372, 1379, 1385, 1402,
+     2128, 1415, 1409, 1421, 1427, 1440, 1446, 1452, 1458, 1464,
+     1470, 1477, 1483, 1505, 1513, 2128, 2128, 1519, 1525, 1531,
+     1541, 1549, 1562, 2128, 1571, 1577, 1592, 1598, 1607, 1613,
+     1620, 1634, 2128, 2128, 2128, 1643, 1655, 1661, 1671, 1678,
+     1685, 2128, 1691, 1697, 1709, 1715, 1721, 1732, 1745, 1752,
+     1758, 1767, 2128, 1773, 1780, 1788, 1794, 2128, 1803, 1825,
+     1834, 1840, 2128, 2128, 1846, 1852, 1860, 1871, 1882, 1888,
+     2128, 1895, 1902, 1908, 1918, 2128, 1925, 1938, 1944, 1956,
+
+     1962, 1969, 1975, 1981, 2128, 2128, 1987, 1999, 2128, 2128,
+     2005, 2011, 2128, 2017, 2023, 2035, 2047, 2054, 2128, 2128,
+     2128, 2128, 2089, 2094, 2099, 2104, 2109, 2114, 2119, 2122,
+      132,  128,  121,  111
     } ;
 
-static const flex_int16_t yy_def[317] =
+static const flex_int16_t yy_def[335] =
     {   0,
-      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,  306,  306,  310,
-      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,  306,  306,  312,  306,  310,  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,  306,  306,  312,  304,  310,  306,
-      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
-      306,  306,  306,  304,  304,  304,  304,  304,  304,  304,
-      314,  306,  306,  306,  310,  306,  306,  306,  306,  306,
-      306,  306,  306,  306,  306,  306,  306,  306,  306,  304,
-      304,  304,  315,  306,  306,  306,  306,  306,  310,  306,
-      306,  306,  306,  306,  306,  306,  306,  306,  304,  306,
-      306,  306,  306,  304,  304,  316,  306,  304,  304,  306,
-      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
-
-      306,  306,  306,  306,  306,  304,  306,  306,  306,  306,
-      306,  306,  306,  306,  306,  306,  306,  306,  306,  304,
-      306,  306,  306,  306,  306,  306,  304,  306,  306,  306,
-      306,  306,  306,  306,  306,  304,  304,  306,  306,  306,
-      306,  306,  306,  304,  306,  306,  306,  306,  306,  306,
-      306,  306,  306,  306,  304,  306,  306,  306,  306,  304,
-      306,  306,  306,  306,  304,  304,  306,  306,  306,  306,
-      306,  306,  304,  306,  306,  306,  306,  304,  306,  306,
-      306,  306,  306,  306,  306,  306,  304,  304,  306,  306,
-      304,  304,  306,  306,  304,  306,  306,  306,  306,  306,
-
-      304,  304,  304,    0,  304,  304,  304,  304,  304,  304,
-      304,  304,  304,  304,  304,  304
+      322,    1,  323,  323,    1,    5,    5,    5,    5,    5,
+      322,  322,  322,  322,  324,  325,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  326,
+      322,  322,  322,  327,  324,  322,  324,  324,  324,  328,
+      324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      324,  325,  322,  322,  322,  322,  322,  322,  329,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      326,  322,  327,  322,  322,  324,  324,  324,  330,  324,
+      328,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+
+      324,  324,  324,  324,  324,  324,  324,  329,  322,  322,
+      322,  322,  322,  322,  322,  322,  331,  324,  324,  324,
+      330,  322,  328,  324,  324,  324,  324,  324,  324,  324,
+      324,  324,  324,  324,  324,  324,  324,  324,  324,  322,
+      322,  322,  322,  322,  322,  322,  332,  324,  324,  324,
+      328,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      324,  324,  324,  324,  324,  324,  324,  324,  322,  322,
+      322,  333,  324,  324,  324,  324,  324,  328,  324,  324,
+      324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      322,  324,  324,  324,  324,  322,  322,  334,  324,  322,
+
+      322,  324,  324,  324,  324,  324,  324,  324,  322,  324,
+      324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      322,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      324,  324,  324,  324,  324,  322,  322,  324,  324,  324,
+      324,  324,  324,  322,  324,  324,  324,  324,  324,  324,
+      324,  324,  322,  322,  322,  324,  324,  324,  324,  324,
+      324,  322,  324,  324,  324,  324,  324,  324,  324,  324,
+      324,  324,  322,  324,  324,  324,  324,  322,  324,  324,
+      324,  324,  322,  322,  324,  324,  324,  324,  324,  324,
+      322,  324,  324,  324,  324,  322,  324,  324,  324,  324,
+
+      324,  324,  324,  324,  322,  322,  324,  324,  322,  322,
+      324,  324,  322,  324,  324,  324,  324,  324,  322,  322,
+      322,    0,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322
     } ;
 
-static const flex_int16_t yy_nxt[2085] =
+static const flex_int16_t yy_nxt[2191] =
     {   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,   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,
-       66,   12,   12,   12,   12,   67,   71,   12,  105,   12,
-
-       61,   12,   62,   62,   62,   62,   81,   12,   12,   12,
-       12,   39,   71,   12,   63,   12,   72,  186,  105,   61,
-       12,   64,   64,   64,   64,   12,   12,   44,   44,   44,
-       63,  163,   46,   63,   65,   65,   65,   65,   61,   72,
-       64,   64,   64,   64,   71,  141,   63,   73,  206,   63,
-       47,   48,   63,   42,   49,   42,   70,   70,   70,   70,
-       74,   50,   63,  106,   82,   72,   51,   52,   63,   73,
-       73,   53,  185,  162,   54,  107,   55,   56,   57,   69,
-       58,   69,   59,  106,   70,   70,   70,   70,   75,   44,
-       44,   44,   76,   83,   46,   44,   44,   44,  107,  105,
-
-       46,  107,   44,   44,   44,  106,  118,   46,   44,   44,
-       44,  140,   82,   46,  134,   88,   44,   44,   44,  108,
-      118,   46,   45,   50,  110,  109,   44,   44,   44,   50,
-      112,   46,   70,   70,   70,   70,   50,  134,  134,  111,
-       91,   83,   50,  135,   45,   84,   85,   43,   45,   69,
-       50,   69,   45,  136,   70,   70,   70,   70,   86,   45,
-       50,  137,   45,  135,   45,   89,   90,   92,   80,  136,
-       93,   44,   44,   44,   78,   77,   46,   44,   44,   44,
-       68,   43,   46,   44,   44,   44,  304,  304,   46,   44,
-       44,   44,  304,  135,   46,   44,   44,   44,  136,  160,
-
-       46,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      160,   50,   46,  138,  139,  160,  304,   50,  304,  304,
-       98,   94,   96,   50,  304,   95,  161,   97,  304,   50,
-      304,  304,  100,  304,  304,   50,   65,   65,   65,   65,
-      304,   50,  101,  304,   99,  304,  304,   81,   63,  304,
-      304,  102,  304,  304,   81,   61,  103,   62,   62,   62,
-       62,  304,  304,   61,   63,   64,   64,   64,   64,   63,
-       65,   65,   65,   65,  304,  304,   81,   63,  304,  304,
-       81,  304,   63,  304,   81,   63,  304,   44,   44,   44,
-      304,   81,   46,   63,   81,  304,   81,  113,   63,   44,
-
-       44,   44,  304,  304,   46,   44,   44,   44,  304,  304,
-       46,   44,   44,   44,  304,  304,   46,  304,  304,  304,
-      304,   50,   44,   44,   44,  304,  304,   46,  304,  304,
-       44,   44,   44,   50,  304,   46,  114,  304,  115,   50,
-      121,  304,  304,  304,  304,   50,  304,  304,  116,  119,
-      119,  119,  119,  304,  304,  304,   50,  119,  119,  119,
-      119,  119,  119,  304,   50,   44,   44,   44,  304,  304,
-       46,  120,  304,  119,  119,  119,  119,  119,  119,   44,
-       44,   44,  304,  304,   46,   44,   44,   44,  304,  304,
-       46,   44,   44,   44,  304,  304,   46,  304,  304,   50,
-
-       44,   44,   44,  122,  304,   46,   44,   44,   44,  304,
-      304,   46,  304,   50,  304,  304,  304,  304,  123,   50,
-      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      304,  304,   46,  304,   50,  124,  304,  304,  126,  304,
-       50,   44,   44,   44,  304,  125,   46,  304,  304,  127,
-      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      304,   50,   46,   44,   44,   44,  304,  304,   46,  128,
-      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      304,  129,   46,  304,  304,   50,  304,   44,   44,   44,
-      304,   50,   46,  130,  304,  304,  132,   50,  304,  304,
-
-      304,   44,   44,   44,  304,   50,   46,  131,  133,  304,
-      304,   50,   44,   44,   44,  304,  304,   46,   44,   44,
-       44,   50,  304,   46,  304,  142,  304,  304,  143,  304,
-      144,  145,  145,  145,  145,   50,  304,  304,  304,  145,
-      145,  145,  145,  145,  145,  304,   50,  304,   44,   44,
-       44,  304,   50,   46,  147,  145,  145,  145,  145,  145,
-      145,  304,   44,   44,   44,  304,  146,   46,  304,   44,
-       44,   44,  304,  148,   46,   44,   44,   44,  304,  304,
-       46,  304,   50,   44,   44,   44,  304,  304,   46,   44,
-       44,   44,  304,  304,   46,  304,   50,  304,  304,  149,
-
-       44,   44,   44,   50,  304,   46,  304,  304,  150,   50,
-       44,   44,   44,  304,  304,   46,  304,   50,  304,  304,
-      151,  304,  304,   50,  304,  304,  153,  152,  304,  304,
-      154,   44,   44,   44,   50,  304,   46,   44,   44,   44,
-      304,  304,   46,  304,   50,  304,  304,  156,   44,   44,
-       44,  155,  304,   46,   44,   44,   44,  304,  304,   46,
-      304,   44,   44,   44,  304,   50,   46,  304,   44,   44,
-       44,   50,  157,   46,  304,  304,  165,  166,  304,  304,
-      304,  304,   50,  158,  304,  167,  304,  304,   50,  304,
-      304,  304,  304,  304,  304,   50,   44,   44,   44,  304,
-
-      304,   46,   50,  304,  304,  159,  164,  304,  304,  304,
-      304,  304,  304,  168,  169,  169,  169,  169,  304,  304,
-      304,  304,  169,  169,  169,  169,  169,  169,  304,  304,
-       50,   44,   44,   44,  304,  304,   46,  304,  169,  169,
-      169,  169,  169,  169,   44,   44,   44,  304,  170,   46,
-      304,   44,   44,   44,  304,  304,   46,   44,   44,   44,
-      304,  304,   46,  304,  304,   50,  173,  174,  304,   44,
-       44,   44,  171,  304,   46,   44,   44,   44,   50,  176,
-       46,   44,   44,   44,  304,   50,   46,  172,  304,  304,
-      304,   50,   44,   44,   44,  304,  304,  179,  304,   44,
-
-       44,   44,  304,   50,   46,  304,   44,   44,   44,   50,
-      175,   46,  177,  304,  304,   50,   44,   44,   44,  304,
-      304,   46,  178,  304,  304,  304,   50,   44,   44,   44,
-      304,  304,   46,   50,  304,  304,   44,   44,   44,  304,
-       50,  184,   44,   44,   44,  304,  304,   46,  304,  304,
-       50,   44,   44,   44,  180,  304,  188,  304,  182,  304,
-      304,   50,  304,  304,  181,  304,  304,  304,  183,  304,
-       50,  304,   44,   44,   44,  304,   50,  189,   44,   44,
-       44,  304,  304,   46,  304,   50,   44,   44,   44,  304,
-      304,   46,  187,   44,   44,   44,  304,  304,   46,   44,
-
-       44,   44,  304,  304,   46,  304,   50,  304,   44,   44,
-       44,  304,   50,   46,  304,  304,  304,  304,  190,  304,
-       50,  304,  304,  304,   44,   44,   44,   50,  304,   46,
-      304,  304,  304,   50,  195,  191,   45,   45,   45,   45,
-      304,  304,   50,  192,   45,   45,   45,   45,   45,   45,
-      304,  193,   44,   44,   44,  194,  304,   46,   50,  304,
-       45,   45,   45,   45,   45,   45,   44,   44,   44,  304,
-      304,   46,   44,   44,   44,  304,  196,   46,   44,   44,
-       44,  304,  197,   46,  304,  304,   50,   44,   44,   44,
-      304,  304,   46,   44,   44,   44,  198,  304,   46,  304,
-
-       50,  304,  304,  199,  304,  304,   50,  304,   44,   44,
-       44,  304,   50,   46,   44,   44,   44,  304,  304,   46,
-      304,   50,  304,   44,   44,   44,  304,   50,   46,  304,
-      200,   44,   44,   44,  304,  304,   46,  304,  304,  201,
-      304,  304,   50,  304,  304,  304,  304,  202,   50,  203,
-       44,   44,   44,  304,  304,   46,  304,   50,  304,  204,
-      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      304,  304,   46,  304,   44,   44,   44,  205,  207,   46,
-      304,   44,   44,   44,   50,  304,   46,   44,   44,   44,
-      304,  304,   46,  304,  304,   50,  304,  304,  304,  208,
-
-      304,   50,  304,  304,  209,   44,   44,   44,   50,  304,
-       46,   44,   44,   44,  210,   50,   46,  304,   44,   44,
-       44,   50,  212,   46,  304,  304,   44,   44,   44,  304,
-      211,   46,   44,   44,   44,  304,  304,   46,  304,   50,
-      213,   44,   44,   44,  304,   50,   46,  304,   44,   44,
-       44,  304,   50,  220,   44,   44,   44,  304,  214,   46,
-       50,  216,   44,   44,   44,  215,   50,   46,   44,   44,
-       44,  304,  304,   46,  304,   50,  217,  304,  224,  304,
-      304,  304,   50,  304,  221,  304,  304,  304,   50,  304,
-      218,  304,  304,  304,  219,  304,   50,  304,  304,   44,
-
-       44,   44,   50,  304,   46,   44,   44,   44,  222,  225,
-       46,  304,   44,   44,   44,  304,  223,  227,   44,   44,
-       44,  304,  304,   46,  304,   44,   44,   44,  228,  304,
-       46,  304,  304,   50,  304,   44,   44,   44,  304,   50,
-       46,  304,   44,   44,   44,  304,   50,   46,   44,   44,
-       44,  304,   50,   46,  304,  304,  304,  304,  226,   50,
-       44,   44,   44,  304,  304,   46,  229,  304,  304,   50,
-       44,   44,   44,  304,  304,   46,   50,  304,  304,   44,
-       44,   44,   50,  231,   46,   44,   44,   44,  304,  232,
-      236,  230,  304,  304,   50,   44,   44,   44,  304,  304,
-
-      237,   44,   44,   44,   50,  233,   46,   44,   44,   44,
-      304,  304,   46,   50,  304,   44,   44,   44,  304,   50,
-       46,  304,  304,  234,  304,   44,   44,   44,  304,   50,
-       46,  235,   44,   44,   44,   50,  304,   46,   44,   44,
-       44,   50,  304,  244,  304,  304,  304,  304,  239,   50,
-      304,  238,   44,   44,   44,  304,  304,   46,  304,   50,
-       44,   44,   44,  304,  304,   46,   50,  304,  304,  243,
-      304,  304,   50,  240,  241,   44,   44,   44,  304,  242,
-       46,  304,  304,   44,   44,   44,   50,  304,   46,  304,
-       44,   44,   44,  304,   50,   46,   44,   44,   44,  304,
-
-      304,   46,   44,   44,   44,  245,  304,   46,  304,   50,
-      304,  304,  246,   44,   44,   44,  247,   50,   46,  304,
-       44,   44,   44,  304,   50,   46,   44,   44,   44,  304,
-       50,   46,  304,  304,  250,  248,   50,  304,   44,   44,
-       44,  304,  249,  255,  304,  304,  304,   50,   44,   44,
-       44,  304,  304,   46,   50,  304,  251,   44,   44,   44,
-       50,  304,   46,   44,   44,   44,  304,  252,   46,  304,
-      304,  253,   50,  304,   44,   44,   44,  304,  254,   46,
-      304,  304,   50,  304,  304,  256,  304,   44,   44,   44,
-      304,   50,  260,   44,   44,   44,  304,   50,   46,   44,
-
-       44,   44,  304,  304,   46,  304,  258,  304,   50,   44,
-       44,   44,  304,  304,   46,  257,  304,   44,   44,   44,
-      304,   50,   46,  304,  259,  304,  304,   50,  304,   44,
-       44,   44,  304,   50,  265,  304,   44,   44,   44,  304,
-      261,  266,  304,   50,   44,   44,   44,  304,  304,   46,
-      304,   50,   44,   44,   44,  262,  304,   46,  304,   44,
-       44,   44,  304,   50,   46,  263,   44,   44,   44,  264,
-       50,   46,   44,   44,   44,  304,  304,   46,   50,  304,
-       44,   44,   44,  304,  304,   46,   50,   44,   44,   44,
-      304,  304,  273,   50,   44,   44,   44,  304,  267,   46,
-
-       50,  304,  304,  304,  304,  268,   50,  269,  304,  304,
-       44,   44,   44,  271,   50,   46,  304,  270,  304,  272,
-      304,   50,   44,   44,   44,  304,  304,   46,   50,   44,
-       44,   44,  304,  304,   46,  274,   44,   44,   44,  304,
-      304,  278,  304,  304,   50,   44,   44,   44,  304,  304,
-       46,  275,  304,   44,   44,   44,   50,  304,   46,  276,
-      304,  304,  304,   50,   44,   44,   44,  304,  304,   46,
-       50,   44,   44,   44,  277,  304,   46,  304,  304,   50,
-       44,   44,   44,  304,  304,   46,  279,   50,   44,   44,
-       44,  304,  304,   46,  280,   44,   44,   44,   50,  304,
-
-       46,   44,   44,   44,  304,   50,   46,   44,   44,   44,
-      304,  304,  287,  281,   50,  304,  304,  282,   44,   44,
-       44,  304,   50,  288,  304,   44,   44,   44,  304,   50,
-       46,  304,  283,  304,  304,   50,  304,   44,   44,   44,
-      284,   50,   46,   44,   44,   44,  304,  285,  291,  304,
-      304,  286,   50,   44,   44,   44,  304,  304,  292,   50,
-       44,   44,   44,  304,  304,   46,  304,   44,   44,   44,
-      304,   50,   46,  304,  304,  304,  304,   50,  290,  289,
-       44,   44,   44,  304,  304,  295,  304,   50,   44,   44,
-       44,  304,  304,   46,   50,   44,   44,   44,  304,  304,
-
-       46,   50,  304,  304,  304,  293,   44,   44,   44,  304,
-      304,   46,  304,  304,   50,  304,  294,  304,   44,   44,
-       44,  304,   50,   46,  304,  304,   44,   44,   44,   50,
-      304,   46,   44,   44,   44,  304,  297,  301,  304,  304,
-       50,  304,  296,   44,   44,   44,  304,  304,  302,   44,
-       44,   44,   50,  304,  303,  304,  304,  304,  304,  298,
-       50,  304,  304,  304,  304,  304,   50,  304,  304,  304,
-      304,  299,  304,  304,  304,  304,  304,   50,  304,  300,
-      304,  304,  304,   50,   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,   87,
-       87,   87,   87,   87,  104,  304,  104,  104,  104,  117,
-      117,  117,   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
+       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,  198,   74,   12,   12,   44,
+       44,   44,  172,   76,   46,   63,  147,   64,   64,   64,
+       64,   75,   67,   67,   67,   67,   77,   78,   85,   65,
+      221,  111,   47,   48,   65,  109,   49,   72,   72,   72,
+       72,  110,  197,   50,  171,   65,   84,  111,   51,   52,
+       65,   53,  122,   54,  111,  109,   55,   56,   57,   58,
+       59,  110,   60,   63,   61,   66,   66,   66,   66,   63,
+      114,   66,   66,   66,   66,   85,  146,   65,  109,   44,
+
+       44,   44,  140,   65,   46,   44,   44,   44,  122,  116,
+       46,  115,  110,   65,   90,   44,   44,   44,  112,   65,
+       46,   45,   44,   44,   44,  140,  141,   46,   72,   72,
+       72,   72,  113,   50,  142,   44,   44,   44,   43,   50,
+       46,   82,  140,   45,  142,   80,  141,   45,  141,   50,
+      142,   45,   44,   44,   44,   86,   50,   46,   45,   87,
+      145,   45,   79,   45,   91,  143,   93,  169,  144,   50,
+       70,   43,   88,   44,   44,   44,  322,  322,   46,   44,
+       44,   44,  322,  169,   46,   92,   50,   44,   44,   44,
+      322,  322,   46,   94,  322,  322,   95,   44,   44,   44,
+
+      169,  322,   46,  322,   44,   44,   44,   50,  322,   46,
+       44,   44,   44,   50,  322,   46,  170,   44,   44,   44,
+       96,   50,   46,   44,   44,   44,  322,  322,   46,   97,
+      322,   50,   99,   98,  101,  322,  322,  100,   50,  322,
+      322,  102,  322,  322,   50,   44,   44,   44,  322,  322,
+       46,   50,  322,  322,  104,  322,  322,   50,   67,   67,
+       67,   67,  322,  322,  105,  103,  322,  322,  322,   71,
+       65,   71,  322,  106,   72,   72,   72,   72,   63,   50,
+       64,   64,   64,   64,   83,   63,   65,   66,   66,   66,
+       66,   83,   65,  322,  107,   67,   67,   67,   67,   65,
+
+      322,   44,   44,   44,  322,  322,   46,   65,   65,   44,
+       44,   44,  322,   83,   46,   65,  322,   83,  322,  322,
+      322,   83,  322,   65,   44,   44,   44,  322,   83,   46,
+      322,   83,  322,   83,  117,   50,   44,   44,   44,  322,
+      322,   46,  322,   50,   44,   44,   44,  322,  119,   46,
+      118,   44,   44,   44,  322,  322,   46,  322,   50,  322,
+      322,  125,  322,  322,  322,  322,  322,  120,  322,  322,
+       50,  123,  123,  123,  123,  322,  322,  322,   50,  123,
+      123,  123,  123,  123,  123,   50,   44,   44,   44,  322,
+      322,   46,  322,  124,  322,  123,  123,  123,  123,  123,
+
+      123,   44,   44,   44,  322,  322,   46,   44,   44,   44,
+      322,  322,   46,   44,   44,   44,  322,  322,   46,  322,
+       50,   44,   44,   44,  126,  322,   46,   44,   44,   44,
+      322,  322,   46,  322,  322,   50,  322,   44,   44,   44,
+      127,   50,   46,   44,   44,   44,  322,   50,   46,   44,
+       44,   44,  322,  322,   46,   50,  322,  322,  322,  322,
+      322,   50,  128,  129,  322,  131,  322,   44,   44,   44,
+      322,   50,   46,  322,  322,  130,  322,   50,  322,  322,
+      132,  322,  322,   50,   44,   44,   44,  322,  322,   46,
+       44,   44,   44,  322,  322,   46,  322,  134,  322,  322,
+
+      133,   50,  322,   44,   44,   44,  322,  322,   46,   44,
+       44,   44,  322,  322,   46,   44,   44,   44,   50,  322,
+       46,  135,  322,  322,   50,   44,   44,   44,  322,  322,
+       46,  322,  322,   44,   44,   44,  136,   50,   46,   44,
+       44,   44,  138,   50,   46,  322,  137,  322,  322,   50,
+      322,  322,  322,  322,  139,   44,   44,   44,  322,   50,
+       46,  322,  322,   44,   44,   44,  322,   50,   46,  148,
+       44,   44,   44,   50,  322,   46,  149,  322,  322,  322,
+      322,  322,  150,  151,  151,  151,  151,  152,  322,   50,
+      322,  151,  151,  151,  151,  151,  151,   50,   44,   44,
+
+       44,  322,  322,   46,   50,  322,  155,  151,  151,  151,
+      151,  151,  151,   44,   44,   44,  153,  322,   46,   44,
+       44,   44,  322,  322,   46,  154,   44,   44,   44,  322,
+      322,   46,   50,   44,   44,   44,  322,  322,   46,   44,
+       44,   44,  322,  322,   46,  322,  322,   50,  322,  322,
+      322,  156,  322,   50,  322,  322,   44,   44,   44,  157,
+       50,   46,  322,  322,   44,   44,   44,   50,  322,   46,
+      158,  322,  322,   50,  322,  322,  160,  322,  159,   44,
+       44,   44,  322,  322,   46,  322,   44,   44,   44,  322,
+       50,   46,  161,  322,  322,  162,  322,  163,   50,   44,
+
+       44,   44,  322,  322,   46,   44,   44,   44,  322,  322,
+       46,  322,  322,   50,  322,  164,  165,   44,   44,   44,
+       50,  322,   46,  322,  322,  322,  322,  166,  322,   44,
+       44,   44,  322,   50,   46,  322,  322,  322,  322,   50,
+      322,   44,   44,   44,  322,  167,   46,   44,   44,   44,
+      322,   50,   46,  322,  322,  322,  174,  175,  322,   44,
+       44,   44,  168,   50,   46,  176,  322,  322,  322,  173,
+      322,  322,  322,  322,  177,   50,  178,  178,  178,  178,
+      322,   50,  322,  322,  178,  178,  178,  178,  178,  178,
+       44,   44,   44,   50,  322,   46,  187,  322,  322,  179,
+
+      178,  178,  178,  178,  178,  178,   44,   44,   44,  322,
+      322,   46,   44,   44,   44,  322,  322,   46,   44,   44,
+       44,  322,  322,   46,   50,  322,  322,  182,  183,  322,
+      322,  180,   44,   44,   44,  322,  322,   46,  322,  322,
+       50,  322,  322,   44,   44,   44,   50,  322,   46,  181,
+      322,  322,   50,  186,   44,   44,   44,  322,  322,   46,
+      322,  322,  184,   44,   44,   44,   50,  322,   46,   44,
+       44,   44,  322,  322,   46,  322,  322,   50,   44,   44,
+       44,  322,  322,  191,  322,  185,  322,  322,   50,   44,
+       44,   44,  322,  322,   46,  188,  322,   50,  322,   44,
+
+       44,   44,  322,   50,   46,  322,  322,  322,  189,  322,
+      190,  322,   50,  322,   44,   44,   44,  322,  322,   46,
+       44,   44,   44,   50,  322,   46,   44,   44,   44,  322,
+      322,  196,  322,   50,   44,   44,   44,  322,  322,   46,
+       44,   44,   44,  322,  192,  200,  322,  193,   50,  322,
+      322,   44,   44,   44,   50,  322,  201,   44,   44,   44,
+       50,  195,   46,  322,  322,  322,  194,  322,   50,  322,
+       44,   44,   44,  322,   50,   46,   44,   44,   44,  322,
+      322,   46,  322,  322,  199,   50,  322,  322,  322,  322,
+      322,   50,  322,   44,   44,   44,  322,  202,   46,  322,
+
+       44,   44,   44,  322,   50,   46,  322,   44,   44,   44,
+       50,  322,   46,  322,  322,  322,  322,  207,  322,  203,
+       45,   45,   45,   45,  322,  322,  204,   50,   45,   45,
+       45,   45,   45,   45,   50,  322,  322,   44,   44,   44,
+      206,   50,  209,  322,   45,   45,   45,   45,   45,   45,
+      322,  322,  205,   44,   44,   44,  322,  322,   46,   44,
+       44,   44,  322,  208,   46,   44,   44,   44,  322,  210,
+       46,   50,   44,   44,   44,  322,  322,   46,   44,   44,
+       44,  322,  322,   46,   44,   44,   44,   50,  322,   46,
+      322,  322,  322,   50,  322,   44,   44,   44,  322,   50,
+
+       46,  322,   44,   44,   44,  322,   50,   46,  322,  211,
+      322,  322,   50,  322,  322,  322,  212,  322,   50,  322,
+       44,   44,   44,  322,  213,   46,   44,   44,   44,   50,
+      214,   46,   44,   44,   44,  322,   50,   46,  322,  322,
+       44,   44,   44,  215,  322,   46,  322,  216,   44,   44,
+       44,  322,  322,   46,   50,  322,  217,   44,   44,   44,
+       50,  218,   46,  322,  322,  322,   50,   44,   44,   44,
+      322,  219,   46,  322,   50,   44,   44,   44,  322,  322,
+       46,  322,   50,   44,   44,   44,  220,  222,   46,  322,
+      322,   50,  322,   44,   44,   44,  322,  223,   46,  322,
+
+      224,   50,   44,   44,   44,  322,  322,   46,  322,   50,
+       44,   44,   44,  322,  225,   46,  322,   50,   44,   44,
+       44,  322,  322,   46,  227,  322,  322,   50,   44,   44,
+       44,  226,  322,   46,  322,  322,   50,   44,   44,   44,
+      322,  322,   46,  322,   50,  322,  228,  322,   44,   44,
+       44,  322,   50,   46,  322,  229,  322,  230,   44,   44,
+       44,  322,   50,   46,   44,   44,   44,  322,  231,  236,
+      322,   50,   44,   44,   44,  322,  322,  237,  232,   44,
+       44,   44,   50,  322,   46,   44,   44,   44,  322,  322,
+       46,  322,   50,  322,  322,  233,  322,  322,   50,  235,
+
+      322,  234,   44,   44,   44,  322,   50,   46,  238,   44,
+       44,   44,  241,   50,   46,   44,   44,   44,  322,   50,
+       46,   44,   44,   44,  322,  242,  244,   44,   44,   44,
+      322,  322,   46,  239,  322,  322,   50,  245,  322,  240,
+       44,   44,   44,   50,  322,   46,   44,   44,   44,   50,
+      322,   46,   44,   44,   44,   50,  322,   46,   44,   44,
+       44,   50,  243,   46,   44,   44,   44,  322,  322,   46,
+       44,   44,   44,  322,   50,   46,  322,   44,   44,   44,
+       50,  246,   46,   44,   44,   44,   50,  322,  253,  322,
+      322,  322,   50,  248,  322,  322,  322,  322,   50,  249,
+
+      322,  322,  247,  322,   50,   44,   44,   44,  322,  250,
+      254,   50,  322,   44,   44,   44,  322,   50,  255,   44,
+       44,   44,  322,  251,   46,   44,   44,   44,  322,  252,
+       46,   44,   44,   44,  322,  322,   46,  322,  322,   50,
+      322,   44,   44,   44,  322,  322,   46,   50,  322,   44,
+       44,   44,  322,   50,   46,  322,  322,  322,  322,   50,
+      322,  322,   44,   44,   44,   50,  257,  262,  322,  256,
+      322,   44,   44,   44,  322,   50,   46,   44,   44,   44,
+      322,  322,   46,   50,  322,  322,  261,  322,  322,  258,
+      259,  322,   44,   44,   44,  260,   50,   46,   44,   44,
+
+       44,  322,  322,   46,  322,   50,  322,   44,   44,   44,
+      322,   50,   46,   44,   44,   44,  322,  322,   46,  322,
+       44,   44,   44,  322,  263,   46,   50,  322,  322,  264,
+      322,  322,   50,  265,   44,   44,   44,  322,  322,   46,
+      322,   50,  322,   44,   44,   44,  322,   50,   46,  322,
+      266,  268,  322,  322,   50,   44,   44,   44,  322,  267,
+       46,   44,   44,   44,  322,  322,  273,  322,   50,  322,
+      322,   44,   44,   44,  269,  322,   46,   50,   44,   44,
+       44,  322,  322,   46,  322,   44,   44,   44,  270,   50,
+       46,   44,   44,   44,  271,   50,   46,   44,   44,   44,
+
+      322,  322,  278,  322,  322,   50,  322,  272,  274,   44,
+       44,   44,   50,  322,   46,   44,   44,   44,  322,   50,
+       46,   44,   44,   44,  322,   50,   46,  322,  276,  322,
+      322,   50,   44,   44,   44,  322,  275,   46,  322,  322,
+      322,  277,  322,   50,  322,   44,   44,   44,  322,   50,
+      283,  322,   44,   44,   44,   50,  279,  284,   44,   44,
+       44,  322,  322,   46,  322,  322,   50,   44,   44,   44,
+      322,  280,   46,   44,   44,   44,  322,  281,   46,   50,
+       44,   44,   44,  322,  282,   46,   50,  322,   44,   44,
+       44,  322,   50,   46,   44,   44,   44,  322,  322,   46,
+
+      322,   50,  322,   44,   44,   44,  322,   50,  291,  322,
+      322,  322,  285,  322,   50,  322,  322,  322,  322,  322,
+      286,  287,   50,  322,  322,   44,   44,   44,   50,  289,
+       46,  288,  322,  290,   44,   44,   44,   50,  322,   46,
+       44,   44,   44,  322,  322,   46,   44,   44,   44,  322,
+      322,   46,   44,   44,   44,  322,  322,  296,  322,   50,
+       44,   44,   44,  322,  322,   46,  292,  322,   50,  322,
+      322,   44,   44,   44,   50,  293,   46,  294,  322,  322,
+       50,  322,   44,   44,   44,  322,   50,   46,   44,   44,
+       44,  295,  322,   46,   50,   44,   44,   44,  322,  322,
+
+       46,  297,   44,   44,   44,   50,  322,   46,   44,   44,
+       44,  322,  298,   46,  322,  322,   50,  322,   44,   44,
+       44,  322,   50,   46,  322,   44,   44,   44,  322,   50,
+      305,  299,  322,  322,  300,  322,   50,  322,   44,   44,
+       44,  322,   50,  306,   44,   44,   44,  301,  322,   46,
+      322,  322,   50,  322,  302,  322,   44,   44,   44,   50,
+      303,   46,   44,   44,   44,  322,  322,  309,  304,   44,
+       44,   44,   50,  322,  310,   44,   44,   44,   50,  322,
+       46,   44,   44,   44,  322,  322,   46,   44,   44,   44,
+       50,  322,  313,  322,  322,  322,   50,  308,  307,   44,
+
+       44,   44,  322,   50,   46,   44,   44,   44,  322,   50,
+       46,   44,   44,   44,  322,   50,   46,   44,   44,   44,
+      311,   50,   46,   44,   44,   44,  322,  322,   46,  322,
+      312,  322,  322,   50,  322,   44,   44,   44,  322,   50,
+      319,  322,  322,  322,  322,   50,  315,   44,   44,   44,
+      322,   50,  320,  314,   44,   44,   44,   50,  322,  321,
+      322,  322,  322,  322,  316,  322,  322,  322,  322,   50,
+      317,  322,  322,  322,  322,  322,  318,  322,  322,  322,
+      322,   50,  322,  322,  322,  322,  322,  322,   50,   36,
+       36,   36,   36,   36,   45,   45,   45,   45,   45,   62,
+
+      322,   62,   62,   62,   81,  322,   81,  322,   81,   83,
+       83,   83,   83,   83,   89,   89,   89,   89,   89,  108,
+      322,  108,  108,  108,  121,  121,  121,   11,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322
     } ;
 
-static const flex_int16_t yy_chk[2085] =
+static const flex_int16_t yy_chk[2191] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -933,229 +950,240 @@ static const flex_int16_t yy_chk[2085] =
         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,   71,    5,
-
-       17,    5,   17,   17,   17,   17,  316,    5,    5,    7,
-       10,    5,   26,    8,   17,    5,   27,  315,   71,   19,
-        5,   19,   19,   19,   19,    5,    5,   15,   15,   15,
-       17,  314,   15,   19,   20,   20,   20,   20,   22,   27,
-       22,   22,   22,   22,   31,  313,   20,   28,  185,   19,
-       15,   15,   22,   42,   15,   42,   69,   69,   69,   69,
-       31,   15,   20,   72,   44,   32,   15,   15,   22,   33,
-       28,   15,  162,  140,   15,   73,   15,   15,   15,   25,
-       15,   25,   15,   72,   25,   25,   25,   25,   32,   45,
-       45,   45,   33,   44,   45,   47,   47,   47,   73,   74,
-
-       47,   76,   48,   48,   48,   75,  117,   48,   49,   49,
-       49,  111,   81,   49,  105,   50,   51,   51,   51,   74,
-       87,   51,   50,   45,   76,   75,   52,   52,   52,   47,
-       79,   52,   70,   70,   70,   70,   48,  105,  108,   78,
-       52,   81,   49,  106,   50,   47,   48,   43,   50,   63,
-       51,   63,   50,  107,   63,   63,   63,   63,   49,   50,
-       52,  108,   50,  106,   50,   50,   51,   52,   41,  107,
-       52,   53,   53,   53,   39,   38,   53,   54,   54,   54,
-       24,   14,   54,   55,   55,   55,   11,    0,   55,   56,
-       56,   56,    0,  109,   56,   57,   57,   57,  110,  134,
-
-       57,   58,   58,   58,    0,   53,   58,   59,   59,   59,
-      137,   54,   59,  109,  110,  134,    0,   55,    0,    0,
-       55,   53,   54,   56,    0,   53,  137,   54,    0,   57,
-        0,    0,   57,    0,    0,   58,   61,   61,   61,   61,
-        0,   59,   58,    0,   56,    0,    0,   83,   61,    0,
-        0,   58,    0,    0,   83,   62,   59,   62,   62,   62,
-       62,    0,    0,   64,   61,   64,   64,   64,   64,   62,
-       65,   65,   65,   65,    0,    0,   83,   64,    0,    0,
-       83,    0,   65,    0,   83,   62,    0,   84,   84,   84,
-        0,   83,   84,   64,   83,    0,   83,   83,   65,   85,
-
-       85,   85,    0,    0,   85,   86,   86,   86,    0,    0,
-       86,   88,   88,   88,    0,    0,   88,    0,    0,    0,
-        0,   84,   90,   90,   90,    0,    0,   90,    0,    0,
-       91,   91,   91,   85,    0,   91,   84,    0,   85,   86,
-       91,    0,    0,    0,    0,   88,    0,    0,   86,   89,
-       89,   89,   89,    0,    0,    0,   90,   89,   89,   89,
-       89,   89,   89,    0,   91,   92,   92,   92,    0,    0,
-       92,   90,    0,   89,   89,   89,   89,   89,   89,   93,
-       93,   93,    0,    0,   93,   94,   94,   94,    0,    0,
-       94,   95,   95,   95,    0,    0,   95,    0,    0,   92,
-
-       96,   96,   96,   92,    0,   96,   97,   97,   97,    0,
-        0,   97,    0,   93,    0,    0,    0,    0,   93,   94,
-        0,   98,   98,   98,    0,   95,   98,   99,   99,   99,
-        0,    0,   99,    0,   96,   94,    0,    0,   96,    0,
-       97,  100,  100,  100,    0,   95,  100,    0,    0,   97,
-        0,  101,  101,  101,    0,   98,  101,  102,  102,  102,
-        0,   99,  102,  103,  103,  103,    0,    0,  103,   98,
-        0,  114,  114,  114,    0,  100,  114,  115,  115,  115,
-        0,   99,  115,    0,    0,  101,    0,  116,  116,  116,
-        0,  102,  116,  100,    0,    0,  102,  103,    0,    0,
-
-        0,  121,  121,  121,    0,  114,  121,  101,  103,    0,
-        0,  115,  120,  120,  120,    0,    0,  120,  122,  122,
-      122,  116,    0,  122,    0,  114,    0,    0,  115,    0,
-      116,  119,  119,  119,  119,  121,    0,    0,    0,  119,
-      119,  119,  119,  119,  119,    0,  120,    0,  123,  123,
-      123,    0,  122,  123,  121,  119,  119,  119,  119,  119,
-      119,    0,  124,  124,  124,    0,  120,  124,    0,  125,
-      125,  125,    0,  122,  125,  126,  126,  126,    0,    0,
-      126,    0,  123,  127,  127,  127,    0,    0,  127,  128,
-      128,  128,    0,    0,  128,    0,  124,    0,    0,  123,
-
-      129,  129,  129,  125,    0,  129,    0,    0,  124,  126,
-      130,  130,  130,    0,    0,  130,    0,  127,    0,    0,
-      125,    0,    0,  128,    0,    0,  127,  126,    0,    0,
-      128,  131,  131,  131,  129,    0,  131,  132,  132,  132,
-        0,    0,  132,    0,  130,    0,    0,  130,  133,  133,
-      133,  129,    0,  133,  142,  142,  142,    0,    0,  142,
-        0,  143,  143,  143,    0,  131,  143,    0,  144,  144,
-      144,  132,  131,  144,    0,    0,  143,  143,    0,    0,
-        0,    0,  133,  132,    0,  143,    0,    0,  142,    0,
-        0,    0,    0,    0,    0,  143,  146,  146,  146,    0,
-
-        0,  146,  144,    0,    0,  133,  142,    0,    0,    0,
-        0,    0,    0,  144,  145,  145,  145,  145,    0,    0,
-        0,    0,  145,  145,  145,  145,  145,  145,    0,    0,
-      146,  147,  147,  147,    0,    0,  147,    0,  145,  145,
-      145,  145,  145,  145,  148,  148,  148,    0,  146,  148,
-        0,  149,  149,  149,    0,    0,  149,  150,  150,  150,
-        0,    0,  150,    0,    0,  147,  149,  149,    0,  151,
-      151,  151,  147,    0,  151,  152,  152,  152,  148,  151,
-      152,  153,  153,  153,    0,  149,  153,  148,    0,    0,
-        0,  150,  154,  154,  154,    0,    0,  154,    0,  155,
-
-      155,  155,    0,  151,  155,    0,  157,  157,  157,  152,
-      150,  157,  152,    0,    0,  153,  156,  156,  156,    0,
-        0,  156,  153,    0,    0,    0,  154,  158,  158,  158,
-        0,    0,  158,  155,    0,    0,  159,  159,  159,    0,
-      157,  159,  164,  164,  164,    0,    0,  164,    0,    0,
-      156,  165,  165,  165,  155,    0,  165,    0,  157,    0,
-        0,  158,    0,    0,  156,    0,    0,    0,  158,    0,
-      159,    0,  166,  166,  166,    0,  164,  166,  167,  167,
-      167,    0,    0,  167,    0,  165,  168,  168,  168,    0,
-        0,  168,  164,  170,  170,  170,    0,    0,  170,  171,
-
-      171,  171,    0,    0,  171,    0,  166,    0,  172,  172,
-      172,    0,  167,  172,    0,    0,    0,    0,  167,    0,
-      168,    0,    0,    0,  173,  173,  173,  170,    0,  173,
-        0,    0,    0,  171,  173,  168,  169,  169,  169,  169,
-        0,    0,  172,  170,  169,  169,  169,  169,  169,  169,
-        0,  171,  176,  176,  176,  172,    0,  176,  173,    0,
-      169,  169,  169,  169,  169,  169,  174,  174,  174,    0,
-        0,  174,  175,  175,  175,    0,  174,  175,  177,  177,
-      177,    0,  175,  177,    0,    0,  176,  178,  178,  178,
-        0,    0,  178,  180,  180,  180,  176,    0,  180,    0,
-
-      174,    0,    0,  176,    0,    0,  175,    0,  181,  181,
-      181,    0,  177,  181,  182,  182,  182,    0,    0,  182,
-        0,  178,    0,  183,  183,  183,    0,  180,  183,    0,
-      177,  187,  187,  187,    0,    0,  187,    0,    0,  178,
-        0,    0,  181,    0,    0,    0,    0,  180,  182,  181,
-      190,  190,  190,    0,    0,  190,    0,  183,    0,  182,
-        0,  191,  191,  191,    0,  187,  191,  192,  192,  192,
-        0,    0,  192,    0,  193,  193,  193,  183,  187,  193,
-        0,  194,  194,  194,  190,    0,  194,  195,  195,  195,
-        0,    0,  195,    0,    0,  191,    0,    0,    0,  190,
-
-        0,  192,    0,    0,  191,  196,  196,  196,  193,    0,
-      196,  198,  198,  198,  192,  194,  198,    0,  197,  197,
-      197,  195,  194,  197,    0,    0,  199,  199,  199,    0,
-      193,  199,  200,  200,  200,    0,    0,  200,    0,  196,
-      195,  201,  201,  201,    0,  198,  201,    0,  202,  202,
-      202,    0,  197,  202,  203,  203,  203,    0,  196,  203,
-      199,  198,  204,  204,  204,  197,  200,  204,  205,  205,
-      205,    0,    0,  205,    0,  201,  199,    0,  205,    0,
-        0,    0,  202,    0,  202,    0,    0,    0,  203,    0,
-      200,    0,    0,    0,  201,    0,  204,    0,    0,  207,
-
-      207,  207,  205,    0,  207,  208,  208,  208,  203,  207,
-      208,    0,  209,  209,  209,    0,  204,  209,  210,  210,
-      210,    0,    0,  210,    0,  211,  211,  211,  210,    0,
-      211,    0,    0,  207,    0,  212,  212,  212,    0,  208,
-      212,    0,  213,  213,  213,    0,  209,  213,  214,  214,
-      214,    0,  210,  214,    0,    0,    0,    0,  208,  211,
-      215,  215,  215,    0,    0,  215,  211,    0,    0,  212,
-      216,  216,  216,    0,    0,  216,  213,    0,    0,  217,
-      217,  217,  214,  213,  217,  218,  218,  218,    0,  214,
-      218,  212,    0,    0,  215,  219,  219,  219,    0,    0,
-
-      219,  221,  221,  221,  216,  215,  221,  222,  222,  222,
-        0,    0,  222,  217,    0,  223,  223,  223,    0,  218,
-      223,    0,    0,  216,    0,  224,  224,  224,    0,  219,
-      224,  217,  225,  225,  225,  221,    0,  225,  226,  226,
-      226,  222,    0,  226,    0,    0,    0,    0,  222,  223,
-        0,  221,  228,  228,  228,    0,    0,  228,    0,  224,
-      229,  229,  229,    0,    0,  229,  225,    0,    0,  225,
-        0,    0,  226,  223,  224,  230,  230,  230,    0,  224,
-      230,    0,    0,  231,  231,  231,  228,    0,  231,    0,
-      232,  232,  232,    0,  229,  232,  233,  233,  233,    0,
-
-        0,  233,  234,  234,  234,  228,    0,  234,    0,  230,
-        0,    0,  229,  235,  235,  235,  230,  231,  235,    0,
-      238,  238,  238,    0,  232,  238,  239,  239,  239,    0,
-      233,  239,    0,    0,  233,  231,  234,    0,  240,  240,
-      240,    0,  232,  240,    0,    0,    0,  235,  241,  241,
-      241,    0,    0,  241,  238,    0,  234,  242,  242,  242,
-      239,    0,  242,  243,  243,  243,    0,  235,  243,    0,
-        0,  238,  240,    0,  245,  245,  245,    0,  239,  245,
-        0,    0,  241,    0,    0,  241,    0,  246,  246,  246,
-        0,  242,  246,  247,  247,  247,    0,  243,  247,  248,
-
-      248,  248,    0,    0,  248,    0,  243,    0,  245,  249,
-      249,  249,    0,    0,  249,  242,    0,  250,  250,  250,
-        0,  246,  250,    0,  245,    0,    0,  247,    0,  251,
-      251,  251,    0,  248,  251,    0,  252,  252,  252,    0,
-      247,  252,    0,  249,  253,  253,  253,    0,    0,  253,
-        0,  250,  254,  254,  254,  248,    0,  254,    0,  256,
-      256,  256,    0,  251,  256,  249,  257,  257,  257,  250,
-      252,  257,  258,  258,  258,    0,    0,  258,  253,    0,
-      259,  259,  259,    0,    0,  259,  254,  261,  261,  261,
-        0,    0,  261,  256,  262,  262,  262,    0,  253,  262,
-
-      257,    0,    0,    0,    0,  254,  258,  256,    0,    0,
-      263,  263,  263,  258,  259,  263,    0,  257,    0,  259,
-        0,  261,  264,  264,  264,    0,    0,  264,  262,  267,
-      267,  267,    0,    0,  267,  262,  268,  268,  268,    0,
-        0,  268,    0,    0,  263,  269,  269,  269,    0,    0,
-      269,  263,    0,  270,  270,  270,  264,    0,  270,  264,
-        0,    0,    0,  267,  271,  271,  271,    0,    0,  271,
-      268,  272,  272,  272,  267,    0,  272,    0,    0,  269,
-      274,  274,  274,    0,    0,  274,  269,  270,  275,  275,
-      275,    0,    0,  275,  270,  276,  276,  276,  271,    0,
-
-      276,  277,  277,  277,    0,  272,  277,  279,  279,  279,
-        0,    0,  279,  271,  274,    0,    0,  272,  280,  280,
-      280,    0,  275,  280,    0,  281,  281,  281,    0,  276,
-      281,    0,  274,    0,    0,  277,    0,  282,  282,  282,
-      275,  279,  282,  283,  283,  283,    0,  276,  283,    0,
-        0,  277,  280,  284,  284,  284,    0,    0,  284,  281,
-      285,  285,  285,    0,    0,  285,    0,  286,  286,  286,
-        0,  282,  286,    0,    0,    0,    0,  283,  282,  281,
-      289,  289,  289,    0,    0,  289,    0,  284,  290,  290,
-      290,    0,    0,  290,  285,  293,  293,  293,    0,    0,
-
-      293,  286,    0,    0,    0,  285,  294,  294,  294,    0,
-        0,  294,    0,    0,  289,    0,  286,    0,  296,  296,
-      296,    0,  290,  296,    0,    0,  297,  297,  297,  293,
-        0,  297,  298,  298,  298,    0,  293,  298,    0,    0,
-      294,    0,  290,  299,  299,  299,    0,    0,  299,  300,
-      300,  300,  296,    0,  300,    0,    0,    0,    0,  294,
-      297,    0,    0,    0,    0,    0,  298,    0,    0,    0,
-        0,  296,    0,    0,    0,    0,    0,  299,    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
+        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,  334,    5,   31,   28,   44,
+       42,    5,   42,   32,   33,  333,   27,    5,    5,   15,
+       15,   15,  332,   31,   15,   17,  331,   17,   17,   17,
+       17,   28,   20,   20,   20,   20,   32,   33,   44,   17,
+      197,   75,   15,   15,   20,   73,   15,   71,   71,   71,
+       71,   74,  171,   15,  146,   17,   83,   78,   15,   15,
+       20,   15,  121,   15,   75,   73,   15,   15,   15,   15,
+       15,   74,   15,   19,   15,   19,   19,   19,   19,   22,
+       78,   22,   22,   22,   22,   83,  115,   19,   76,   45,
+
+       45,   45,  109,   22,   45,   47,   47,   47,   89,   81,
+       47,   80,   77,   19,   50,   48,   48,   48,   76,   22,
+       48,   50,   49,   49,   49,  109,  110,   49,   72,   72,
+       72,   72,   77,   45,  111,   51,   51,   51,   43,   47,
+       51,   41,  112,   50,  114,   39,  110,   50,  113,   48,
+      111,   50,   52,   52,   52,   47,   49,   52,   50,   48,
+      114,   50,   38,   50,   50,  112,   52,  140,  113,   51,
+       24,   14,   49,   53,   53,   53,   11,    0,   53,   54,
+       54,   54,    0,  140,   54,   51,   52,   55,   55,   55,
+        0,    0,   55,   52,    0,    0,   52,   56,   56,   56,
+
+      143,    0,   56,    0,   57,   57,   57,   53,    0,   57,
+       58,   58,   58,   54,    0,   58,  143,   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,   85,   66,   63,   66,   66,   66,
+       66,   85,   64,    0,   61,   67,   67,   67,   67,   66,
+
+        0,   86,   86,   86,    0,    0,   86,   67,   64,   87,
+       87,   87,    0,   85,   87,   66,    0,   85,    0,    0,
+        0,   85,    0,   67,   88,   88,   88,    0,   85,   88,
+        0,   85,    0,   85,   85,   86,   90,   90,   90,    0,
+        0,   90,    0,   87,   92,   92,   92,    0,   87,   92,
+       86,   93,   93,   93,    0,    0,   93,    0,   88,    0,
+        0,   93,    0,    0,    0,    0,    0,   88,    0,    0,
+       90,   91,   91,   91,   91,    0,    0,    0,   92,   91,
+       91,   91,   91,   91,   91,   93,   94,   94,   94,    0,
+        0,   94,    0,   92,    0,   91,   91,   91,   91,   91,
+
+       91,   95,   95,   95,    0,    0,   95,   96,   96,   96,
+        0,    0,   96,   97,   97,   97,    0,    0,   97,    0,
+       94,   98,   98,   98,   94,    0,   98,   99,   99,   99,
+        0,    0,   99,    0,    0,   95,    0,  100,  100,  100,
+       95,   96,  100,  101,  101,  101,    0,   97,  101,  102,
+      102,  102,    0,    0,  102,   98,    0,    0,    0,    0,
+        0,   99,   96,   97,    0,   99,    0,  103,  103,  103,
+        0,  100,  103,    0,    0,   98,    0,  101,    0,    0,
+      100,    0,    0,  102,  104,  104,  104,    0,    0,  104,
+      105,  105,  105,    0,    0,  105,    0,  102,    0,    0,
+
+      101,  103,    0,  106,  106,  106,    0,    0,  106,  107,
+      107,  107,    0,    0,  107,  118,  118,  118,  104,    0,
+      118,  103,    0,    0,  105,  119,  119,  119,    0,    0,
+      119,    0,    0,  124,  124,  124,  104,  106,  124,  120,
+      120,  120,  106,  107,  120,    0,  105,    0,    0,  118,
+        0,    0,    0,    0,  107,  127,  127,  127,    0,  119,
+      127,    0,    0,  125,  125,  125,    0,  124,  125,  118,
+      126,  126,  126,  120,    0,  126,  119,    0,    0,    0,
+        0,    0,  120,  123,  123,  123,  123,  124,    0,  127,
+        0,  123,  123,  123,  123,  123,  123,  125,  128,  128,
+
+      128,    0,    0,  128,  126,    0,  127,  123,  123,  123,
+      123,  123,  123,  129,  129,  129,  125,    0,  129,  130,
+      130,  130,    0,    0,  130,  126,  131,  131,  131,    0,
+        0,  131,  128,  132,  132,  132,    0,    0,  132,  133,
+      133,  133,    0,    0,  133,    0,    0,  129,    0,    0,
+        0,  128,    0,  130,    0,    0,  134,  134,  134,  129,
+      131,  134,    0,    0,  135,  135,  135,  132,    0,  135,
+      130,    0,    0,  133,    0,    0,  132,    0,  131,  136,
+      136,  136,    0,    0,  136,    0,  137,  137,  137,    0,
+      134,  137,  133,    0,    0,  133,    0,  134,  135,  138,
+
+      138,  138,    0,    0,  138,  139,  139,  139,    0,    0,
+      139,    0,    0,  136,    0,  135,  136,  148,  148,  148,
+      137,    0,  148,    0,    0,    0,    0,  137,    0,  150,
+      150,  150,    0,  138,  150,    0,    0,    0,    0,  139,
+        0,  149,  149,  149,    0,  138,  149,  152,  152,  152,
+        0,  148,  152,    0,    0,    0,  149,  149,    0,  159,
+      159,  159,  139,  150,  159,  149,    0,    0,    0,  148,
+        0,    0,    0,    0,  150,  149,  151,  151,  151,  151,
+        0,  152,    0,    0,  151,  151,  151,  151,  151,  151,
+      153,  153,  153,  159,    0,  153,  159,    0,    0,  152,
+
+      151,  151,  151,  151,  151,  151,  154,  154,  154,    0,
+        0,  154,  155,  155,  155,    0,    0,  155,  156,  156,
+      156,    0,    0,  156,  153,    0,    0,  155,  155,    0,
+        0,  153,  157,  157,  157,    0,    0,  157,    0,    0,
+      154,    0,    0,  158,  158,  158,  155,    0,  158,  154,
+        0,    0,  156,  158,  160,  160,  160,    0,    0,  160,
+        0,    0,  156,  161,  161,  161,  157,    0,  161,  162,
+      162,  162,    0,    0,  162,    0,    0,  158,  163,  163,
+      163,    0,    0,  163,    0,  157,    0,    0,  160,  164,
+      164,  164,    0,    0,  164,  160,    0,  161,    0,  165,
+
+      165,  165,    0,  162,  165,    0,    0,    0,  161,    0,
+      162,    0,  163,    0,  166,  166,  166,    0,    0,  166,
+      167,  167,  167,  164,    0,  167,  168,  168,  168,    0,
+        0,  168,    0,  165,  173,  173,  173,    0,    0,  173,
+      174,  174,  174,    0,  164,  174,    0,  165,  166,    0,
+        0,  175,  175,  175,  167,    0,  175,  176,  176,  176,
+      168,  167,  176,    0,    0,    0,  166,    0,  173,    0,
+      177,  177,  177,    0,  174,  177,  179,  179,  179,    0,
+        0,  179,    0,    0,  173,  175,    0,    0,    0,    0,
+        0,  176,    0,  181,  181,  181,    0,  176,  181,    0,
+
+      180,  180,  180,    0,  177,  180,    0,  182,  182,  182,
+      179,    0,  182,    0,    0,    0,    0,  182,    0,  177,
+      178,  178,  178,  178,    0,    0,  179,  181,  178,  178,
+      178,  178,  178,  178,  180,    0,    0,  184,  184,  184,
+      181,  182,  184,    0,  178,  178,  178,  178,  178,  178,
+        0,    0,  180,  183,  183,  183,    0,    0,  183,  185,
+      185,  185,    0,  183,  185,  186,  186,  186,    0,  185,
+      186,  184,  187,  187,  187,    0,    0,  187,  188,  188,
+      188,    0,    0,  188,  189,  189,  189,  183,    0,  189,
+        0,    0,    0,  185,    0,  190,  190,  190,    0,  186,
+
+      190,    0,  192,  192,  192,    0,  187,  192,    0,  186,
+        0,    0,  188,    0,    0,    0,  186,    0,  189,    0,
+      193,  193,  193,    0,  187,  193,  194,  194,  194,  190,
+      188,  194,  195,  195,  195,    0,  192,  195,    0,    0,
+      199,  199,  199,  189,    0,  199,    0,  190,  202,  202,
+      202,    0,    0,  202,  193,    0,  192,  203,  203,  203,
+      194,  193,  203,    0,    0,    0,  195,  204,  204,  204,
+        0,  194,  204,    0,  199,  205,  205,  205,    0,    0,
+      205,    0,  202,  206,  206,  206,  195,  199,  206,    0,
+        0,  203,    0,  207,  207,  207,    0,  202,  207,    0,
+
+      203,  204,  208,  208,  208,    0,    0,  208,    0,  205,
+      210,  210,  210,    0,  204,  210,    0,  206,  211,  211,
+      211,    0,    0,  211,  206,    0,    0,  207,  212,  212,
+      212,  205,    0,  212,    0,    0,  208,  213,  213,  213,
+        0,    0,  213,    0,  210,    0,  207,    0,  214,  214,
+      214,    0,  211,  214,    0,  208,    0,  210,  215,  215,
+      215,    0,  212,  215,  216,  216,  216,    0,  211,  216,
+        0,  213,  217,  217,  217,    0,    0,  217,  212,  218,
+      218,  218,  214,    0,  218,  219,  219,  219,    0,    0,
+      219,    0,  215,    0,    0,  213,    0,    0,  216,  215,
+
+        0,  214,  220,  220,  220,    0,  217,  220,  217,  223,
+      223,  223,  220,  218,  223,  222,  222,  222,    0,  219,
+      222,  224,  224,  224,    0,  222,  224,  225,  225,  225,
+        0,    0,  225,  218,    0,    0,  220,  225,    0,  219,
+      226,  226,  226,  223,    0,  226,  227,  227,  227,  222,
+        0,  227,  228,  228,  228,  224,    0,  228,  229,  229,
+      229,  225,  223,  229,  230,  230,  230,    0,    0,  230,
+      231,  231,  231,    0,  226,  231,    0,  232,  232,  232,
+      227,  226,  232,  233,  233,  233,  228,    0,  233,    0,
+        0,    0,  229,  228,    0,    0,    0,    0,  230,  229,
+
+        0,    0,  227,    0,  231,  234,  234,  234,    0,  230,
+      234,  232,    0,  235,  235,  235,    0,  233,  235,  238,
+      238,  238,    0,  231,  238,  239,  239,  239,    0,  232,
+      239,  240,  240,  240,    0,    0,  240,    0,    0,  234,
+        0,  241,  241,  241,    0,    0,  241,  235,    0,  242,
+      242,  242,    0,  238,  242,    0,    0,    0,    0,  239,
+        0,    0,  243,  243,  243,  240,  239,  243,    0,  238,
+        0,  245,  245,  245,    0,  241,  245,  246,  246,  246,
+        0,    0,  246,  242,    0,    0,  242,    0,    0,  240,
+      241,    0,  247,  247,  247,  241,  243,  247,  248,  248,
+
+      248,    0,    0,  248,    0,  245,    0,  249,  249,  249,
+        0,  246,  249,  250,  250,  250,    0,    0,  250,    0,
+      251,  251,  251,    0,  245,  251,  247,    0,    0,  246,
+        0,    0,  248,  247,  252,  252,  252,    0,    0,  252,
+        0,  249,    0,  256,  256,  256,    0,  250,  256,    0,
+      248,  250,    0,    0,  251,  257,  257,  257,    0,  249,
+      257,  258,  258,  258,    0,    0,  258,    0,  252,    0,
+        0,  259,  259,  259,  251,    0,  259,  256,  260,  260,
+      260,    0,    0,  260,    0,  261,  261,  261,  252,  257,
+      261,  263,  263,  263,  256,  258,  263,  264,  264,  264,
+
+        0,    0,  264,    0,    0,  259,    0,  257,  259,  265,
+      265,  265,  260,    0,  265,  266,  266,  266,    0,  261,
+      266,  267,  267,  267,    0,  263,  267,    0,  261,    0,
+        0,  264,  268,  268,  268,    0,  260,  268,    0,    0,
+        0,  263,    0,  265,    0,  269,  269,  269,    0,  266,
+      269,    0,  270,  270,  270,  267,  265,  270,  271,  271,
+      271,    0,    0,  271,    0,    0,  268,  272,  272,  272,
+        0,  266,  272,  274,  274,  274,    0,  267,  274,  269,
+      275,  275,  275,    0,  268,  275,  270,    0,  276,  276,
+      276,    0,  271,  276,  277,  277,  277,    0,    0,  277,
+
+        0,  272,    0,  279,  279,  279,    0,  274,  279,    0,
+        0,    0,  271,    0,  275,    0,    0,    0,    0,    0,
+      272,  274,  276,    0,    0,  280,  280,  280,  277,  276,
+      280,  275,    0,  277,  281,  281,  281,  279,    0,  281,
+      282,  282,  282,    0,    0,  282,  285,  285,  285,    0,
+        0,  285,  286,  286,  286,    0,    0,  286,    0,  280,
+      287,  287,  287,    0,    0,  287,  280,    0,  281,    0,
+        0,  288,  288,  288,  282,  281,  288,  282,    0,    0,
+      285,    0,  289,  289,  289,    0,  286,  289,  290,  290,
+      290,  285,    0,  290,  287,  292,  292,  292,    0,    0,
+
+      292,  287,  293,  293,  293,  288,    0,  293,  294,  294,
+      294,    0,  288,  294,    0,    0,  289,    0,  295,  295,
+      295,    0,  290,  295,    0,  297,  297,  297,    0,  292,
+      297,  289,    0,    0,  290,    0,  293,    0,  298,  298,
+      298,    0,  294,  298,  299,  299,  299,  292,    0,  299,
+        0,    0,  295,    0,  293,    0,  300,  300,  300,  297,
+      294,  300,  301,  301,  301,    0,    0,  301,  295,  302,
+      302,  302,  298,    0,  302,  303,  303,  303,  299,    0,
+      303,  304,  304,  304,    0,    0,  304,  307,  307,  307,
+      300,    0,  307,    0,    0,    0,  301,  300,  299,  308,
+
+      308,  308,    0,  302,  308,  311,  311,  311,    0,  303,
+      311,  312,  312,  312,    0,  304,  312,  314,  314,  314,
+      303,  307,  314,  315,  315,  315,    0,    0,  315,    0,
+      304,    0,    0,  308,    0,  316,  316,  316,    0,  311,
+      316,    0,    0,    0,    0,  312,  311,  317,  317,  317,
+        0,  314,  317,  308,  318,  318,  318,  315,    0,  318,
+        0,    0,    0,    0,  312,    0,    0,    0,    0,  316,
+      314,    0,    0,    0,    0,    0,  315,    0,    0,    0,
+        0,  317,    0,    0,    0,    0,    0,    0,  318,  323,
+      323,  323,  323,  323,  324,  324,  324,  324,  324,  325,
+
+        0,  325,  325,  325,  326,    0,  326,    0,  326,  327,
+      327,  327,  327,  327,  328,  328,  328,  328,  328,  329,
+        0,  329,  329,  329,  330,  330,  330,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  322,  322,  322,  322,  322,  322,  322
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1164,14 +1192,14 @@ static char *yy_last_accepting_cpos;
 extern int agent__flex_debug;
 int agent__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[53] =
+static const flex_int16_t yy_rule_linenum[56] =
     {   0,
       127,  129,  131,  136,  137,  142,  143,  144,  156,  159,
       164,  171,  180,  189,  198,  207,  216,  225,  234,  243,
       252,  261,  270,  279,  288,  297,  306,  315,  324,  333,
-      342,  351,  360,  369,  378,  476,  481,  486,  491,  492,
-      493,  494,  495,  496,  498,  516,  529,  534,  538,  540,
-      542,  544
+      342,  351,  360,  369,  378,  387,  396,  405,  503,  508,
+      513,  518,  519,  520,  521,  522,  523,  525,  543,  556,
+      561,  565,  567,  569,  571
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1220,7 +1248,7 @@ using isc::agent::AgentParser;
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1223 "agent_lexer.cc"
+#line 1251 "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
@@ -1246,8 +1274,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 1249 "agent_lexer.cc"
-#line 1250 "agent_lexer.cc"
+#line 1277 "agent_lexer.cc"
+#line 1278 "agent_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1561,7 +1589,7 @@ YY_DECL
     }
 
 
-#line 1564 "agent_lexer.cc"
+#line 1592 "agent_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1590,13 +1618,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 >= 305 )
+                               if ( yy_current_state >= 323 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 304 );
+               while ( yy_current_state != 322 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1615,13 +1643,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 < 53 )
+                       else if ( yy_act < 56 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], agent_text );
-                       else if ( yy_act == 53 )
+                       else if ( yy_act == 56 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         agent_text );
-                       else if ( yy_act == 54 )
+                       else if ( yy_act == 57 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1944,6 +1972,42 @@ YY_RULE_SETUP
 case 30:
 YY_RULE_SETUP
 #line 333 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_FLUSH(driver.loc_);
+    default:
+        return AgentParser::make_STRING("flush", driver.loc_);
+    }
+}
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 342 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_MAXSIZE(driver.loc_);
+    default:
+        return AgentParser::make_STRING("maxsize", driver.loc_);
+    }
+}
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 351 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_MAXVER(driver.loc_);
+    default:
+        return AgentParser::make_STRING("maxver", driver.loc_);
+    }
+}
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 360 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -1953,9 +2017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 31:
+case 34:
 YY_RULE_SETUP
-#line 342 "agent_lexer.ll"
+#line 369 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
@@ -1965,9 +2029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 32:
+case 35:
 YY_RULE_SETUP
-#line 351 "agent_lexer.ll"
+#line 378 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::CONFIG:
@@ -1977,9 +2041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 36:
 YY_RULE_SETUP
-#line 360 "agent_lexer.ll"
+#line 387 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::CONFIG:
@@ -1989,9 +2053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 34:
+case 37:
 YY_RULE_SETUP
-#line 369 "agent_lexer.ll"
+#line 396 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::CONFIG:
@@ -2001,9 +2065,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 35:
+case 38:
 YY_RULE_SETUP
-#line 378 "agent_lexer.ll"
+#line 405 "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.
@@ -2102,65 +2166,65 @@ YY_RULE_SETUP
     return AgentParser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 36:
-/* rule 36 can match eol */
+case 39:
+/* rule 39 can match eol */
 YY_RULE_SETUP
-#line 476 "agent_lexer.ll"
+#line 503 "agent_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 37:
-/* rule 37 can match eol */
+case 40:
+/* rule 40 can match eol */
 YY_RULE_SETUP
-#line 481 "agent_lexer.ll"
+#line 508 "agent_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 38:
+case 41:
 YY_RULE_SETUP
-#line 486 "agent_lexer.ll"
+#line 513 "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 39:
+case 42:
 YY_RULE_SETUP
-#line 491 "agent_lexer.ll"
+#line 518 "agent_lexer.ll"
 { return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 492 "agent_lexer.ll"
+#line 519 "agent_lexer.ll"
 { return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 41:
+case 44:
 YY_RULE_SETUP
-#line 493 "agent_lexer.ll"
+#line 520 "agent_lexer.ll"
 { return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 42:
+case 45:
 YY_RULE_SETUP
-#line 494 "agent_lexer.ll"
+#line 521 "agent_lexer.ll"
 { return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 495 "agent_lexer.ll"
+#line 522 "agent_lexer.ll"
 { return AgentParser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 496 "agent_lexer.ll"
+#line 523 "agent_lexer.ll"
 { return AgentParser::make_COLON(driver.loc_); }
        YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 498 "agent_lexer.ll"
+#line 525 "agent_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
@@ -2179,9 +2243,9 @@ YY_RULE_SETUP
     return AgentParser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 516 "agent_lexer.ll"
+#line 543 "agent_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
@@ -2195,43 +2259,43 @@ YY_RULE_SETUP
     return AgentParser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 529 "agent_lexer.ll"
+#line 556 "agent_lexer.ll"
 {
     string tmp(yytext);
     return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 534 "agent_lexer.ll"
+#line 561 "agent_lexer.ll"
 {
    return AgentParser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 538 "agent_lexer.ll"
+#line 565 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 540 "agent_lexer.ll"
+#line 567 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 542 "agent_lexer.ll"
+#line 569 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 52:
+case 55:
 YY_RULE_SETUP
-#line 544 "agent_lexer.ll"
+#line 571 "agent_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 546 "agent_lexer.ll"
+#line 573 "agent_lexer.ll"
 {
     if (driver.states_.empty()) {
         return AgentParser::make_END(driver.loc_);
@@ -2255,12 +2319,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 569 "agent_lexer.ll"
+#line 596 "agent_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2263 "agent_lexer.cc"
+#line 2327 "agent_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2575,7 +2639,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 >= 305 )
+                       if ( yy_current_state >= 323 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2608,11 +2672,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 >= 305 )
+               if ( yy_current_state >= 323 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 304);
+       yy_is_jam = (yy_current_state == 322);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3361,7 +3425,7 @@ void agent_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 569 "agent_lexer.ll"
+#line 596 "agent_lexer.ll"
 
 
 using namespace isc::dhcp;
index b27e01698562bf61560a2eece33c0191b87320cb..391c622c894e9cb9ef62492b59ab850384e0c281 100644 (file)
@@ -253,24 +253,24 @@ namespace isc { namespace agent {
   {
       switch (that.type_get ())
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -289,24 +289,24 @@ namespace isc { namespace agent {
     state = that.state;
       switch (that.type_get ())
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -346,44 +346,44 @@ namespace isc { namespace agent {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 36: // "constant string"
+            case 39: // "constant string"
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 354 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 361 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 368 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 375 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 48: // value
+      case 51: // value
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 382 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 97: // socket_type_value
+      case 100: // socket_type_value
 
-#line 96 "agent_parser.yy" // lalr1.cc:636
+#line 99 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 389 "agent_parser.cc" // lalr1.cc:636
         break;
@@ -585,24 +585,24 @@ namespace isc { namespace agent {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -624,25 +624,25 @@ namespace isc { namespace agent {
           switch (yyn)
             {
   case 2:
-#line 107 "agent_parser.yy" // lalr1.cc:859
+#line 110 "agent_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 630 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 108 "agent_parser.yy" // lalr1.cc:859
+#line 111 "agent_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 636 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 109 "agent_parser.yy" // lalr1.cc:859
+#line 112 "agent_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.AGENT; }
 #line 642 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 117 "agent_parser.yy" // lalr1.cc:859
+#line 120 "agent_parser.yy" // lalr1.cc:859
     {
     // Parse the Control-agent map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -652,7 +652,7 @@ namespace isc { namespace agent {
     break;
 
   case 9:
-#line 121 "agent_parser.yy" // lalr1.cc:859
+#line 124 "agent_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -660,7 +660,7 @@ namespace isc { namespace agent {
     break;
 
   case 10:
-#line 128 "agent_parser.yy" // lalr1.cc:859
+#line 131 "agent_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -669,49 +669,49 @@ namespace isc { namespace agent {
     break;
 
   case 11:
-#line 134 "agent_parser.yy" // lalr1.cc:859
+#line 137 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 675 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 135 "agent_parser.yy" // lalr1.cc:859
+#line 138 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 681 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 13:
-#line 136 "agent_parser.yy" // lalr1.cc:859
+#line 139 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 687 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 137 "agent_parser.yy" // lalr1.cc:859
+#line 140 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 693 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 15:
-#line 138 "agent_parser.yy" // lalr1.cc:859
+#line 141 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 699 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 139 "agent_parser.yy" // lalr1.cc:859
+#line 142 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 705 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 17:
-#line 140 "agent_parser.yy" // lalr1.cc:859
+#line 143 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 711 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 144 "agent_parser.yy" // lalr1.cc:859
+#line 147 "agent_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -722,7 +722,7 @@ namespace isc { namespace agent {
     break;
 
   case 19:
-#line 149 "agent_parser.yy" // lalr1.cc:859
+#line 152 "agent_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -732,7 +732,7 @@ namespace isc { namespace agent {
     break;
 
   case 22:
-#line 167 "agent_parser.yy" // lalr1.cc:859
+#line 170 "agent_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -741,7 +741,7 @@ namespace isc { namespace agent {
     break;
 
   case 23:
-#line 171 "agent_parser.yy" // lalr1.cc:859
+#line 174 "agent_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -751,7 +751,7 @@ namespace isc { namespace agent {
     break;
 
   case 24:
-#line 178 "agent_parser.yy" // lalr1.cc:859
+#line 181 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -760,14 +760,14 @@ namespace isc { namespace agent {
     break;
 
   case 25:
-#line 181 "agent_parser.yy" // lalr1.cc:859
+#line 184 "agent_parser.yy" // lalr1.cc:859
     {
 }
 #line 767 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 188 "agent_parser.yy" // lalr1.cc:859
+#line 191 "agent_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -776,7 +776,7 @@ namespace isc { namespace agent {
     break;
 
   case 29:
-#line 192 "agent_parser.yy" // lalr1.cc:859
+#line 195 "agent_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -785,7 +785,7 @@ namespace isc { namespace agent {
     break;
 
   case 30:
-#line 205 "agent_parser.yy" // lalr1.cc:859
+#line 208 "agent_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -796,7 +796,7 @@ namespace isc { namespace agent {
     break;
 
   case 31:
-#line 214 "agent_parser.yy" // lalr1.cc:859
+#line 217 "agent_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -807,7 +807,7 @@ namespace isc { namespace agent {
     break;
 
   case 32:
-#line 219 "agent_parser.yy" // lalr1.cc:859
+#line 222 "agent_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -817,7 +817,7 @@ namespace isc { namespace agent {
     break;
 
   case 41:
-#line 240 "agent_parser.yy" // lalr1.cc:859
+#line 243 "agent_parser.yy" // lalr1.cc:859
     {
 
     // Let's create a MapElement that will represent it, add it to the
@@ -833,7 +833,7 @@ namespace isc { namespace agent {
     break;
 
   case 42:
-#line 250 "agent_parser.yy" // lalr1.cc:859
+#line 253 "agent_parser.yy" // lalr1.cc:859
     {
     // Ok, we're done with parsing control-agent. Let's take the map
     // off the stack.
@@ -844,7 +844,7 @@ namespace isc { namespace agent {
     break;
 
   case 50:
-#line 270 "agent_parser.yy" // lalr1.cc:859
+#line 273 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -852,7 +852,7 @@ namespace isc { namespace agent {
     break;
 
   case 51:
-#line 272 "agent_parser.yy" // lalr1.cc:859
+#line 275 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-host", host);
@@ -862,7 +862,7 @@ namespace isc { namespace agent {
     break;
 
   case 52:
-#line 278 "agent_parser.yy" // lalr1.cc:859
+#line 281 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-port", prf);
@@ -871,7 +871,7 @@ namespace isc { namespace agent {
     break;
 
   case 53:
-#line 284 "agent_parser.yy" // lalr1.cc:859
+#line 287 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -882,7 +882,7 @@ namespace isc { namespace agent {
     break;
 
   case 54:
-#line 289 "agent_parser.yy" // lalr1.cc:859
+#line 292 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -891,7 +891,7 @@ namespace isc { namespace agent {
     break;
 
   case 59:
-#line 302 "agent_parser.yy" // lalr1.cc:859
+#line 305 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -901,7 +901,7 @@ namespace isc { namespace agent {
     break;
 
   case 60:
-#line 306 "agent_parser.yy" // lalr1.cc:859
+#line 309 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -909,7 +909,7 @@ namespace isc { namespace agent {
     break;
 
   case 66:
-#line 319 "agent_parser.yy" // lalr1.cc:859
+#line 322 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -917,7 +917,7 @@ namespace isc { namespace agent {
     break;
 
   case 67:
-#line 321 "agent_parser.yy" // lalr1.cc:859
+#line 324 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -927,7 +927,7 @@ namespace isc { namespace agent {
     break;
 
   case 68:
-#line 327 "agent_parser.yy" // lalr1.cc:859
+#line 330 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -935,7 +935,7 @@ namespace isc { namespace agent {
     break;
 
   case 69:
-#line 329 "agent_parser.yy" // lalr1.cc:859
+#line 332 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -944,7 +944,7 @@ namespace isc { namespace agent {
     break;
 
   case 70:
-#line 337 "agent_parser.yy" // lalr1.cc:859
+#line 340 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
     ctx.stack_.back()->set("control-sockets", m);
@@ -955,7 +955,7 @@ namespace isc { namespace agent {
     break;
 
   case 71:
-#line 342 "agent_parser.yy" // lalr1.cc:859
+#line 345 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -964,7 +964,7 @@ namespace isc { namespace agent {
     break;
 
   case 78:
-#line 363 "agent_parser.yy" // lalr1.cc:859
+#line 366 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4-server", m);
@@ -975,7 +975,7 @@ namespace isc { namespace agent {
     break;
 
   case 79:
-#line 368 "agent_parser.yy" // lalr1.cc:859
+#line 371 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -984,7 +984,7 @@ namespace isc { namespace agent {
     break;
 
   case 80:
-#line 374 "agent_parser.yy" // lalr1.cc:859
+#line 377 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp6-server", m);
@@ -995,7 +995,7 @@ namespace isc { namespace agent {
     break;
 
   case 81:
-#line 379 "agent_parser.yy" // lalr1.cc:859
+#line 382 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1004,7 +1004,7 @@ namespace isc { namespace agent {
     break;
 
   case 82:
-#line 385 "agent_parser.yy" // lalr1.cc:859
+#line 388 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("d2-server", m);
@@ -1015,7 +1015,7 @@ namespace isc { namespace agent {
     break;
 
   case 83:
-#line 390 "agent_parser.yy" // lalr1.cc:859
+#line 393 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1024,7 +1024,7 @@ namespace isc { namespace agent {
     break;
 
   case 88:
-#line 406 "agent_parser.yy" // lalr1.cc:859
+#line 409 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1032,7 +1032,7 @@ namespace isc { namespace agent {
     break;
 
   case 89:
-#line 408 "agent_parser.yy" // lalr1.cc:859
+#line 411 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -1042,7 +1042,7 @@ namespace isc { namespace agent {
     break;
 
   case 90:
-#line 415 "agent_parser.yy" // lalr1.cc:859
+#line 418 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.SOCKET_TYPE);
 }
@@ -1050,7 +1050,7 @@ namespace isc { namespace agent {
     break;
 
   case 91:
-#line 417 "agent_parser.yy" // lalr1.cc:859
+#line 420 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1059,13 +1059,13 @@ namespace isc { namespace agent {
     break;
 
   case 92:
-#line 423 "agent_parser.yy" // lalr1.cc:859
+#line 426 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1065 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 93:
-#line 429 "agent_parser.yy" // lalr1.cc:859
+#line 432 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1073,7 +1073,7 @@ namespace isc { namespace agent {
     break;
 
   case 94:
-#line 431 "agent_parser.yy" // lalr1.cc:859
+#line 434 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1082,7 +1082,7 @@ namespace isc { namespace agent {
     break;
 
   case 95:
-#line 436 "agent_parser.yy" // lalr1.cc:859
+#line 439 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1090,7 +1090,7 @@ namespace isc { namespace agent {
     break;
 
   case 96:
-#line 438 "agent_parser.yy" // lalr1.cc:859
+#line 441 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1099,7 +1099,7 @@ namespace isc { namespace agent {
     break;
 
   case 97:
-#line 443 "agent_parser.yy" // lalr1.cc:859
+#line 446 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1107,7 +1107,7 @@ namespace isc { namespace agent {
     break;
 
   case 98:
-#line 445 "agent_parser.yy" // lalr1.cc:859
+#line 448 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1116,7 +1116,7 @@ namespace isc { namespace agent {
     break;
 
   case 99:
-#line 455 "agent_parser.yy" // lalr1.cc:859
+#line 458 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
@@ -1127,7 +1127,7 @@ namespace isc { namespace agent {
     break;
 
   case 100:
-#line 460 "agent_parser.yy" // lalr1.cc:859
+#line 463 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1136,7 +1136,7 @@ namespace isc { namespace agent {
     break;
 
   case 104:
-#line 477 "agent_parser.yy" // lalr1.cc:859
+#line 480 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -1147,7 +1147,7 @@ namespace isc { namespace agent {
     break;
 
   case 105:
-#line 482 "agent_parser.yy" // lalr1.cc:859
+#line 485 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1156,7 +1156,7 @@ namespace isc { namespace agent {
     break;
 
   case 108:
-#line 494 "agent_parser.yy" // lalr1.cc:859
+#line 497 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -1166,7 +1166,7 @@ namespace isc { namespace agent {
     break;
 
   case 109:
-#line 498 "agent_parser.yy" // lalr1.cc:859
+#line 501 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1174,7 +1174,7 @@ namespace isc { namespace agent {
     break;
 
   case 117:
-#line 513 "agent_parser.yy" // lalr1.cc:859
+#line 516 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1182,7 +1182,7 @@ namespace isc { namespace agent {
     break;
 
   case 118:
-#line 515 "agent_parser.yy" // lalr1.cc:859
+#line 518 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1192,7 +1192,7 @@ namespace isc { namespace agent {
     break;
 
   case 119:
-#line 521 "agent_parser.yy" // lalr1.cc:859
+#line 524 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
@@ -1201,7 +1201,7 @@ namespace isc { namespace agent {
     break;
 
   case 120:
-#line 526 "agent_parser.yy" // lalr1.cc:859
+#line 529 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
@@ -1209,7 +1209,7 @@ namespace isc { namespace agent {
     break;
 
   case 121:
-#line 528 "agent_parser.yy" // lalr1.cc:859
+#line 531 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -1219,7 +1219,7 @@ namespace isc { namespace agent {
     break;
 
   case 122:
-#line 534 "agent_parser.yy" // lalr1.cc:859
+#line 537 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -1230,7 +1230,7 @@ namespace isc { namespace agent {
     break;
 
   case 123:
-#line 539 "agent_parser.yy" // lalr1.cc:859
+#line 542 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1239,7 +1239,7 @@ namespace isc { namespace agent {
     break;
 
   case 126:
-#line 548 "agent_parser.yy" // lalr1.cc:859
+#line 551 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1249,23 +1249,23 @@ namespace isc { namespace agent {
     break;
 
   case 127:
-#line 552 "agent_parser.yy" // lalr1.cc:859
+#line 555 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1257 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 560 "agent_parser.yy" // lalr1.cc:859
+  case 134:
+#line 569 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
 #line 1265 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 562 "agent_parser.yy" // lalr1.cc:859
+  case 135:
+#line 571 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -1274,8 +1274,35 @@ namespace isc { namespace agent {
 #line 1275 "agent_parser.cc" // lalr1.cc:859
     break;
 
+  case 136:
+#line 577 "agent_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("flush", flush);
+}
+#line 1284 "agent_parser.cc" // lalr1.cc:859
+    break;
+
+  case 137:
+#line 582 "agent_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxsize", maxsize);
+}
+#line 1293 "agent_parser.cc" // lalr1.cc:859
+    break;
+
+  case 138:
+#line 587 "agent_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxver", maxver);
+}
+#line 1302 "agent_parser.cc" // lalr1.cc:859
+    break;
 
-#line 1279 "agent_parser.cc" // lalr1.cc:859
+
+#line 1306 "agent_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1530,36 +1557,37 @@ namespace isc { namespace agent {
   }
 
 
-  const signed char AgentParser::yypact_ninf_ = -75;
+  const signed char AgentParser::yypact_ninf_ = -77;
 
   const signed char AgentParser::yytable_ninf_ = -1;
 
-  const signed char
+  const short int
   AgentParser::yypact_[] =
   {
-      43,   -75,   -75,   -75,     5,    -3,     0,    34,   -75,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,    -3,    -4,    -7,     6,   -75,    37,
-      48,    53,    56,    80,   -75,   -75,   -75,   -75,   -75,    81,
-     -75,    12,   -75,   -75,   -75,   -75,   -75,   -75,   -75,    82,
-      83,   -75,   -75,    44,   -75,   -75,   -75,   -75,   -75,   -75,
-      -3,    -3,   -75,    52,    85,    86,    87,    88,    89,   -75,
-      -7,   -75,    90,    58,    77,    92,     6,   -75,   -75,   -75,
-      93,    91,    95,    -3,    -3,    -3,   -75,    68,   -75,   -75,
-      94,   -75,    -3,     6,    76,   -75,   -75,   -75,   -75,    -6,
-      98,   -75,    47,   -75,    50,   -75,   -75,   -75,   -75,   -75,
-     -75,    51,   -75,   -75,   -75,   -75,   -75,   100,   104,   -75,
-     -75,   105,    76,   -75,   106,   107,   108,    -6,   -75,    -9,
-     -75,    98,   103,   -75,   109,   110,   111,   -75,   -75,   -75,
-     -75,    60,   -75,   -75,   -75,   -75,   112,     4,     4,     4,
-     116,   117,    18,   -75,   -75,     8,   -75,   -75,   -75,    62,
-     -75,   -75,   -75,    63,    64,    78,    -3,   -75,    20,   112,
-     -75,   118,   119,     4,   -75,   -75,   -75,   -75,   -75,   -75,
-     -75,   120,   -75,   -75,    71,   -75,   -75,   -75,   -75,   -75,
-     -75,    79,   113,   -75,   121,   122,    96,   123,    20,   -75,
-     -75,   -75,   -75,    99,   124,   -75,   101,   -75,   -75,   127,
-     -75,   -75,    25,   -75,   114,   127,   -75,   -75,    72,   -75,
-     -75,   126,   114,   -75,   102,   -75,   -75
+      45,   -77,   -77,   -77,     6,     0,     7,    17,   -77,   -77,
+     -77,   -77,   -77,   -77,   -77,   -77,   -77,   -77,   -77,   -77,
+     -77,   -77,   -77,   -77,     0,   -17,    -8,     8,   -77,    30,
+      61,    82,    68,    84,   -77,   -77,   -77,   -77,   -77,    85,
+     -77,     5,   -77,   -77,   -77,   -77,   -77,   -77,   -77,    86,
+      87,   -77,   -77,    15,   -77,   -77,   -77,   -77,   -77,   -77,
+       0,     0,   -77,    53,    89,    90,    91,    92,    93,   -77,
+      -8,   -77,    94,    48,    95,    96,     8,   -77,   -77,   -77,
+     100,    98,    99,     0,     0,     0,   -77,    69,   -77,   -77,
+     102,   -77,     0,     8,    75,   -77,   -77,   -77,   -77,    -4,
+     103,   -77,    43,   -77,    49,   -77,   -77,   -77,   -77,   -77,
+     -77,    50,   -77,   -77,   -77,   -77,   -77,   105,   106,   -77,
+     -77,   108,    75,   -77,   109,   110,   111,    -4,   -77,    -5,
+     -77,   103,   112,   -77,   113,   114,   115,   -77,   -77,   -77,
+     -77,    51,   -77,   -77,   -77,   -77,   116,   -14,   -14,   -14,
+     120,   121,    34,   -77,   -77,    72,   -77,   -77,   -77,    60,
+     -77,   -77,   -77,    62,    63,    77,     0,   -77,     4,   116,
+     -77,   122,   123,   -14,   -77,   -77,   -77,   -77,   -77,   -77,
+     -77,   124,   -77,   -77,    64,   -77,   -77,   -77,   -77,   -77,
+     -77,    79,   117,   -77,   125,   126,    97,   127,     4,   -77,
+     -77,   -77,   -77,    80,   128,   -77,   101,   -77,   -77,   131,
+     -77,   -77,    74,   -77,    18,   131,   -77,   -77,   130,   135,
+     137,    71,   -77,   -77,   -77,   -77,   -77,   -77,   140,   104,
+     107,   118,    18,   -77,   129,   -77,   -77,   -77,   -77,   -77
   };
 
   const unsigned char
@@ -1586,22 +1614,24 @@ namespace isc { namespace agent {
      122,     0,   120,   116,     0,   110,   112,   114,   115,   113,
      107,     0,     0,    85,     0,     0,     0,     0,     0,   109,
       89,    92,    91,     0,     0,   119,     0,   111,   118,     0,
-     121,   126,     0,   124,     0,     0,   123,   130,     0,   128,
-     125,     0,     0,   127,     0,   129,   131
+     121,   126,     0,   124,     0,     0,   123,   134,     0,     0,
+       0,     0,   128,   130,   131,   132,   133,   125,     0,     0,
+       0,     0,     0,   127,     0,   136,   137,   138,   129,   135
   };
 
   const signed char
   AgentParser::yypgoto_[] =
   {
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -23,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -26,   -75,   -75,
-     -75,    61,   -75,   -75,    35,    69,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -18,   -75,   -75,   -16,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,    13,   -75,   -75,   -75,   -75,   -75,
-     -75,   -67,   -34,   -75,   -75,   -75,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,    22,   -75,   -75,
-     -75,   -22,   -75,   -75,   -52,   -75,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -66,   -75,   -75,   -74,   -75
+     -77,   -77,   -77,   -77,   -77,   -77,   -77,   -77,   -23,   -77,
+     -77,   -77,   -77,   -77,   -77,   -77,   -77,   -26,   -77,   -77,
+     -77,    65,   -77,   -77,    39,    73,   -77,   -77,   -77,   -77,
+     -77,   -77,   -77,    14,   -77,   -77,    -2,   -77,   -77,   -77,
+     -77,   -77,   -77,   -77,    21,   -77,   -77,   -77,   -77,   -77,
+     -77,   -64,   -22,   -77,   -77,   -77,   -77,   -77,   -77,   -77,
+     -77,   -77,   -77,   -77,   -77,   -77,   -77,    31,   -77,   -77,
+     -77,   -15,   -77,   -77,   -46,   -77,   -77,   -77,   -77,   -77,
+     -77,   -77,   -77,   -60,   -77,   -77,   -76,   -77,   -77,   -77,
+     -77,   -77
   };
 
   const short int
@@ -1615,100 +1645,102 @@ namespace isc { namespace agent {
      126,   159,   160,   161,   171,   162,   172,   202,    44,    66,
       45,    67,    46,    68,    47,    65,   104,   105,   106,   121,
      155,   156,   168,   184,   185,   186,   194,   187,   188,   197,
-     189,   195,   212,   213,   214,   218,   219,   221
+     189,   195,   212,   213,   214,   221,   222,   223,   228,   224,
+     225,   226
   };
 
   const unsigned char
   AgentParser::yytable_[] =
   {
-      40,    28,     9,    34,    10,     8,    11,    20,   107,   108,
-     109,   169,   138,   139,   170,    70,    35,    48,    49,    50,
-      71,   157,   158,    36,    37,    38,    51,    39,   215,    39,
-      39,   216,    31,    12,    13,    14,    15,    78,    79,   138,
-     139,    22,    39,    59,    40,   179,   180,    76,   181,   182,
-      76,    60,    77,   122,   127,   120,    39,    61,   123,   128,
-      95,    96,    97,   152,    62,   173,   173,   173,   153,   101,
-     174,   175,   176,   110,   198,   222,     1,     2,     3,   199,
-     223,   163,   164,    63,    89,    69,    73,    74,    80,    81,
-      82,    83,    84,    85,    87,    88,    90,    92,    93,   100,
-     103,   110,    94,   140,    98,   116,   130,   131,   146,   132,
-     134,   135,   136,   145,   177,   200,   147,   148,   149,   154,
-     165,   166,   191,   192,   196,   203,   204,   206,   102,   209,
-     224,    86,   201,   205,   211,   208,   167,   210,   226,   193,
-     137,   217,   183,   178,   133,    91,   207,   190,   225,   220,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      40,    28,    34,   157,   158,     9,     8,    10,    70,    11,
+     107,   108,   109,    71,    20,    35,   138,   139,    76,    48,
+      49,    50,    31,    77,    22,    36,    37,    38,    51,   179,
+     180,    39,   181,   182,    39,    39,    59,    78,    79,    12,
+      13,    14,    15,    39,    40,   217,    76,    39,   218,   219,
+     220,   120,   122,   127,   152,   138,   139,   123,   128,   153,
+      95,    96,    97,   173,    60,   173,   173,   198,   174,   101,
+     175,   176,   199,   110,   232,   169,    62,   215,   170,   233,
+     216,     1,     2,     3,   163,   164,    61,    63,    88,    69,
+      73,    74,    80,    81,    82,    83,    84,    85,    87,   103,
+      90,   110,    89,   140,    92,    93,    94,   100,    98,   131,
+     116,   130,   132,   134,   135,   136,   177,   146,   200,   208,
+     147,   148,   149,   154,   165,   166,   191,   192,   196,   203,
+     204,   206,   102,   209,   229,    86,   201,   205,   211,   230,
+     210,   231,   183,   178,   234,   145,   235,   236,   137,    91,
+     167,   193,   207,   133,   190,   227,   238,     0,   237,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   239,     0,
        0,     0,   183
   };
 
   const short int
   AgentParser::yycheck_[] =
   {
-      26,    24,     5,    10,     7,     0,     9,     7,    14,    15,
-      16,     3,    21,    22,     6,     3,    23,    11,    12,    13,
-       8,    17,    18,    30,    31,    32,    20,    36,     3,    36,
-      36,     6,    36,    36,    37,    38,    39,    60,    61,    21,
-      22,     7,    36,     6,    70,    25,    26,     3,    28,    29,
-       3,     3,     8,     3,     3,     8,    36,     4,     8,     8,
-      83,    84,    85,     3,     8,     3,     3,     3,     8,    92,
-       8,     8,     8,    99,     3,     3,    33,    34,    35,     8,
-       8,   148,   149,     3,     7,     4,     4,     4,    36,     4,
-       4,     4,     4,     4,     4,    37,     4,     4,     7,     5,
-      24,   127,     7,   129,    36,     7,     6,     3,     5,     4,
-       4,     4,     4,   131,    36,    36,     7,     7,     7,     7,
-       4,     4,     4,     4,     4,     4,     4,     4,    93,     5,
-       4,    70,    19,    37,     7,    36,   152,    36,    36,   173,
-     127,    27,   168,   166,   122,    76,   198,   169,   222,   215,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      26,    24,    10,    17,    18,     5,     0,     7,     3,     9,
+      14,    15,    16,     8,     7,    23,    21,    22,     3,    11,
+      12,    13,    39,     8,     7,    33,    34,    35,    20,    25,
+      26,    39,    28,    29,    39,    39,     6,    60,    61,    39,
+      40,    41,    42,    39,    70,    27,     3,    39,    30,    31,
+      32,     8,     3,     3,     3,    21,    22,     8,     8,     8,
+      83,    84,    85,     3,     3,     3,     3,     3,     8,    92,
+       8,     8,     8,    99,     3,     3,     8,     3,     6,     8,
+       6,    36,    37,    38,   148,   149,     4,     3,    40,     4,
+       4,     4,    39,     4,     4,     4,     4,     4,     4,    24,
+       4,   127,     7,   129,     4,     7,     7,     5,    39,     3,
+       7,     6,     4,     4,     4,     4,    39,     5,    39,    39,
+       7,     7,     7,     7,     4,     4,     4,     4,     4,     4,
+       4,     4,    93,     5,     4,    70,    19,    40,     7,     4,
+      39,     4,   168,   166,     4,   131,    42,    40,   127,    76,
+     152,   173,   198,   122,   169,   215,   232,    -1,    40,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
       -1,    -1,   198
   };
 
   const unsigned char
   AgentParser::yystos_[] =
   {
-       0,    33,    34,    35,    41,    42,    43,    44,     0,     5,
-       7,     9,    36,    37,    38,    39,    47,    48,    49,    53,
-       7,    58,     7,    45,    54,    50,    59,    46,    48,    55,
-      56,    36,    51,    52,    10,    23,    30,    31,    32,    36,
-      57,    60,    61,    62,    98,   100,   102,   104,    11,    12,
-      13,    20,    57,    64,    65,    66,    68,    69,    81,     6,
-       3,     4,     8,     3,    63,   105,    99,   101,   103,     4,
-       3,     8,    67,     4,     4,    70,     3,     8,    48,    48,
-      36,     4,     4,     4,     4,     4,    61,     4,    37,     7,
-       4,    65,     4,     7,     7,    48,    48,    48,    36,    82,
-       5,    48,    64,    24,   106,   107,   108,    14,    15,    16,
-      57,    83,    84,    85,    87,    89,     7,    71,    72,    73,
-       8,   109,     3,     8,    86,    88,    90,     3,     8,    74,
-       6,     3,     4,   107,     4,     4,     4,    84,    21,    22,
-      57,    75,    76,    77,    79,    73,     5,     7,     7,     7,
-      78,    80,     3,     8,     7,   110,   111,    17,    18,    91,
-      92,    93,    95,    91,    91,     4,     4,    76,   112,     3,
-       6,    94,    96,     3,     8,     8,     8,    36,    48,    25,
-      26,    28,    29,    57,   113,   114,   115,   117,   118,   120,
-     111,     4,     4,    92,   116,   121,     4,   119,     3,     8,
-      36,    19,    97,     4,     4,    37,     4,   114,    36,     5,
-      36,     7,   122,   123,   124,     3,     6,    27,   125,   126,
-     123,   127,     3,     8,     4,   126,    36
+       0,    36,    37,    38,    44,    45,    46,    47,     0,     5,
+       7,     9,    39,    40,    41,    42,    50,    51,    52,    56,
+       7,    61,     7,    48,    57,    53,    62,    49,    51,    58,
+      59,    39,    54,    55,    10,    23,    33,    34,    35,    39,
+      60,    63,    64,    65,   101,   103,   105,   107,    11,    12,
+      13,    20,    60,    67,    68,    69,    71,    72,    84,     6,
+       3,     4,     8,     3,    66,   108,   102,   104,   106,     4,
+       3,     8,    70,     4,     4,    73,     3,     8,    51,    51,
+      39,     4,     4,     4,     4,     4,    64,     4,    40,     7,
+       4,    68,     4,     7,     7,    51,    51,    51,    39,    85,
+       5,    51,    67,    24,   109,   110,   111,    14,    15,    16,
+      60,    86,    87,    88,    90,    92,     7,    74,    75,    76,
+       8,   112,     3,     8,    89,    91,    93,     3,     8,    77,
+       6,     3,     4,   110,     4,     4,     4,    87,    21,    22,
+      60,    78,    79,    80,    82,    76,     5,     7,     7,     7,
+      81,    83,     3,     8,     7,   113,   114,    17,    18,    94,
+      95,    96,    98,    94,    94,     4,     4,    79,   115,     3,
+       6,    97,    99,     3,     8,     8,     8,    39,    51,    25,
+      26,    28,    29,    60,   116,   117,   118,   120,   121,   123,
+     114,     4,     4,    95,   119,   124,     4,   122,     3,     8,
+      39,    19,   100,     4,     4,    40,     4,   117,    39,     5,
+      39,     7,   125,   126,   127,     3,     6,    27,    30,    31,
+      32,   128,   129,   130,   132,   133,   134,   126,   131,     4,
+       4,     4,     3,     8,     4,    42,    40,    40,   129,    39
   };
 
   const unsigned char
   AgentParser::yyr1_[] =
   {
-       0,    40,    42,    41,    43,    41,    44,    41,    46,    45,
-      47,    48,    48,    48,    48,    48,    48,    48,    50,    49,
-      51,    51,    52,    52,    54,    53,    55,    55,    56,    56,
-      57,    59,    58,    60,    60,    61,    61,    61,    61,    61,
-      61,    63,    62,    64,    64,    65,    65,    65,    65,    65,
-      67,    66,    68,    70,    69,    71,    71,    72,    72,    74,
-      73,    75,    75,    75,    76,    76,    78,    77,    80,    79,
-      82,    81,    83,    83,    84,    84,    84,    84,    86,    85,
-      88,    87,    90,    89,    91,    91,    92,    92,    94,    93,
-      96,    95,    97,    99,    98,   101,   100,   103,   102,   105,
-     104,   106,   106,   107,   109,   108,   110,   110,   112,   111,
-     113,   113,   114,   114,   114,   114,   114,   116,   115,   117,
-     119,   118,   121,   120,   122,   122,   124,   123,   125,   125,
-     127,   126
+       0,    43,    45,    44,    46,    44,    47,    44,    49,    48,
+      50,    51,    51,    51,    51,    51,    51,    51,    53,    52,
+      54,    54,    55,    55,    57,    56,    58,    58,    59,    59,
+      60,    62,    61,    63,    63,    64,    64,    64,    64,    64,
+      64,    66,    65,    67,    67,    68,    68,    68,    68,    68,
+      70,    69,    71,    73,    72,    74,    74,    75,    75,    77,
+      76,    78,    78,    78,    79,    79,    81,    80,    83,    82,
+      85,    84,    86,    86,    87,    87,    87,    87,    89,    88,
+      91,    90,    93,    92,    94,    94,    95,    95,    97,    96,
+      99,    98,   100,   102,   101,   104,   103,   106,   105,   108,
+     107,   109,   109,   110,   112,   111,   113,   113,   115,   114,
+     116,   116,   117,   117,   117,   117,   117,   119,   118,   120,
+     122,   121,   124,   123,   125,   125,   127,   126,   128,   128,
+     129,   129,   129,   129,   131,   130,   132,   133,   134
   };
 
   const unsigned char
@@ -1727,7 +1759,7 @@ namespace isc { namespace agent {
        6,     1,     3,     1,     0,     6,     1,     3,     0,     4,
        1,     3,     1,     1,     1,     1,     1,     0,     4,     3,
        0,     4,     0,     6,     1,     3,     0,     4,     1,     3,
-       0,     4
+       1,     1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -1744,8 +1776,9 @@ namespace isc { namespace agent {
   "\"socket-name\"", "\"socket-type\"", "\"unix\"", "\"hooks-libraries\"",
   "\"library\"", "\"parameters\"", "\"Logging\"", "\"loggers\"",
   "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"Dhcp4\"", "\"Dhcp6\"", "\"DhcpDdns\"", "START_JSON",
-  "START_AGENT", "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
+  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"",
+  "\"Dhcp6\"", "\"DhcpDdns\"", "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_content",
   "not_empty_map", "list_generic", "$@6", "list_content", "not_empty_list",
@@ -1764,27 +1797,28 @@ namespace isc { namespace agent {
   "$@24", "loggers_entries", "logger_entry", "$@25", "logger_params",
   "logger_param", "name", "$@26", "debuglevel", "severity", "$@27",
   "output_options_list", "$@28", "output_options_list_content",
-  "output_entry", "$@29", "output_params", "output_param", "$@30", YY_NULLPTR
+  "output_entry", "$@29", "output_params_list", "output_params", "output",
+  "$@30", "flush", "maxsize", "maxver", YY_NULLPTR
   };
 
 #if AGENT_DEBUG
   const unsigned short int
   AgentParser::yyrline_[] =
   {
-       0,   107,   107,   107,   108,   108,   109,   109,   117,   117,
-     128,   134,   135,   136,   137,   138,   139,   140,   144,   144,
-     158,   159,   167,   171,   178,   178,   184,   185,   188,   192,
-     205,   214,   214,   226,   227,   231,   232,   233,   234,   235,
-     236,   240,   240,   257,   258,   263,   264,   265,   266,   267,
-     270,   270,   278,   284,   284,   294,   295,   298,   299,   302,
-     302,   310,   311,   312,   315,   316,   319,   319,   327,   327,
-     337,   337,   350,   351,   356,   357,   358,   359,   363,   363,
-     374,   374,   385,   385,   396,   397,   401,   402,   406,   406,
-     415,   415,   423,   429,   429,   436,   436,   443,   443,   455,
-     455,   468,   469,   473,   477,   477,   489,   490,   494,   494,
-     502,   503,   506,   507,   508,   509,   510,   513,   513,   521,
-     526,   526,   534,   534,   544,   545,   548,   548,   556,   557,
-     560,   560
+       0,   110,   110,   110,   111,   111,   112,   112,   120,   120,
+     131,   137,   138,   139,   140,   141,   142,   143,   147,   147,
+     161,   162,   170,   174,   181,   181,   187,   188,   191,   195,
+     208,   217,   217,   229,   230,   234,   235,   236,   237,   238,
+     239,   243,   243,   260,   261,   266,   267,   268,   269,   270,
+     273,   273,   281,   287,   287,   297,   298,   301,   302,   305,
+     305,   313,   314,   315,   318,   319,   322,   322,   330,   330,
+     340,   340,   353,   354,   359,   360,   361,   362,   366,   366,
+     377,   377,   388,   388,   399,   400,   404,   405,   409,   409,
+     418,   418,   426,   432,   432,   439,   439,   446,   446,   458,
+     458,   471,   472,   476,   480,   480,   492,   493,   497,   497,
+     505,   506,   509,   510,   511,   512,   513,   516,   516,   524,
+     529,   529,   537,   537,   547,   548,   551,   551,   559,   560,
+     563,   564,   565,   566,   569,   569,   577,   582,   587
   };
 
   // Print the state stack on the debug stream.
@@ -1819,8 +1853,8 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy" // lalr1.cc:1167
 } } // isc::agent
-#line 1823 "agent_parser.cc" // lalr1.cc:1167
-#line 568 "agent_parser.yy" // lalr1.cc:1168
+#line 1857 "agent_parser.cc" // lalr1.cc:1167
+#line 592 "agent_parser.yy" // lalr1.cc:1168
 
 
 void
index e9354131ebcccbd2083b03258550a2a728d834e6..73de79bb9730311606c24a9318e33106b069c5ab 100644 (file)
@@ -368,16 +368,19 @@ namespace isc { namespace agent {
         TOKEN_OUTPUT = 282,
         TOKEN_DEBUGLEVEL = 283,
         TOKEN_SEVERITY = 284,
-        TOKEN_DHCP4 = 285,
-        TOKEN_DHCP6 = 286,
-        TOKEN_DHCPDDNS = 287,
-        TOKEN_START_JSON = 288,
-        TOKEN_START_AGENT = 289,
-        TOKEN_START_SUB_AGENT = 290,
-        TOKEN_STRING = 291,
-        TOKEN_INTEGER = 292,
-        TOKEN_FLOAT = 293,
-        TOKEN_BOOLEAN = 294
+        TOKEN_FLUSH = 285,
+        TOKEN_MAXSIZE = 286,
+        TOKEN_MAXVER = 287,
+        TOKEN_DHCP4 = 288,
+        TOKEN_DHCP6 = 289,
+        TOKEN_DHCPDDNS = 290,
+        TOKEN_START_JSON = 291,
+        TOKEN_START_AGENT = 292,
+        TOKEN_START_SUB_AGENT = 293,
+        TOKEN_STRING = 294,
+        TOKEN_INTEGER = 295,
+        TOKEN_FLOAT = 296,
+        TOKEN_BOOLEAN = 297
       };
     };
 
@@ -604,6 +607,18 @@ namespace isc { namespace agent {
     symbol_type
     make_SEVERITY (const location_type& l);
 
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
     static inline
     symbol_type
     make_DHCP4 (const location_type& l);
@@ -711,7 +726,7 @@ namespace isc { namespace agent {
     // Tables.
   // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
   // STATE-NUM.
-  static const signed char yypact_[];
+  static const short int yypact_[];
 
   // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
   // Performed when YYTABLE does not specify something else to do.  Zero
@@ -850,11 +865,11 @@ namespace isc { namespace agent {
     {
       yyeof_ = 0,
       yylast_ = 172,     ///< Last index in yytable_.
-      yynnts_ = 88,  ///< Number of nonterminal symbols.
+      yynnts_ = 92,  ///< Number of nonterminal symbols.
       yyfinal_ = 8, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 40  ///< Number of tokens.
+      yyntokens_ = 43  ///< Number of tokens.
     };
 
 
@@ -900,9 +915,9 @@ namespace isc { namespace agent {
        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
+      35,    36,    37,    38,    39,    40,    41,    42
     };
-    const unsigned int user_token_number_max_ = 294;
+    const unsigned int user_token_number_max_ = 297;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -935,24 +950,24 @@ namespace isc { namespace agent {
   {
       switch (other.type_get ())
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -973,24 +988,24 @@ namespace isc { namespace agent {
     (void) v;
       switch (this->type_get ())
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1070,24 +1085,24 @@ namespace isc { namespace agent {
     // Type destructor.
     switch (yytype)
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1114,24 +1129,24 @@ namespace isc { namespace agent {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 48: // value
-      case 97: // socket_type_value
+      case 51: // value
+      case 100: // socket_type_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 39: // "boolean"
+      case 42: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 38: // "floating point"
+      case 41: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 37: // "integer"
+      case 40: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 36: // "constant string"
+      case 39: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1193,7 +1208,8 @@ namespace isc { namespace agent {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1366,6 +1382,24 @@ namespace isc { namespace agent {
     return symbol_type (token::TOKEN_SEVERITY, l);
   }
 
+  AgentParser::symbol_type
+  AgentParser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
+
+  AgentParser::symbol_type
+  AgentParser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
+
+  AgentParser::symbol_type
+  AgentParser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
+
   AgentParser::symbol_type
   AgentParser::make_DHCP4 (const location_type& l)
   {
@@ -1429,7 +1463,7 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy" // lalr1.cc:377
 } } // isc::agent
-#line 1433 "agent_parser.h" // lalr1.cc:377
+#line 1467 "agent_parser.h" // lalr1.cc:377
 
 
 
index d693d64b41547c8d5974eaa637662569aa8e3b3b..df308046d74f69d69b6261159409843837faade2 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702082310
+// Generated 201704181958
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index a547206d730be123a8da4ce8606502635e58abc3..5889d0fb394f1a92b85dc2be6bc2c8f5881d61f7 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702082310
+// Generated 201704181958
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 2f29806e76f3cb132fbe80a1b48b6a976fd96d80..2acb332af7c1a0ff5b248b906b3571c5869ad779 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702082310
+// Generated 201704181958
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index 09f4ba3603b4516965995666f9d106188f1e1179..294667de848c4e301792928d3d3de23cee766713 100644 (file)
@@ -524,8 +524,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to d2_parser_text[] 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 58
-#define YY_END_OF_BUFFER 59
+#define YY_NUM_RULES 61
+#define YY_END_OF_BUFFER 62
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -533,45 +533,47 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[336] =
+static const flex_int16_t yy_accept[353] =
     {   0,
-       51,   51,    0,    0,    0,    0,    0,    0,    0,    0,
-       59,   57,   10,   11,   57,    1,   51,   48,   51,   51,
-       57,   50,   49,   57,   57,   57,   57,   57,   44,   45,
-       57,   57,   57,   46,   47,    5,    5,    5,   57,   57,
-       57,   10,   11,    0,    0,   40,    0,    0,    0,    0,
+       54,   54,    0,    0,    0,    0,    0,    0,    0,    0,
+       62,   60,   10,   11,   60,    1,   54,   51,   54,   54,
+       60,   53,   52,   60,   60,   60,   60,   60,   47,   48,
+       60,   60,   60,   49,   50,    5,    5,    5,   60,   60,
+       60,   10,   11,    0,    0,   43,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    1,   51,   51,    0,   50,
-       51,    3,    2,    6,    0,   51,    0,    0,    0,    0,
-        0,    0,    4,    0,    0,    9,    0,   41,    0,    0,
-        0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    1,   54,   54,    0,
+       53,   54,    3,    2,    6,    0,   54,    0,    0,    0,
+        0,    0,    0,    4,    0,    0,    9,    0,   44,    0,
+        0,    0,    0,    0,    0,    0,   46,    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,
-       42,    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,   45,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   56,   54,    0,   53,   52,    0,    0,    0,    0,
-        0,   19,   18,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   59,   57,    0,   56,
+       55,    0,    0,    0,    0,    0,   19,   18,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   55,   52,    0,    0,    0,    0,    0,   20,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       58,   55,    0,    0,    0,    0,    0,   20,    0,    0,
 
-        0,    0,   35,    0,    0,    0,   14,    0,    0,    0,
-        0,    0,    0,   38,   39,    0,    0,    0,    0,    0,
         0,    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,    0,    0,   34,
-        0,    0,   30,    0,    0,    0,   31,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   32,    0,    0,    0,
-        0,    0,    0,   12,    0,    0,    0,    0,    0,    0,
-       26,    0,   24,    0,    0,    0,    0,   37,    0,   28,
+        0,    0,    0,   38,    0,    0,    0,   14,    0,    0,
+        0,    0,    0,    0,   41,   42,    0,    0,    0,    0,
+        0,    0,    0,   35,    0,    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,
-
-       27,    0,   36,    0,    0,    0,    0,   13,   17,    0,
-        0,    0,    0,   29,    0,   25,    0,    0,    0,    0,
-       23,    0,   21,   16,    0,   22,    0,    0,    0,   33,
-        0,    0,    0,   15,    0
+        0,    0,   37,    0,    0,   34,    0,    0,   30,    0,
+        0,    0,   31,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   32,   36,    0,    0,    0,    0,    0,    0,
+       12,    0,    0,    0,    0,    0,    0,   26,    0,   24,
+
+        0,    0,    0,    0,   40,    0,   28,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   27,    0,   39,
+        0,    0,    0,    0,   13,   17,    0,    0,    0,    0,
+       29,    0,   25,    0,    0,    0,    0,   23,    0,   21,
+       16,    0,   22,    0,    0,    0,   33,    0,    0,    0,
+       15,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -588,8 +590,8 @@ static const YY_CHAR yy_ec[256] =
        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,    5,
-       62,    5,   63,    5,   64,    5,    5,    5,    5,    5,
+       54,   55,    5,   56,   57,   58,   59,   60,   61,   62,
+       63,   64,   65,    5,   66,    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,
@@ -606,7 +608,7 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[65] =
+static const YY_CHAR yy_meta[67] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
         3,    3,    3,    5,    5,    5,    3,    3,    3,    3,
@@ -614,94 +616,98 @@ static const YY_CHAR yy_meta[65] =
         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
     } ;
 
-static const flex_int16_t yy_base[348] =
+static const flex_int16_t yy_base[365] =
     {   0,
-        0,    0,   63,   66,   69,    0,   67,   71,   52,   68,
-      296, 2262,   87,  289,  133,    0,   96, 2262,  130,  133,
-       84,  150, 2262,  268,  109,   69,   67,   72, 2262, 2262,
-      110,   71,   97, 2262, 2262, 2262,   97,  271,  229,    0,
-      235,  139,  247,  132,  194, 2262,  200,  206,  212,  218,
-      224,  227,  250,  256,  268,  275,  288,  305,  313,  329,
-      335,  345,  351,  359,  374,    0,  375,  390,  312,  398,
-      393, 2262,    0, 2262,  220,  230,  128,  165,  163,  177,
-      214,  164, 2262,  196,  226, 2262,  148, 2262,  380,  426,
-      442,  448,  455,  464,  211,  472,  506,  487,  481,  501,
-
-      534,  551,  557,  563,  572,  584,  590,  596,  604,  613,
-      622,  628,  637,  650,    0,  240,  247,  127,  246,  267,
-      185,  160, 2262,    0,  666,  679,  688,  698,  704,  198,
-     2262,  728,  711,  721,  727,  754,  773,  760,  779,  786,
-      793,  799,  805,  811,  826,  832,  838,  849,  855,  864,
-      295, 2262, 2262,  315, 2262, 2262,  113,    0,  882,  870,
-      910, 2262, 2262,  945,  919,  925,  936,  942,  975,  990,
-      999, 1005, 1012, 1018, 1032, 1038, 1044, 1055, 1065, 1071,
-     1083, 1093, 2262, 2262,  120,    0, 1104, 1110, 1116, 2262,
-     1123, 1163, 1132, 1155, 1162, 1194, 1209, 1217, 1223, 1231,
-
-     1238, 1255, 2262, 1263, 1278, 1284, 2262, 1292, 1300, 1306,
-     1322,  115,    0, 2262, 2262, 1329, 1338, 1344, 1350, 1359,
-     1368, 1387, 1405, 1412, 1419, 1425, 1431, 1444, 1452, 1464,
-     1470, 1481, 1489, 1496, 2262, 1507, 1514, 1521, 1528, 1535,
-     1547, 1553, 1560, 1572, 1580, 1590, 1598, 1604, 1617, 2262,
-     1627, 1636, 2262, 1642, 1649, 1656, 2262, 1664, 1681, 1688,
-     1694, 1704, 1721, 1732, 1743, 1749, 2262, 1759, 1765, 1771,
-     1781, 1788, 1803, 2262, 1809, 1826, 1832, 1841, 1847, 1853,
-     2262, 1864, 2262, 1870, 1885, 1879, 1892, 2262, 1903, 2262,
-     1909, 1917, 1930, 1941, 1947, 1954, 1962, 1968, 1979, 1987,
-
-     2262, 2000, 2262, 2006, 2012, 2027, 2044, 2262, 2262, 2052,
-     2059, 2065, 2071, 2262, 2077, 2262, 2084, 2091, 2103, 2109,
-     2262, 2117, 2262, 2262, 2128, 2262, 2135, 2141, 2147, 2262,
-     2156, 2165, 2174, 2262, 2262, 2223, 2228, 2233, 2238, 2243,
-     2248, 2253, 2256,  146,  132,   91,   88
+        0,    0,   65,   68,   71,    0,   69,   73,   54,   70,
+      314, 2402,   89,  297,  137,    0,   98, 2402,  116,  119,
+       86,  134, 2402,  276,  111,   71,  110,  119, 2402, 2402,
+      126,  117,  123, 2402, 2402, 2402,   99,  279,  235,    0,
+      267,  102,  255,  161,  198, 2402,  204,  210,  216,  222,
+      228,  231,  254,  260,  272,  279,  292,  309,  318,  329,
+      336,  342,  348,  355,  361,  380,    0,  375,  381,  398,
+      414,  417, 2402,    0, 2402,  142,  224,  169,  175,  173,
+      199,  218,  174, 2402,  212,  243, 2402,  177, 2402,  410,
+      442,  451,  469,  488,  495,  242,  501,  537,  508,  533,
+
+      527,  570,  582,  588,  594,  600,  607,  621,  627,  639,
+      650,  659,  666,  676,  688,  703,  716,    0,  244,  251,
+      129,  250,  271,  137,  191, 2402,    0,  725,  732,  740,
+      753,  764,  230, 2402,  788,  770,  781,  790,  814,  833,
+      820,  839,  853,  859,  872,  866,  878,  885,  891,  904,
+      915,  924,  930,  941,  947,  177, 2402, 2402,  281, 2402,
+     2402,  156,    0,  973,  954,  963, 2402, 2402,  998,  993,
+     1025, 1000, 1049, 1055, 1062, 1068, 1074, 1081, 1088, 1094,
+     1113, 1120, 1131, 1141, 1150, 1157, 1164, 1170, 1178, 1187,
+     2402, 2402,  127,    0, 1202, 1210, 1216, 2402, 1224, 1264,
+
+     1234, 1254, 1261, 1293, 1312, 1318, 1325, 1331, 1337, 1351,
+     1357, 1363, 1381, 2402, 1395, 1401, 1408, 2402, 1414, 1422,
+     1428, 1438,  124,    0, 2402, 2402, 1452, 1461, 1467, 1476,
+     1484, 1490, 1508, 2402, 1514, 1530, 1536, 1546, 1552, 1559,
+     1568, 1574, 1584, 1598, 1611, 1617, 1623, 1630, 2402, 1638,
+     1650, 1656, 1662, 1670, 1676, 1682, 1695, 1709, 1719, 1725,
+     1733, 1742, 2402, 1748, 1758, 2402, 1765, 1771, 2402, 1785,
+     1791, 1803, 2402, 1809, 1823, 1829, 1835, 1841, 1849, 1856,
+     1868, 1874, 2402, 2402, 1893, 1900, 1906, 1912, 1920, 1926,
+     2402, 1933, 1939, 1945, 1963, 1971, 1983, 2402, 1991, 2402,
+
+     2000, 2008, 2016, 2028, 2402, 2038, 2402, 2053, 2060, 2066,
+     2075, 2081, 2090, 2098, 2107, 2114, 2123, 2402, 2135, 2402,
+     2144, 2151, 2162, 2168, 2402, 2402, 2176, 2183, 2192, 2201,
+     2402, 2209, 2402, 2215, 2229, 2238, 2252, 2402, 2258, 2402,
+     2402, 2266, 2402, 2275, 2281, 2291, 2402, 2298, 2305, 2314,
+     2402, 2402, 2363, 2368, 2373, 2378, 2383, 2388, 2393, 2396,
+      148,  103,   93,   90
     } ;
 
-static const flex_int16_t yy_def[348] =
+static const flex_int16_t yy_def[365] =
     {   0,
-      335,    1,  336,  336,    1,    5,    5,    5,    5,    5,
-      335,  335,  335,  335,  337,  338,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  339,
-      335,  335,  335,  340,  337,  335,  337,  337,  337,  337,
-      337,  341,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  338,  335,  335,  335,  335,
-      335,  335,  342,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  339,  335,  340,  335,  335,  337,
-      337,  337,  337,  337,  343,  337,  341,  337,  337,  337,
-
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  342,  335,  335,  335,  335,  335,
-      335,  335,  335,  344,  337,  337,  337,  337,  337,  343,
-      335,  341,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      335,  335,  335,  335,  335,  335,  335,  345,  337,  337,
-      337,  335,  335,  341,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  335,  335,  335,  346,  337,  337,  337,  335,
-      337,  341,  337,  337,  337,  337,  337,  337,  337,  337,
-
-      337,  337,  335,  337,  337,  337,  335,  337,  337,  337,
-      337,  335,  347,  335,  335,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  335,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  335,
-      337,  337,  335,  337,  337,  337,  335,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  335,  337,  337,  337,
-      337,  337,  337,  335,  337,  337,  337,  337,  337,  337,
-      335,  337,  335,  337,  337,  337,  337,  335,  337,  335,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-
-      335,  337,  335,  337,  337,  337,  337,  335,  335,  337,
-      337,  337,  337,  335,  337,  335,  337,  337,  337,  337,
-      335,  337,  335,  335,  337,  335,  337,  337,  337,  335,
-      337,  337,  337,  335,    0,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335
+      352,    1,  353,  353,    1,    5,    5,    5,    5,    5,
+      352,  352,  352,  352,  354,  355,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  356,
+      352,  352,  352,  357,  354,  352,  354,  354,  354,  354,
+      354,  358,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  355,  352,  352,  352,
+      352,  352,  352,  359,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  356,  352,  357,  352,  352,
+      354,  354,  354,  354,  354,  360,  354,  358,  354,  354,
+
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  359,  352,  352,
+      352,  352,  352,  352,  352,  352,  361,  354,  354,  354,
+      354,  354,  360,  352,  358,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  352,  352,  352,  352,  352,
+      352,  352,  362,  354,  354,  354,  352,  352,  358,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      352,  352,  352,  363,  354,  354,  354,  352,  354,  358,
+
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  352,  354,  354,  354,  352,  354,  354,
+      354,  354,  352,  364,  352,  352,  354,  354,  354,  354,
+      354,  354,  354,  352,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  352,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  352,  354,  354,  352,  354,  354,  352,  354,
+      354,  354,  352,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  352,  352,  354,  354,  354,  354,  354,  354,
+      352,  354,  354,  354,  354,  354,  354,  352,  354,  352,
+
+      354,  354,  354,  354,  352,  354,  352,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  352,  354,  352,
+      354,  354,  354,  354,  352,  352,  354,  354,  354,  354,
+      352,  354,  352,  354,  354,  354,  354,  352,  354,  352,
+      352,  354,  352,  354,  354,  354,  352,  354,  354,  354,
+      352,    0,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352
     } ;
 
-static const flex_int16_t yy_nxt[2327] =
+static const flex_int16_t yy_nxt[2469] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -709,259 +715,274 @@ static const flex_int16_t yy_nxt[2327] =
        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,   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,   77,
-       42,   72,   87,   12,   12,  213,   73,   12,   42,   12,
-
-       42,   78,   12,   79,   12,   78,   12,   67,   77,   68,
-       68,   68,   12,   12,   12,   12,   39,   75,   12,   75,
-       69,   12,   76,   76,   76,   78,   12,   79,   79,   81,
-       77,   12,   12,   44,   44,   44,  186,   88,   46,   69,
-       42,   67,   42,   70,   70,   70,   71,   71,   71,   80,
-      158,  153,   82,   88,   69,  116,   47,   69,  235,   48,
-       49,   67,  212,   70,   70,   70,   50,   51,   89,   52,
-      153,  185,   53,   69,   69,   54,   69,   55,  116,   56,
-       57,   48,   58,   59,   89,   60,   61,   62,   63,   64,
-       65,   51,  117,   69,   44,   44,   44,  118,  118,   46,
-
-       44,   44,   44,  131,  116,   46,   44,   44,   44,  153,
-      157,   46,   44,   44,   44,  117,  131,   46,   44,   44,
-       44,  118,  121,   46,   44,   44,   44,  119,  156,   46,
-       52,  123,   96,   76,   76,   76,   52,  122,   91,   45,
-       93,  117,   52,   76,   76,   76,   90,   94,   52,   43,
-       44,   44,   44,   86,   52,   46,   44,   44,   44,   93,
-       52,   46,   91,   45,  120,   92,   94,   45,   44,   44,
-       44,   45,  151,   46,  152,   44,   44,   44,  151,   45,
-       46,   84,   45,   83,   45,   97,   52,   74,   44,   44,
-       44,   43,   52,   46,  152,  335,  151,  152,   99,  100,
-
-       98,  335,  154,  101,   52,   44,   44,   44,  102,  335,
-       46,   52,  335,   44,   44,   44,  335,  155,   46,  183,
-       75,  103,   75,  335,   52,   76,   76,   76,  104,   44,
-       44,   44,  335,  335,   46,   44,   44,   44,  183,  183,
-       46,   52,  105,  335,  335,   44,   44,   44,  106,   52,
-       46,   44,   44,   44,  335,  335,   46,  335,  184,   44,
-       44,   44,  335,  335,   46,   52,  107,  335,  108,  335,
-      109,   52,  335,  335,   44,   44,   44,  335,  335,   46,
-      335,   52,  335,  335,  335,   87,  335,   52,   71,   71,
-       71,  335,   87,  110,  112,   52,   93,  335,  111,   69,
-
-      335,   67,  113,   68,   68,   68,   71,   71,   71,   67,
-       52,   70,   70,   70,   69,   93,   87,   69,   69,  335,
-       87,  335,   69,  335,   87,  335,   44,   44,   44,  335,
-      114,   46,   87,   69,  335,   87,   69,   87,  124,  335,
-      335,   69,   44,   44,   44,  335,  335,   46,   44,   44,
-       44,  335,  335,   46,  335,   44,   44,   44,  335,  335,
-       46,  335,   52,  335,   44,   44,   44,  125,  335,   46,
-      335,  126,   44,   44,   44,  335,  335,   46,   52,  335,
-      335,   44,   44,   44,   52,  128,   46,   44,   44,   44,
-      335,   52,   46,  127,  129,  126,  335,  335,  335,  335,
-
-       52,   44,   44,   44,  335,  335,   46,  335,   52,  128,
-      335,  335,  335,  335,  335,  335,  335,   52,  129,  132,
-      132,  132,  335,   52,  335,  335,  132,  132,  132,  132,
-      132,  132,  133,  134,   44,   44,   44,   52,  335,   46,
-      335,  135,  335,  335,  335,  132,  132,  132,  132,  132,
-      132,   44,   44,   44,  335,  335,   46,   44,   44,   44,
-      335,  335,   46,   44,   44,   44,  335,  335,   46,  335,
-       52,  335,   44,   44,   44,  335,  335,   46,  335,  136,
-      335,  335,  140,  335,   44,   44,   44,   52,  335,   46,
-       44,   44,   44,   52,  335,   46,   44,   44,   44,   52,
-
-      335,   46,  335,  335,   44,   44,   44,  137,   52,   46,
-      335,  335,  138,   44,   44,   44,  335,  335,   46,  139,
-       52,  335,   44,   44,   44,  335,   52,   46,   44,   44,
-       44,  335,   52,   46,  335,  142,  335,   44,   44,   44,
-       52,  335,   46,  335,  335,  141,  335,  143,  335,   52,
-       44,   44,   44,  335,  335,   46,  335,  335,   52,  144,
-      335,  335,  335,  335,   52,  335,   44,   44,   44,  335,
-      145,   46,  335,   52,  335,  335,  335,  146,  148,   44,
-       44,   44,  335,  335,   46,  335,   52,  147,   44,   44,
-       44,  335,  335,   46,  335,  335,  149,  150,   44,   44,
-
-       44,  335,   52,  162,   44,   44,   44,  160,  335,  163,
-      335,   44,   44,   44,  335,   52,   46,  335,  335,  335,
-      159,   44,   44,   44,   52,  335,   46,   44,   44,   44,
-      335,  160,   46,  161,   52,  335,  335,  335,  335,  335,
-       52,  164,  164,  164,  335,  335,  335,   52,  164,  164,
-      164,  164,  164,  164,   44,   44,   44,   52,  335,   46,
-       44,   44,   44,   52,  165,   46,  335,  164,  164,  164,
-      164,  164,  164,   44,   44,   44,  335,  166,   46,   44,
-       44,   44,  335,  169,   46,  167,   44,   44,   44,  335,
-       52,   46,  335,   44,   44,   44,   52,  168,   46,   44,
-
-       44,   44,  335,  173,   46,   44,   44,   44,  335,   52,
-       46,   44,   44,   44,  335,   52,   46,  335,  335,  335,
-      170,  176,   52,  335,  335,  172,   44,   44,   44,   52,
-      335,   46,   44,   44,   44,   52,  171,   46,   44,   44,
-       44,   52,  335,   46,  174,  335,  335,   52,  175,   44,
-       44,   44,  335,  335,   46,   44,   44,   44,  335,  335,
-       46,  335,   52,  335,   44,   44,   44,  335,   52,   46,
-       44,   44,   44,  335,   52,  190,  335,  335,  335,  335,
-      177,  179,   44,   44,   44,   52,  335,   46,  335,  178,
-      335,   52,  335,  335,  335,  335,  187,  188,  181,  335,
-
-       52,  335,  335,  335,  180,  189,   52,  335,  335,  182,
-       44,   44,   44,  335,  335,   46,  335,  335,   52,   44,
-       44,   44,  335,  335,   46,   44,   44,   44,  335,  335,
-       46,  335,  335,  335,  335,  194,   44,   44,   44,  335,
-      335,   46,   44,   44,   44,  335,   52,   46,  335,  335,
-      335,  335,  335,  335,  335,   52,  335,  191,  192,  192,
-      192,   52,  335,  335,  335,  192,  192,  192,  192,  192,
-      192,  335,   52,  335,  193,   44,   44,   44,   52,  335,
-       46,  195,  335,  335,  192,  192,  192,  192,  192,  192,
-       44,   44,   44,  335,  335,   46,  335,  335,  196,   44,
-
-       44,   44,  335,  335,   46,   44,   44,   44,  335,  335,
-       46,   52,   44,   44,   44,  335,  335,   46,   44,   44,
-       44,  335,  335,   46,  335,  335,   52,  335,  335,  198,
-      335,  197,   44,   44,   44,   52,  335,  203,   44,   44,
-       44,   52,  335,   46,   44,   44,   44,  200,   52,   46,
-      335,  199,  335,  335,   52,   44,   44,   44,  335,  335,
-      207,  202,  335,  335,  201,   44,   44,   44,   52,  335,
-       46,   44,   44,   44,   52,  335,   46,  335,  335,  335,
-       52,  335,  204,   44,   44,   44,  335,  335,   46,  335,
-      335,   52,  205,   44,   44,   44,  335,  335,   46,  335,
-
-      335,   52,  206,  211,   44,   44,   44,   52,  335,  214,
-       44,   44,   44,  335,  209,  215,   44,   44,   44,   52,
-      208,   46,  335,   44,   44,   44,  335,  335,   46,   52,
-      335,  335,   44,   44,   44,  335,  335,   46,  210,  335,
-       52,  335,  335,  335,  335,  335,   52,  335,  335,  335,
-      335,  335,   52,  335,  335,   44,   44,   44,  216,   52,
-       46,  335,   44,   44,   44,  335,  335,   46,   52,  335,
-      335,  335,  335,  335,  335,  217,   45,   45,   45,  218,
-      335,  335,  335,   45,   45,   45,   45,   45,   45,  335,
-      335,   52,  335,  335,   44,   44,   44,  219,   52,   46,
-
-      335,  335,   45,   45,   45,   45,   45,   45,  335,   44,
-       44,   44,  220,  335,   46,  335,  335,   44,   44,   44,
-      335,  335,   46,   44,   44,   44,  335,  335,   46,  335,
-       52,   44,   44,   44,  335,  335,   46,  335,   44,   44,
-       44,  335,  335,   46,  335,   52,  335,  335,  335,  335,
-      335,  221,  222,   52,  335,   44,   44,   44,  335,   52,
-       46,  335,  224,   44,   44,   44,  335,   52,   46,  335,
-      335,  335,  223,  225,   52,  335,  335,  226,   44,   44,
-       44,  335,  335,   46,   44,   44,   44,  335,  335,   46,
-      335,   52,   44,   44,   44,  335,  335,   46,  335,   52,
-
-       44,   44,   44,  335,  335,   46,   44,   44,   44,  335,
-      227,   46,  335,  335,   52,  335,  228,  335,  335,  335,
-       52,  335,   44,   44,   44,  335,  335,   46,   52,   44,
-       44,   44,  335,  229,   46,  335,   52,  335,   44,   44,
-       44,  230,   52,   46,   44,   44,   44,  335,  231,   46,
-       44,   44,   44,  233,  335,   46,  335,  232,   52,   44,
-       44,   44,  335,  335,   46,   52,  335,  335,   44,   44,
-       44,  234,  335,   46,   52,  335,  335,  335,  241,  335,
-       52,  236,  335,  237,  335,  335,   52,   44,   44,   44,
-      335,  335,   46,  335,  335,   52,  335,  335,  335,  335,
-
-      335,  238,  240,  239,   52,   44,   44,   44,  335,  335,
-       46,  335,   44,   44,   44,  335,  335,   46,  335,   44,
-       44,   44,  335,   52,   46,   44,   44,   44,  335,  335,
-       46,   44,   44,   44,  335,  335,   46,  335,  335,  335,
-      335,   52,  242,  335,   44,   44,   44,  243,   52,   46,
-      335,  335,   44,   44,   44,   52,  335,   46,  335,  335,
-      335,   52,  335,  244,   44,   44,   44,   52,  335,  250,
-       44,   44,   44,  335,  245,   46,  246,  335,  335,  335,
-       52,   44,   44,   44,  335,  335,  253,  247,   52,   44,
-       44,   44,  335,  335,   46,  335,   44,   44,   44,  248,
-
-       52,   46,  251,  335,  335,  249,   52,   44,   44,   44,
-      335,  335,   46,  252,   44,   44,   44,   52,  335,  257,
-      335,   44,   44,   44,  335,   52,   46,  335,   44,   44,
-       44,  335,   52,   46,  335,   44,   44,   44,  335,  255,
-       46,  335,  335,   52,  335,  335,  254,   44,   44,   44,
-       52,  335,   46,   44,   44,   44,  335,   52,   46,  335,
-       44,   44,   44,  256,   52,   46,  335,  258,  335,  335,
-      263,   52,   44,   44,   44,  335,  335,   46,  335,  259,
-       44,   44,   44,   52,  335,   46,  335,  261,  335,   52,
-       44,   44,   44,  335,  260,   46,   52,  335,   44,   44,
-
-       44,  335,  335,  267,   44,   44,   44,  335,   52,   46,
-      335,  335,  262,  335,  335,  264,   52,   44,   44,   44,
-      335,  335,   46,  265,  335,  335,   52,   44,   44,   44,
-      335,  335,   46,  266,   52,  335,   44,   44,   44,  335,
-       52,   46,   44,   44,   44,  335,  271,   46,  335,   44,
-       44,   44,  335,   52,   46,  268,   44,   44,   44,  335,
-      335,  274,  335,   52,   44,   44,   44,  335,  335,   46,
-      335,  335,   52,  335,  269,  335,  335,  335,   52,  335,
-      270,   44,   44,   44,  335,   52,   46,  335,   44,   44,
-       44,  335,   52,   46,   44,   44,   44,  335,  335,   46,
-
-       52,  335,  335,  272,   44,   44,   44,  335,  335,   46,
-      273,  335,  335,  335,  335,  275,  335,   52,  335,  335,
-      276,   44,   44,   44,   52,  335,   46,  335,  335,  335,
-       52,  277,   44,   44,   44,  335,  335,  281,  335,  335,
-       52,  278,  335,   44,   44,   44,  335,  279,   46,   44,
-       44,   44,  335,  335,  283,  335,  335,   52,  335,   44,
-       44,   44,  335,  280,   46,   44,   44,   44,   52,  335,
-       46,   44,   44,   44,  335,  335,   46,  335,  335,   52,
-      335,   44,   44,   44,  335,   52,   46,  335,   44,   44,
-       44,  335,  335,  288,  335,   52,  335,  335,  284,  282,
-
-      335,   52,  335,   44,   44,   44,  335,   52,   46,   44,
-       44,   44,  335,  335,  290,  335,  335,   52,  285,  335,
-      335,  335,  335,  287,   52,  286,   44,   44,   44,  335,
-      335,   46,   44,   44,   44,  335,  335,   46,  335,   52,
-      335,   44,   44,   44,  335,   52,   46,   44,   44,   44,
-      335,  335,   46,   44,   44,   44,  335,  335,   46,  289,
-      335,  335,   52,  335,   44,   44,   44,  335,   52,   46,
-       44,   44,   44,  291,  335,   46,  335,   52,  335,   44,
-       44,   44,  292,   52,   46,   44,   44,   44,  335,   52,
-       46,  335,   44,   44,   44,  295,  335,   46,  293,  335,
-
-       52,  335,  294,   44,   44,   44,   52,  335,  301,   44,
-       44,   44,  335,  335,   46,   52,  335,   44,   44,   44,
-      296,   52,  303,  335,  335,  335,  298,  297,   52,  335,
-       44,   44,   44,  335,  300,   46,  299,  335,  335,   52,
-      335,   44,   44,   44,  335,   52,   46,   44,   44,   44,
-      335,  305,   46,   52,   44,   44,   44,  335,  335,  308,
-      335,  302,   44,   44,   44,  335,   52,  309,   44,   44,
-       44,  335,  335,   46,  335,  335,  335,   52,  335,   44,
-       44,   44,  335,   52,   46,  335,  304,   44,   44,   44,
-       52,  335,   46,  335,  335,  335,  335,  306,   52,  307,
-
-       44,   44,   44,  335,   52,   46,   44,   44,   44,  335,
-      335,  314,   44,   44,   44,   52,  335,   46,  335,  335,
-      335,  310,  335,   52,  335,  335,  311,   44,   44,   44,
-      335,  335,  316,  335,  335,  335,   52,  335,  335,  312,
-      335,  335,   52,  335,   44,   44,   44,  335,   52,   46,
-      335,  335,   44,   44,   44,  335,  313,   46,  335,   44,
-       44,   44,  335,   52,   46,   44,   44,   44,  335,  315,
-       46,   44,   44,   44,  335,  335,  321,   44,   44,   44,
-       52,  335,   46,  335,   44,   44,   44,  335,   52,  323,
-      335,   44,   44,   44,  335,   52,  324,  335,  335,  335,
-
-      317,   52,  318,   44,   44,   44,  335,   52,   46,   44,
-       44,   44,  319,   52,  326,  335,  335,   44,   44,   44,
-       52,  320,   46,  335,  322,  335,  335,   52,   44,   44,
-       44,  335,  335,   46,  335,   44,   44,   44,  335,   52,
-       46,   44,   44,   44,  335,   52,  330,   44,   44,   44,
-      335,  335,   46,   52,  335,  325,   44,   44,   44,  335,
-      335,   46,  335,  335,   52,   44,   44,   44,  327,  335,
-       46,   52,  335,  335,   44,   44,   44,   52,  329,  334,
-      335,  335,  335,   52,  328,  335,  335,  335,  335,  335,
-      335,  335,   52,  335,  335,  335,  335,  335,  335,  335,
-
-      331,   52,  335,  335,  335,  335,  335,  335,  335,  335,
-       52,  335,  335,  335,  332,  335,  335,  335,  335,  335,
-      335,  335,  333,   36,   36,   36,   36,   36,   45,   45,
-       45,   45,   45,   66,  335,   66,   66,   66,   85,  335,
-       85,  335,   85,   87,   87,   87,   87,   87,   95,   95,
-       95,   95,   95,  115,  335,  115,  115,  115,  130,  130,
-      130,   11,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335
+       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,   78,   42,   73,   88,   12,   12,  224,   74,   12,
+
+       42,   12,   42,   42,   12,   42,   12,  194,   12,   68,
+       78,   69,   69,   69,   12,   12,   12,   12,   39,   76,
+       12,   76,   70,   12,   77,   77,   77,   68,   12,   71,
+       71,   71,   72,   72,   72,   12,   12,   44,   44,   44,
+       70,   70,   46,   70,   79,   68,   78,   71,   71,   71,
+       80,   79,  163,  158,   80,   77,   77,   77,   70,   70,
+       47,  158,   70,   48,   49,   81,   89,  249,   79,  223,
+       50,   51,  158,   52,   80,   82,   53,   70,   83,   54,
+      161,   55,   89,   56,   57,   48,   58,   59,   60,   61,
+       62,   63,   64,   65,   66,   51,  119,   90,   44,   44,
+
+       44,  191,  120,   46,   44,   44,   44,  121,  121,   46,
+       44,   44,   44,   90,  193,   46,   44,   44,   44,  119,
+      191,   46,   44,   44,   44,  120,  119,   46,   44,   44,
+       44,  121,  124,   46,   52,  134,   97,   77,   77,   77,
+       52,  162,   92,   45,   94,  120,   52,  134,  126,  122,
+       91,   95,   52,  125,   44,   44,   44,   43,   52,   46,
+       44,   44,   44,   94,   52,   46,   92,   45,  123,   93,
+       95,   45,   44,   44,   44,   45,  156,   46,  157,   44,
+       44,   44,  156,   45,   46,   87,   45,   85,   45,   98,
+       52,   84,   44,   44,   44,   75,   52,   46,  157,   43,
+
+      156,  157,  100,  101,   99,  191,  159,  102,   52,   44,
+       44,   44,  103,  352,   46,   52,  352,  352,   44,   44,
+       44,  160,  104,   46,  192,  105,  352,  352,   52,   44,
+       44,   44,  106,  352,   46,  352,   44,   44,   44,  352,
+      352,   46,   44,   44,   44,   52,  107,   46,   44,   44,
+       44,  352,  108,   46,   52,   44,   44,   44,  352,  352,
+       46,   44,   44,   44,  352,   52,   46,  352,  110,  352,
+      352,  109,   52,  352,  352,  111,  352,  112,   52,  352,
+       44,   44,   44,  352,   52,   46,  352,  352,   72,   72,
+       72,   52,   68,  352,   69,   69,   69,   52,  115,   70,
+
+      113,  114,   94,  352,  116,   70,   76,  352,   76,  352,
+      352,   77,   77,   77,  352,   88,   52,  352,   70,  352,
+      352,   94,   88,  352,   70,   68,  352,   71,   71,   71,
+       72,   72,   72,  352,  352,  352,  117,  352,   70,  352,
+      352,   70,   44,   44,   44,  352,   88,   46,  352,  352,
+       88,   44,   44,   44,   88,  352,   46,   70,  352,  352,
+       70,  352,   88,  352,  352,   88,  352,   88,  127,   44,
+       44,   44,  352,  352,   46,  352,  352,  352,   52,  352,
+      129,  352,  352,  128,  352,  352,  352,   52,   44,   44,
+       44,  352,  352,   46,  352,   44,   44,   44,  352,  352,
+
+       46,   44,   44,   44,  129,   52,   46,  352,   44,   44,
+       44,  352,  352,   46,  130,  352,  352,  352,  131,  352,
+      352,  352,  352,  352,   52,  132,  352,   44,   44,   44,
+      352,   52,   46,   44,   44,   44,  352,   52,   46,  352,
+      352,  352,  131,  352,   52,  352,  352,  352,  352,  132,
+      135,  135,  135,  136,  352,  352,  352,  135,  135,  135,
+      135,  135,  135,   52,  352,  352,  352,  138,  352,   52,
+       44,   44,   44,  352,  352,   46,  135,  135,  135,  135,
+      135,  135,   44,   44,   44,  137,  352,   46,   44,   44,
+       44,  352,  352,   46,   44,   44,   44,  352,  352,   46,
+
+       44,   44,   44,  352,  352,   46,   52,   44,   44,   44,
+      352,  352,   46,  352,  352,  139,  352,  144,   52,  352,
+      352,   44,   44,   44,   52,  352,   46,   44,   44,   44,
+       52,  352,   46,  352,  352,  352,   52,  352,  140,   44,
+       44,   44,  352,   52,   46,  352,  141,  352,  352,  142,
+       44,   44,   44,  352,  352,   46,  143,   52,  352,   44,
+       44,   44,  352,   52,   46,  352,   44,   44,   44,  352,
+      352,   46,  146,  352,  352,   52,   44,   44,   44,  352,
+      352,   46,  352,  145,  352,  352,   52,  352,   44,   44,
+       44,  352,  352,   46,  352,   52,  352,  352,  352,  352,
+
+      147,  148,   52,   44,   44,   44,  352,  352,   46,  352,
+      352,  352,   52,  352,  149,  352,   44,   44,   44,  352,
+      352,   46,  352,  150,   52,   44,   44,   44,  352,  352,
+       46,  151,   44,   44,   44,  352,  352,   46,  352,   52,
+       44,   44,   44,  352,  153,   46,  352,  152,  352,  352,
+      352,  352,   52,   44,   44,   44,  352,  352,  167,  352,
+      165,   52,  154,  155,   44,   44,   44,  352,   52,  168,
+       44,   44,   44,  352,  352,   46,   52,  352,  352,  164,
+      352,   44,   44,   44,  165,  166,   46,  352,  352,   52,
+       44,   44,   44,  352,  352,   46,  352,  352,  352,  352,
+
+       52,  169,  169,  169,  352,  352,   52,  352,  169,  169,
+      169,  169,  169,  169,   44,   44,   44,   52,  352,   46,
+       44,   44,   44,  170,  352,   46,   52,  169,  169,  169,
+      169,  169,  169,   44,   44,   44,  352,  171,   46,   44,
+       44,   44,  352,  174,   46,  352,  352,  352,  172,  352,
+       52,  352,  352,   44,   44,   44,   52,  173,   46,   44,
+       44,   44,  352,  352,   46,  352,   44,   44,   44,   52,
+      352,   46,   44,   44,   44,   52,  175,   46,   44,   44,
+       44,  352,  179,   46,  352,   44,   44,   44,  352,   52,
+       46,   44,   44,   44,  352,   52,   46,  352,  178,  176,
+
+      352,  184,   52,  352,   44,   44,   44,  352,   52,   46,
+      177,  180,  352,  352,   52,   44,   44,   44,  352,  352,
+       46,   52,  352,  352,   44,   44,   44,   52,  183,   46,
+       44,   44,   44,  352,  181,   46,  352,  182,  352,  352,
+       52,   44,   44,   44,  352,  352,   46,   44,   44,   44,
+      352,   52,   46,  352,   44,   44,   44,  352,  185,  198,
+       52,  352,  352,   44,   44,   44,   52,  187,   46,  352,
+      352,  352,  186,   44,   44,   44,  352,   52,   46,  352,
+      352,  352,  352,   52,  189,  188,  352,  195,  196,  352,
+       52,  352,  190,   44,   44,   44,  197,  352,   46,   52,
+
+       44,   44,   44,  352,  352,   46,  352,  352,  352,   52,
+      199,  200,  200,  200,  352,  352,  352,  352,  200,  200,
+      200,  200,  200,  200,  352,   44,   44,   44,  352,   52,
+       46,  352,  352,  352,  352,  202,   52,  200,  200,  200,
+      200,  200,  200,  352,  352,  203,  352,  352,  201,   44,
+       44,   44,  352,  352,   46,   44,   44,   44,  352,  352,
+       46,   52,   44,   44,   44,  352,  352,   46,   44,   44,
+       44,  352,  352,   46,   44,   44,   44,  352,  352,   46,
+      352,   44,   44,   44,  352,   52,   46,  352,   44,   44,
+       44,   52,  352,   46,   44,   44,   44,  352,   52,   46,
+
+      352,  352,  352,  352,   52,  204,  352,  207,  206,  352,
+       52,  205,  352,   44,   44,   44,  352,   52,   46,  352,
+       44,   44,   44,  209,   52,   46,  208,  352,  352,  352,
+       52,   44,   44,   44,  352,  352,  214,  211,  352,  352,
+      210,   44,   44,   44,  352,  352,   46,  352,  352,   52,
+       44,   44,   44,  352,  352,   46,   52,   44,   44,   44,
+      212,  352,  218,  213,   44,   44,   44,   52,  352,   46,
+       44,   44,   44,  352,  352,   46,  352,   52,   44,   44,
+       44,  352,  352,   46,  352,  215,   52,   44,   44,   44,
+      352,  352,   46,   52,  352,  216,  352,  222,  352,  352,
+
+       52,  352,   44,   44,   44,  352,   52,  225,  217,  352,
+       44,   44,   44,  220,   52,  226,   44,   44,   44,  219,
+      352,   46,  352,   52,   44,   44,   44,  352,  352,   46,
+      352,  352,  352,  221,   44,   44,   44,  352,   52,   46,
+      352,  352,  352,  352,  352,  352,   52,  352,  352,  352,
+      352,  352,   52,  352,   44,   44,   44,  352,  227,   46,
+       52,   44,   44,   44,  352,  352,   46,  352,  352,  352,
+       52,  352,  352,  352,  352,  352,  228,   45,   45,   45,
+      352,  229,  352,  352,   45,   45,   45,   45,   45,   45,
+       52,  352,  352,   44,   44,   44,  230,   52,   46,  352,
+
+      352,  352,  352,   45,   45,   45,   45,   45,   45,  352,
+      352,  231,   44,   44,   44,  352,  352,   46,   44,   44,
+       44,  352,  352,  234,  352,   44,   44,   44,  352,   52,
+       46,   44,   44,   44,  352,  352,   46,   44,   44,   44,
+      352,  352,   46,  352,  352,  352,  352,  352,   52,  352,
+      232,   44,   44,   44,   52,  233,   46,   44,   44,   44,
+      352,   52,   46,   44,   44,   44,  352,   52,   46,  352,
+      236,  352,  352,   52,  352,  352,  352,  352,  352,  237,
+      235,   44,   44,   44,  352,  352,   46,   52,  352,  352,
+      238,  352,  352,   52,  352,   44,   44,   44,  352,   52,
+
+       46,   44,   44,   44,  352,  352,   46,  352,   44,   44,
+       44,  352,  239,   46,   44,   44,   44,   52,  352,   46,
+      352,  352,   44,   44,   44,  352,  240,   46,   44,   44,
+       44,   52,  352,   46,  352,  352,  241,   52,   44,   44,
+       44,  352,  352,   46,   52,  352,  352,  352,  242,  352,
+       52,  352,   44,   44,   44,  352,  243,   46,   52,  352,
+      352,   44,   44,   44,   52,  244,   46,   44,   44,   44,
+      245,  352,   46,  352,   52,  247,   44,   44,   44,  246,
+      352,   46,  352,  352,   44,   44,   44,  248,   52,   46,
+       44,   44,   44,  352,  352,   46,  352,   52,  352,  352,
+
+      255,  352,  352,   52,  250,  352,  251,  352,   44,   44,
+       44,  352,   52,   46,   44,   44,   44,  352,  352,   46,
+       52,  352,  352,  352,  252,  352,   52,  254,  352,  253,
+       44,   44,   44,  352,  352,   46,   44,   44,   44,  352,
+      352,   46,  352,  352,   52,  352,   44,   44,   44,  352,
+       52,   46,   44,   44,   44,  352,  257,   46,  352,   44,
+       44,   44,  352,  256,   46,  352,   52,  352,   44,   44,
+       44,  352,   52,  263,   44,   44,   44,  352,  352,   46,
+      352,  258,   52,  352,   44,   44,   44,  352,   52,   46,
+      352,  259,  352,  352,  352,   52,  352,  260,   44,   44,
+
+       44,  352,  262,  266,   52,  352,  352,  352,  261,  352,
+       52,   44,   44,   44,  352,  352,   46,   44,   44,   44,
+       52,  352,  269,   44,   44,   44,  352,  352,   46,  264,
+       44,   44,   44,  352,   52,   46,  267,  265,   44,   44,
+       44,  352,  352,   46,  352,  352,  352,   52,  352,  352,
+       44,   44,   44,   52,  268,  273,   44,   44,   44,   52,
+      352,   46,   44,   44,   44,  352,   52,   46,  352,  352,
+       44,   44,   44,  271,   52,   46,   44,   44,   44,  352,
+      270,   46,   44,   44,   44,  352,   52,   46,  352,  352,
+      352,  352,   52,  352,  272,   44,   44,   44,   52,  352,
+
+       46,  352,  274,  352,  352,  279,   52,  352,  352,   44,
+       44,   44,   52,  275,   46,  352,  277,  352,   52,   44,
+       44,   44,  352,  352,   46,   44,   44,   44,  352,  276,
+       46,   52,  352,   44,   44,   44,  352,  352,  283,  352,
+      352,  278,   44,   44,   44,   52,  352,  284,   44,   44,
+       44,  352,  280,   46,  352,   52,  352,  352,   44,   44,
+       44,   52,  281,   46,  352,   44,   44,   44,  282,   52,
+       46,   44,   44,   44,  352,  352,   46,  352,   52,  352,
+      352,  288,  352,  352,   52,   44,   44,   44,  352,  352,
+       46,   44,   44,   44,   52,  352,   46,  352,  352,  285,
+
+      352,   52,  352,   44,   44,   44,  352,   52,  291,   44,
+       44,   44,  352,  352,   46,  286,  352,  352,  287,  352,
+      352,   52,  352,   44,   44,   44,  352,   52,   46,   44,
+       44,   44,  352,  352,   46,   44,   44,   44,  352,   52,
+       46,   44,   44,   44,  352,   52,   46,  289,  352,   44,
+       44,   44,  352,  290,   46,  352,   44,   44,   44,   52,
+      292,  298,  293,  352,  352,   52,  352,  352,   44,   44,
+       44,   52,  294,   46,   44,   44,   44,   52,  352,  300,
+      352,  352,  295,  352,  296,   52,  352,  352,  352,  352,
+      352,  297,   52,   44,   44,   44,  352,  352,   46,  352,
+
+       44,   44,   44,  352,   52,   46,   44,   44,   44,  352,
+       52,   46,   44,   44,   44,  352,  352,   46,  352,  352,
+       44,   44,   44,  352,  299,  305,   44,   44,   44,   52,
+      352,   46,  301,   44,   44,   44,   52,  352,  307,   44,
+       44,   44,   52,  352,   46,   44,   44,   44,   52,  352,
+       46,  352,  352,  302,  304,  352,   52,  352,  352,  352,
+      303,  352,   52,   44,   44,   44,  352,  352,   46,   52,
+      352,   44,   44,   44,  352,   52,   46,  352,  352,  352,
+      352,   52,  306,   44,   44,   44,  308,  352,   46,  352,
+      352,   44,   44,   44,  352,  309,   46,  352,  352,   52,
+
+       44,   44,   44,  352,  352,   46,  352,   52,   44,   44,
+       44,  352,  352,   46,  352,  352,   44,   44,   44,   52,
+      310,   46,  352,  352,  352,  312,  311,   52,   44,   44,
+       44,  352,  352,   46,  352,  352,   52,  352,   44,   44,
+       44,  352,  352,  318,   52,  352,  352,  313,  352,  315,
+      352,  352,   52,   44,   44,   44,  352,  314,   46,  352,
+       44,   44,   44,  352,   52,  320,   44,   44,   44,  352,
+      317,   46,  352,  316,   52,   44,   44,   44,  352,  352,
+       46,   44,   44,   44,  352,  322,   46,  352,  352,   52,
+       44,   44,   44,  352,  352,  325,   52,  352,   44,   44,
+
+       44,  352,   52,  326,  352,  319,  352,   44,   44,   44,
+      352,   52,   46,  352,   44,   44,   44,   52,  352,   46,
+      352,  352,  321,   44,   44,   44,   52,  352,   46,  352,
+      352,  323,  352,  324,   52,   44,   44,   44,  352,  352,
+       46,  352,  352,   52,   44,   44,   44,  352,  352,  331,
+       52,   44,   44,   44,  352,  352,   46,  352,  352,   52,
+      327,  328,   44,   44,   44,  352,  352,  333,   44,   44,
+       44,   52,  352,   46,  352,  329,   44,   44,   44,  352,
+       52,   46,  352,   44,   44,   44,  352,   52,   46,  352,
+      352,  330,   44,   44,   44,  352,  352,   46,   52,  352,
+
+      352,   44,   44,   44,   52,  352,  338,  352,  332,   44,
+       44,   44,   52,  352,   46,   44,   44,   44,  352,   52,
+      340,  352,  352,  352,  334,  352,  335,  352,   52,   44,
+       44,   44,  352,  352,  341,  352,  336,   52,   44,   44,
+       44,  352,  352,   46,  352,   52,  352,  352,  337,  352,
+      352,   52,   44,   44,   44,  352,  339,  343,   44,   44,
+       44,  352,  352,   46,  352,   52,   44,   44,   44,  352,
+      352,   46,  352,  352,   52,   44,   44,   44,  352,  352,
+       46,   44,   44,   44,  352,  352,  347,  352,   52,  352,
+      342,   44,   44,   44,   52,  352,   46,  352,   44,   44,
+
+       44,  352,   52,   46,  352,   44,   44,   44,  352,  344,
+       46,   52,  352,  352,   44,   44,   44,   52,  346,  351,
+      352,  352,  345,  352,  352,  352,  352,   52,  352,  352,
+      352,  352,  352,  352,   52,  352,  352,  352,  352,  352,
+      352,   52,  352,  352,  348,  352,  352,  352,  352,  352,
+       52,  352,  352,  352,  352,  352,  349,  352,  352,  352,
+      352,  352,  350,   36,   36,   36,   36,   36,   45,   45,
+       45,   45,   45,   67,  352,   67,   67,   67,   86,  352,
+       86,  352,   86,   88,   88,   88,   88,   88,   96,   96,
+       96,   96,   96,  118,  352,  118,  118,  118,  133,  133,
+
+      133,   11,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352
     } ;
 
-static const flex_int16_t yy_chk[2327] =
+static const flex_int16_t yy_chk[2469] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -969,256 +990,271 @@ static const flex_int16_t yy_chk[2327] =
         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,   26,
-       13,   21,  347,    5,    5,  346,   21,    5,   37,    9,
-
-       37,   27,    5,   28,    5,   32,    5,   17,   26,   17,
-       17,   17,    5,    5,    7,   10,    5,   25,    8,   25,
-       17,    5,   25,   25,   25,   27,    5,   28,   33,   32,
-       31,    5,    5,   15,   15,   15,  345,   44,   15,   17,
-       42,   19,   42,   19,   19,   19,   20,   20,   20,   31,
-      344,  118,   33,   87,   19,   77,   15,   20,  212,   15,
-       15,   22,  185,   22,   22,   22,   15,   15,   44,   15,
-      118,  157,   15,   19,   22,   15,   20,   15,   77,   15,
-       15,   15,   15,   15,   87,   15,   15,   15,   15,   15,
-       15,   15,   78,   22,   45,   45,   45,   79,   82,   45,
-
-       47,   47,   47,  130,   80,   47,   48,   48,   48,  121,
-      122,   48,   49,   49,   49,   78,   95,   49,   50,   50,
-       50,   79,   82,   50,   51,   51,   51,   80,  121,   51,
-       45,   85,   52,   75,   75,   75,   47,   84,   48,   52,
-       50,   81,   48,   76,   76,   76,   47,   51,   49,   43,
-       53,   53,   53,   41,   50,   53,   54,   54,   54,   50,
-       51,   54,   48,   52,   81,   49,   51,   52,   55,   55,
-       55,   52,  116,   55,  117,   56,   56,   56,  119,   52,
-       56,   39,   52,   38,   52,   52,   53,   24,   57,   57,
-       57,   14,   54,   57,  120,   11,  116,  117,   54,   54,
-
-       53,    0,  119,   54,   55,   58,   58,   58,   54,    0,
-       58,   56,    0,   59,   59,   59,    0,  120,   59,  151,
-       69,   55,   69,    0,   57,   69,   69,   69,   56,   60,
-       60,   60,    0,    0,   60,   61,   61,   61,  151,  154,
-       61,   58,   57,    0,    0,   62,   62,   62,   58,   59,
-       62,   63,   63,   63,    0,    0,   63,    0,  154,   64,
-       64,   64,    0,    0,   64,   60,   59,    0,   60,    0,
-       60,   61,    0,    0,   65,   65,   65,    0,    0,   65,
-        0,   62,    0,    0,    0,   89,    0,   63,   67,   67,
-       67,    0,   89,   61,   63,   64,   65,    0,   62,   67,
-
-        0,   68,   64,   68,   68,   68,   71,   71,   71,   70,
-       65,   70,   70,   70,   68,   65,   89,   71,   67,    0,
-       89,    0,   70,    0,   89,    0,   90,   90,   90,    0,
-       65,   90,   89,   68,    0,   89,   71,   89,   89,    0,
-        0,   70,   91,   91,   91,    0,    0,   91,   92,   92,
-       92,    0,    0,   92,    0,   93,   93,   93,    0,    0,
-       93,    0,   90,    0,   94,   94,   94,   90,    0,   94,
-        0,   91,   96,   96,   96,    0,    0,   96,   91,    0,
-        0,   99,   99,   99,   92,   93,   99,   98,   98,   98,
-        0,   93,   98,   92,   94,   91,    0,    0,    0,    0,
-
-       94,  100,  100,  100,    0,    0,  100,    0,   96,   93,
-        0,    0,    0,    0,    0,    0,    0,   99,   94,   97,
-       97,   97,    0,   98,    0,    0,   97,   97,   97,   97,
-       97,   97,   98,   99,  101,  101,  101,  100,    0,  101,
-        0,  100,    0,    0,    0,   97,   97,   97,   97,   97,
-       97,  102,  102,  102,    0,    0,  102,  103,  103,  103,
-        0,    0,  103,  104,  104,  104,    0,    0,  104,    0,
-      101,    0,  105,  105,  105,    0,    0,  105,    0,  101,
-        0,    0,  105,    0,  106,  106,  106,  102,    0,  106,
-      107,  107,  107,  103,    0,  107,  108,  108,  108,  104,
-
-        0,  108,    0,    0,  109,  109,  109,  102,  105,  109,
-        0,    0,  103,  110,  110,  110,    0,    0,  110,  104,
-      106,    0,  111,  111,  111,    0,  107,  111,  112,  112,
-      112,    0,  108,  112,    0,  107,    0,  113,  113,  113,
-      109,    0,  113,    0,    0,  106,    0,  108,    0,  110,
-      114,  114,  114,    0,    0,  114,    0,    0,  111,  109,
-        0,    0,    0,    0,  112,    0,  125,  125,  125,    0,
-      110,  125,    0,  113,    0,    0,    0,  111,  113,  126,
-      126,  126,    0,    0,  126,    0,  114,  112,  127,  127,
-      127,    0,    0,  127,    0,    0,  113,  114,  128,  128,
-
-      128,    0,  125,  128,  129,  129,  129,  126,    0,  129,
-        0,  133,  133,  133,    0,  126,  133,    0,    0,    0,
-      125,  134,  134,  134,  127,    0,  134,  135,  135,  135,
-        0,  126,  135,  127,  128,    0,    0,    0,    0,    0,
-      129,  132,  132,  132,    0,    0,    0,  133,  132,  132,
-      132,  132,  132,  132,  136,  136,  136,  134,    0,  136,
-      138,  138,  138,  135,  133,  138,    0,  132,  132,  132,
-      132,  132,  132,  137,  137,  137,    0,  134,  137,  139,
-      139,  139,    0,  137,  139,  135,  140,  140,  140,    0,
-      136,  140,    0,  141,  141,  141,  138,  136,  141,  142,
-
-      142,  142,    0,  141,  142,  143,  143,  143,    0,  137,
-      143,  144,  144,  144,    0,  139,  144,    0,    0,    0,
-      138,  144,  140,    0,    0,  140,  145,  145,  145,  141,
-        0,  145,  146,  146,  146,  142,  139,  146,  147,  147,
-      147,  143,    0,  147,  142,    0,    0,  144,  143,  148,
-      148,  148,    0,    0,  148,  149,  149,  149,    0,    0,
-      149,    0,  145,    0,  150,  150,  150,    0,  146,  150,
-      160,  160,  160,    0,  147,  160,    0,    0,    0,    0,
-      145,  147,  159,  159,  159,  148,    0,  159,    0,  146,
-        0,  149,    0,    0,    0,    0,  159,  159,  149,    0,
-
-      150,    0,    0,    0,  148,  159,  160,    0,    0,  150,
-      161,  161,  161,    0,    0,  161,    0,    0,  159,  165,
-      165,  165,    0,    0,  165,  166,  166,  166,    0,    0,
-      166,    0,    0,    0,    0,  166,  167,  167,  167,    0,
-        0,  167,  168,  168,  168,    0,  161,  168,    0,    0,
-        0,    0,    0,    0,    0,  165,    0,  161,  164,  164,
-      164,  166,    0,    0,    0,  164,  164,  164,  164,  164,
-      164,    0,  167,    0,  165,  169,  169,  169,  168,    0,
-      169,  167,    0,    0,  164,  164,  164,  164,  164,  164,
-      170,  170,  170,    0,    0,  170,    0,    0,  168,  171,
-
-      171,  171,    0,    0,  171,  172,  172,  172,    0,    0,
-      172,  169,  173,  173,  173,    0,    0,  173,  174,  174,
-      174,    0,    0,  174,    0,    0,  170,    0,    0,  170,
-        0,  169,  175,  175,  175,  171,    0,  175,  176,  176,
-      176,  172,    0,  176,  177,  177,  177,  172,  173,  177,
-        0,  171,    0,    0,  174,  178,  178,  178,    0,    0,
-      178,  174,    0,    0,  173,  179,  179,  179,  175,    0,
-      179,  180,  180,  180,  176,    0,  180,    0,    0,    0,
-      177,    0,  176,  181,  181,  181,    0,    0,  181,    0,
-        0,  178,  176,  182,  182,  182,    0,    0,  182,    0,
-
-        0,  179,  177,  182,  187,  187,  187,  180,    0,  187,
-      188,  188,  188,    0,  180,  188,  189,  189,  189,  181,
-      179,  189,    0,  191,  191,  191,    0,    0,  191,  182,
-        0,    0,  193,  193,  193,    0,    0,  193,  181,    0,
-      187,    0,    0,    0,    0,    0,  188,    0,    0,    0,
-        0,    0,  189,    0,    0,  194,  194,  194,  189,  191,
-      194,    0,  195,  195,  195,    0,    0,  195,  193,    0,
-        0,    0,    0,    0,    0,  191,  192,  192,  192,  193,
-        0,    0,    0,  192,  192,  192,  192,  192,  192,    0,
-        0,  194,    0,    0,  196,  196,  196,  194,  195,  196,
-
-        0,    0,  192,  192,  192,  192,  192,  192,    0,  197,
-      197,  197,  195,    0,  197,    0,    0,  198,  198,  198,
-        0,    0,  198,  199,  199,  199,    0,    0,  199,    0,
-      196,  200,  200,  200,    0,    0,  200,    0,  201,  201,
-      201,    0,    0,  201,    0,  197,    0,    0,    0,    0,
-        0,  196,  197,  198,    0,  202,  202,  202,    0,  199,
-      202,    0,  199,  204,  204,  204,    0,  200,  204,    0,
-        0,    0,  198,  200,  201,    0,    0,  201,  205,  205,
-      205,    0,    0,  205,  206,  206,  206,    0,    0,  206,
-        0,  202,  208,  208,  208,    0,    0,  208,    0,  204,
-
-      209,  209,  209,    0,    0,  209,  210,  210,  210,    0,
-      202,  210,    0,    0,  205,    0,  204,    0,    0,    0,
-      206,    0,  211,  211,  211,    0,    0,  211,  208,  216,
-      216,  216,    0,  205,  216,    0,  209,    0,  217,  217,
-      217,  206,  210,  217,  218,  218,  218,    0,  208,  218,
-      219,  219,  219,  210,    0,  219,    0,  209,  211,  220,
-      220,  220,    0,    0,  220,  216,    0,    0,  221,  221,
-      221,  211,    0,  221,  217,    0,    0,    0,  221,    0,
-      218,  216,    0,  217,    0,    0,  219,  222,  222,  222,
-        0,    0,  222,    0,    0,  220,    0,    0,    0,    0,
-
-        0,  218,  220,  219,  221,  223,  223,  223,    0,    0,
-      223,    0,  224,  224,  224,    0,    0,  224,    0,  225,
-      225,  225,    0,  222,  225,  226,  226,  226,    0,    0,
-      226,  227,  227,  227,    0,    0,  227,    0,    0,    0,
-        0,  223,  222,    0,  228,  228,  228,  223,  224,  228,
-        0,    0,  229,  229,  229,  225,    0,  229,    0,    0,
-        0,  226,    0,  224,  230,  230,  230,  227,    0,  230,
-      231,  231,  231,    0,  225,  231,  226,    0,    0,    0,
-      228,  232,  232,  232,    0,    0,  232,  227,  229,  233,
-      233,  233,    0,    0,  233,    0,  234,  234,  234,  228,
-
-      230,  234,  230,    0,    0,  229,  231,  236,  236,  236,
-        0,    0,  236,  231,  237,  237,  237,  232,    0,  237,
-        0,  238,  238,  238,    0,  233,  238,    0,  239,  239,
-      239,    0,  234,  239,    0,  240,  240,  240,    0,  234,
-      240,    0,    0,  236,    0,    0,  233,  241,  241,  241,
-      237,    0,  241,  242,  242,  242,    0,  238,  242,    0,
-      243,  243,  243,  236,  239,  243,    0,  238,    0,    0,
-      243,  240,  244,  244,  244,    0,    0,  244,    0,  239,
-      245,  245,  245,  241,    0,  245,    0,  241,    0,  242,
-      246,  246,  246,    0,  240,  246,  243,    0,  247,  247,
-
-      247,    0,    0,  247,  248,  248,  248,    0,  244,  248,
-        0,    0,  242,    0,    0,  244,  245,  249,  249,  249,
-        0,    0,  249,  245,    0,    0,  246,  251,  251,  251,
-        0,    0,  251,  246,  247,    0,  252,  252,  252,    0,
-      248,  252,  254,  254,  254,    0,  252,  254,    0,  255,
-      255,  255,    0,  249,  255,  248,  256,  256,  256,    0,
-        0,  256,    0,  251,  258,  258,  258,    0,    0,  258,
-        0,    0,  252,    0,  249,    0,    0,    0,  254,    0,
-      251,  259,  259,  259,    0,  255,  259,    0,  260,  260,
-      260,    0,  256,  260,  261,  261,  261,    0,    0,  261,
-
-      258,    0,    0,  254,  262,  262,  262,    0,    0,  262,
-      255,    0,    0,    0,    0,  258,    0,  259,    0,    0,
-      259,  263,  263,  263,  260,    0,  263,    0,    0,    0,
-      261,  260,  264,  264,  264,    0,    0,  264,    0,    0,
-      262,  261,    0,  265,  265,  265,    0,  262,  265,  266,
-      266,  266,    0,    0,  266,    0,    0,  263,    0,  268,
-      268,  268,    0,  263,  268,  269,  269,  269,  264,    0,
-      269,  270,  270,  270,    0,    0,  270,    0,    0,  265,
-        0,  271,  271,  271,    0,  266,  271,    0,  272,  272,
-      272,    0,    0,  272,    0,  268,    0,    0,  268,  265,
-
-        0,  269,    0,  273,  273,  273,    0,  270,  273,  275,
-      275,  275,    0,    0,  275,    0,    0,  271,  269,    0,
-        0,    0,    0,  271,  272,  270,  276,  276,  276,    0,
-        0,  276,  277,  277,  277,    0,    0,  277,    0,  273,
-        0,  278,  278,  278,    0,  275,  278,  279,  279,  279,
-        0,    0,  279,  280,  280,  280,    0,    0,  280,  273,
-        0,    0,  276,    0,  282,  282,  282,    0,  277,  282,
-      284,  284,  284,  276,    0,  284,    0,  278,    0,  286,
-      286,  286,  277,  279,  286,  285,  285,  285,    0,  280,
-      285,    0,  287,  287,  287,  280,    0,  287,  278,    0,
-
-      282,    0,  279,  289,  289,  289,  284,    0,  289,  291,
-      291,  291,    0,    0,  291,  286,    0,  292,  292,  292,
-      282,  285,  292,    0,    0,    0,  285,  284,  287,    0,
-      293,  293,  293,    0,  287,  293,  286,    0,    0,  289,
-        0,  294,  294,  294,    0,  291,  294,  295,  295,  295,
-        0,  294,  295,  292,  296,  296,  296,    0,    0,  296,
-        0,  291,  297,  297,  297,    0,  293,  297,  298,  298,
-      298,    0,    0,  298,    0,    0,    0,  294,    0,  299,
-      299,  299,    0,  295,  299,    0,  293,  300,  300,  300,
-      296,    0,  300,    0,    0,    0,    0,  294,  297,  295,
-
-      302,  302,  302,    0,  298,  302,  304,  304,  304,    0,
-        0,  304,  305,  305,  305,  299,    0,  305,    0,    0,
-        0,  298,    0,  300,    0,    0,  299,  306,  306,  306,
-        0,    0,  306,    0,    0,    0,  302,    0,    0,  300,
-        0,    0,  304,    0,  307,  307,  307,    0,  305,  307,
-        0,    0,  310,  310,  310,    0,  302,  310,    0,  311,
-      311,  311,    0,  306,  311,  312,  312,  312,    0,  305,
-      312,  313,  313,  313,    0,    0,  313,  315,  315,  315,
-      307,    0,  315,    0,  317,  317,  317,    0,  310,  317,
-        0,  318,  318,  318,    0,  311,  318,    0,    0,    0,
-
-      307,  312,  310,  319,  319,  319,    0,  313,  319,  320,
-      320,  320,  311,  315,  320,    0,    0,  322,  322,  322,
-      317,  312,  322,    0,  315,    0,    0,  318,  325,  325,
-      325,    0,    0,  325,    0,  327,  327,  327,    0,  319,
-      327,  328,  328,  328,    0,  320,  328,  329,  329,  329,
-        0,    0,  329,  322,    0,  319,  331,  331,  331,    0,
-        0,  331,    0,    0,  325,  332,  332,  332,  322,    0,
-      332,  327,    0,    0,  333,  333,  333,  328,  327,  333,
-        0,    0,    0,  329,  325,    0,    0,    0,    0,    0,
-        0,    0,  331,    0,    0,    0,    0,    0,    0,    0,
-
-      329,  332,    0,    0,    0,    0,    0,    0,    0,    0,
-      333,    0,    0,    0,  331,    0,    0,    0,    0,    0,
-        0,    0,  332,  336,  336,  336,  336,  336,  337,  337,
-      337,  337,  337,  338,    0,  338,  338,  338,  339,    0,
-      339,    0,  339,  340,  340,  340,  340,  340,  341,  341,
-      341,  341,  341,  342,    0,  342,  342,  342,  343,  343,
-      343,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335
+        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,   26,   13,   21,  364,    5,    5,  363,   21,    5,
+
+       37,    9,   37,   42,    5,   42,    5,  362,    5,   17,
+       26,   17,   17,   17,    5,    5,    7,   10,    5,   25,
+        8,   25,   17,    5,   25,   25,   25,   19,    5,   19,
+       19,   19,   20,   20,   20,    5,    5,   15,   15,   15,
+       19,   17,   15,   20,   27,   22,   31,   22,   22,   22,
+       28,   32,  361,  121,   33,   76,   76,   76,   22,   19,
+       15,  124,   20,   15,   15,   31,   44,  223,   27,  193,
+       15,   15,  121,   15,   28,   32,   15,   22,   33,   15,
+      124,   15,   88,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   78,   44,   45,   45,
+
+       45,  156,   79,   45,   47,   47,   47,   80,   83,   47,
+       48,   48,   48,   88,  162,   48,   49,   49,   49,   78,
+      156,   49,   50,   50,   50,   79,   81,   50,   51,   51,
+       51,   80,   83,   51,   45,  133,   52,   77,   77,   77,
+       47,  125,   48,   52,   50,   82,   48,   96,   86,   81,
+       47,   51,   49,   85,   53,   53,   53,   43,   50,   53,
+       54,   54,   54,   50,   51,   54,   48,   52,   82,   49,
+       51,   52,   55,   55,   55,   52,  119,   55,  120,   56,
+       56,   56,  122,   52,   56,   41,   52,   39,   52,   52,
+       53,   38,   57,   57,   57,   24,   54,   57,  123,   14,
+
+      119,  120,   54,   54,   53,  159,  122,   54,   55,   58,
+       58,   58,   54,   11,   58,   56,    0,    0,   59,   59,
+       59,  123,   55,   59,  159,   55,    0,    0,   57,   60,
+       60,   60,   56,    0,   60,    0,   61,   61,   61,    0,
+        0,   61,   62,   62,   62,   58,   57,   62,   63,   63,
+       63,    0,   58,   63,   59,   64,   64,   64,    0,    0,
+       64,   65,   65,   65,    0,   60,   65,    0,   60,    0,
+        0,   59,   61,    0,    0,   61,    0,   61,   62,    0,
+       66,   66,   66,    0,   63,   66,    0,    0,   68,   68,
+       68,   64,   69,    0,   69,   69,   69,   65,   64,   68,
+
+       62,   63,   66,    0,   65,   69,   70,    0,   70,    0,
+        0,   70,   70,   70,    0,   90,   66,    0,   68,    0,
+        0,   66,   90,    0,   69,   71,    0,   71,   71,   71,
+       72,   72,   72,    0,    0,    0,   66,    0,   71,    0,
+        0,   72,   91,   91,   91,    0,   90,   91,    0,    0,
+       90,   92,   92,   92,   90,    0,   92,   71,    0,    0,
+       72,    0,   90,    0,    0,   90,    0,   90,   90,   93,
+       93,   93,    0,    0,   93,    0,    0,    0,   91,    0,
+       92,    0,    0,   91,    0,    0,    0,   92,   94,   94,
+       94,    0,    0,   94,    0,   95,   95,   95,    0,    0,
+
+       95,   97,   97,   97,   92,   93,   97,    0,   99,   99,
+       99,    0,    0,   99,   93,    0,    0,    0,   94,    0,
+        0,    0,    0,    0,   94,   95,    0,  101,  101,  101,
+        0,   95,  101,  100,  100,  100,    0,   97,  100,    0,
+        0,    0,   94,    0,   99,    0,    0,    0,    0,   95,
+       98,   98,   98,   99,    0,    0,    0,   98,   98,   98,
+       98,   98,   98,  101,    0,    0,    0,  101,    0,  100,
+      102,  102,  102,    0,    0,  102,   98,   98,   98,   98,
+       98,   98,  103,  103,  103,  100,    0,  103,  104,  104,
+      104,    0,    0,  104,  105,  105,  105,    0,    0,  105,
+
+      106,  106,  106,    0,    0,  106,  102,  107,  107,  107,
+        0,    0,  107,    0,    0,  102,    0,  107,  103,    0,
+        0,  108,  108,  108,  104,    0,  108,  109,  109,  109,
+      105,    0,  109,    0,    0,    0,  106,    0,  103,  110,
+      110,  110,    0,  107,  110,    0,  104,    0,    0,  105,
+      111,  111,  111,    0,    0,  111,  106,  108,    0,  112,
+      112,  112,    0,  109,  112,    0,  113,  113,  113,    0,
+        0,  113,  109,    0,    0,  110,  114,  114,  114,    0,
+        0,  114,    0,  108,    0,    0,  111,    0,  115,  115,
+      115,    0,    0,  115,    0,  112,    0,    0,    0,    0,
+
+      110,  111,  113,  116,  116,  116,    0,    0,  116,    0,
+        0,    0,  114,    0,  112,    0,  117,  117,  117,    0,
+        0,  117,    0,  113,  115,  128,  128,  128,    0,    0,
+      128,  114,  129,  129,  129,    0,    0,  129,    0,  116,
+      130,  130,  130,    0,  116,  130,    0,  115,    0,    0,
+        0,    0,  117,  131,  131,  131,    0,    0,  131,    0,
+      129,  128,  116,  117,  132,  132,  132,    0,  129,  132,
+      136,  136,  136,    0,    0,  136,  130,    0,    0,  128,
+        0,  137,  137,  137,  129,  130,  137,    0,    0,  131,
+      138,  138,  138,    0,    0,  138,    0,    0,    0,    0,
+
+      132,  135,  135,  135,    0,    0,  136,    0,  135,  135,
+      135,  135,  135,  135,  139,  139,  139,  137,    0,  139,
+      141,  141,  141,  136,    0,  141,  138,  135,  135,  135,
+      135,  135,  135,  140,  140,  140,    0,  137,  140,  142,
+      142,  142,    0,  140,  142,    0,    0,    0,  138,    0,
+      139,    0,    0,  143,  143,  143,  141,  139,  143,  144,
+      144,  144,    0,    0,  144,    0,  146,  146,  146,  140,
+        0,  146,  145,  145,  145,  142,  141,  145,  147,  147,
+      147,    0,  145,  147,    0,  148,  148,  148,    0,  143,
+      148,  149,  149,  149,    0,  144,  149,    0,  144,  142,
+
+        0,  149,  146,    0,  150,  150,  150,    0,  145,  150,
+      143,  146,    0,    0,  147,  151,  151,  151,    0,    0,
+      151,  148,    0,    0,  152,  152,  152,  149,  148,  152,
+      153,  153,  153,    0,  147,  153,    0,  147,    0,    0,
+      150,  154,  154,  154,    0,    0,  154,  155,  155,  155,
+        0,  151,  155,    0,  165,  165,  165,    0,  150,  165,
+      152,    0,    0,  166,  166,  166,  153,  152,  166,    0,
+        0,    0,  151,  164,  164,  164,    0,  154,  164,    0,
+        0,    0,    0,  155,  154,  153,    0,  164,  164,    0,
+      165,    0,  155,  170,  170,  170,  164,    0,  170,  166,
+
+      172,  172,  172,    0,    0,  172,    0,    0,    0,  164,
+      166,  169,  169,  169,    0,    0,    0,    0,  169,  169,
+      169,  169,  169,  169,    0,  171,  171,  171,    0,  170,
+      171,    0,    0,    0,    0,  171,  172,  169,  169,  169,
+      169,  169,  169,    0,    0,  172,    0,    0,  170,  173,
+      173,  173,    0,    0,  173,  174,  174,  174,    0,    0,
+      174,  171,  175,  175,  175,    0,    0,  175,  176,  176,
+      176,    0,    0,  176,  177,  177,  177,    0,    0,  177,
+        0,  178,  178,  178,    0,  173,  178,    0,  179,  179,
+      179,  174,    0,  179,  180,  180,  180,    0,  175,  180,
+
+        0,    0,    0,    0,  176,  173,    0,  176,  175,    0,
+      177,  174,    0,  181,  181,  181,    0,  178,  181,    0,
+      182,  182,  182,  178,  179,  182,  177,    0,    0,    0,
+      180,  183,  183,  183,    0,    0,  183,  180,    0,    0,
+      179,  184,  184,  184,    0,    0,  184,    0,    0,  181,
+      185,  185,  185,    0,    0,  185,  182,  186,  186,  186,
+      181,    0,  186,  182,  187,  187,  187,  183,    0,  187,
+      188,  188,  188,    0,    0,  188,    0,  184,  189,  189,
+      189,    0,    0,  189,    0,  184,  185,  190,  190,  190,
+        0,    0,  190,  186,    0,  184,    0,  190,    0,    0,
+
+      187,    0,  195,  195,  195,    0,  188,  195,  185,    0,
+      196,  196,  196,  188,  189,  196,  197,  197,  197,  187,
+        0,  197,    0,  190,  199,  199,  199,    0,    0,  199,
+        0,    0,    0,  189,  201,  201,  201,    0,  195,  201,
+        0,    0,    0,    0,    0,    0,  196,    0,    0,    0,
+        0,    0,  197,    0,  202,  202,  202,    0,  197,  202,
+      199,  203,  203,  203,    0,    0,  203,    0,    0,    0,
+      201,    0,    0,    0,    0,    0,  199,  200,  200,  200,
+        0,  201,    0,    0,  200,  200,  200,  200,  200,  200,
+      202,    0,    0,  204,  204,  204,  202,  203,  204,    0,
+
+        0,    0,    0,  200,  200,  200,  200,  200,  200,    0,
+        0,  203,  205,  205,  205,    0,    0,  205,  206,  206,
+      206,    0,    0,  206,    0,  207,  207,  207,    0,  204,
+      207,  208,  208,  208,    0,    0,  208,  209,  209,  209,
+        0,    0,  209,    0,    0,    0,    0,    0,  205,    0,
+      204,  210,  210,  210,  206,  205,  210,  211,  211,  211,
+        0,  207,  211,  212,  212,  212,    0,  208,  212,    0,
+      208,    0,    0,  209,    0,    0,    0,    0,    0,  209,
+      207,  213,  213,  213,    0,    0,  213,  210,    0,    0,
+      210,    0,    0,  211,    0,  215,  215,  215,    0,  212,
+
+      215,  216,  216,  216,    0,    0,  216,    0,  217,  217,
+      217,    0,  211,  217,  219,  219,  219,  213,    0,  219,
+        0,    0,  220,  220,  220,    0,  212,  220,  221,  221,
+      221,  215,    0,  221,    0,    0,  213,  216,  222,  222,
+      222,    0,    0,  222,  217,    0,    0,    0,  215,    0,
+      219,    0,  227,  227,  227,    0,  216,  227,  220,    0,
+        0,  228,  228,  228,  221,  217,  228,  229,  229,  229,
+      219,    0,  229,    0,  222,  221,  230,  230,  230,  220,
+        0,  230,    0,    0,  231,  231,  231,  222,  227,  231,
+      232,  232,  232,    0,    0,  232,    0,  228,    0,    0,
+
+      232,    0,    0,  229,  227,    0,  228,    0,  233,  233,
+      233,    0,  230,  233,  235,  235,  235,    0,    0,  235,
+      231,    0,    0,    0,  229,    0,  232,  231,    0,  230,
+      236,  236,  236,    0,    0,  236,  237,  237,  237,    0,
+        0,  237,    0,    0,  233,    0,  238,  238,  238,    0,
+      235,  238,  239,  239,  239,    0,  235,  239,    0,  240,
+      240,  240,    0,  233,  240,    0,  236,    0,  241,  241,
+      241,    0,  237,  241,  242,  242,  242,    0,    0,  242,
+        0,  236,  238,    0,  243,  243,  243,    0,  239,  243,
+        0,  237,    0,    0,    0,  240,    0,  238,  244,  244,
+
+      244,    0,  240,  244,  241,    0,    0,    0,  239,    0,
+      242,  245,  245,  245,    0,    0,  245,  246,  246,  246,
+      243,    0,  246,  247,  247,  247,    0,    0,  247,  242,
+      248,  248,  248,    0,  244,  248,  244,  243,  250,  250,
+      250,    0,    0,  250,    0,    0,    0,  245,    0,    0,
+      251,  251,  251,  246,  245,  251,  252,  252,  252,  247,
+        0,  252,  253,  253,  253,    0,  248,  253,    0,    0,
+      254,  254,  254,  248,  250,  254,  255,  255,  255,    0,
+      247,  255,  256,  256,  256,    0,  251,  256,    0,    0,
+        0,    0,  252,    0,  250,  257,  257,  257,  253,    0,
+
+      257,    0,  252,    0,    0,  257,  254,    0,    0,  258,
+      258,  258,  255,  253,  258,    0,  255,    0,  256,  259,
+      259,  259,    0,    0,  259,  260,  260,  260,    0,  254,
+      260,  257,    0,  261,  261,  261,    0,    0,  261,    0,
+        0,  256,  262,  262,  262,  258,    0,  262,  264,  264,
+      264,    0,  258,  264,    0,  259,    0,    0,  265,  265,
+      265,  260,  259,  265,    0,  267,  267,  267,  260,  261,
+      267,  268,  268,  268,    0,    0,  268,    0,  262,    0,
+        0,  268,    0,    0,  264,  270,  270,  270,    0,    0,
+      270,  271,  271,  271,  265,    0,  271,    0,    0,  264,
+
+        0,  267,    0,  272,  272,  272,    0,  268,  272,  274,
+      274,  274,    0,    0,  274,  265,    0,    0,  267,    0,
+        0,  270,    0,  275,  275,  275,    0,  271,  275,  276,
+      276,  276,    0,    0,  276,  277,  277,  277,    0,  272,
+      277,  278,  278,  278,    0,  274,  278,  270,    0,  279,
+      279,  279,    0,  271,  279,    0,  280,  280,  280,  275,
+      274,  280,  275,    0,    0,  276,    0,    0,  281,  281,
+      281,  277,  276,  281,  282,  282,  282,  278,    0,  282,
+        0,    0,  277,    0,  278,  279,    0,    0,    0,    0,
+        0,  279,  280,  285,  285,  285,    0,    0,  285,    0,
+
+      286,  286,  286,    0,  281,  286,  287,  287,  287,    0,
+      282,  287,  288,  288,  288,    0,    0,  288,    0,    0,
+      289,  289,  289,    0,  281,  289,  290,  290,  290,  285,
+        0,  290,  285,  292,  292,  292,  286,    0,  292,  293,
+      293,  293,  287,    0,  293,  294,  294,  294,  288,    0,
+      294,    0,    0,  286,  288,    0,  289,    0,    0,    0,
+      287,    0,  290,  295,  295,  295,    0,    0,  295,  292,
+        0,  296,  296,  296,    0,  293,  296,    0,    0,    0,
+        0,  294,  290,  297,  297,  297,  293,    0,  297,    0,
+        0,  299,  299,  299,    0,  294,  299,    0,    0,  295,
+
+      301,  301,  301,    0,    0,  301,    0,  296,  302,  302,
+      302,    0,    0,  302,    0,    0,  303,  303,  303,  297,
+      295,  303,    0,    0,    0,  297,  296,  299,  304,  304,
+      304,    0,    0,  304,    0,    0,  301,    0,  306,  306,
+      306,    0,    0,  306,  302,    0,    0,  299,    0,  302,
+        0,    0,  303,  308,  308,  308,    0,  301,  308,    0,
+      309,  309,  309,    0,  304,  309,  310,  310,  310,    0,
+      304,  310,    0,  303,  306,  311,  311,  311,    0,    0,
+      311,  312,  312,  312,    0,  311,  312,    0,    0,  308,
+      313,  313,  313,    0,    0,  313,  309,    0,  314,  314,
+
+      314,    0,  310,  314,    0,  308,    0,  315,  315,  315,
+        0,  311,  315,    0,  316,  316,  316,  312,    0,  316,
+        0,    0,  310,  317,  317,  317,  313,    0,  317,    0,
+        0,  311,    0,  312,  314,  319,  319,  319,    0,    0,
+      319,    0,    0,  315,  321,  321,  321,    0,    0,  321,
+      316,  322,  322,  322,    0,    0,  322,    0,    0,  317,
+      315,  316,  323,  323,  323,    0,    0,  323,  324,  324,
+      324,  319,    0,  324,    0,  317,  327,  327,  327,    0,
+      321,  327,    0,  328,  328,  328,    0,  322,  328,    0,
+        0,  319,  329,  329,  329,    0,    0,  329,  323,    0,
+
+        0,  330,  330,  330,  324,    0,  330,    0,  322,  332,
+      332,  332,  327,    0,  332,  334,  334,  334,    0,  328,
+      334,    0,    0,    0,  324,    0,  327,    0,  329,  335,
+      335,  335,    0,    0,  335,    0,  328,  330,  336,  336,
+      336,    0,    0,  336,    0,  332,    0,    0,  329,    0,
+        0,  334,  337,  337,  337,    0,  332,  337,  339,  339,
+      339,    0,    0,  339,    0,  335,  342,  342,  342,    0,
+        0,  342,    0,    0,  336,  344,  344,  344,    0,    0,
+      344,  345,  345,  345,    0,    0,  345,    0,  337,    0,
+      336,  346,  346,  346,  339,    0,  346,    0,  348,  348,
+
+      348,    0,  342,  348,    0,  349,  349,  349,    0,  339,
+      349,  344,    0,    0,  350,  350,  350,  345,  344,  350,
+        0,    0,  342,    0,    0,    0,    0,  346,    0,    0,
+        0,    0,    0,    0,  348,    0,    0,    0,    0,    0,
+        0,  349,    0,    0,  346,    0,    0,    0,    0,    0,
+      350,    0,    0,    0,    0,    0,  348,    0,    0,    0,
+        0,    0,  349,  353,  353,  353,  353,  353,  354,  354,
+      354,  354,  354,  355,    0,  355,  355,  355,  356,    0,
+      356,    0,  356,  357,  357,  357,  357,  357,  358,  358,
+      358,  358,  358,  359,    0,  359,  359,  359,  360,  360,
+
+      360,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1227,14 +1263,14 @@ static char *yy_last_accepting_cpos;
 extern int d2_parser__flex_debug;
 int d2_parser__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[58] =
+static const flex_int16_t yy_rule_linenum[61] =
     {   0,
       127,  129,  131,  136,  137,  142,  143,  144,  156,  159,
       164,  170,  179,  190,  201,  210,  219,  228,  238,  248,
       258,  267,  276,  286,  296,  306,  317,  326,  336,  346,
-      357,  366,  375,  384,  393,  406,  415,  424,  433,  443,
-      541,  546,  551,  556,  557,  558,  559,  560,  561,  563,
-      581,  594,  599,  603,  605,  607,  609
+      357,  366,  375,  384,  393,  402,  411,  420,  433,  442,
+      451,  460,  470,  568,  573,  578,  583,  584,  585,  586,
+      587,  588,  590,  608,  621,  626,  630,  632,  634,  636
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1279,7 +1315,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 1282 "d2_lexer.cc"
+#line 1318 "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
@@ -1305,8 +1341,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 1308 "d2_lexer.cc"
-#line 1309 "d2_lexer.cc"
+#line 1344 "d2_lexer.cc"
+#line 1345 "d2_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1624,7 +1660,7 @@ YY_DECL
     }
 
 
-#line 1627 "d2_lexer.cc"
+#line 1663 "d2_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1653,13 +1689,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 >= 336 )
+                               if ( yy_current_state >= 353 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 335 );
+               while ( yy_current_state != 352 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1678,13 +1714,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 < 58 )
+                       else if ( yy_act < 61 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], d2_parser_text );
-                       else if ( yy_act == 58 )
+                       else if ( yy_act == 61 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         d2_parser_text );
-                       else if ( yy_act == 59 )
+                       else if ( yy_act == 62 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2081,6 +2117,42 @@ YY_RULE_SETUP
 case 35:
 YY_RULE_SETUP
 #line 393 "d2_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+        return isc::d2::D2Parser::make_FLUSH(driver.loc_);
+    default:
+        return isc::d2::D2Parser::make_STRING("flush", driver.loc_);
+    }
+}
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 402 "d2_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+        return isc::d2::D2Parser::make_MAXSIZE(driver.loc_);
+    default:
+        return isc::d2::D2Parser::make_STRING("maxsize", driver.loc_);
+    }
+}
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 411 "d2_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
+        return isc::d2::D2Parser::make_MAXVER(driver.loc_);
+    default:
+        return isc::d2::D2Parser::make_STRING("maxver", driver.loc_);
+    }
+}
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 420 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2094,9 +2166,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 36:
+case 39:
 YY_RULE_SETUP
-#line 406 "d2_lexer.ll"
+#line 433 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2106,9 +2178,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 40:
 YY_RULE_SETUP
-#line 415 "d2_lexer.ll"
+#line 442 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::LOGGERS:
@@ -2118,9 +2190,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 41:
 YY_RULE_SETUP
-#line 424 "d2_lexer.ll"
+#line 451 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::CONFIG:
@@ -2130,9 +2202,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 42:
 YY_RULE_SETUP
-#line 433 "d2_lexer.ll"
+#line 460 "d2_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::d2::D2ParserContext::CONFIG:
@@ -2142,9 +2214,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 443 "d2_lexer.ll"
+#line 470 "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.
@@ -2243,65 +2315,65 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 41:
-/* rule 41 can match eol */
+case 44:
+/* rule 44 can match eol */
 YY_RULE_SETUP
-#line 541 "d2_lexer.ll"
+#line 568 "d2_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 42:
-/* rule 42 can match eol */
+case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 546 "d2_lexer.ll"
+#line 573 "d2_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 551 "d2_lexer.ll"
+#line 578 "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 44:
+case 47:
 YY_RULE_SETUP
-#line 556 "d2_lexer.ll"
+#line 583 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 557 "d2_lexer.ll"
+#line 584 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 558 "d2_lexer.ll"
+#line 585 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 559 "d2_lexer.ll"
+#line 586 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 560 "d2_lexer.ll"
+#line 587 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 561 "d2_lexer.ll"
+#line 588 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 563 "d2_lexer.ll"
+#line 590 "d2_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
@@ -2320,9 +2392,9 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 581 "d2_lexer.ll"
+#line 608 "d2_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
@@ -2336,43 +2408,43 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 52:
+case 55:
 YY_RULE_SETUP
-#line 594 "d2_lexer.ll"
+#line 621 "d2_lexer.ll"
 {
     string tmp(yytext);
     return isc::d2::D2Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 599 "d2_lexer.ll"
+#line 626 "d2_lexer.ll"
 {
    return isc::d2::D2Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 54:
+case 57:
 YY_RULE_SETUP
-#line 603 "d2_lexer.ll"
+#line 630 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 55:
+case 58:
 YY_RULE_SETUP
-#line 605 "d2_lexer.ll"
+#line 632 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 56:
+case 59:
 YY_RULE_SETUP
-#line 607 "d2_lexer.ll"
+#line 634 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 57:
+case 60:
 YY_RULE_SETUP
-#line 609 "d2_lexer.ll"
+#line 636 "d2_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 611 "d2_lexer.ll"
+#line 638 "d2_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::d2::D2Parser::make_END(driver.loc_);
@@ -2396,12 +2468,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 58:
+case 61:
 YY_RULE_SETUP
-#line 634 "d2_lexer.ll"
+#line 661 "d2_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2404 "d2_lexer.cc"
+#line 2476 "d2_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2716,7 +2788,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 >= 336 )
+                       if ( yy_current_state >= 353 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2749,11 +2821,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 >= 336 )
+               if ( yy_current_state >= 353 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 335);
+       yy_is_jam = (yy_current_state == 352);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3502,7 +3574,7 @@ void d2_parser_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 634 "d2_lexer.ll"
+#line 661 "d2_lexer.ll"
 
 
 using namespace isc::dhcp;
index 9ba3a3408f4a359d60458d50245d4edfe87697c7..d1a020de0eba6866462591bdb1ef73e63eb3dc57 100644 (file)
@@ -253,24 +253,24 @@ namespace isc { namespace d2 {
   {
       switch (that.type_get ())
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -289,24 +289,24 @@ namespace isc { namespace d2 {
     state = that.state;
       switch (that.type_get ())
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -346,44 +346,44 @@ namespace isc { namespace d2 {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 47: // "constant string"
+            case 50: // "constant string"
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 354 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 361 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 368 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 375 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 62: // value
+      case 65: // value
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 382 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 89: // ncr_protocol_value
+      case 92: // ncr_protocol_value
 
-#line 104 "d2_parser.yy" // lalr1.cc:636
+#line 107 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 389 "d2_parser.cc" // lalr1.cc:636
         break;
@@ -585,24 +585,24 @@ namespace isc { namespace d2 {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -624,103 +624,103 @@ namespace isc { namespace d2 {
           switch (yyn)
             {
   case 2:
-#line 113 "d2_parser.yy" // lalr1.cc:859
+#line 116 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 630 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 114 "d2_parser.yy" // lalr1.cc:859
+#line 117 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 636 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 115 "d2_parser.yy" // lalr1.cc:859
+#line 118 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCPDDNS; }
 #line 642 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 116 "d2_parser.yy" // lalr1.cc:859
+#line 119 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.TSIG_KEY; }
 #line 648 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 117 "d2_parser.yy" // lalr1.cc:859
+#line 120 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.TSIG_KEYS; }
 #line 654 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 118 "d2_parser.yy" // lalr1.cc:859
+#line 121 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 #line 660 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 119 "d2_parser.yy" // lalr1.cc:859
+#line 122 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 #line 666 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 120 "d2_parser.yy" // lalr1.cc:859
+#line 123 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 672 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 121 "d2_parser.yy" // lalr1.cc:859
+#line 124 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 678 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 129 "d2_parser.yy" // lalr1.cc:859
+#line 132 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 684 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 21:
-#line 130 "d2_parser.yy" // lalr1.cc:859
+#line 133 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 690 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 131 "d2_parser.yy" // lalr1.cc:859
+#line 134 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 696 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 23:
-#line 132 "d2_parser.yy" // lalr1.cc:859
+#line 135 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 702 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 133 "d2_parser.yy" // lalr1.cc:859
+#line 136 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 708 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 134 "d2_parser.yy" // lalr1.cc:859
+#line 137 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 714 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 135 "d2_parser.yy" // lalr1.cc:859
+#line 138 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 720 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 138 "d2_parser.yy" // lalr1.cc:859
+#line 141 "d2_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -729,7 +729,7 @@ namespace isc { namespace d2 {
     break;
 
   case 28:
-#line 143 "d2_parser.yy" // lalr1.cc:859
+#line 146 "d2_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -740,7 +740,7 @@ namespace isc { namespace d2 {
     break;
 
   case 29:
-#line 148 "d2_parser.yy" // lalr1.cc:859
+#line 151 "d2_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -750,7 +750,7 @@ namespace isc { namespace d2 {
     break;
 
   case 32:
-#line 159 "d2_parser.yy" // lalr1.cc:859
+#line 162 "d2_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -759,7 +759,7 @@ namespace isc { namespace d2 {
     break;
 
   case 33:
-#line 163 "d2_parser.yy" // lalr1.cc:859
+#line 166 "d2_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -769,7 +769,7 @@ namespace isc { namespace d2 {
     break;
 
   case 34:
-#line 170 "d2_parser.yy" // lalr1.cc:859
+#line 173 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -778,7 +778,7 @@ namespace isc { namespace d2 {
     break;
 
   case 35:
-#line 173 "d2_parser.yy" // lalr1.cc:859
+#line 176 "d2_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -786,7 +786,7 @@ namespace isc { namespace d2 {
     break;
 
   case 38:
-#line 181 "d2_parser.yy" // lalr1.cc:859
+#line 184 "d2_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -795,7 +795,7 @@ namespace isc { namespace d2 {
     break;
 
   case 39:
-#line 185 "d2_parser.yy" // lalr1.cc:859
+#line 188 "d2_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -804,7 +804,7 @@ namespace isc { namespace d2 {
     break;
 
   case 40:
-#line 196 "d2_parser.yy" // lalr1.cc:859
+#line 199 "d2_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -815,7 +815,7 @@ namespace isc { namespace d2 {
     break;
 
   case 41:
-#line 206 "d2_parser.yy" // lalr1.cc:859
+#line 209 "d2_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -826,7 +826,7 @@ namespace isc { namespace d2 {
     break;
 
   case 42:
-#line 211 "d2_parser.yy" // lalr1.cc:859
+#line 214 "d2_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -836,7 +836,7 @@ namespace isc { namespace d2 {
     break;
 
   case 50:
-#line 232 "d2_parser.yy" // lalr1.cc:859
+#line 235 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("DhcpDdns", m);
@@ -847,7 +847,7 @@ namespace isc { namespace d2 {
     break;
 
   case 51:
-#line 237 "d2_parser.yy" // lalr1.cc:859
+#line 240 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -856,7 +856,7 @@ namespace isc { namespace d2 {
     break;
 
   case 52:
-#line 242 "d2_parser.yy" // lalr1.cc:859
+#line 245 "d2_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcpddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -866,7 +866,7 @@ namespace isc { namespace d2 {
     break;
 
   case 53:
-#line 246 "d2_parser.yy" // lalr1.cc:859
+#line 249 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -874,7 +874,7 @@ namespace isc { namespace d2 {
     break;
 
   case 65:
-#line 266 "d2_parser.yy" // lalr1.cc:859
+#line 269 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -882,7 +882,7 @@ namespace isc { namespace d2 {
     break;
 
   case 66:
-#line 268 "d2_parser.yy" // lalr1.cc:859
+#line 271 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", s);
@@ -892,7 +892,7 @@ namespace isc { namespace d2 {
     break;
 
   case 67:
-#line 274 "d2_parser.yy" // lalr1.cc:859
+#line 277 "d2_parser.yy" // lalr1.cc:859
     {
     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");
@@ -904,7 +904,7 @@ namespace isc { namespace d2 {
     break;
 
   case 68:
-#line 282 "d2_parser.yy" // lalr1.cc:859
+#line 285 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< int64_t > () <= 0) {
         error(yystack_[0].location, "dns-server-timeout must be greater than zero");
@@ -917,7 +917,7 @@ namespace isc { namespace d2 {
     break;
 
   case 69:
-#line 291 "d2_parser.yy" // lalr1.cc:859
+#line 294 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
@@ -925,7 +925,7 @@ namespace isc { namespace d2 {
     break;
 
   case 70:
-#line 293 "d2_parser.yy" // lalr1.cc:859
+#line 296 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -934,19 +934,19 @@ namespace isc { namespace d2 {
     break;
 
   case 71:
-#line 299 "d2_parser.yy" // lalr1.cc:859
+#line 302 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 940 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 72:
-#line 300 "d2_parser.yy" // lalr1.cc:859
+#line 303 "d2_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 946 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 73:
-#line 303 "d2_parser.yy" // lalr1.cc:859
+#line 306 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
@@ -954,7 +954,7 @@ namespace isc { namespace d2 {
     break;
 
   case 74:
-#line 305 "d2_parser.yy" // lalr1.cc:859
+#line 308 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -964,7 +964,7 @@ namespace isc { namespace d2 {
     break;
 
   case 75:
-#line 311 "d2_parser.yy" // lalr1.cc:859
+#line 314 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("forward-ddns", m);
@@ -975,7 +975,7 @@ namespace isc { namespace d2 {
     break;
 
   case 76:
-#line 316 "d2_parser.yy" // lalr1.cc:859
+#line 319 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -984,7 +984,7 @@ namespace isc { namespace d2 {
     break;
 
   case 77:
-#line 321 "d2_parser.yy" // lalr1.cc:859
+#line 324 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reverse-ddns", m);
@@ -995,7 +995,7 @@ namespace isc { namespace d2 {
     break;
 
   case 78:
-#line 326 "d2_parser.yy" // lalr1.cc:859
+#line 329 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1004,7 +1004,7 @@ namespace isc { namespace d2 {
     break;
 
   case 85:
-#line 345 "d2_parser.yy" // lalr1.cc:859
+#line 348 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-domains", l);
@@ -1015,7 +1015,7 @@ namespace isc { namespace d2 {
     break;
 
   case 86:
-#line 350 "d2_parser.yy" // lalr1.cc:859
+#line 353 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1024,7 +1024,7 @@ namespace isc { namespace d2 {
     break;
 
   case 87:
-#line 355 "d2_parser.yy" // lalr1.cc:859
+#line 358 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1033,7 +1033,7 @@ namespace isc { namespace d2 {
     break;
 
   case 88:
-#line 358 "d2_parser.yy" // lalr1.cc:859
+#line 361 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1041,7 +1041,7 @@ namespace isc { namespace d2 {
     break;
 
   case 93:
-#line 370 "d2_parser.yy" // lalr1.cc:859
+#line 373 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1051,7 +1051,7 @@ namespace isc { namespace d2 {
     break;
 
   case 94:
-#line 374 "d2_parser.yy" // lalr1.cc:859
+#line 377 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1059,7 +1059,7 @@ namespace isc { namespace d2 {
     break;
 
   case 95:
-#line 378 "d2_parser.yy" // lalr1.cc:859
+#line 381 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1068,7 +1068,7 @@ namespace isc { namespace d2 {
     break;
 
   case 96:
-#line 381 "d2_parser.yy" // lalr1.cc:859
+#line 384 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1076,7 +1076,7 @@ namespace isc { namespace d2 {
     break;
 
   case 103:
-#line 396 "d2_parser.yy" // lalr1.cc:859
+#line 399 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1084,7 +1084,7 @@ namespace isc { namespace d2 {
     break;
 
   case 104:
-#line 398 "d2_parser.yy" // lalr1.cc:859
+#line 401 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "Ddns domain name cannot be blank");
@@ -1098,7 +1098,7 @@ namespace isc { namespace d2 {
     break;
 
   case 105:
-#line 408 "d2_parser.yy" // lalr1.cc:859
+#line 411 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1106,7 +1106,7 @@ namespace isc { namespace d2 {
     break;
 
   case 106:
-#line 410 "d2_parser.yy" // lalr1.cc:859
+#line 413 "d2_parser.yy" // lalr1.cc:859
     {
     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)));
@@ -1117,7 +1117,7 @@ namespace isc { namespace d2 {
     break;
 
   case 107:
-#line 420 "d2_parser.yy" // lalr1.cc:859
+#line 423 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dns-servers", l);
@@ -1128,7 +1128,7 @@ namespace isc { namespace d2 {
     break;
 
   case 108:
-#line 425 "d2_parser.yy" // lalr1.cc:859
+#line 428 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1137,7 +1137,7 @@ namespace isc { namespace d2 {
     break;
 
   case 109:
-#line 430 "d2_parser.yy" // lalr1.cc:859
+#line 433 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1146,7 +1146,7 @@ namespace isc { namespace d2 {
     break;
 
   case 110:
-#line 433 "d2_parser.yy" // lalr1.cc:859
+#line 436 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1154,7 +1154,7 @@ namespace isc { namespace d2 {
     break;
 
   case 113:
-#line 441 "d2_parser.yy" // lalr1.cc:859
+#line 444 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1164,7 +1164,7 @@ namespace isc { namespace d2 {
     break;
 
   case 114:
-#line 445 "d2_parser.yy" // lalr1.cc:859
+#line 448 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1172,7 +1172,7 @@ namespace isc { namespace d2 {
     break;
 
   case 115:
-#line 449 "d2_parser.yy" // lalr1.cc:859
+#line 452 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1181,7 +1181,7 @@ namespace isc { namespace d2 {
     break;
 
   case 116:
-#line 452 "d2_parser.yy" // lalr1.cc:859
+#line 455 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1189,7 +1189,7 @@ namespace isc { namespace d2 {
     break;
 
   case 123:
-#line 466 "d2_parser.yy" // lalr1.cc:859
+#line 469 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1197,7 +1197,7 @@ namespace isc { namespace d2 {
     break;
 
   case 124:
-#line 468 "d2_parser.yy" // lalr1.cc:859
+#line 471 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () != "") {
         error(yystack_[1].location, "hostname is not yet supported");
@@ -1211,7 +1211,7 @@ namespace isc { namespace d2 {
     break;
 
   case 125:
-#line 478 "d2_parser.yy" // lalr1.cc:859
+#line 481 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1219,7 +1219,7 @@ namespace isc { namespace d2 {
     break;
 
   case 126:
-#line 480 "d2_parser.yy" // lalr1.cc:859
+#line 483 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", s);
@@ -1229,7 +1229,7 @@ namespace isc { namespace d2 {
     break;
 
   case 127:
-#line 486 "d2_parser.yy" // lalr1.cc:859
+#line 489 "d2_parser.yy" // lalr1.cc:859
     {
     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");
@@ -1241,7 +1241,7 @@ namespace isc { namespace d2 {
     break;
 
   case 128:
-#line 500 "d2_parser.yy" // lalr1.cc:859
+#line 503 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tsig-keys", l);
@@ -1252,7 +1252,7 @@ namespace isc { namespace d2 {
     break;
 
   case 129:
-#line 505 "d2_parser.yy" // lalr1.cc:859
+#line 508 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1261,7 +1261,7 @@ namespace isc { namespace d2 {
     break;
 
   case 130:
-#line 510 "d2_parser.yy" // lalr1.cc:859
+#line 513 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1270,7 +1270,7 @@ namespace isc { namespace d2 {
     break;
 
   case 131:
-#line 513 "d2_parser.yy" // lalr1.cc:859
+#line 516 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1278,7 +1278,7 @@ namespace isc { namespace d2 {
     break;
 
   case 136:
-#line 525 "d2_parser.yy" // lalr1.cc:859
+#line 528 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1288,7 +1288,7 @@ namespace isc { namespace d2 {
     break;
 
   case 137:
-#line 529 "d2_parser.yy" // lalr1.cc:859
+#line 532 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1296,7 +1296,7 @@ namespace isc { namespace d2 {
     break;
 
   case 138:
-#line 533 "d2_parser.yy" // lalr1.cc:859
+#line 536 "d2_parser.yy" // lalr1.cc:859
     {
     // Parse tsig key list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1306,7 +1306,7 @@ namespace isc { namespace d2 {
     break;
 
   case 139:
-#line 537 "d2_parser.yy" // lalr1.cc:859
+#line 540 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1314,7 +1314,7 @@ namespace isc { namespace d2 {
     break;
 
   case 147:
-#line 553 "d2_parser.yy" // lalr1.cc:859
+#line 556 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1322,7 +1322,7 @@ namespace isc { namespace d2 {
     break;
 
   case 148:
-#line 555 "d2_parser.yy" // lalr1.cc:859
+#line 558 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key name cannot be blank");
@@ -1336,7 +1336,7 @@ namespace isc { namespace d2 {
     break;
 
   case 149:
-#line 565 "d2_parser.yy" // lalr1.cc:859
+#line 568 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1344,7 +1344,7 @@ namespace isc { namespace d2 {
     break;
 
   case 150:
-#line 567 "d2_parser.yy" // lalr1.cc:859
+#line 570 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key algorithm cannot be blank");
@@ -1357,7 +1357,7 @@ namespace isc { namespace d2 {
     break;
 
   case 151:
-#line 576 "d2_parser.yy" // lalr1.cc:859
+#line 579 "d2_parser.yy" // lalr1.cc:859
     {
     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");
@@ -1369,7 +1369,7 @@ namespace isc { namespace d2 {
     break;
 
   case 152:
-#line 584 "d2_parser.yy" // lalr1.cc:859
+#line 587 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1377,7 +1377,7 @@ namespace isc { namespace d2 {
     break;
 
   case 153:
-#line 586 "d2_parser.yy" // lalr1.cc:859
+#line 589 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key secret cannot be blank");
@@ -1390,7 +1390,7 @@ namespace isc { namespace d2 {
     break;
 
   case 154:
-#line 599 "d2_parser.yy" // lalr1.cc:859
+#line 602 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1398,7 +1398,7 @@ namespace isc { namespace d2 {
     break;
 
   case 155:
-#line 601 "d2_parser.yy" // lalr1.cc:859
+#line 604 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1407,7 +1407,7 @@ namespace isc { namespace d2 {
     break;
 
   case 156:
-#line 606 "d2_parser.yy" // lalr1.cc:859
+#line 609 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1415,7 +1415,7 @@ namespace isc { namespace d2 {
     break;
 
   case 157:
-#line 608 "d2_parser.yy" // lalr1.cc:859
+#line 611 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1424,7 +1424,7 @@ namespace isc { namespace d2 {
     break;
 
   case 158:
-#line 618 "d2_parser.yy" // lalr1.cc:859
+#line 621 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
@@ -1435,7 +1435,7 @@ namespace isc { namespace d2 {
     break;
 
   case 159:
-#line 623 "d2_parser.yy" // lalr1.cc:859
+#line 626 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1444,7 +1444,7 @@ namespace isc { namespace d2 {
     break;
 
   case 163:
-#line 640 "d2_parser.yy" // lalr1.cc:859
+#line 643 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -1455,7 +1455,7 @@ namespace isc { namespace d2 {
     break;
 
   case 164:
-#line 645 "d2_parser.yy" // lalr1.cc:859
+#line 648 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1464,7 +1464,7 @@ namespace isc { namespace d2 {
     break;
 
   case 167:
-#line 657 "d2_parser.yy" // lalr1.cc:859
+#line 660 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -1474,7 +1474,7 @@ namespace isc { namespace d2 {
     break;
 
   case 168:
-#line 661 "d2_parser.yy" // lalr1.cc:859
+#line 664 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1482,7 +1482,7 @@ namespace isc { namespace d2 {
     break;
 
   case 176:
-#line 676 "d2_parser.yy" // lalr1.cc:859
+#line 679 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1490,7 +1490,7 @@ namespace isc { namespace d2 {
     break;
 
   case 177:
-#line 678 "d2_parser.yy" // lalr1.cc:859
+#line 681 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1500,7 +1500,7 @@ namespace isc { namespace d2 {
     break;
 
   case 178:
-#line 684 "d2_parser.yy" // lalr1.cc:859
+#line 687 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
@@ -1509,7 +1509,7 @@ namespace isc { namespace d2 {
     break;
 
   case 179:
-#line 688 "d2_parser.yy" // lalr1.cc:859
+#line 691 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1517,7 +1517,7 @@ namespace isc { namespace d2 {
     break;
 
   case 180:
-#line 690 "d2_parser.yy" // lalr1.cc:859
+#line 693 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -1527,7 +1527,7 @@ namespace isc { namespace d2 {
     break;
 
   case 181:
-#line 696 "d2_parser.yy" // lalr1.cc:859
+#line 699 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -1538,7 +1538,7 @@ namespace isc { namespace d2 {
     break;
 
   case 182:
-#line 701 "d2_parser.yy" // lalr1.cc:859
+#line 704 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1547,7 +1547,7 @@ namespace isc { namespace d2 {
     break;
 
   case 185:
-#line 710 "d2_parser.yy" // lalr1.cc:859
+#line 713 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1557,23 +1557,23 @@ namespace isc { namespace d2 {
     break;
 
   case 186:
-#line 714 "d2_parser.yy" // lalr1.cc:859
+#line 717 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1565 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 189:
-#line 722 "d2_parser.yy" // lalr1.cc:859
+  case 193:
+#line 731 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1573 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 190:
-#line 724 "d2_parser.yy" // lalr1.cc:859
+  case 194:
+#line 733 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -1582,8 +1582,35 @@ namespace isc { namespace d2 {
 #line 1583 "d2_parser.cc" // lalr1.cc:859
     break;
 
+  case 195:
+#line 739 "d2_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("flush", flush);
+}
+#line 1592 "d2_parser.cc" // lalr1.cc:859
+    break;
+
+  case 196:
+#line 744 "d2_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxsize", maxsize);
+}
+#line 1601 "d2_parser.cc" // lalr1.cc:859
+    break;
+
+  case 197:
+#line 749 "d2_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxver", maxver);
+}
+#line 1610 "d2_parser.cc" // lalr1.cc:859
+    break;
+
 
-#line 1587 "d2_parser.cc" // lalr1.cc:859
+#line 1614 "d2_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1838,46 +1865,47 @@ namespace isc { namespace d2 {
   }
 
 
-  const signed char D2Parser::yypact_ninf_ = -104;
+  const signed char D2Parser::yypact_ninf_ = -108;
 
   const signed char D2Parser::yytable_ninf_ = -1;
 
   const short int
   D2Parser::yypact_[] =
   {
-      29,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-      11,    -2,    16,    28,    37,    97,    81,    98,    99,   100,
-    -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,    -2,    15,
-       2,     3,    10,   101,     4,   102,    -5,   103,  -104,   106,
-     104,   110,    96,   112,  -104,  -104,  -104,  -104,   113,  -104,
-      12,  -104,  -104,  -104,  -104,  -104,  -104,   114,   116,  -104,
-    -104,  -104,  -104,  -104,  -104,    23,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,  -104,  -104,   118,  -104,  -104,  -104,
-      24,  -104,  -104,  -104,  -104,  -104,  -104,   117,   121,  -104,
-    -104,  -104,  -104,  -104,    33,  -104,  -104,  -104,  -104,  -104,
-     119,   123,  -104,  -104,   124,  -104,  -104,    51,  -104,  -104,
-    -104,  -104,  -104,    58,  -104,  -104,    -2,    -2,  -104,    69,
-     126,   127,   128,   129,  -104,     2,  -104,   130,    87,    88,
-     133,   136,   137,   138,   139,     3,  -104,   140,   105,   141,
-     142,    10,  -104,    10,  -104,   101,   143,   144,   145,     4,
-    -104,     4,  -104,   102,   146,   107,   147,    -5,  -104,    -5,
-     103,  -104,  -104,  -104,   148,    -2,    -2,   149,   150,  -104,
-     111,  -104,  -104,    82,   134,   152,   153,   156,  -104,   115,
-    -104,   120,   122,  -104,    55,  -104,   125,   158,   135,  -104,
-      57,  -104,   151,  -104,   154,  -104,    73,  -104,    -2,  -104,
-    -104,     3,   132,  -104,  -104,  -104,  -104,  -104,   -13,   -13,
-     101,  -104,  -104,  -104,  -104,  -104,   103,  -104,  -104,  -104,
-    -104,  -104,  -104,    74,  -104,    75,  -104,  -104,  -104,  -104,
-      76,  -104,  -104,  -104,    77,   159,    90,  -104,   162,   132,
-    -104,   164,   -13,  -104,  -104,  -104,  -104,   165,  -104,   168,
-    -104,   167,   102,  -104,    91,  -104,   169,    19,   167,  -104,
-    -104,  -104,  -104,   172,  -104,  -104,    83,  -104,  -104,  -104,
-    -104,  -104,  -104,   173,   176,   155,   177,    19,  -104,   157,
-     178,  -104,   160,  -104,  -104,   179,  -104,  -104,    95,  -104,
-     161,   179,  -104,  -104,    84,  -104,  -104,   180,   161,  -104,
-     163,  -104,  -104
+      20,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+      11,    -2,    22,    94,    99,    37,   100,   103,   102,   105,
+    -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,    -2,    34,
+       2,     3,     6,   107,     7,   108,    -5,   109,  -108,   106,
+      91,   113,   110,   117,  -108,  -108,  -108,  -108,   118,  -108,
+      12,  -108,  -108,  -108,  -108,  -108,  -108,   119,   120,  -108,
+    -108,  -108,  -108,  -108,  -108,    51,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,  -108,  -108,   121,  -108,  -108,  -108,
+      67,  -108,  -108,  -108,  -108,  -108,  -108,   122,   123,  -108,
+    -108,  -108,  -108,  -108,    68,  -108,  -108,  -108,  -108,  -108,
+     124,   128,  -108,  -108,   129,  -108,  -108,    69,  -108,  -108,
+    -108,  -108,  -108,    35,  -108,  -108,    -2,    -2,  -108,    82,
+     130,   131,   132,   133,  -108,     2,  -108,   136,    92,    93,
+     137,   138,   141,   142,   143,     3,  -108,   144,    98,   146,
+     147,     6,  -108,     6,  -108,   107,   148,   149,   150,     7,
+    -108,     7,  -108,   108,   151,   111,   152,    -5,  -108,    -5,
+     109,  -108,  -108,  -108,   153,    -2,    -2,   154,   156,  -108,
+     114,  -108,  -108,    87,   139,   158,   159,   155,  -108,   125,
+    -108,   126,   127,  -108,    70,  -108,   134,   162,   135,  -108,
+      71,  -108,   140,  -108,   145,  -108,    77,  -108,    -2,  -108,
+    -108,     3,   157,  -108,  -108,  -108,  -108,  -108,   -13,   -13,
+     107,  -108,  -108,  -108,  -108,  -108,   109,  -108,  -108,  -108,
+    -108,  -108,  -108,    78,  -108,    79,  -108,  -108,  -108,  -108,
+      80,  -108,  -108,  -108,    88,   163,    52,  -108,   164,   157,
+    -108,   166,   -13,  -108,  -108,  -108,  -108,   167,  -108,   168,
+    -108,   173,   108,  -108,    96,  -108,   175,    10,   173,  -108,
+    -108,  -108,  -108,   170,  -108,  -108,    89,  -108,  -108,  -108,
+    -108,  -108,  -108,   178,   179,   160,   182,    10,  -108,   165,
+     183,  -108,   169,  -108,  -108,   180,  -108,  -108,    97,  -108,
+     -12,   180,  -108,  -108,   187,   188,   189,    90,  -108,  -108,
+    -108,  -108,  -108,  -108,   190,   161,   171,   172,   -12,  -108,
+     174,  -108,  -108,  -108,  -108,  -108
   };
 
   const unsigned char
@@ -1914,26 +1942,28 @@ namespace isc { namespace d2 {
       86,   176,   181,     0,   179,   175,     0,   169,   171,   173,
      174,   172,   166,     0,     0,     0,     0,     0,   168,     0,
        0,   178,     0,   170,   177,     0,   180,   185,     0,   183,
-       0,     0,   182,   189,     0,   187,   184,     0,     0,   186,
-       0,   188,   190
+       0,     0,   182,   193,     0,     0,     0,     0,   187,   189,
+     190,   191,   192,   184,     0,     0,     0,     0,     0,   186,
+       0,   195,   196,   197,   188,   194
   };
 
   const signed char
   D2Parser::yypgoto_[] =
   {
-    -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,   -47,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,   -50,  -104,  -104,  -104,    40,  -104,  -104,  -104,  -104,
-     -34,    34,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,  -104,   -41,  -104,   -72,  -104,  -104,
-    -104,  -104,   -81,  -104,    20,  -104,  -104,  -104,    21,    25,
-    -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,   -39,    22,
-    -104,  -104,  -104,    26,    18,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,   -31,  -104,    35,  -104,  -104,  -104,
-      43,    47,  -104,  -104,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,  -104,  -104,  -104,  -104,   -48,  -104,  -104,  -104,
-     -69,  -104,  -104,   -84,  -104,  -104,  -104,  -104,  -104,  -104,
-    -104,  -104,   -97,  -104,  -104,  -103,  -104
+    -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,   -47,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,   -50,  -108,  -108,  -108,    13,  -108,  -108,  -108,  -108,
+     -25,    42,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,  -108,   -31,  -108,   -63,  -108,  -108,
+    -108,  -108,   -72,  -108,    28,  -108,  -108,  -108,    31,    36,
+    -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,   -33,    24,
+    -108,  -108,  -108,    27,    30,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,   -22,  -108,    44,  -108,  -108,  -108,
+      47,    55,  -108,  -108,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,  -108,  -108,  -108,  -108,   -46,  -108,  -108,  -108,
+     -61,  -108,  -108,   -79,  -108,  -108,  -108,  -108,  -108,  -108,
+    -108,  -108,   -91,  -108,  -108,  -107,  -108,  -108,  -108,  -108,
+    -108
   };
 
   const short int
@@ -1951,7 +1981,8 @@ namespace isc { namespace d2 {
      100,   101,   102,   160,   103,   157,   104,   105,   159,    73,
      140,    74,   141,    75,   143,   245,   246,   247,   258,   274,
      275,   277,   286,   287,   288,   293,   289,   290,   296,   291,
-     294,   308,   309,   310,   314,   315,   317
+     294,   308,   309,   310,   317,   318,   319,   324,   320,   321,
+     322
   };
 
   const unsigned short int
@@ -1959,27 +1990,27 @@ namespace isc { namespace d2 {
   {
       69,    58,    99,    21,   113,    22,   126,    23,   123,   124,
      248,    20,    64,    65,    66,   145,    76,    77,    78,    79,
-     146,   125,    80,    32,    81,    82,   155,   161,   110,   111,
-      83,   156,   162,    67,    68,    34,   169,   112,    95,    96,
-      97,   170,    68,    98,    36,    24,    25,    26,    27,    68,
-      68,    68,   281,   282,   177,   283,   284,    68,   161,   178,
-     169,   180,    61,   234,   181,   238,    68,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,   177,   155,   259,   262,
-     262,   241,   257,   260,   263,   264,   297,   318,    40,   182,
-     183,   298,   319,   180,   278,    69,   266,   279,   311,   224,
-     225,   312,    38,    42,   138,    46,    44,   136,   106,   119,
-     132,    99,   135,    99,   137,   139,   184,   144,   148,   113,
-     149,   113,   158,   164,   165,   172,   173,   126,   175,   126,
-     185,   186,   187,   188,   190,   191,   192,   193,   219,   220,
-     194,   195,   196,   197,   199,   201,   202,   206,   207,   208,
-     212,   214,   218,   200,   227,   213,   221,   222,   223,   228,
-     229,   230,   231,   236,   244,   265,   267,   232,   269,   233,
-     271,   242,   235,   272,   273,   280,   295,   299,   249,   249,
-     300,   302,   237,   305,   320,   189,   307,   243,   254,   198,
-     270,   276,   210,   211,   209,   215,   313,   256,   239,   255,
-     205,   240,   217,   301,   304,   216,   204,   306,   203,   292,
-     322,   268,   249,   303,   316,   321,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   285,     0,     0,
+     146,   125,    80,   313,    81,    82,   314,   315,   316,    32,
+      83,   110,   111,    67,    95,    96,    97,    68,   180,    98,
+     112,   181,    38,   281,   282,    68,   283,   284,    24,    25,
+      26,    27,    68,    68,   155,   180,    68,    68,   266,   156,
+      68,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+     161,   169,   177,   161,   169,   162,   170,   178,   234,   238,
+     177,   155,   259,   262,    61,   241,   257,   260,   263,   182,
+     183,   262,   297,   328,   136,    69,   264,   298,   329,   278,
+     311,    34,   279,   312,   224,   225,    36,    40,    42,    44,
+      46,    99,   135,    99,   106,   119,   132,   137,   138,   113,
+     139,   113,   144,   148,   149,   158,   165,   126,   164,   126,
+     172,   173,   184,   175,   185,   186,   187,   188,   219,   220,
+     190,   193,   194,   191,   192,   195,   196,   197,   199,   200,
+     201,   202,   206,   207,   208,   212,   214,   218,   189,   227,
+     230,   221,   213,   222,   223,   228,   229,   236,   267,   265,
+     269,   242,   271,   272,   295,   231,   232,   233,   249,   249,
+     273,   280,   299,   300,   235,   237,   302,   307,   305,   244,
+     239,   325,   326,   327,   330,   240,   243,   198,   254,   270,
+     276,   211,   210,   256,   217,   209,   216,   215,   255,   205,
+     204,   301,   249,   268,   331,   304,   203,   292,   303,   306,
+     323,   334,   332,   333,   335,     0,     0,   285,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   285
   };
@@ -1989,27 +2020,27 @@ namespace isc { namespace d2 {
   {
       50,    48,    52,     5,    54,     7,    56,     9,    13,    14,
       23,     0,    10,    11,    12,     3,    13,    14,    15,    16,
-       8,    26,    19,     7,    21,    22,     3,     3,    24,    25,
-      27,     8,     8,    31,    47,     7,     3,    33,    28,    29,
-      30,     8,    47,    33,     7,    47,    48,    49,    50,    47,
-      47,    47,    33,    34,     3,    36,    37,    47,     3,     8,
-       3,     3,    47,     8,     6,     8,    47,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,     3,     3,     3,     3,
-       3,     8,     8,     8,     8,     8,     3,     3,     7,   136,
-     137,     8,     8,     3,     3,   145,     6,     6,     3,    17,
-      18,     6,     5,     5,     8,     5,     7,     3,     7,     7,
-       7,   161,     6,   163,     4,     3,    47,     4,     4,   169,
-       4,   171,     4,     6,     3,     6,     3,   177,     4,   179,
-       4,     4,     4,     4,     4,    48,    48,     4,   185,   186,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,    48,    20,    48,     7,     7,    47,     7,
-       7,     5,    47,     5,    32,     6,     4,    47,     4,    47,
-       5,   218,    47,     5,     7,     6,     4,     4,   228,   229,
-       4,     4,    47,     5,     4,   145,     7,   221,   229,   155,
-     262,   272,   171,   173,   169,   177,    35,   236,    47,   230,
-     165,    47,   180,    48,    47,   179,   163,    47,   161,   278,
-      47,   259,   262,   297,   311,   318,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   277,    -1,    -1,
+       8,    26,    19,    35,    21,    22,    38,    39,    40,     7,
+      27,    24,    25,    31,    28,    29,    30,    50,     3,    33,
+      33,     6,     5,    33,    34,    50,    36,    37,    50,    51,
+      52,    53,    50,    50,     3,     3,    50,    50,     6,     8,
+      50,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+       3,     3,     3,     3,     3,     8,     8,     8,     8,     8,
+       3,     3,     3,     3,    50,     8,     8,     8,     8,   136,
+     137,     3,     3,     3,     3,   145,     8,     8,     8,     3,
+       3,     7,     6,     6,    17,    18,     7,     7,     5,     7,
+       5,   161,     6,   163,     7,     7,     7,     4,     8,   169,
+       3,   171,     4,     4,     4,     4,     3,   177,     6,   179,
+       6,     3,    50,     4,     4,     4,     4,     4,   185,   186,
+       4,     4,     4,    51,    51,     4,     4,     4,     4,    51,
+       4,     4,     4,     4,     4,     4,     4,     4,   145,    20,
+       5,     7,    51,     7,    50,     7,     7,     5,     4,     6,
+       4,   218,     5,     5,     4,    50,    50,    50,   228,   229,
+       7,     6,     4,     4,    50,    50,     4,     7,     5,    32,
+      50,     4,     4,     4,     4,    50,   221,   155,   229,   262,
+     272,   173,   171,   236,   180,   169,   179,   177,   230,   165,
+     163,    51,   262,   259,    53,    50,   161,   278,   297,    50,
+     311,   328,    51,    51,    50,    -1,    -1,   277,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   297
   };
@@ -2017,64 +2048,65 @@ namespace isc { namespace d2 {
   const unsigned char
   D2Parser::yystos_[] =
   {
-       0,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-       0,     5,     7,     9,    47,    48,    49,    50,    62,    63,
-      64,    68,     7,    73,     7,    79,     7,   139,     5,   133,
-       7,   107,     5,   101,     7,   122,     5,   117,    69,    65,
-      74,    80,   140,   134,   108,   102,   123,   118,    62,    70,
-      71,    47,    66,    67,    10,    11,    12,    31,    47,    72,
-      75,    76,    77,   150,   152,   154,    13,    14,    15,    16,
-      19,    21,    22,    27,    72,    81,    82,    83,    85,    86,
-      87,    90,    92,    94,   131,    28,    29,    30,    33,    72,
-     141,   142,   143,   145,   147,   148,     7,   135,   136,   137,
-      24,    25,    33,    72,   109,   110,   111,   113,   115,     7,
-     103,   104,   105,    13,    14,    26,    72,   124,   125,   126,
-     128,   130,     7,   119,   120,     6,     3,     4,     8,     3,
-     151,   153,    78,   155,     4,     3,     8,    84,     4,     4,
-      88,    91,    93,    95,   132,     3,     8,   146,     4,   149,
-     144,     3,     8,   138,     6,     3,   114,   116,   112,     3,
-       8,   106,     6,     3,   129,     4,   127,     3,     8,   121,
-       3,     6,    62,    62,    47,     4,     4,     4,     4,    76,
-       4,    48,    48,     4,     4,     4,     4,     4,    82,     4,
-      48,     4,     4,   142,   141,   137,     4,     4,     4,   110,
-     109,   105,     4,    48,     4,   125,   124,   120,     4,    62,
-      62,     7,     7,    47,    17,    18,    89,    20,     7,     7,
-       5,    47,    47,    47,     8,    47,     5,    47,     8,    47,
-      47,     8,    62,    81,    32,   156,   157,   158,    23,    72,
-      96,    97,    98,    99,    96,   135,   119,     8,   159,     3,
-       8,   100,     3,     8,     8,     6,     6,     4,   157,     4,
-      98,     5,     5,     7,   160,   161,   103,   162,     3,     6,
-       6,    33,    34,    36,    37,    72,   163,   164,   165,   167,
-     168,   170,   161,   166,   171,     4,   169,     3,     8,     4,
-       4,    48,     4,   164,    47,     5,    47,     7,   172,   173,
-     174,     3,     6,    35,   175,   176,   173,   177,     3,     8,
-       4,   176,    47
+       0,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+       0,     5,     7,     9,    50,    51,    52,    53,    65,    66,
+      67,    71,     7,    76,     7,    82,     7,   142,     5,   136,
+       7,   110,     5,   104,     7,   125,     5,   120,    72,    68,
+      77,    83,   143,   137,   111,   105,   126,   121,    65,    73,
+      74,    50,    69,    70,    10,    11,    12,    31,    50,    75,
+      78,    79,    80,   153,   155,   157,    13,    14,    15,    16,
+      19,    21,    22,    27,    75,    84,    85,    86,    88,    89,
+      90,    93,    95,    97,   134,    28,    29,    30,    33,    75,
+     144,   145,   146,   148,   150,   151,     7,   138,   139,   140,
+      24,    25,    33,    75,   112,   113,   114,   116,   118,     7,
+     106,   107,   108,    13,    14,    26,    75,   127,   128,   129,
+     131,   133,     7,   122,   123,     6,     3,     4,     8,     3,
+     154,   156,    81,   158,     4,     3,     8,    87,     4,     4,
+      91,    94,    96,    98,   135,     3,     8,   149,     4,   152,
+     147,     3,     8,   141,     6,     3,   117,   119,   115,     3,
+       8,   109,     6,     3,   132,     4,   130,     3,     8,   124,
+       3,     6,    65,    65,    50,     4,     4,     4,     4,    79,
+       4,    51,    51,     4,     4,     4,     4,     4,    85,     4,
+      51,     4,     4,   145,   144,   140,     4,     4,     4,   113,
+     112,   108,     4,    51,     4,   128,   127,   123,     4,    65,
+      65,     7,     7,    50,    17,    18,    92,    20,     7,     7,
+       5,    50,    50,    50,     8,    50,     5,    50,     8,    50,
+      50,     8,    65,    84,    32,   159,   160,   161,    23,    75,
+      99,   100,   101,   102,    99,   138,   122,     8,   162,     3,
+       8,   103,     3,     8,     8,     6,     6,     4,   160,     4,
+     101,     5,     5,     7,   163,   164,   106,   165,     3,     6,
+       6,    33,    34,    36,    37,    75,   166,   167,   168,   170,
+     171,   173,   164,   169,   174,     4,   172,     3,     8,     4,
+       4,    51,     4,   167,    50,     5,    50,     7,   175,   176,
+     177,     3,     6,    35,    38,    39,    40,   178,   179,   180,
+     182,   183,   184,   176,   181,     4,     4,     4,     3,     8,
+       4,    53,    51,    51,   179,    50
   };
 
   const unsigned char
   D2Parser::yyr1_[] =
   {
-       0,    51,    53,    52,    54,    52,    55,    52,    56,    52,
-      57,    52,    58,    52,    59,    52,    60,    52,    61,    52,
-      62,    62,    62,    62,    62,    62,    62,    63,    65,    64,
-      66,    66,    67,    67,    69,    68,    70,    70,    71,    71,
-      72,    74,    73,    75,    75,    76,    76,    76,    76,    76,
-      78,    77,    80,    79,    81,    81,    82,    82,    82,    82,
-      82,    82,    82,    82,    82,    84,    83,    85,    86,    88,
-      87,    89,    89,    91,    90,    93,    92,    95,    94,    96,
-      96,    97,    97,    98,    98,   100,    99,   102,   101,   103,
-     103,   104,   104,   106,   105,   108,   107,   109,   109,   110,
-     110,   110,   110,   112,   111,   114,   113,   116,   115,   118,
-     117,   119,   119,   121,   120,   123,   122,   124,   124,   125,
-     125,   125,   125,   127,   126,   129,   128,   130,   132,   131,
-     134,   133,   135,   135,   136,   136,   138,   137,   140,   139,
-     141,   141,   142,   142,   142,   142,   142,   144,   143,   146,
-     145,   147,   149,   148,   151,   150,   153,   152,   155,   154,
-     156,   156,   157,   159,   158,   160,   160,   162,   161,   163,
-     163,   164,   164,   164,   164,   164,   166,   165,   167,   169,
-     168,   171,   170,   172,   172,   174,   173,   175,   175,   177,
-     176
+       0,    54,    56,    55,    57,    55,    58,    55,    59,    55,
+      60,    55,    61,    55,    62,    55,    63,    55,    64,    55,
+      65,    65,    65,    65,    65,    65,    65,    66,    68,    67,
+      69,    69,    70,    70,    72,    71,    73,    73,    74,    74,
+      75,    77,    76,    78,    78,    79,    79,    79,    79,    79,
+      81,    80,    83,    82,    84,    84,    85,    85,    85,    85,
+      85,    85,    85,    85,    85,    87,    86,    88,    89,    91,
+      90,    92,    92,    94,    93,    96,    95,    98,    97,    99,
+      99,   100,   100,   101,   101,   103,   102,   105,   104,   106,
+     106,   107,   107,   109,   108,   111,   110,   112,   112,   113,
+     113,   113,   113,   115,   114,   117,   116,   119,   118,   121,
+     120,   122,   122,   124,   123,   126,   125,   127,   127,   128,
+     128,   128,   128,   130,   129,   132,   131,   133,   135,   134,
+     137,   136,   138,   138,   139,   139,   141,   140,   143,   142,
+     144,   144,   145,   145,   145,   145,   145,   147,   146,   149,
+     148,   150,   152,   151,   154,   153,   156,   155,   158,   157,
+     159,   159,   160,   162,   161,   163,   163,   165,   164,   166,
+     166,   167,   167,   167,   167,   167,   169,   168,   170,   172,
+     171,   174,   173,   175,   175,   177,   176,   178,   178,   179,
+     179,   179,   179,   181,   180,   182,   183,   184
   };
 
   const unsigned char
@@ -2098,8 +2130,8 @@ namespace isc { namespace d2 {
        4,     3,     0,     4,     0,     4,     0,     4,     0,     6,
        1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
        3,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     0,     6,     1,     3,     0,     4,     1,     3,     0,
-       4
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -2117,21 +2149,21 @@ namespace isc { namespace d2 {
   "\"key-name\"", "\"dns-servers\"", "\"hostname\"", "\"tsig-keys\"",
   "\"algorithm\"", "\"digest-bits\"", "\"secret\"", "\"Logging\"",
   "\"loggers\"", "\"name\"", "\"output_options\"", "\"output\"",
-  "\"debuglevel\"", "\"severity\"", "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", "map2", "$@10",
-  "map_content", "not_empty_map", "list_generic", "$@11", "list_content",
-  "not_empty_list", "unknown_map_entry", "syntax_map", "$@12",
-  "global_objects", "global_object", "dhcpddns_object", "$@13",
-  "sub_dhcpddns", "$@14", "dhcpddns_params", "dhcpddns_param",
-  "ip_address", "$@15", "port", "dns_server_timeout", "ncr_protocol",
-  "$@16", "ncr_protocol_value", "ncr_format", "$@17", "forward_ddns",
-  "$@18", "reverse_ddns", "$@19", "ddns_mgr_params",
-  "not_empty_ddns_mgr_params", "ddns_mgr_param", "ddns_domains", "$@20",
-  "sub_ddns_domains", "$@21", "ddns_domain_list",
+  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
+  "\"maxver\"", "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", "map2", "$@10", "map_content", "not_empty_map",
+  "list_generic", "$@11", "list_content", "not_empty_list",
+  "unknown_map_entry", "syntax_map", "$@12", "global_objects",
+  "global_object", "dhcpddns_object", "$@13", "sub_dhcpddns", "$@14",
+  "dhcpddns_params", "dhcpddns_param", "ip_address", "$@15", "port",
+  "dns_server_timeout", "ncr_protocol", "$@16", "ncr_protocol_value",
+  "ncr_format", "$@17", "forward_ddns", "$@18", "reverse_ddns", "$@19",
+  "ddns_mgr_params", "not_empty_ddns_mgr_params", "ddns_mgr_param",
+  "ddns_domains", "$@20", "sub_ddns_domains", "$@21", "ddns_domain_list",
   "not_empty_ddns_domain_list", "ddns_domain", "$@22", "sub_ddns_domain",
   "$@23", "ddns_domain_params", "ddns_domain_param", "ddns_domain_name",
   "$@24", "ddns_domain_key_name", "$@25", "dns_servers", "$@26",
@@ -2147,34 +2179,35 @@ namespace isc { namespace d2 {
   "logging_params", "logging_param", "loggers", "$@42", "loggers_entries",
   "logger_entry", "$@43", "logger_params", "logger_param", "name", "$@44",
   "debuglevel", "severity", "$@45", "output_options_list", "$@46",
-  "output_options_list_content", "output_entry", "$@47", "output_params",
-  "output_param", "$@48", YY_NULLPTR
+  "output_options_list_content", "output_entry", "$@47",
+  "output_params_list", "output_params", "output", "$@48", "flush",
+  "maxsize", "maxver", YY_NULLPTR
   };
 
 #if D2_PARSER_DEBUG
   const unsigned short int
   D2Parser::yyrline_[] =
   {
-       0,   113,   113,   113,   114,   114,   115,   115,   116,   116,
-     117,   117,   118,   118,   119,   119,   120,   120,   121,   121,
-     129,   130,   131,   132,   133,   134,   135,   138,   143,   143,
-     155,   156,   159,   163,   170,   170,   177,   178,   181,   185,
-     196,   206,   206,   218,   219,   223,   224,   225,   226,   227,
-     232,   232,   242,   242,   250,   251,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   266,   266,   274,   282,   291,
-     291,   299,   300,   303,   303,   311,   311,   321,   321,   331,
-     332,   335,   336,   339,   340,   345,   345,   355,   355,   362,
-     363,   366,   367,   370,   370,   378,   378,   385,   386,   389,
-     390,   391,   392,   396,   396,   408,   408,   420,   420,   430,
-     430,   437,   438,   441,   441,   449,   449,   456,   457,   460,
-     461,   462,   463,   466,   466,   478,   478,   486,   500,   500,
-     510,   510,   517,   518,   521,   522,   525,   525,   533,   533,
-     542,   543,   546,   547,   548,   549,   550,   553,   553,   565,
-     565,   576,   584,   584,   599,   599,   606,   606,   618,   618,
-     631,   632,   636,   640,   640,   652,   653,   657,   657,   665,
-     666,   669,   670,   671,   672,   673,   676,   676,   684,   688,
-     688,   696,   696,   706,   707,   710,   710,   718,   719,   722,
-     722
+       0,   116,   116,   116,   117,   117,   118,   118,   119,   119,
+     120,   120,   121,   121,   122,   122,   123,   123,   124,   124,
+     132,   133,   134,   135,   136,   137,   138,   141,   146,   146,
+     158,   159,   162,   166,   173,   173,   180,   181,   184,   188,
+     199,   209,   209,   221,   222,   226,   227,   228,   229,   230,
+     235,   235,   245,   245,   253,   254,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   269,   269,   277,   285,   294,
+     294,   302,   303,   306,   306,   314,   314,   324,   324,   334,
+     335,   338,   339,   342,   343,   348,   348,   358,   358,   365,
+     366,   369,   370,   373,   373,   381,   381,   388,   389,   392,
+     393,   394,   395,   399,   399,   411,   411,   423,   423,   433,
+     433,   440,   441,   444,   444,   452,   452,   459,   460,   463,
+     464,   465,   466,   469,   469,   481,   481,   489,   503,   503,
+     513,   513,   520,   521,   524,   525,   528,   528,   536,   536,
+     545,   546,   549,   550,   551,   552,   553,   556,   556,   568,
+     568,   579,   587,   587,   602,   602,   609,   609,   621,   621,
+     634,   635,   639,   643,   643,   655,   656,   660,   660,   668,
+     669,   672,   673,   674,   675,   676,   679,   679,   687,   691,
+     691,   699,   699,   709,   710,   713,   713,   721,   722,   725,
+     726,   727,   728,   731,   731,   739,   744,   749
   };
 
   // Print the state stack on the debug stream.
@@ -2209,8 +2242,8 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy" // lalr1.cc:1167
 } } // isc::d2
-#line 2213 "d2_parser.cc" // lalr1.cc:1167
-#line 730 "d2_parser.yy" // lalr1.cc:1168
+#line 2246 "d2_parser.cc" // lalr1.cc:1167
+#line 754 "d2_parser.yy" // lalr1.cc:1168
 
 
 void
index f9089359b610cea7ebb9b0814db7eb3b121a2cdf..e8e7b72e657965ce2d3c948b8665c0b3f606cd8f 100644 (file)
@@ -377,19 +377,22 @@ namespace isc { namespace d2 {
         TOKEN_OUTPUT = 290,
         TOKEN_DEBUGLEVEL = 291,
         TOKEN_SEVERITY = 292,
-        TOKEN_TOPLEVEL_JSON = 293,
-        TOKEN_TOPLEVEL_DHCPDDNS = 294,
-        TOKEN_SUB_DHCPDDNS = 295,
-        TOKEN_SUB_TSIG_KEY = 296,
-        TOKEN_SUB_TSIG_KEYS = 297,
-        TOKEN_SUB_DDNS_DOMAIN = 298,
-        TOKEN_SUB_DDNS_DOMAINS = 299,
-        TOKEN_SUB_DNS_SERVER = 300,
-        TOKEN_SUB_DNS_SERVERS = 301,
-        TOKEN_STRING = 302,
-        TOKEN_INTEGER = 303,
-        TOKEN_FLOAT = 304,
-        TOKEN_BOOLEAN = 305
+        TOKEN_FLUSH = 293,
+        TOKEN_MAXSIZE = 294,
+        TOKEN_MAXVER = 295,
+        TOKEN_TOPLEVEL_JSON = 296,
+        TOKEN_TOPLEVEL_DHCPDDNS = 297,
+        TOKEN_SUB_DHCPDDNS = 298,
+        TOKEN_SUB_TSIG_KEY = 299,
+        TOKEN_SUB_TSIG_KEYS = 300,
+        TOKEN_SUB_DDNS_DOMAIN = 301,
+        TOKEN_SUB_DDNS_DOMAINS = 302,
+        TOKEN_SUB_DNS_SERVER = 303,
+        TOKEN_SUB_DNS_SERVERS = 304,
+        TOKEN_STRING = 305,
+        TOKEN_INTEGER = 306,
+        TOKEN_FLOAT = 307,
+        TOKEN_BOOLEAN = 308
       };
     };
 
@@ -648,6 +651,18 @@ namespace isc { namespace d2 {
     symbol_type
     make_SEVERITY (const location_type& l);
 
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
     static inline
     symbol_type
     make_TOPLEVEL_JSON (const location_type& l);
@@ -906,11 +921,11 @@ namespace isc { namespace d2 {
     {
       yyeof_ = 0,
       yylast_ = 247,     ///< Last index in yytable_.
-      yynnts_ = 127,  ///< Number of nonterminal symbols.
+      yynnts_ = 131,  ///< Number of nonterminal symbols.
       yyfinal_ = 20, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 51  ///< Number of tokens.
+      yyntokens_ = 54  ///< Number of tokens.
     };
 
 
@@ -957,9 +972,9 @@ namespace isc { namespace d2 {
       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,    46,    47,    48,    49,    50
+      45,    46,    47,    48,    49,    50,    51,    52,    53
     };
-    const unsigned int user_token_number_max_ = 305;
+    const unsigned int user_token_number_max_ = 308;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -992,24 +1007,24 @@ namespace isc { namespace d2 {
   {
       switch (other.type_get ())
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1030,24 +1045,24 @@ namespace isc { namespace d2 {
     (void) v;
       switch (this->type_get ())
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1127,24 +1142,24 @@ namespace isc { namespace d2 {
     // Type destructor.
     switch (yytype)
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1171,24 +1186,24 @@ namespace isc { namespace d2 {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 62: // value
-      case 89: // ncr_protocol_value
+      case 65: // value
+      case 92: // ncr_protocol_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 50: // "boolean"
+      case 53: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 49: // "floating point"
+      case 52: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 48: // "integer"
+      case 51: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 47: // "constant string"
+      case 50: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1252,7 +1267,7 @@ namespace isc { namespace d2 {
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305
+     305,   306,   307,   308
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1473,6 +1488,24 @@ namespace isc { namespace d2 {
     return symbol_type (token::TOKEN_SEVERITY, l);
   }
 
+  D2Parser::symbol_type
+  D2Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
+
+  D2Parser::symbol_type
+  D2Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
+
+  D2Parser::symbol_type
+  D2Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
+
   D2Parser::symbol_type
   D2Parser::make_TOPLEVEL_JSON (const location_type& l)
   {
@@ -1554,7 +1587,7 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy" // lalr1.cc:377
 } } // isc::d2
-#line 1558 "d2_parser.h" // lalr1.cc:377
+#line 1591 "d2_parser.h" // lalr1.cc:377
 
 
 
index 9eaa5ec020f930b4a4c21ec8111513c1f58a0ec5..852d394c3c11a36f945f4ab517404d16dce2504a 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702171216
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 25d47b4b0dc49effdceebecb6e14f6e2c5821593..9fb5afd98d66564e802da74554305d77910ca4f7 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702171216
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 73774578e823894be5d62eac780959a1b625d321..150193d0f886b341d9567bb8ee157ae2e30bf24d 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702171216
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index e0155ff3cf8c441f8504b164519b42f05d5b390b..a83dc449fe5e48984d2038fd6cef1556e2dc584d 100644 (file)
@@ -524,8 +524,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to parser4_text[] 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 144
-#define YY_END_OF_BUFFER 145
+#define YY_NUM_RULES 147
+#define YY_END_OF_BUFFER 148
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -533,21 +533,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1172] =
+static const flex_int16_t yy_accept[1182] =
     {   0,
-      137,  137,    0,    0,    0,    0,    0,    0,    0,    0,
-      145,  143,   10,   11,  143,    1,  137,  134,  137,  137,
-      143,  136,  135,  143,  143,  143,  143,  143,  130,  131,
-      143,  143,  143,  132,  133,    5,    5,    5,  143,  143,
-      143,   10,   11,    0,    0,  126,    0,    0,    0,    0,
+      140,  140,    0,    0,    0,    0,    0,    0,    0,    0,
+      148,  146,   10,   11,  146,    1,  140,  137,  140,  140,
+      146,  139,  138,  146,  146,  146,  146,  146,  133,  134,
+      146,  146,  146,  135,  136,    5,    5,    5,  146,  146,
+      146,   10,   11,    0,    0,  129,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    1,  137,
-      137,    0,  136,  137,    3,    2,    6,    0,  137,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  140,
+      140,    0,  139,  140,    3,    2,    6,    0,  140,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  129,    0,    0,    0,    0,    0,
+      130,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  132,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -555,7 +555,7 @@ static const flex_int16_t yy_accept[1172] =
         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,    0,    0,    0,    0,    0,
-      128,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      131,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   50,    0,    0,
@@ -563,106 +563,107 @@ static const flex_int16_t yy_accept[1172] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  142,  140,    0,  139,  138,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  108,    0,
-      107,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  145,  143,    0,  142,  141,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  111,    0,
+      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,   25,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   15,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   15,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   16,    0,    0,    0,  141,  138,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  109,    0,    0,  111,
-        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
-        0,    0,   43,    0,    0,    0,    0,   65,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   28,    0,    0,
+        0,    0,    0,   16,    0,    0,    0,  144,  141,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  112,    0,
+        0,  114,    0,    0,    0,    0,    0,    0,    0,   53,
+        0,    0,    0,    0,   43,    0,    0,    0,    0,   68,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   28,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   42,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   45,    0,   29,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   63,   21,    0,   26,    0,    0,
-        0,    0,    0,    0,    0,   12,  116,    0,  113,    0,
-      112,    0,    0,    0,   75,    0,    0,    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,    0,    0,    0,    0,    0,    0,   45,    0,
+       29,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   66,   21,
+        0,   26,    0,    0,    0,    0,    0,    0,    0,   12,
+      119,    0,  116,    0,  115,    0,    0,    0,   78,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   60,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   44,    0,    0,    0,    0,    0,    0,    0,   76,
-        0,    0,    0,    0,    0,    0,    0,   71,    0,    0,
-        0,    0,    7,    0,    0,  114,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   44,    0,
+        0,    0,    0,    0,    0,    0,   79,    0,    0,    0,
+        0,    0,    0,    0,   74,    0,    0,    0,    0,    7,
+        0,    0,  117,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   58,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   62,    0,    0,    0,    0,    0,
+       58,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   47,    0,    0,    0,    0,    0,    0,    0,   55,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       47,    0,    0,    0,    0,    0,    0,    0,   55,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   72,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       69,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   80,   56,    0,    0,    0,   22,
+        0,    0,    0,   83,   56,    0,    0,    0,   61,   22,
         0,    0,    0,    0,    0,    0,    0,    0,   30,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   39,    0,    0,
-        0,    0,    0,  117,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  120,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   70,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   73,
         0,    0,    0,    0,   33,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   27,    0,
         0,    0,   20,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   60,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   67,    0,
-        0,    0,    0,    0,    0,   92,    0,    0,    0,    0,
+        0,    0,    0,    0,   63,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   70,    0,
+        0,    0,    0,    0,    0,   95,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   48,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   97,    0,    0,   95,
-        0,    0,    0,    0,    0,    0,    0,  120,    0,    0,
-        0,    0,   68,    0,    0,    0,    0,   72,   59,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   66,    0,   17,    0,   77,    0,    0,    0,
-        0,    0,  101,    0,    0,    0,   40,    0,    0,    0,
-       79,   24,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  100,    0,    0,   98,
+        0,    0,    0,    0,    0,    0,    0,  123,    0,    0,
+        0,    0,   71,    0,    0,    0,    0,   75,   59,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   69,    0,   17,    0,   80,    0,    0,    0,
+        0,    0,  104,    0,    0,    0,   40,    0,    0,    0,
+       82,   24,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   74,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  123,   41,
+        0,    0,   77,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  126,   41,
         0,    0,    0,    0,    0,    0,    0,    0,   36,    0,
-        0,    0,   98,    0,   96,   91,   90,    0,    0,    0,
-        0,    0,  110,    0,    0,   62,    0,    0,    0,    0,
-        0,    0,   88,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  101,    0,   99,   94,   93,    0,    0,    0,
+        0,    0,  113,    0,    0,   65,    0,    0,    0,    0,
+        0,    0,   91,    0,    0,    0,    0,    0,    0,    0,
         0,    0,   49,    0,    0,   31,    0,    0,    0,    0,
-      100,    0,    0,    0,    0,   51,   37,    0,   73,    0,
-        0,   64,    0,    0,   46,    0,  118,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      103,    0,    0,    0,    0,   51,   37,    0,   76,    0,
+        0,   67,    0,    0,   46,    0,  121,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  125,   61,    0,   34,   89,
-        0,    0,  121,   93,    0,    0,    0,    0,    0,    0,
-       19,    0,   18,    0,   99,    0,    0,   57,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  128,   64,    0,   34,   92,
+        0,    0,  124,   96,    0,    0,    0,    0,    0,    0,
+       19,    0,   18,    0,  102,    0,    0,   57,    0,    0,
         0,    0,    0,    0,    0,    0,   35,    0,    0,    0,
-       32,    0,    0,    0,    0,    0,    0,   78,    0,    0,
-      122,    0,    0,    0,    0,    0,    0,    0,    0,  124,
-        0,  119,  115,    0,    0,   14,    0,    0,  106,    0,
-        0,    0,    0,   86,    0,    0,    0,    0,    0,   52,
-        0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
+       32,    0,    0,    0,    0,    0,    0,   81,    0,    0,
+      125,    0,    0,    0,    0,    0,    0,    0,    0,  127,
+        0,  122,  118,    0,    0,   14,    0,    0,  109,    0,
+        0,    0,    0,   89,    0,    0,    0,    0,    0,   52,
 
-        0,   94,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   85,    0,  103,    0,    0,    0,  102,    0,    0,
-        0,   84,    0,    0,    0,  105,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
+        0,   97,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   88,    0,  106,    0,    0,    0,  105,    0,    0,
+        0,   87,    0,    0,    0,  108,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  104,    0,    0,    0,    0,
-        0,    0,   82,   87,   38,    0,    0,    0,   81,    0,
-        0,    0,    0,    0,    0,    0,   54,    0,    0,   83,
+        0,    0,    0,    0,    0,  107,    0,    0,    0,    0,
+        0,    0,   85,   90,   38,    0,    0,    0,   84,    0,
+        0,    0,    0,    0,    0,    0,   54,    0,    0,   86,
         0
     } ;
 
@@ -710,283 +711,287 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1184] =
+static const flex_int16_t yy_base[1194] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1533, 1534,   32, 1529,  141,    0,  201, 1534,  206,   88,
-       11,  213, 1534, 1511,  114,   25,    2,    6, 1534, 1534,
-       73,   11,   17, 1534, 1534, 1534,  104, 1517, 1472,    0,
-     1509,  107, 1524,  217,  247, 1534, 1468,  185, 1474,   93,
-       58, 1466,   91,  209,  200,   14,  273,  190, 1465,  181,
-      186,  189,  223, 1474,   66,  206, 1473,  232,  204,  294,
-      256,  216, 1456,   78,  268,  300,  300, 1475,    0,  329,
-      344,  356,  364,  359, 1534,    0, 1534,  273,  335,  300,
-      335,  289,  353,  354,  299, 1534, 1472, 1511, 1534,  311,
-
-     1534,  375, 1500,  328, 1469,  356,  355, 1464,  350,  359,
-      357,  363,  371, 1507,    0,  426,  359, 1451, 1453, 1449,
-     1457,   74, 1453, 1442, 1443,   89, 1459, 1452, 1452,  213,
-     1443,  350, 1444,  344, 1489, 1493, 1435, 1486, 1428, 1451,
-     1448, 1448, 1442,  337, 1435, 1428, 1433, 1427,  364, 1424,
-     1423, 1437,  365, 1423,  372, 1439,  344,  399,  398, 1436,
-     1437, 1435, 1417, 1419,  403, 1411, 1428, 1420,    0,  403,
-      424,  380,  423,  431,  398, 1419, 1534,    0, 1462,  443,
-     1413,  432,  438, 1421,  442, 1464,  444, 1463,  446, 1462,
-     1534,  490,  456, 1423, 1403, 1419, 1416, 1415,  421, 1456,
-
-     1450, 1416, 1395, 1403, 1398, 1409, 1397, 1409, 1409, 1400,
-     1384, 1388, 1401, 1401, 1393, 1383, 1401, 1534, 1396, 1399,
-     1380, 1379, 1429, 1378, 1388, 1391, 1425, 1386, 1374, 1385,
-     1421, 1368, 1378, 1370, 1367, 1383, 1364, 1363, 1369, 1360,
-     1359, 1366, 1368, 1413, 1371, 1365,  211, 1372, 1367, 1359,
-     1365, 1365, 1346, 1362, 1355, 1362, 1350, 1343, 1357, 1398,
-     1359, 1341, 1349,  471, 1534, 1534,  472, 1534, 1534, 1336,
-        0,  279,  441,  467,  473, 1393, 1346,  456, 1534, 1391,
-     1534, 1385,  526,  442, 1327, 1383, 1329, 1335, 1385, 1342,
-      457, 1534, 1340, 1382, 1337, 1334,  511, 1379, 1373, 1328,
-
-     1323, 1320, 1369, 1328, 1317, 1366, 1314,  496, 1328, 1313,
-     1326, 1313, 1323, 1318, 1325, 1320, 1316,  463, 1314, 1310,
-     1358,  484, 1352, 1304, 1297, 1299, 1303, 1292, 1305,  482,
-     1350, 1305, 1302, 1306, 1534, 1294, 1294, 1306, 1288, 1280,
-     1281, 1302, 1284, 1296, 1295, 1281, 1293, 1292, 1291, 1332,
-     1331, 1534, 1275,  519, 1288, 1534, 1534, 1287,    0, 1276,
-     1268,  465, 1325, 1324, 1282, 1322, 1534, 1270, 1320, 1534,
-      524,  570,  495, 1319, 1275, 1271, 1259, 1534, 1275, 1274,
-     1261, 1260, 1534, 1262, 1259,  446, 1257, 1534, 1268, 1265,
-     1250, 1263, 1258, 1298, 1264, 1246, 1295, 1534, 1244, 1260,
-
-     1292, 1255, 1252, 1253, 1255, 1287, 1240, 1235, 1234, 1283,
-     1229, 1244, 1236, 1284, 1534, 1231, 1227, 1225, 1229, 1222,
-     1232, 1235, 1224, 1219, 1534, 1274, 1534, 1218, 1229, 1266,
-     1219, 1228, 1222, 1226, 1266, 1260, 1224, 1204, 1207, 1206,
-     1214, 1202, 1258, 1200, 1534, 1534, 1205, 1534, 1215, 1249,
-     1211,    0, 1195, 1212, 1250, 1534, 1534, 1198, 1534, 1204,
-     1534,  497,  498,  554, 1534, 1201, 1189, 1240, 1187, 1186,
-     1193, 1186, 1198, 1197, 1197, 1185, 1226, 1186, 1229, 1175,
-     1191, 1190, 1175, 1172, 1186, 1178, 1184, 1175, 1183, 1168,
-     1184, 1166, 1180, 1178, 1161, 1155, 1160, 1175, 1172, 1173,
-
-     1170, 1534, 1156, 1158, 1167, 1203,  526, 1166, 1149, 1150,
-     1147, 1534, 1161, 1140, 1161, 1151, 1194, 1148, 1192, 1534,
-     1139, 1153, 1156, 1188, 1187, 1134, 1185, 1534,   14, 1147,
-     1136, 1138, 1534, 1144, 1134, 1534, 1128, 1183,  526,  520,
-     1136, 1132, 1175,  530, 1174, 1173, 1172, 1126, 1116, 1169,
-     1122, 1132, 1166, 1124, 1111, 1119, 1162, 1166, 1123, 1122,
-     1123, 1116, 1105, 1118, 1121, 1116, 1117, 1114, 1113, 1116,
-     1111, 1152, 1151, 1101, 1091, 1099, 1147, 1096, 1088, 1089,
-     1102, 1534, 1090, 1099, 1098, 1098, 1138, 1081, 1090, 1083,
-     1072, 1076, 1127, 1074, 1084, 1124, 1071,  528,  546, 1065,
-
-      543, 1534, 1126, 1084, 1073, 1077, 1067, 1079, 1120, 1534,
-     1114,  528, 1067, 1075, 1070, 1066, 1073, 1056, 1059, 1055,
-     1072, 1067, 1055, 1051, 1058, 1052, 1062, 1050, 1064, 1052,
-     1534, 1060, 1058, 1049, 1058, 1054, 1095, 1037, 1037, 1050,
-     1035, 1090, 1032, 1033, 1534, 1534, 1041, 1044, 1047, 1534,
-     1046, 1031, 1023,  519, 1028, 1075, 1024, 1078, 1534, 1023,
-     1025, 1025, 1074, 1027, 1015, 1009, 1020, 1029, 1022, 1014,
-     1014, 1013, 1011, 1011, 1062, 1023,  998, 1534, 1054, 1001,
-     1014, 1013,  998, 1534,  545,  553, 1014, 1048, 1011, 1013,
-     1050, 1003,  996,  995,  989,  996,  989, 1043, 1000,  989,
-
-      989,  998,  981,  995,  987, 1030,  996,  978,  977, 1534,
-      993,  974,  596,  973, 1534,   15,    3,   90,  317,  287,
-      354,  500,  516,  503,  530,  525,  553,  541, 1534,  553,
-      559,  555, 1534,  556,  561,  561,  573,  567,  565,  618,
-      564,  564,  621,  567, 1534,  573,  571,  570,  584,  585,
-      590,  629,  603,  608,  582,  582,  634,  579, 1534,  586,
-      591,  598,  639,  640,  589, 1534,  585,  588,  587,  607,
-      604,  609,  610,  596,  604,  613,  594,  615,  655, 1534,
-      610,  657,  660,  622,  625,  613,  609,  616,  667,  616,
-      614,  632,  671,  626,  624,  622,  675,  676,  672,  632,
-
-      637,  630,  639,  627,  637,  633, 1534,  628,  629, 1534,
-      630,  646,  647,  648,  630,  635,  653, 1534,  675,  666,
-      638,  659, 1534,  642,  657,  649,  653, 1534, 1534,  663,
-      698,  647,  700,  649,  707,  652,  663,  655,  661,  657,
-      675,  676, 1534,  674, 1534,  676, 1534,  680,  670,  663,
-      675,  717, 1534,  675,  725,  726, 1534,  675,  682,  724,
-     1534, 1534,  674,  674,  677,  691,  678,  735,  694,  732,
-      738,  688,  740,  741,  742,  703,  687,  699,  704,  719,
-      748,  708,  700,  751,  700,  696,  712,  717,  699,  757,
-      712,  717, 1534,  718,  711,  720,  721,  718,  708,  710,
-
-      767,  716,  713,  770,  766,  709,  724,  774, 1534, 1534,
-      725,  735,  720,  721,  780,  782,  728,  784, 1534,  734,
-      736,  787, 1534,  751, 1534, 1534, 1534,  741,  791,  742,
-      794,  776, 1534,  754,  755, 1534,  742,  742,  745,  745,
-      746,  742, 1534,  764,  750,  751,  766,  766,  769,  769,
-      766,  771, 1534,  763,  773, 1534,  770,  775,  777,  774,
-     1534,  765,  771,  770,  781, 1534, 1534,  820, 1534,  769,
-      775, 1534,  778,  791, 1534,  788, 1534,  785,  808,  828,
-      834,  835,  779,  837,  838,  793,  787,  841,  842,  838,
-      803,  799,  841,  791,  796,  849,  807,  851,  811,  853,
-
-      816,  805,  856,  800,  817,  817,  801,  857,  822,  822,
-      819,  866,  826,  839,  826, 1534, 1534,  870, 1534, 1534,
-      819,  830, 1534, 1534,  820,  869,  814,  819,  877,  827,
-     1534,  833, 1534,  880, 1534,  825,  840, 1534,  878,  846,
-      839,  848,  836,  846,  889,  840, 1534,  891,  892,  839,
-     1534,  843,  895,  842,  841,  899,  854, 1534,  896,  858,
-     1534,  861,  904,  847,  849,  846,  862,  871,  910, 1534,
-      906, 1534, 1534,  871,  908, 1534,  862,  869, 1534,  866,
-      871,  918,  863, 1534,  867,  879,  922,  866,  874, 1534,
-      885,  875,  874,  888,  879,  888,  890, 1534,  932,  892,
-
-      934, 1534,  930,  894,  875,  938,  897,  898,  899,  942,
-      901, 1534,  906, 1534,  888,  946,  907, 1534,  893,  893,
-      895, 1534,  900,  895,  907, 1534,  905,  909,  900,  952,
-      901,  917,  910,  919,  910,  917,  904,  919,  966,  925,
-      912,  928,  919,  933,  929, 1534,  973,  974,  975,  932,
-      931,  932, 1534, 1534, 1534,  979,  923,  939, 1534,  977,
-      928,  927,  929,  940,  987,  938, 1534,  947,  990, 1534,
-     1534,  996, 1001, 1006, 1011, 1016, 1021, 1026, 1029, 1003,
-     1008, 1010, 1023
+     1544, 1545,   32, 1540,  141,    0,  201, 1545,  206,   88,
+       11,  213, 1545, 1522,  114,   25,    2,    6, 1545, 1545,
+       73,   11,   17, 1545, 1545, 1545,  104, 1528, 1483,    0,
+     1520,  107, 1535,  217,  247, 1545, 1479,  185, 1485,   93,
+       58, 1477,   91,  209,  200,   14,  273,  190, 1476,  181,
+      186,  189,  223, 1485,   66,  206, 1484,  232,  204,  294,
+      256,  216, 1467,   78,  268,  300,  300, 1486,    0,  329,
+      344,  356,  364,  359, 1545,    0, 1545,  273,  335,  300,
+      335,  289,  353,  354,  299, 1545, 1483, 1522, 1545,  311,
+
+     1545,  375, 1511,  328, 1480,  356,  355, 1475,  350,  359,
+      357,  363,  371, 1518,    0,  426,  359, 1462, 1464, 1460,
+     1468,   74, 1464, 1453, 1454,   89, 1470, 1463, 1463,  213,
+     1454,  350, 1455,  344, 1500, 1504, 1446, 1497, 1439, 1462,
+     1459, 1459, 1453,  337, 1446, 1439, 1444, 1438,  364, 1435,
+     1434, 1448,  365, 1434,  372, 1450,  344,  399,  398, 1447,
+     1448, 1446, 1428, 1430,  403, 1422, 1439, 1431,    0,  403,
+      424,  380,  423,  431,  398, 1430, 1545,    0, 1473,  443,
+     1424,  432,  438, 1432,  442, 1475,  444, 1474,  446, 1473,
+     1545,  490,  456, 1434, 1414, 1430, 1427, 1426,  421, 1467,
+
+     1461, 1427, 1406, 1414, 1409, 1420, 1408, 1420, 1420, 1411,
+     1395, 1399, 1412, 1412, 1404, 1394, 1412, 1545, 1407, 1410,
+     1391, 1390, 1440, 1389, 1399, 1402,  478, 1398, 1386, 1397,
+     1433, 1380, 1390, 1382, 1379, 1395, 1376, 1375, 1381, 1372,
+     1371, 1378, 1380, 1425, 1383, 1377,  211, 1384, 1379, 1371,
+     1377, 1377, 1358, 1374, 1367, 1374, 1362, 1355, 1369, 1410,
+     1371, 1353, 1361,  471, 1545, 1545,  472, 1545, 1545, 1348,
+        0,  279,  441,  467,  473, 1405, 1358,  466, 1545, 1403,
+     1545, 1397,  530,  442, 1339, 1395, 1341, 1347, 1397, 1354,
+      457, 1545, 1352, 1394, 1349, 1346,  511, 1391, 1385, 1340,
+
+     1335, 1332, 1381, 1340, 1329, 1378, 1326,  536, 1340, 1325,
+     1338, 1325, 1335, 1330, 1337, 1332, 1328,  447, 1326, 1329,
+     1324, 1320, 1368,  474, 1362, 1314, 1307, 1309, 1313, 1302,
+     1315,  487, 1360, 1315, 1312, 1316, 1545, 1304, 1304, 1316,
+     1298, 1290, 1291, 1312, 1294, 1306, 1305, 1291, 1303, 1302,
+     1301, 1342, 1341, 1545, 1285,  518, 1298, 1545, 1545, 1297,
+        0, 1286, 1278,  468, 1335, 1334, 1292, 1332, 1545, 1280,
+     1330, 1545,  527,  585,  498, 1329, 1285, 1281, 1269, 1545,
+     1285, 1284, 1271, 1270, 1545, 1272, 1269,  501, 1267, 1545,
+     1278, 1275, 1260, 1273, 1268,  555, 1275, 1257, 1306, 1545,
+
+     1255, 1271, 1303, 1266, 1263, 1264, 1266, 1298, 1251, 1246,
+     1245, 1294, 1240, 1255, 1233, 1240, 1245, 1293, 1545, 1240,
+     1236, 1234, 1238, 1231, 1241, 1244, 1233, 1228, 1545, 1283,
+     1545, 1227, 1238, 1275, 1228, 1237, 1231, 1235, 1275, 1269,
+     1233, 1213, 1216, 1215, 1223, 1211, 1267, 1209, 1545, 1545,
+     1214, 1545, 1224, 1258, 1220,    0, 1204, 1221, 1259, 1545,
+     1545, 1207, 1545, 1213, 1545,  500,  508,  556, 1545, 1210,
+     1198, 1249, 1196, 1195, 1202, 1195, 1207, 1206, 1206, 1194,
+     1235, 1195, 1238, 1184, 1200, 1199, 1545, 1184, 1181, 1195,
+     1187, 1193, 1184, 1192, 1177, 1193, 1175, 1189, 1187, 1170,
+
+     1164, 1169, 1184, 1181, 1182, 1179, 1220, 1177, 1545, 1163,
+     1165, 1174, 1210,  482, 1173, 1156, 1157, 1154, 1545, 1168,
+     1147, 1168, 1158, 1201, 1155, 1199, 1545, 1146, 1160, 1163,
+     1195, 1194, 1141, 1192, 1545,   14, 1154, 1143, 1145, 1545,
+     1151, 1141, 1545, 1135, 1190,  529,  525, 1143, 1139, 1182,
+      519, 1181, 1180, 1179, 1133, 1123, 1176, 1129, 1139, 1173,
+     1131, 1118, 1126, 1169, 1173, 1130, 1129, 1130, 1123, 1112,
+     1125, 1128, 1123, 1124, 1121, 1120, 1123, 1118, 1159, 1158,
+     1108, 1098, 1106, 1154, 1545, 1153, 1102, 1094, 1095, 1108,
+     1545, 1096, 1105, 1104, 1104, 1144, 1087, 1096, 1089, 1078,
+
+     1082, 1133, 1080, 1090, 1130, 1077,  528,  530, 1071,  528,
+     1545, 1132, 1090, 1079, 1083, 1073, 1085, 1126, 1545, 1120,
+      534, 1073, 1081, 1076, 1072, 1079, 1062, 1065, 1061, 1078,
+     1073, 1061, 1057, 1064, 1058, 1068, 1056, 1070, 1058, 1545,
+     1066, 1064, 1055, 1064, 1060, 1101, 1043, 1043, 1056, 1041,
+     1096, 1038, 1039, 1545, 1545, 1047, 1050, 1053, 1545, 1545,
+     1052, 1037, 1029,  546, 1034, 1081, 1030, 1084, 1545, 1029,
+     1031, 1031, 1080, 1033, 1021, 1015, 1026, 1035, 1028, 1020,
+     1020, 1019, 1017, 1017, 1068, 1029, 1004, 1545, 1060, 1007,
+     1020, 1019, 1004, 1545,  538,  547, 1020, 1054, 1017, 1019,
+
+     1056, 1009, 1002, 1001,  995, 1002,  995, 1049, 1006,  995,
+      995, 1004,  987, 1001,  993, 1036, 1002,    7,   77, 1545,
+      284,  277,  577,  355, 1545,  473,  463,  554,  592,  552,
+      542,  566,  565,  551,  566,  553,  571,  556, 1545,  564,
+      570,  565, 1545,  566,  571,  565,  577,  571,  569,  629,
+      575,  575,  632,  579, 1545,  585,  583,  582,  596,  597,
+      602,  641,  615,  620,  594,  594,  646,  591, 1545,  598,
+      603,  610,  651,  652,  601, 1545,  597,  600,  599,  619,
+      616,  621,  622,  608,  616,  625,  605,  626,  666, 1545,
+      621,  668,  669,  633,  636,  624,  620,  627,  678,  627,
+
+      625,  643,  682,  637,  635,  633,  686,  687,  683,  643,
+      648,  641,  650,  638,  648,  644, 1545,  639,  640, 1545,
+      641,  657,  658,  659,  641,  646,  664, 1545,  686,  677,
+      649,  670, 1545,  653,  668,  660,  664, 1545, 1545,  674,
+      709,  658,  711,  660,  718,  663,  674,  666,  672,  668,
+      686,  687, 1545,  685, 1545,  687, 1545,  691,  681,  674,
+      686,  728, 1545,  686,  736,  737, 1545,  686,  693,  735,
+     1545, 1545,  685,  685,  688,  702,  689,  746,  705,  743,
+      749,  699,  751,  752,  753,  714,  698,  710,  715,  730,
+      759,  719,  711,  762,  711,  707,  723,  728,  710,  768,
+
+      723,  728, 1545,  729,  722,  731,  732,  729,  719,  721,
+      778,  727,  724,  781,  777,  720,  735,  785, 1545, 1545,
+      736,  746,  731,  732,  791,  793,  739,  795, 1545,  745,
+      747,  798, 1545,  762, 1545, 1545, 1545,  752,  802,  753,
+      805,  787, 1545,  765,  766, 1545,  753,  753,  756,  756,
+      757,  753, 1545,  775,  761,  762,  777,  777,  780,  780,
+      777,  782, 1545,  774,  784, 1545,  781,  786,  788,  785,
+     1545,  776,  782,  781,  792, 1545, 1545,  831, 1545,  780,
+      786, 1545,  789,  802, 1545,  799, 1545,  796,  819,  839,
+      845,  846,  790,  848,  849,  804,  798,  852,  853,  849,
+
+      814,  810,  852,  802,  807,  860,  818,  862,  822,  864,
+      827,  816,  867,  811,  828,  828,  812,  868,  833,  833,
+      830,  877,  837,  850,  837, 1545, 1545,  881, 1545, 1545,
+      830,  841, 1545, 1545,  831,  880,  825,  830,  888,  838,
+     1545,  844, 1545,  891, 1545,  836,  851, 1545,  889,  857,
+      850,  859,  847,  857,  900,  851, 1545,  902,  903,  850,
+     1545,  854,  906,  853,  852,  910,  865, 1545,  907,  869,
+     1545,  872,  915,  858,  860,  857,  873,  882,  921, 1545,
+      917, 1545, 1545,  882,  919, 1545,  873,  880, 1545,  877,
+      882,  929,  874, 1545,  878,  890,  933,  877,  885, 1545,
+
+      896,  886,  885,  899,  890,  899,  901, 1545,  943,  903,
+      945, 1545,  941,  905,  886,  949,  908,  909,  910,  953,
+      912, 1545,  917, 1545,  899,  957,  918, 1545,  904,  904,
+      906, 1545,  911,  906,  918, 1545,  916,  920,  911,  963,
+      912,  928,  921,  930,  921,  928,  915,  930,  977,  936,
+      923,  939,  930,  944,  940, 1545,  984,  985,  986,  943,
+      942,  943, 1545, 1545, 1545,  990,  934,  950, 1545,  988,
+      939,  938,  940,  951,  998,  949, 1545,  958, 1001, 1545,
+     1545, 1007, 1012, 1017, 1022, 1027, 1032, 1037, 1040, 1014,
+     1019, 1021, 1034
+
     } ;
 
-static const flex_int16_t yy_def[1184] =
+static const flex_int16_t yy_def[1194] =
     {   0,
-     1172, 1172, 1173, 1173, 1172, 1172, 1172, 1172, 1172, 1172,
-     1171, 1171, 1171, 1171, 1171, 1174, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1175,
-     1171, 1171, 1171, 1176,   15, 1171,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1177,   45,   45,   45,
+     1182, 1182, 1183, 1183, 1182, 1182, 1182, 1182, 1182, 1182,
+     1181, 1181, 1181, 1181, 1181, 1184, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1185,
+     1181, 1181, 1181, 1186,   15, 1181,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1187,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1174, 1171,
-     1171, 1171, 1171, 1171, 1171, 1178, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1175, 1171, 1176,
+       45,   45,   45,   45,   45,   45,   45,   45, 1184, 1181,
+     1181, 1181, 1181, 1181, 1181, 1188, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1185, 1181, 1186,
 
-     1171, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1179,   45, 1177,   45,   45,   45,   45,
+     1181, 1181,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1189,   45, 1187,   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,   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, 1178, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1180,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1179,
-     1171, 1177,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1188, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1190,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1189,
+     1181, 1187,   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, 1171,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1181,   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,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1181,   45,   45,   45,   45,   45,   45,   45, 1171,   45,
-     1171,   45, 1177,   45,   45,   45,   45,   45,   45,   45,
-       45, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1191,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+     1181,   45, 1187,   45,   45,   45,   45,   45,   45,   45,
+       45, 1181,   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,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1171,   45,   45,   45, 1171, 1171, 1171, 1182,   45,
-       45,   45,   45,   45,   45,   45, 1171,   45,   45, 1171,
-       45, 1177,   45,   45,   45,   45,   45, 1171,   45,   45,
-       45,   45, 1171,   45,   45,   45,   45, 1171,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
+       45,   45,   45, 1181,   45,   45,   45, 1181, 1181, 1181,
+     1192,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45, 1181,   45, 1187,   45,   45,   45,   45,   45, 1181,
+       45,   45,   45,   45, 1181,   45,   45,   45,   45, 1181,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171,   45, 1171,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171, 1171,   45, 1171,   45,   45,
-     1171, 1183,   45,   45,   45, 1171, 1171,   45, 1171,   45,
-     1171,   45,   45,   45, 1171,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+     1181,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181, 1181,
+       45, 1181,   45,   45, 1181, 1193,   45,   45,   45, 1181,
+     1181,   45, 1181,   45, 1181,   45,   45,   45, 1181,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1171,   45,   45,   45,   45,   45,   45,   45, 1171,
-       45,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
-       45,   45, 1171,   45,   45, 1171,   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,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45,   45,
+       45,   45,   45,   45, 1181,   45,   45,   45,   45, 1181,
+       45,   45, 1181,   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,   45,
-       45, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1181,   45,   45,   45,   45,   45,
+     1181,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1171,   45,   45,   45,   45,   45,   45,   45, 1171,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1181,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1171,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171, 1171,   45,   45,   45, 1171,
-       45,   45,   45,   45,   45,   45,   45,   45, 1171,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
-       45,   45,   45, 1171,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1181, 1181,   45,   45,   45, 1181, 1181,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1181,   45,   45,
+       45,   45,   45, 1181,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1171,
-       45,   45,   45,   45, 1171,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1171,   45,
-       45,   45, 1171,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1171,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1171,   45,
-       45,   45,   45,   45,   45, 1171,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1171,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
+       45,   45,   45,   45, 1181,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45, 1181,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1181,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45,   45,   45,   45, 1181,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1171,   45,   45, 1171,
-       45,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
-       45,   45, 1171,   45,   45,   45,   45, 1171, 1171,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1171,   45, 1171,   45, 1171,   45,   45,   45,
-       45,   45, 1171,   45,   45,   45, 1171,   45,   45,   45,
-     1171, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45, 1181,
+       45,   45,   45,   45,   45,   45,   45, 1181,   45,   45,
+       45,   45, 1181,   45,   45,   45,   45, 1181, 1181,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1181,   45, 1181,   45, 1181,   45,   45,   45,
+       45,   45, 1181,   45,   45,   45, 1181,   45,   45,   45,
+     1181, 1181,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1171,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1171, 1171,
-       45,   45,   45,   45,   45,   45,   45,   45, 1171,   45,
-       45,   45, 1171,   45, 1171, 1171, 1171,   45,   45,   45,
-       45,   45, 1171,   45,   45, 1171,   45,   45,   45,   45,
-       45,   45, 1171,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1171,   45,   45, 1171,   45,   45,   45,   45,
-     1171,   45,   45,   45,   45, 1171, 1171,   45, 1171,   45,
-       45, 1171,   45,   45, 1171,   45, 1171,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1181,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181, 1181,
+       45,   45,   45,   45,   45,   45,   45,   45, 1181,   45,
+       45,   45, 1181,   45, 1181, 1181, 1181,   45,   45,   45,
+       45,   45, 1181,   45,   45, 1181,   45,   45,   45,   45,
+       45,   45, 1181,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1181,   45,   45, 1181,   45,   45,   45,   45,
+     1181,   45,   45,   45,   45, 1181, 1181,   45, 1181,   45,
+       45, 1181,   45,   45, 1181,   45, 1181,   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,   45,   45, 1171, 1171,   45, 1171, 1171,
-       45,   45, 1171, 1171,   45,   45,   45,   45,   45,   45,
-     1171,   45, 1171,   45, 1171,   45,   45, 1171,   45,   45,
-       45,   45,   45,   45,   45,   45, 1171,   45,   45,   45,
-     1171,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
-     1171,   45,   45,   45,   45,   45,   45,   45,   45, 1171,
-       45, 1171, 1171,   45,   45, 1171,   45,   45, 1171,   45,
-       45,   45,   45, 1171,   45,   45,   45,   45,   45, 1171,
-       45,   45,   45,   45,   45,   45,   45, 1171,   45,   45,
-
-       45, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1171,   45, 1171,   45,   45,   45, 1171,   45,   45,
-       45, 1171,   45,   45,   45, 1171,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1171,   45,   45,   45,   45,
-       45,   45, 1171, 1171, 1171,   45,   45,   45, 1171,   45,
-       45,   45,   45,   45,   45,   45, 1171,   45,   45, 1171,
-        0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171
+       45,   45,   45,   45,   45, 1181, 1181,   45, 1181, 1181,
+       45,   45, 1181, 1181,   45,   45,   45,   45,   45,   45,
+     1181,   45, 1181,   45, 1181,   45,   45, 1181,   45,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45,   45,
+     1181,   45,   45,   45,   45,   45,   45, 1181,   45,   45,
+     1181,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
+       45, 1181, 1181,   45,   45, 1181,   45,   45, 1181,   45,
+       45,   45,   45, 1181,   45,   45,   45,   45,   45, 1181,
+
+       45,   45,   45,   45,   45,   45,   45, 1181,   45,   45,
+       45, 1181,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1181,   45, 1181,   45,   45,   45, 1181,   45,   45,
+       45, 1181,   45,   45,   45, 1181,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1181,   45,   45,   45,   45,
+       45,   45, 1181, 1181, 1181,   45,   45,   45, 1181,   45,
+       45,   45,   45,   45,   45,   45, 1181,   45,   45, 1181,
+        0, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181
+
     } ;
 
-static const flex_int16_t yy_nxt[1606] =
+static const flex_int16_t yy_nxt[1617] =
     {   0,
-     1171,   13,   14,   13, 1171,   15,   16, 1171,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  602,
-       37,   14,   37,   86,   25,   26,   38, 1171,  603,   27,
+     1181,   13,   14,   13, 1181,   15,   16, 1181,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  611,
+       37,   14,   37,   86,   25,   26,   38, 1181,  612,   27,
        37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
       113,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  784,   13,
-       14,   13,   33,   40,  113,   91,   92,  785,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40, 1181,   13,
+       14,   13,   33,   40,  113,   91,   92,  786,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  107,   39,   90,   25,   26,   13,   14,   13,   27,
@@ -994,7 +999,7 @@ static const flex_int16_t yy_nxt[1606] =
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  106,   41,  109,   93,   25,   31,  107,
       198,  157,   88,  134,   88,  158,   32,   89,   89,   89,
-      199,  135,   33,  203,  204,   82,  106,  786,  109,   34,
+      199,  135,   33,  203,  204,   82,  106,  787,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   47,   45,   45,   45,   45,
        45,   48,   45,   45,   49,   45,   50,   45,   51,   52,
@@ -1008,16 +1013,16 @@ static const flex_int16_t yy_nxt[1606] =
        82,  110,  120,  126,  129,  121,  127,   82,  122,  104,
       123,  111,  124,  106,  117,  130,  112,  144,   82,  128,
       118,  145,  136,   82,  110,  131,  208,  102,  209,  153,
-       82,   45,  137,  154,  138,  338,  106,   45,  339,  111,
+       82,   45,  137,  154,  138,  340,  106,   45,  341,  111,
        45,  146,   45,  155,   45,   45,   45,  132,  115,  140,
       141,   45,   45,  142,   45,   45,   89,   89,   89,  143,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  150,  159,  101,   45,  109,  151,
-      152,   45,  110,  112,  172,  160,  161,  787,  170,   45,
-      360,  162,  111,   45,  172,   45,  116,  147,  788,  148,
-      361,  149,   84,   84,   84,  110,  165,  163,   89,   89,
+      152,   45,  110,  112,  172,  160,  161,  788,  170,   45,
+      362,  162,  111,   45,  172,   45,  116,  147,  789,  148,
+      363,  149,   84,   84,   84,  110,  165,  163,   89,   89,
        89,  102,  172,   82,  170,   80,  166,   81,   81,   81,
       111,  167,  175,  171,   88,  180,   88,  164,   82,   89,
        89,   89,   84,   84,   84,   80,   82,   83,   83,   83,
@@ -1025,149 +1030,150 @@ static const flex_int16_t yy_nxt[1606] =
       186,   82,  187,  180,  188,  189,  180,  211,  214,  226,
 
       185,  215,  243,  227,  266,  216,   82,  173,  174,  244,
-      182,   82,  183,  212,  185,  100,  789,  186,  189,  100,
+      182,   82,  183,  212,  185,  100,  793,  186,  189,  100,
       187,  188,  266,  100,  193,  236,  237,  266,  185,  239,
       232,  100,  240,  241,  188,  100,  264,  100,  178,  192,
       192,  192,  245,  246,  247,  269,  192,  192,  192,  192,
       192,  192,  265,  248,  252,  249,  264,  250,  253,  265,
       251,  260,  254,  273,  264,  275,  278,  276,  280,  192,
-      192,  192,  192,  192,  192,  282,  273,  290,  265,  362,
-      362,  363,  364,  291,  267,  268,  273,  425,  369,  278,
-      365,  280,  475,  275,  276,  356,  356,  366,  455,  284,
-
-      380,  398,  282,  283,  283,  283,  399,  476,  362,  373,
-      283,  283,  283,  283,  283,  283,  369,  381,  356,  357,
-      366,  386,  411,  412,  448,  387,  455,  539,  455,  449,
-      540,  582,  416,  283,  283,  283,  283,  283,  283,  372,
-      372,  372,  417,  426,  612,  790,  372,  372,  372,  372,
-      372,  372,  400,  462,  539,  463,  464,  401,  540,  536,
-      611,  686,  724,  791,  541,  792,  725,  612,  583,  372,
-      372,  372,  372,  372,  372,  616,  753,  754,  793,  670,
-      462,  617,  463,   45,   45,   45,  671,  794,  611,  686,
-       45,   45,   45,   45,   45,   45,  672,  673,  795,  676,
-
-      754,  780,  797,  753,  674,  677,  781,  798,  799,  796,
-      800,  801,  802,   45,   45,   45,   45,   45,   45,  803,
-      804,  805,  806,  807,  808,  809,  810,  811,  812,  813,
-      814,  815,  816,  817,  818,  819,  821,  820,  822,  823,
-      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  782,  841,  842,
-      843,  844,  845,  819,  820,  847,  848,  846,  849,  850,
-      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
-      901,  902,  880,  903,  904,  905,  906,  907,  881,  908,
-      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
-      919,  920,  921,  923,  924,  925,  926,  927,  928,  929,
-      930,  931,  932,  933,  934,  935,  936,  938,  939,  940,
-      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
-      951,  952,  953,  954,  955,  956,  957,  958,  959,  961,
-      932,  962,  963,  964,  965,  966,  960,  967,  968,  969,
-      970,  971,  972,  922,  973,  974,  975,  976,  937,  977,
-
-      979,  980,  981,  982,  978,  983,  984,  985,  986,  987,
-      988,  989,  990,  991,  992,  993,  994,  995,  996,  997,
-      998,  999, 1000,  979, 1001, 1002, 1003, 1004, 1005, 1006,
-     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016,
-     1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,
-     1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
-     1037, 1038, 1039, 1040, 1014, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
-     1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
-
-     1076, 1049, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
-     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
-     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
-     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
-     1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
-     1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
-     1165, 1166, 1167, 1168, 1169, 1170,   12,   12,   12,   12,
-
-       12,   36,   36,   36,   36,   36,   79,  271,   79,   79,
-       79,   98,  359,   98,  452,   98,  100,  100,  100,  100,
-      100,  114,  114,  114,  114,  114,  169,  100,  169,  169,
-      169,  190,  190,  190,  783,  779,  778,  777,  776,  775,
-      774,  773,  772,  771,  770,  769,  768,  767,  766,  765,
-      764,  763,  762,  761,  760,  759,  758,  757,  756,  755,
-      752,  751,  750,  749,  748,  747,  746,  745,  744,  743,
-      742,  741,  740,  739,  738,  737,  736,  735,  734,  733,
-      732,  731,  730,  729,  728,  727,  726,  723,  722,  721,
-      720,  719,  718,  717,  716,  715,  714,  713,  712,  711,
-
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  694,  693,  692,  691,
-      690,  689,  688,  687,  685,  684,  683,  682,  681,  680,
-      679,  678,  675,  669,  668,  667,  666,  665,  664,  663,
-      662,  661,  660,  659,  658,  657,  656,  655,  654,  653,
-      652,  651,  650,  649,  648,  647,  646,  645,  644,  643,
-      642,  641,  640,  639,  638,  637,  636,  635,  634,  633,
-      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
-      622,  621,  620,  619,  618,  615,  614,  613,  610,  609,
-      608,  607,  606,  605,  604,  601,  600,  599,  598,  597,
-
-      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
-      586,  585,  584,  581,  580,  579,  578,  577,  576,  575,
-      574,  573,  572,  571,  570,  569,  568,  567,  566,  565,
-      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
-      554,  553,  552,  551,  550,  549,  548,  547,  546,  545,
-      544,  543,  542,  538,  537,  536,  535,  534,  533,  532,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
-      521,  520,  519,  518,  517,  516,  515,  514,  513,  512,
-      511,  510,  509,  508,  507,  506,  505,  504,  503,  502,
-      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
-
-      491,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  479,  478,  477,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  461,  460,  459,  458,  457,
-      456,  454,  453,  451,  450,  447,  446,  445,  444,  443,
-      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
-      432,  431,  430,  429,  428,  427,  424,  423,  422,  421,
-      420,  419,  418,  415,  414,  413,  410,  409,  408,  407,
-      406,  405,  404,  403,  402,  397,  396,  395,  394,  393,
-      392,  391,  390,  389,  388,  385,  384,  383,  382,  379,
-      378,  377,  376,  375,  374,  371,  370,  368,  367,  358,
-
-      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  337,  336,  335,  334,
-      333,  332,  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,  302,  301,  300,  299,  298,  297,  296,  295,  294,
-      293,  292,  289,  288,  287,  286,  285,  191,  281,  279,
-      277,  274,  272,  270,  263,  262,  261,  259,  258,  257,
-      256,  255,  242,  238,  235,  234,  233,  231,  230,  229,
-      228,  225,  224,  223,  222,  221,  220,  219,  218,  217,
-
-      213,  210,  207,  206,  205,  202,  201,  200,  197,  196,
-      195,  194,  191,  184,  181,  179,  177,  176,  168,  156,
-      139,  133,  119,  108,  105,  103,   43,   99,   97,   96,
-       87,   43, 1171,   11, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-
-     1171, 1171, 1171, 1171, 1171
+      192,  192,  192,  192,  192,  282,  273,  290,  265,  364,
+      364,  365,  366,  291,  267,  268,  273,  591,  318,  278,
+      367,  280,  429,  275,  276,  358,  358,  368,  371,  284,
+
+      382,  459,  282,  283,  283,  283,  413,  414,  364,  375,
+      283,  283,  283,  283,  283,  283,  794,  383,  358,  359,
+      368,  388,  420,  452,  592,  389,  371,  795,  453,  459,
+      546,  459,  421,  283,  283,  283,  283,  283,  283,  319,
+      547,  400,  320,  374,  374,  374,  401,  479,  430,  621,
+      374,  374,  374,  374,  374,  374,  466,  546,  467,  468,
+      487,  543,  480,  620,  625,  488,  548,  696,  547,  763,
+      626,  764,  621,  374,  374,  374,  374,  374,  374,  680,
+      682,  683,  790,  466,  686,  467,  681,  791,  684,  734,
+      687,  620,  402,  735,  764,  696,  763,  403,   45,   45,
+
+       45,  796,  797,  798,  799,   45,   45,   45,   45,   45,
+       45,  800,  801,  802,  803,  804,  805,  807,  808,  809,
+      810,  811,  812,  813,  814,  815,  816,  806,   45,   45,
+       45,   45,   45,   45,  817,  818,  819,  820,  792,  821,
+      822,  823,  824,  825,  826,  827,  828,  829,  831,  830,
+      832,  833,  834,  835,  836,  837,  838,  839,  840,  841,
+      842,  843,  844,  845,  846,  847,  848,  849,  850,  851,
+      852,  853,  854,  855,  857,  829,  830,  858,  856,  859,
+      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
+
+      880,  881,  882,  883,  884,  885,  886,  887,  888,  889,
+      890,  891,  892,  893,  894,  895,  896,  897,  898,  899,
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  890,  913,  914,  915,  916,  917,  891,
+      918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
+      928,  929,  930,  931,  933,  934,  935,  936,  937,  938,
+      939,  940,  941,  942,  943,  944,  945,  946,  948,  949,
+      950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
+      960,  961,  962,  963,  964,  965,  966,  967,  968,  969,
+      971,  942,  972,  973,  974,  975,  976,  970,  977,  978,
+
+      979,  980,  981,  982,  932,  983,  984,  985,  986,  947,
+      987,  989,  990,  991,  992,  988,  993,  994,  995,  996,
+      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
+     1007, 1008, 1009, 1010,  989, 1011, 1012, 1013, 1014, 1015,
+     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
+     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+     1046, 1047, 1048, 1049, 1050, 1024, 1051, 1052, 1053, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+
+     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1085, 1086, 1059, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
+
+     1174, 1175, 1176, 1177, 1178, 1179, 1180,   12,   12,   12,
+       12,   12,   36,   36,   36,   36,   36,   79,  271,   79,
+       79,   79,   98,  361,   98,  456,   98,  100,  100,  100,
+      100,  100,  114,  114,  114,  114,  114,  169,  100,  169,
+      169,  169,  190,  190,  190,  785,  784,  783,  782,  781,
+      780,  779,  778,  777,  776,  775,  774,  773,  772,  771,
+      770,  769,  768,  767,  766,  765,  762,  761,  760,  759,
+      758,  757,  756,  755,  754,  753,  752,  751,  750,  749,
+      748,  747,  746,  745,  744,  743,  742,  741,  740,  739,
+      738,  737,  736,  733,  732,  731,  730,  729,  728,  727,
+
+      726,  725,  724,  723,  722,  721,  720,  719,  718,  717,
+      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
+      706,  705,  704,  703,  702,  701,  700,  699,  698,  697,
+      695,  694,  693,  692,  691,  690,  689,  688,  685,  679,
+      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
+      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  624,  623,  622,  619,  618,  617,  616,  615,
+
+      614,  613,  610,  609,  608,  607,  606,  605,  604,  603,
+      602,  601,  600,  599,  598,  597,  596,  595,  594,  593,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      570,  569,  568,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  557,  556,  555,  554,  553,  552,  551,
+      550,  549,  545,  544,  543,  542,  541,  540,  539,  538,
+      537,  536,  535,  534,  533,  532,  531,  530,  529,  528,
+      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+
+      507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
+      497,  496,  495,  494,  493,  492,  491,  490,  489,  486,
+      485,  484,  483,  482,  481,  478,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  465,  464,  463,  462,  461,
+      460,  458,  457,  455,  454,  451,  450,  449,  448,  447,
+      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
+      436,  435,  434,  433,  432,  431,  428,  427,  426,  425,
+      424,  423,  422,  419,  418,  417,  416,  415,  412,  411,
+      410,  409,  408,  407,  406,  405,  404,  399,  398,  397,
+      396,  395,  394,  393,  392,  391,  390,  387,  386,  385,
+
+      384,  381,  380,  379,  378,  377,  376,  373,  372,  370,
+      369,  360,  357,  356,  355,  354,  353,  352,  351,  350,
+      349,  348,  347,  346,  345,  344,  343,  342,  339,  338,
+      337,  336,  335,  334,  333,  332,  331,  330,  329,  328,
+      327,  326,  325,  324,  323,  322,  321,  317,  316,  315,
+      314,  313,  312,  311,  310,  309,  308,  307,  306,  305,
+      304,  303,  302,  301,  300,  299,  298,  297,  296,  295,
+      294,  293,  292,  289,  288,  287,  286,  285,  191,  281,
+      279,  277,  274,  272,  270,  263,  262,  261,  259,  258,
+      257,  256,  255,  242,  238,  235,  234,  233,  231,  230,
+
+      229,  228,  225,  224,  223,  222,  221,  220,  219,  218,
+      217,  213,  210,  207,  206,  205,  202,  201,  200,  197,
+      196,  195,  194,  191,  184,  181,  179,  177,  176,  168,
+      156,  139,  133,  119,  108,  105,  103,   43,   99,   97,
+       96,   87,   43, 1181,   11, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181
     } ;
 
-static const flex_int16_t yy_chk[1606] =
+static const flex_int16_t yy_chk[1617] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  529,
-        3,    3,    3,   21,    1,    1,    3,    0,  529,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  536,
+        3,    3,    3,   21,    1,    1,    3,    0,  536,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        56,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  716,    8,
-        8,    8,    1,    8,   56,   27,   28,  717,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        8,    8,    1,    8,   56,   27,   28,  718,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   51,    5,   31,    2,    2,   10,   10,   10,    2,
@@ -1175,7 +1181,7 @@ static const flex_int16_t yy_chk[1606] =
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
       122,   74,   25,   65,   25,   74,    2,   25,   25,   25,
-      122,   65,    2,  126,  126,   20,   50,  718,   53,    2,
+      122,   65,    2,  126,  126,   20,   50,  719,   53,    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,
@@ -1196,8 +1202,8 @@ static const flex_int16_t yy_chk[1606] =
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   57,   71,   75,  100,   57,   70,   71,
-       71,   57,   76,   77,   92,   75,   75,  719,   90,   57,
-      272,   75,   76,   57,   95,   57,   57,   70,  720,   70,
+       71,   57,   76,   77,   92,   75,   75,  721,   90,   57,
+      272,   75,   76,   57,   95,   57,   57,   70,  722,   70,
       272,   70,   80,   80,   80,   76,   77,   76,   89,   89,
        89,  100,   92,   80,   90,   81,   77,   81,   81,   81,
        76,   77,   95,   91,   82,  104,   82,   76,   81,   82,
@@ -1206,138 +1212,139 @@ static const flex_int16_t yy_chk[1606] =
       110,   81,  111,  104,  112,  113,  117,  132,  134,  144,
 
       149,  134,  157,  144,  172,  134,   84,   93,   94,  157,
-      106,   83,  107,  132,  109,  102,  721,  110,  113,  102,
+      106,   83,  107,  132,  109,  102,  724,  110,  113,  102,
       111,  112,  175,  102,  117,  153,  153,  172,  149,  155,
       149,  102,  155,  155,  165,  102,  170,  102,  102,  116,
       116,  116,  158,  158,  158,  175,  116,  116,  116,  116,
       116,  116,  171,  158,  159,  158,  173,  158,  159,  174,
       158,  165,  159,  180,  170,  182,  185,  183,  187,  116,
       116,  116,  116,  116,  116,  189,  193,  199,  171,  273,
-      284,  274,  274,  199,  173,  174,  180,  330,  278,  185,
-      274,  187,  386,  182,  183,  264,  267,  275,  362,  193,
-
-      291,  308,  189,  192,  192,  192,  308,  386,  273,  284,
-      192,  192,  192,  192,  192,  192,  278,  291,  264,  267,
-      275,  297,  318,  318,  354,  297,  362,  462,  373,  354,
-      463,  507,  322,  192,  192,  192,  192,  192,  192,  283,
-      283,  283,  322,  330,  540,  722,  283,  283,  283,  283,
-      283,  283,  308,  371,  462,  371,  373,  308,  463,  464,
-      539,  612,  654,  723,  464,  724,  654,  540,  507,  283,
-      283,  283,  283,  283,  283,  544,  685,  686,  725,  598,
-      371,  544,  371,  372,  372,  372,  598,  726,  539,  612,
-      372,  372,  372,  372,  372,  372,  599,  599,  727,  601,
-
-      686,  713,  728,  685,  599,  601,  713,  730,  731,  727,
-      732,  734,  735,  372,  372,  372,  372,  372,  372,  736,
-      737,  738,  739,  740,  741,  742,  743,  744,  746,  747,
-      748,  749,  750,  751,  752,  753,  755,  754,  756,  757,
-      758,  760,  761,  762,  763,  764,  765,  767,  768,  769,
-      770,  771,  772,  773,  774,  775,  776,  713,  777,  778,
-      779,  781,  782,  753,  754,  783,  784,  782,  785,  786,
-      787,  788,  789,  790,  791,  792,  793,  794,  795,  796,
-      797,  798,  799,  800,  801,  802,  803,  804,  805,  806,
-      808,  809,  811,  812,  813,  814,  815,  816,  817,  819,
-
-      820,  821,  822,  824,  825,  826,  827,  830,  831,  832,
-      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
-      844,  846,  819,  848,  849,  850,  851,  852,  820,  854,
-      855,  856,  858,  859,  860,  863,  864,  865,  866,  867,
-      868,  869,  870,  871,  872,  873,  874,  875,  876,  877,
-      878,  879,  880,  881,  882,  883,  884,  885,  886,  887,
-      888,  889,  890,  891,  892,  894,  895,  896,  897,  898,
-      899,  900,  901,  902,  903,  904,  905,  906,  907,  908,
-      880,  911,  912,  913,  914,  915,  907,  916,  917,  918,
-      920,  921,  922,  870,  924,  928,  929,  930,  884,  931,
-
-      932,  934,  935,  937,  931,  938,  939,  940,  941,  942,
-      944,  945,  946,  947,  948,  949,  950,  951,  952,  954,
-      955,  957,  958,  932,  959,  960,  962,  963,  964,  965,
-      968,  970,  971,  973,  974,  976,  978,  979,  980,  981,
-      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
-     1002, 1003, 1004, 1005,  979, 1006, 1007, 1008, 1009, 1010,
-     1011, 1012, 1013, 1014, 1015, 1018, 1021, 1022, 1025, 1026,
-     1027, 1028, 1029, 1030, 1032, 1034, 1036, 1037, 1039, 1040,
-     1041, 1042, 1043, 1044, 1045, 1046, 1048, 1049, 1050, 1052,
-
-     1053, 1014, 1054, 1055, 1056, 1057, 1059, 1060, 1062, 1063,
-     1064, 1065, 1066, 1067, 1068, 1069, 1071, 1074, 1075, 1077,
-     1078, 1080, 1081, 1082, 1083, 1085, 1086, 1087, 1088, 1089,
-     1091, 1092, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101,
-     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1113,
-     1115, 1116, 1117, 1119, 1120, 1121, 1123, 1124, 1125, 1127,
-     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
-     1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1147, 1148,
-     1149, 1150, 1151, 1152, 1156, 1157, 1158, 1160, 1161, 1162,
-     1163, 1164, 1165, 1166, 1168, 1169, 1172, 1172, 1172, 1172,
-
-     1172, 1173, 1173, 1173, 1173, 1173, 1174, 1180, 1174, 1174,
-     1174, 1175, 1181, 1175, 1182, 1175, 1176, 1176, 1176, 1176,
-     1176, 1177, 1177, 1177, 1177, 1177, 1178, 1183, 1178, 1178,
-     1178, 1179, 1179, 1179,  714,  712,  711,  709,  708,  707,
-      706,  705,  704,  703,  702,  701,  700,  699,  698,  697,
-      696,  695,  694,  693,  692,  691,  690,  689,  688,  687,
-      683,  682,  681,  680,  679,  677,  676,  675,  674,  673,
-      672,  671,  670,  669,  668,  667,  666,  665,  664,  663,
-      662,  661,  660,  658,  657,  656,  655,  653,  652,  651,
-      649,  648,  647,  644,  643,  642,  641,  640,  639,  638,
-
-      637,  636,  635,  634,  633,  632,  630,  629,  628,  627,
-      626,  625,  624,  623,  622,  621,  620,  619,  618,  617,
-      616,  615,  614,  613,  611,  609,  608,  607,  606,  605,
-      604,  603,  600,  597,  596,  595,  594,  593,  592,  591,
-      590,  589,  588,  587,  586,  585,  584,  583,  581,  580,
-      579,  578,  577,  576,  575,  574,  573,  572,  571,  570,
-      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
-      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-      549,  548,  547,  546,  545,  543,  542,  541,  538,  537,
-      535,  534,  532,  531,  530,  527,  526,  525,  524,  523,
-
-      522,  521,  519,  518,  517,  516,  515,  514,  513,  511,
-      510,  509,  508,  506,  505,  504,  503,  501,  500,  499,
-      498,  497,  496,  495,  494,  493,  492,  491,  490,  489,
-      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
-      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
-      468,  467,  466,  460,  458,  455,  454,  453,  451,  450,
-      449,  447,  444,  443,  442,  441,  440,  439,  438,  437,
-      436,  435,  434,  433,  432,  431,  430,  429,  428,  426,
-      424,  423,  422,  421,  420,  419,  418,  417,  416,  414,
-      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
-
-      403,  402,  401,  400,  399,  397,  396,  395,  394,  393,
-      392,  391,  390,  389,  387,  385,  384,  382,  381,  380,
-      379,  377,  376,  375,  374,  369,  368,  366,  365,  364,
-      363,  361,  360,  358,  355,  353,  351,  350,  349,  348,
-      347,  346,  345,  344,  343,  342,  341,  340,  339,  338,
-      337,  336,  334,  333,  332,  331,  329,  328,  327,  326,
-      325,  324,  323,  321,  320,  319,  317,  316,  315,  314,
-      313,  312,  311,  310,  309,  307,  306,  305,  304,  303,
-      302,  301,  300,  299,  298,  296,  295,  294,  293,  290,
-      289,  288,  287,  286,  285,  282,  280,  277,  276,  270,
-
-      263,  262,  261,  260,  259,  258,  257,  256,  255,  254,
-      253,  252,  251,  250,  249,  248,  246,  245,  244,  243,
-      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  221,  220,  219,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  202,
-      201,  200,  198,  197,  196,  195,  194,  190,  188,  186,
-      184,  181,  179,  176,  168,  167,  166,  164,  163,  162,
-      161,  160,  156,  154,  152,  151,  150,  148,  147,  146,
-      145,  143,  142,  141,  140,  139,  138,  137,  136,  135,
-
-      133,  131,  129,  128,  127,  125,  124,  123,  121,  120,
-      119,  118,  114,  108,  105,  103,   98,   97,   78,   73,
-       67,   64,   59,   52,   49,   47,   43,   41,   39,   38,
-       24,   14,   11, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-
-     1171, 1171, 1171, 1171, 1171
+      284,  274,  274,  199,  173,  174,  180,  514,  227,  185,
+      274,  187,  332,  182,  183,  264,  267,  275,  278,  193,
+
+      291,  364,  189,  192,  192,  192,  318,  318,  273,  284,
+      192,  192,  192,  192,  192,  192,  726,  291,  264,  267,
+      275,  297,  324,  356,  514,  297,  278,  727,  356,  364,
+      466,  375,  324,  192,  192,  192,  192,  192,  192,  227,
+      467,  308,  227,  283,  283,  283,  308,  388,  332,  547,
+      283,  283,  283,  283,  283,  283,  373,  466,  373,  375,
+      396,  468,  388,  546,  551,  396,  468,  621,  467,  695,
+      551,  696,  547,  283,  283,  283,  283,  283,  283,  607,
+      608,  608,  723,  373,  610,  373,  607,  723,  608,  664,
+      610,  546,  308,  664,  696,  621,  695,  308,  374,  374,
+
+      374,  728,  729,  730,  731,  374,  374,  374,  374,  374,
+      374,  732,  733,  734,  735,  736,  737,  738,  740,  741,
+      742,  744,  745,  746,  747,  748,  749,  737,  374,  374,
+      374,  374,  374,  374,  750,  751,  752,  753,  723,  754,
+      756,  757,  758,  759,  760,  761,  762,  763,  765,  764,
+      766,  767,  768,  770,  771,  772,  773,  774,  775,  777,
+      778,  779,  780,  781,  782,  783,  784,  785,  786,  787,
+      788,  789,  791,  792,  793,  763,  764,  794,  792,  795,
+      796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
+      806,  807,  808,  809,  810,  811,  812,  813,  814,  815,
+
+      816,  818,  819,  821,  822,  823,  824,  825,  826,  827,
+      829,  830,  831,  832,  834,  835,  836,  837,  840,  841,
+      842,  843,  844,  845,  846,  847,  848,  849,  850,  851,
+      852,  854,  856,  829,  858,  859,  860,  861,  862,  830,
+      864,  865,  866,  868,  869,  870,  873,  874,  875,  876,
+      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
+      897,  898,  899,  900,  901,  902,  904,  905,  906,  907,
+      908,  909,  910,  911,  912,  913,  914,  915,  916,  917,
+      918,  890,  921,  922,  923,  924,  925,  917,  926,  927,
+
+      928,  930,  931,  932,  880,  934,  938,  939,  940,  894,
+      941,  942,  944,  945,  947,  941,  948,  949,  950,  951,
+      952,  954,  955,  956,  957,  958,  959,  960,  961,  962,
+      964,  965,  967,  968,  942,  969,  970,  972,  973,  974,
+      975,  978,  980,  981,  983,  984,  986,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
+     1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+     1011, 1012, 1013, 1014, 1015,  989, 1016, 1017, 1018, 1019,
+     1020, 1021, 1022, 1023, 1024, 1025, 1028, 1031, 1032, 1035,
+     1036, 1037, 1038, 1039, 1040, 1042, 1044, 1046, 1047, 1049,
+
+     1050, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1060,
+     1062, 1063, 1024, 1064, 1065, 1066, 1067, 1069, 1070, 1072,
+     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1081, 1084, 1085,
+     1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098,
+     1099, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1109, 1110,
+     1111, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+     1123, 1125, 1126, 1127, 1129, 1130, 1131, 1133, 1134, 1135,
+     1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1157,
+     1158, 1159, 1160, 1161, 1162, 1166, 1167, 1168, 1170, 1171,
+
+     1172, 1173, 1174, 1175, 1176, 1178, 1179, 1182, 1182, 1182,
+     1182, 1182, 1183, 1183, 1183, 1183, 1183, 1184, 1190, 1184,
+     1184, 1184, 1185, 1191, 1185, 1192, 1185, 1186, 1186, 1186,
+     1186, 1186, 1187, 1187, 1187, 1187, 1187, 1188, 1193, 1188,
+     1188, 1188, 1189, 1189, 1189,  717,  716,  715,  714,  713,
+      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
+      702,  701,  700,  699,  698,  697,  693,  692,  691,  690,
+      689,  687,  686,  685,  684,  683,  682,  681,  680,  679,
+      678,  677,  676,  675,  674,  673,  672,  671,  670,  668,
+      667,  666,  665,  663,  662,  661,  658,  657,  656,  653,
+
+      652,  651,  650,  649,  648,  647,  646,  645,  644,  643,
+      642,  641,  639,  638,  637,  636,  635,  634,  633,  632,
+      631,  630,  629,  628,  627,  626,  625,  624,  623,  622,
+      620,  618,  617,  616,  615,  614,  613,  612,  609,  606,
+      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  593,  592,  590,  589,  588,  587,  586,  584,
+      583,  582,  581,  580,  579,  578,  577,  576,  575,  574,
+      573,  572,  571,  570,  569,  568,  567,  566,  565,  564,
+      563,  562,  561,  560,  559,  558,  557,  556,  555,  554,
+      553,  552,  550,  549,  548,  545,  544,  542,  541,  539,
+
+      538,  537,  534,  533,  532,  531,  530,  529,  528,  526,
+      525,  524,  523,  522,  521,  520,  518,  517,  516,  515,
+      513,  512,  511,  510,  508,  507,  506,  505,  504,  503,
+      502,  501,  500,  499,  498,  497,  496,  495,  494,  493,
+      492,  491,  490,  489,  488,  486,  485,  484,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  470,  464,  462,  459,  458,  457,  455,  454,  453,
+      451,  448,  447,  446,  445,  444,  443,  442,  441,  440,
+      439,  438,  437,  436,  435,  434,  433,  432,  430,  428,
+      427,  426,  425,  424,  423,  422,  421,  420,  418,  417,
+
+      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
+      406,  405,  404,  403,  402,  401,  399,  398,  397,  395,
+      394,  393,  392,  391,  389,  387,  386,  384,  383,  382,
+      381,  379,  378,  377,  376,  371,  370,  368,  367,  366,
+      365,  363,  362,  360,  357,  355,  353,  352,  351,  350,
+      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
+      339,  338,  336,  335,  334,  333,  331,  330,  329,  328,
+      327,  326,  325,  323,  322,  321,  320,  319,  317,  316,
+      315,  314,  313,  312,  311,  310,  309,  307,  306,  305,
+      304,  303,  302,  301,  300,  299,  298,  296,  295,  294,
+
+      293,  290,  289,  288,  287,  286,  285,  282,  280,  277,
+      276,  270,  263,  262,  261,  260,  259,  258,  257,  256,
+      255,  254,  253,  252,  251,  250,  249,  248,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
+      234,  233,  232,  231,  230,  229,  228,  226,  225,  224,
+      223,  222,  221,  220,  219,  217,  216,  215,  214,  213,
+      212,  211,  210,  209,  208,  207,  206,  205,  204,  203,
+      202,  201,  200,  198,  197,  196,  195,  194,  190,  188,
+      186,  184,  181,  179,  176,  168,  167,  166,  164,  163,
+      162,  161,  160,  156,  154,  152,  151,  150,  148,  147,
+
+      146,  145,  143,  142,  141,  140,  139,  138,  137,  136,
+      135,  133,  131,  129,  128,  127,  125,  124,  123,  121,
+      120,  119,  118,  114,  108,  105,  103,   98,   97,   78,
+       73,   67,   64,   59,   52,   49,   47,   43,   41,   39,
+       38,   24,   14,   11, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1181
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1346,7 +1353,7 @@ static char *yy_last_accepting_cpos;
 extern int parser4__flex_debug;
 int parser4__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[144] =
+static const flex_int16_t yy_rule_linenum[147] =
     {   0,
       131,  133,  135,  140,  141,  146,  147,  148,  160,  163,
       168,  175,  184,  193,  202,  211,  221,  230,  239,  248,
@@ -1354,16 +1361,16 @@ static const flex_int16_t yy_rule_linenum[144] =
       354,  364,  374,  384,  394,  404,  414,  424,  433,  442,
       451,  465,  480,  489,  498,  507,  516,  525,  534,  543,
       552,  561,  570,  580,  589,  598,  607,  616,  625,  634,
-      643,  653,  663,  673,  682,  692,  702,  712,  722,  732,
-      741,  751,  760,  769,  778,  787,  796,  806,  816,  825,
-      834,  843,  852,  861,  870,  879,  888,  897,  906,  915,
+      643,  652,  661,  670,  680,  690,  700,  709,  719,  729,
+      739,  749,  759,  768,  778,  787,  796,  805,  814,  823,
+      833,  843,  852,  861,  870,  879,  888,  897,  906,  915,
       924,  933,  942,  951,  960,  969,  978,  987,  996, 1005,
 
-     1014, 1023, 1032, 1041, 1050, 1059, 1068, 1078, 1088, 1098,
-     1108, 1118, 1128, 1138, 1148, 1158, 1167, 1176, 1185, 1194,
-     1203, 1213, 1223, 1235, 1246, 1259, 1357, 1362, 1367, 1372,
-     1373, 1374, 1375, 1376, 1377, 1379, 1397, 1410, 1415, 1419,
-     1421, 1423, 1425
+     1014, 1023, 1032, 1041, 1050, 1059, 1068, 1077, 1086, 1095,
+     1105, 1115, 1125, 1135, 1145, 1155, 1165, 1175, 1185, 1194,
+     1203, 1212, 1221, 1230, 1240, 1250, 1262, 1273, 1286, 1384,
+     1389, 1394, 1399, 1400, 1401, 1402, 1403, 1404, 1406, 1424,
+     1437, 1442, 1446, 1448, 1450, 1452
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1408,7 +1415,7 @@ unsigned int comment_start_line = 0;
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1411 "dhcp4_lexer.cc"
+#line 1418 "dhcp4_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
@@ -1434,8 +1441,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 1437 "dhcp4_lexer.cc"
-#line 1438 "dhcp4_lexer.cc"
+#line 1444 "dhcp4_lexer.cc"
+#line 1445 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1757,7 +1764,7 @@ YY_DECL
     }
 
 
-#line 1760 "dhcp4_lexer.cc"
+#line 1767 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1786,13 +1793,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 >= 1172 )
+                               if ( yy_current_state >= 1182 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1171 );
+               while ( yy_current_state != 1181 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1811,13 +1818,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 < 144 )
+                       else if ( yy_act < 147 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser4_text );
-                       else if ( yy_act == 144 )
+                       else if ( yy_act == 147 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser4_text );
-                       else if ( yy_act == 145 )
+                       else if ( yy_act == 148 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2527,6 +2534,42 @@ YY_RULE_SETUP
 case 60:
 YY_RULE_SETUP
 #line 634 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp4Parser::make_FLUSH(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("flush", driver.loc_);
+    }
+}
+       YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 643 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp4Parser::make_MAXSIZE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("maxsize", driver.loc_);
+    }
+}
+       YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 652 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp4Parser::make_MAXVER(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("maxver", driver.loc_);
+    }
+}
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 661 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2536,9 +2579,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 64:
 YY_RULE_SETUP
-#line 643 "dhcp4_lexer.ll"
+#line 670 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2549,9 +2592,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 65:
 YY_RULE_SETUP
-#line 653 "dhcp4_lexer.ll"
+#line 680 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2562,9 +2605,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 66:
 YY_RULE_SETUP
-#line 663 "dhcp4_lexer.ll"
+#line 690 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -2575,9 +2618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 67:
 YY_RULE_SETUP
-#line 673 "dhcp4_lexer.ll"
+#line 700 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2587,9 +2630,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 68:
 YY_RULE_SETUP
-#line 682 "dhcp4_lexer.ll"
+#line 709 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2600,9 +2643,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 69:
 YY_RULE_SETUP
-#line 692 "dhcp4_lexer.ll"
+#line 719 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2613,9 +2656,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 70:
 YY_RULE_SETUP
-#line 702 "dhcp4_lexer.ll"
+#line 729 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2626,9 +2669,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 71:
 YY_RULE_SETUP
-#line 712 "dhcp4_lexer.ll"
+#line 739 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2639,9 +2682,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 72:
 YY_RULE_SETUP
-#line 722 "dhcp4_lexer.ll"
+#line 749 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2652,9 +2695,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 73:
 YY_RULE_SETUP
-#line 732 "dhcp4_lexer.ll"
+#line 759 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -2664,9 +2707,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 74:
 YY_RULE_SETUP
-#line 741 "dhcp4_lexer.ll"
+#line 768 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2677,9 +2720,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 75:
 YY_RULE_SETUP
-#line 751 "dhcp4_lexer.ll"
+#line 778 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2689,9 +2732,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 76:
 YY_RULE_SETUP
-#line 760 "dhcp4_lexer.ll"
+#line 787 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2701,9 +2744,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 77:
 YY_RULE_SETUP
-#line 769 "dhcp4_lexer.ll"
+#line 796 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2713,9 +2756,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 78:
 YY_RULE_SETUP
-#line 778 "dhcp4_lexer.ll"
+#line 805 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2725,9 +2768,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 79:
 YY_RULE_SETUP
-#line 787 "dhcp4_lexer.ll"
+#line 814 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2737,9 +2780,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 80:
 YY_RULE_SETUP
-#line 796 "dhcp4_lexer.ll"
+#line 823 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -2750,9 +2793,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 81:
 YY_RULE_SETUP
-#line 806 "dhcp4_lexer.ll"
+#line 833 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2762,9 +2805,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 82:
 YY_RULE_SETUP
-#line 816 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2774,9 +2817,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 83:
 YY_RULE_SETUP
-#line 825 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2786,9 +2829,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 84:
 YY_RULE_SETUP
-#line 834 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2798,9 +2841,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 85:
 YY_RULE_SETUP
-#line 843 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2810,9 +2853,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 86:
 YY_RULE_SETUP
-#line 852 "dhcp4_lexer.ll"
+#line 879 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2822,9 +2865,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 87:
 YY_RULE_SETUP
-#line 861 "dhcp4_lexer.ll"
+#line 888 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2834,9 +2877,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 88:
 YY_RULE_SETUP
-#line 870 "dhcp4_lexer.ll"
+#line 897 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2846,9 +2889,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 89:
 YY_RULE_SETUP
-#line 879 "dhcp4_lexer.ll"
+#line 906 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2858,9 +2901,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 90:
 YY_RULE_SETUP
-#line 888 "dhcp4_lexer.ll"
+#line 915 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -2870,9 +2913,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 91:
 YY_RULE_SETUP
-#line 897 "dhcp4_lexer.ll"
+#line 924 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2882,9 +2925,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 92:
 YY_RULE_SETUP
-#line 906 "dhcp4_lexer.ll"
+#line 933 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2894,9 +2937,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 93:
 YY_RULE_SETUP
-#line 915 "dhcp4_lexer.ll"
+#line 942 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2906,9 +2949,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 94:
 YY_RULE_SETUP
-#line 924 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2918,9 +2961,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 95:
 YY_RULE_SETUP
-#line 933 "dhcp4_lexer.ll"
+#line 960 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2930,9 +2973,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 96:
 YY_RULE_SETUP
-#line 942 "dhcp4_lexer.ll"
+#line 969 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -2942,9 +2985,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 97:
 YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 978 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -2954,9 +2997,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 960 "dhcp4_lexer.ll"
+#line 987 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -2966,9 +3009,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 99:
 YY_RULE_SETUP
-#line 969 "dhcp4_lexer.ll"
+#line 996 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -2978,9 +3021,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 100:
 YY_RULE_SETUP
-#line 978 "dhcp4_lexer.ll"
+#line 1005 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -2990,9 +3033,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 101:
 YY_RULE_SETUP
-#line 987 "dhcp4_lexer.ll"
+#line 1014 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3002,9 +3045,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 102:
 YY_RULE_SETUP
-#line 996 "dhcp4_lexer.ll"
+#line 1023 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3014,9 +3057,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 103:
 YY_RULE_SETUP
-#line 1005 "dhcp4_lexer.ll"
+#line 1032 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3026,9 +3069,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 104:
 YY_RULE_SETUP
-#line 1014 "dhcp4_lexer.ll"
+#line 1041 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3038,9 +3081,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 105:
 YY_RULE_SETUP
-#line 1023 "dhcp4_lexer.ll"
+#line 1050 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3050,9 +3093,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 106:
 YY_RULE_SETUP
-#line 1032 "dhcp4_lexer.ll"
+#line 1059 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3062,9 +3105,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 107:
 YY_RULE_SETUP
-#line 1041 "dhcp4_lexer.ll"
+#line 1068 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3074,9 +3117,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 108:
 YY_RULE_SETUP
-#line 1050 "dhcp4_lexer.ll"
+#line 1077 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3086,9 +3129,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 109:
 YY_RULE_SETUP
-#line 1059 "dhcp4_lexer.ll"
+#line 1086 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3098,9 +3141,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 110:
 YY_RULE_SETUP
-#line 1068 "dhcp4_lexer.ll"
+#line 1095 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3111,9 +3154,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 108:
+case 111:
 YY_RULE_SETUP
-#line 1078 "dhcp4_lexer.ll"
+#line 1105 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3124,9 +3167,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 109:
+case 112:
 YY_RULE_SETUP
-#line 1088 "dhcp4_lexer.ll"
+#line 1115 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -3137,9 +3180,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 110:
+case 113:
 YY_RULE_SETUP
-#line 1098 "dhcp4_lexer.ll"
+#line 1125 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3150,9 +3193,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 111:
+case 114:
 YY_RULE_SETUP
-#line 1108 "dhcp4_lexer.ll"
+#line 1135 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3163,9 +3206,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 112:
+case 115:
 YY_RULE_SETUP
-#line 1118 "dhcp4_lexer.ll"
+#line 1145 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3176,9 +3219,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 113:
+case 116:
 YY_RULE_SETUP
-#line 1128 "dhcp4_lexer.ll"
+#line 1155 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3189,9 +3232,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 114:
+case 117:
 YY_RULE_SETUP
-#line 1138 "dhcp4_lexer.ll"
+#line 1165 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3202,9 +3245,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 115:
+case 118:
 YY_RULE_SETUP
-#line 1148 "dhcp4_lexer.ll"
+#line 1175 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3215,9 +3258,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 116:
+case 119:
 YY_RULE_SETUP
-#line 1158 "dhcp4_lexer.ll"
+#line 1185 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3227,9 +3270,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 120:
 YY_RULE_SETUP
-#line 1167 "dhcp4_lexer.ll"
+#line 1194 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3239,9 +3282,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 121:
 YY_RULE_SETUP
-#line 1176 "dhcp4_lexer.ll"
+#line 1203 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3251,9 +3294,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 122:
 YY_RULE_SETUP
-#line 1185 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3263,9 +3306,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 123:
 YY_RULE_SETUP
-#line 1194 "dhcp4_lexer.ll"
+#line 1221 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3275,9 +3318,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 124:
 YY_RULE_SETUP
-#line 1203 "dhcp4_lexer.ll"
+#line 1230 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3288,9 +3331,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 125:
 YY_RULE_SETUP
-#line 1213 "dhcp4_lexer.ll"
+#line 1240 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3301,9 +3344,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 126:
 YY_RULE_SETUP
-#line 1223 "dhcp4_lexer.ll"
+#line 1250 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3316,9 +3359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 127:
 YY_RULE_SETUP
-#line 1235 "dhcp4_lexer.ll"
+#line 1262 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3330,9 +3373,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 128:
 YY_RULE_SETUP
-#line 1246 "dhcp4_lexer.ll"
+#line 1273 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3344,9 +3387,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 129:
 YY_RULE_SETUP
-#line 1259 "dhcp4_lexer.ll"
+#line 1286 "dhcp4_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.
@@ -3445,65 +3488,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 127:
-/* rule 127 can match eol */
+case 130:
+/* rule 130 can match eol */
 YY_RULE_SETUP
-#line 1357 "dhcp4_lexer.ll"
+#line 1384 "dhcp4_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 128:
-/* rule 128 can match eol */
+case 131:
+/* rule 131 can match eol */
 YY_RULE_SETUP
-#line 1362 "dhcp4_lexer.ll"
+#line 1389 "dhcp4_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 129:
+case 132:
 YY_RULE_SETUP
-#line 1367 "dhcp4_lexer.ll"
+#line 1394 "dhcp4_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 130:
+case 133:
 YY_RULE_SETUP
-#line 1372 "dhcp4_lexer.ll"
+#line 1399 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 131:
+case 134:
 YY_RULE_SETUP
-#line 1373 "dhcp4_lexer.ll"
+#line 1400 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 132:
+case 135:
 YY_RULE_SETUP
-#line 1374 "dhcp4_lexer.ll"
+#line 1401 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 133:
+case 136:
 YY_RULE_SETUP
-#line 1375 "dhcp4_lexer.ll"
+#line 1402 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 134:
+case 137:
 YY_RULE_SETUP
-#line 1376 "dhcp4_lexer.ll"
+#line 1403 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 135:
+case 138:
 YY_RULE_SETUP
-#line 1377 "dhcp4_lexer.ll"
+#line 1404 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 136:
+case 139:
 YY_RULE_SETUP
-#line 1379 "dhcp4_lexer.ll"
+#line 1406 "dhcp4_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
@@ -3522,9 +3565,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 137:
+case 140:
 YY_RULE_SETUP
-#line 1397 "dhcp4_lexer.ll"
+#line 1424 "dhcp4_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
@@ -3538,43 +3581,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 138:
+case 141:
 YY_RULE_SETUP
-#line 1410 "dhcp4_lexer.ll"
+#line 1437 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 139:
+case 142:
 YY_RULE_SETUP
-#line 1415 "dhcp4_lexer.ll"
+#line 1442 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 140:
+case 143:
 YY_RULE_SETUP
-#line 1419 "dhcp4_lexer.ll"
+#line 1446 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 141:
+case 144:
 YY_RULE_SETUP
-#line 1421 "dhcp4_lexer.ll"
+#line 1448 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 142:
+case 145:
 YY_RULE_SETUP
-#line 1423 "dhcp4_lexer.ll"
+#line 1450 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 143:
+case 146:
 YY_RULE_SETUP
-#line 1425 "dhcp4_lexer.ll"
+#line 1452 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1427 "dhcp4_lexer.ll"
+#line 1454 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -3598,12 +3641,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 144:
+case 147:
 YY_RULE_SETUP
-#line 1450 "dhcp4_lexer.ll"
+#line 1477 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3606 "dhcp4_lexer.cc"
+#line 3649 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -3918,7 +3961,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 >= 1172 )
+                       if ( yy_current_state >= 1182 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -3951,11 +3994,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 >= 1172 )
+               if ( yy_current_state >= 1182 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1171);
+       yy_is_jam = (yy_current_state == 1181);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4704,7 +4747,7 @@ void parser4_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1450 "dhcp4_lexer.ll"
+#line 1477 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 11fb3d9f2ff008af566d8c39fe19955e4ac0aabe..49575026cd9287bd143962b665f3aaaa1055bfb4 100644 (file)
@@ -253,28 +253,28 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -293,28 +293,28 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -354,72 +354,72 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 132: // "constant string"
+            case 135: // "constant string"
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 362 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 369 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 376 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 383 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 149: // value
+      case 152: // value
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 390 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 153: // map_value
+      case 156: // map_value
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 397 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 191: // socket_type
+      case 194: // socket_type
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 404 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 200: // db_type
+      case 203: // db_type
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 411 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 408: // ncr_protocol_value
+      case 411: // ncr_protocol_value
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 418 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 416: // replace_client_name_value
+      case 419: // replace_client_name_value
 
-#line 207 "dhcp4_parser.yy" // lalr1.cc:636
+#line 210 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 425 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -621,28 +621,28 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -664,115 +664,115 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 216 "dhcp4_parser.yy" // lalr1.cc:859
+#line 219 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 670 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 217 "dhcp4_parser.yy" // lalr1.cc:859
+#line 220 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 676 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 218 "dhcp4_parser.yy" // lalr1.cc:859
+#line 221 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 682 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 219 "dhcp4_parser.yy" // lalr1.cc:859
+#line 222 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 688 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 220 "dhcp4_parser.yy" // lalr1.cc:859
+#line 223 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 694 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 221 "dhcp4_parser.yy" // lalr1.cc:859
+#line 224 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 222 "dhcp4_parser.yy" // lalr1.cc:859
+#line 225 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 706 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 223 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 712 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 227 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 718 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 228 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 724 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 226 "dhcp4_parser.yy" // lalr1.cc:859
+#line 229 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 730 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 237 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 736 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 235 "dhcp4_parser.yy" // lalr1.cc:859
+#line 238 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 742 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 236 "dhcp4_parser.yy" // lalr1.cc:859
+#line 239 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 748 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 237 "dhcp4_parser.yy" // lalr1.cc:859
+#line 240 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 754 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 238 "dhcp4_parser.yy" // lalr1.cc:859
+#line 241 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 760 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 239 "dhcp4_parser.yy" // lalr1.cc:859
+#line 242 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 766 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 240 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 772 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -781,7 +781,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 32:
-#line 248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 251 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -792,7 +792,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 33:
-#line 253 "dhcp4_parser.yy" // lalr1.cc:859
+#line 256 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -802,13 +802,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 259 "dhcp4_parser.yy" // lalr1.cc:859
+#line 262 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 808 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:859
+#line 269 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -817,7 +817,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 270 "dhcp4_parser.yy" // lalr1.cc:859
+#line 273 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -827,7 +827,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 277 "dhcp4_parser.yy" // lalr1.cc:859
+#line 280 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -836,7 +836,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 280 "dhcp4_parser.yy" // lalr1.cc:859
+#line 283 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -844,7 +844,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
+#line 291 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -853,7 +853,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 292 "dhcp4_parser.yy" // lalr1.cc:859
+#line 295 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -862,7 +862,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 299 "dhcp4_parser.yy" // lalr1.cc:859
+#line 302 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -870,7 +870,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 301 "dhcp4_parser.yy" // lalr1.cc:859
+#line 304 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -879,7 +879,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 310 "dhcp4_parser.yy" // lalr1.cc:859
+#line 313 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -888,7 +888,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 314 "dhcp4_parser.yy" // lalr1.cc:859
+#line 317 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -897,7 +897,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 325 "dhcp4_parser.yy" // lalr1.cc:859
+#line 328 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -908,7 +908,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 335 "dhcp4_parser.yy" // lalr1.cc:859
+#line 338 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -919,7 +919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 340 "dhcp4_parser.yy" // lalr1.cc:859
+#line 343 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61:
-#line 359 "dhcp4_parser.yy" // lalr1.cc:859
+#line 362 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -942,7 +942,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62:
-#line 366 "dhcp4_parser.yy" // lalr1.cc:859
+#line 369 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -954,7 +954,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63:
-#line 376 "dhcp4_parser.yy" // lalr1.cc:859
+#line 379 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64:
-#line 380 "dhcp4_parser.yy" // lalr1.cc:859
+#line 383 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -972,7 +972,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 88:
-#line 413 "dhcp4_parser.yy" // lalr1.cc:859
+#line 416 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -981,7 +981,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 89:
-#line 418 "dhcp4_parser.yy" // lalr1.cc:859
+#line 421 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -990,7 +990,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 90:
-#line 423 "dhcp4_parser.yy" // lalr1.cc:859
+#line 426 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -999,7 +999,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 91:
-#line 428 "dhcp4_parser.yy" // lalr1.cc:859
+#line 431 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1008,7 +1008,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 92:
-#line 433 "dhcp4_parser.yy" // lalr1.cc:859
+#line 436 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -1017,7 +1017,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 438 "dhcp4_parser.yy" // lalr1.cc:859
+#line 441 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 444 "dhcp4_parser.yy" // lalr1.cc:859
+#line 447 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 449 "dhcp4_parser.yy" // lalr1.cc:859
+#line 452 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1046,7 +1046,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 100:
-#line 462 "dhcp4_parser.yy" // lalr1.cc:859
+#line 465 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 466 "dhcp4_parser.yy" // lalr1.cc:859
+#line 469 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1064,7 +1064,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 470 "dhcp4_parser.yy" // lalr1.cc:859
+#line 473 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1075,7 +1075,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 103:
-#line 475 "dhcp4_parser.yy" // lalr1.cc:859
+#line 478 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1084,7 +1084,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 480 "dhcp4_parser.yy" // lalr1.cc:859
+#line 483 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
@@ -1092,7 +1092,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 482 "dhcp4_parser.yy" // lalr1.cc:859
+#line 485 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1101,19 +1101,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 106:
-#line 487 "dhcp4_parser.yy" // lalr1.cc:859
+#line 490 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1107 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 107:
-#line 488 "dhcp4_parser.yy" // lalr1.cc:859
+#line 491 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1113 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 108:
-#line 491 "dhcp4_parser.yy" // lalr1.cc:859
+#line 494 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1124,7 +1124,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 109:
-#line 496 "dhcp4_parser.yy" // lalr1.cc:859
+#line 499 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1133,7 +1133,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 110:
-#line 501 "dhcp4_parser.yy" // lalr1.cc:859
+#line 504 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1144,7 +1144,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 111:
-#line 506 "dhcp4_parser.yy" // lalr1.cc:859
+#line 509 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1153,7 +1153,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 127:
-#line 530 "dhcp4_parser.yy" // lalr1.cc:859
+#line 533 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1161,7 +1161,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 128:
-#line 532 "dhcp4_parser.yy" // lalr1.cc:859
+#line 535 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1170,31 +1170,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 129:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+#line 540 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1176 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 538 "dhcp4_parser.yy" // lalr1.cc:859
+#line 541 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1182 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 539 "dhcp4_parser.yy" // lalr1.cc:859
+#line 542 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1188 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 540 "dhcp4_parser.yy" // lalr1.cc:859
+#line 543 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1194 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 133:
-#line 543 "dhcp4_parser.yy" // lalr1.cc:859
+#line 546 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1202,7 +1202,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 134:
-#line 545 "dhcp4_parser.yy" // lalr1.cc:859
+#line 548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1212,7 +1212,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 135:
-#line 551 "dhcp4_parser.yy" // lalr1.cc:859
+#line 554 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1220,7 +1220,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 136:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:859
+#line 556 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1230,7 +1230,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 137:
-#line 559 "dhcp4_parser.yy" // lalr1.cc:859
+#line 562 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1238,7 +1238,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 138:
-#line 561 "dhcp4_parser.yy" // lalr1.cc:859
+#line 564 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1248,7 +1248,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139:
-#line 567 "dhcp4_parser.yy" // lalr1.cc:859
+#line 570 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
@@ -1257,7 +1257,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140:
-#line 572 "dhcp4_parser.yy" // lalr1.cc:859
+#line 575 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1265,7 +1265,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141:
-#line 574 "dhcp4_parser.yy" // lalr1.cc:859
+#line 577 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1275,7 +1275,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142:
-#line 580 "dhcp4_parser.yy" // lalr1.cc:859
+#line 583 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
@@ -1284,7 +1284,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143:
-#line 585 "dhcp4_parser.yy" // lalr1.cc:859
+#line 588 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
@@ -1293,7 +1293,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144:
-#line 590 "dhcp4_parser.yy" // lalr1.cc:859
+#line 593 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
@@ -1302,7 +1302,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145:
-#line 595 "dhcp4_parser.yy" // lalr1.cc:859
+#line 598 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
@@ -1311,7 +1311,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146:
-#line 600 "dhcp4_parser.yy" // lalr1.cc:859
+#line 603 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1319,7 +1319,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147:
-#line 602 "dhcp4_parser.yy" // lalr1.cc:859
+#line 605 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
@@ -1329,7 +1329,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148:
-#line 608 "dhcp4_parser.yy" // lalr1.cc:859
+#line 611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1337,7 +1337,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
+#line 613 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
@@ -1347,7 +1347,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150:
-#line 617 "dhcp4_parser.yy" // lalr1.cc:859
+#line 620 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1358,7 +1358,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151:
-#line 622 "dhcp4_parser.yy" // lalr1.cc:859
+#line 625 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1367,7 +1367,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 159:
-#line 638 "dhcp4_parser.yy" // lalr1.cc:859
+#line 641 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1376,7 +1376,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 160:
-#line 643 "dhcp4_parser.yy" // lalr1.cc:859
+#line 646 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1385,7 +1385,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 161:
-#line 648 "dhcp4_parser.yy" // lalr1.cc:859
+#line 651 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -1394,7 +1394,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162:
-#line 653 "dhcp4_parser.yy" // lalr1.cc:859
+#line 656 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -1403,7 +1403,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163:
-#line 658 "dhcp4_parser.yy" // lalr1.cc:859
+#line 661 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1412,7 +1412,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164:
-#line 663 "dhcp4_parser.yy" // lalr1.cc:859
+#line 666 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1423,7 +1423,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+#line 671 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1432,7 +1432,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 170:
-#line 681 "dhcp4_parser.yy" // lalr1.cc:859
+#line 684 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1442,7 +1442,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 171:
-#line 685 "dhcp4_parser.yy" // lalr1.cc:859
+#line 688 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1450,7 +1450,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172:
-#line 689 "dhcp4_parser.yy" // lalr1.cc:859
+#line 692 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1460,7 +1460,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 173:
-#line 693 "dhcp4_parser.yy" // lalr1.cc:859
+#line 696 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1468,7 +1468,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 179:
-#line 706 "dhcp4_parser.yy" // lalr1.cc:859
+#line 709 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1476,7 +1476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 180:
-#line 708 "dhcp4_parser.yy" // lalr1.cc:859
+#line 711 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -1486,7 +1486,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181:
-#line 714 "dhcp4_parser.yy" // lalr1.cc:859
+#line 717 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1494,7 +1494,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 182:
-#line 716 "dhcp4_parser.yy" // lalr1.cc:859
+#line 719 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1503,7 +1503,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183:
-#line 722 "dhcp4_parser.yy" // lalr1.cc:859
+#line 725 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1514,7 +1514,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184:
-#line 727 "dhcp4_parser.yy" // lalr1.cc:859
+#line 730 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1523,7 +1523,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 193:
-#line 744 "dhcp4_parser.yy" // lalr1.cc:859
+#line 747 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
@@ -1532,7 +1532,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 194:
-#line 749 "dhcp4_parser.yy" // lalr1.cc:859
+#line 752 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
@@ -1541,7 +1541,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 195:
-#line 754 "dhcp4_parser.yy" // lalr1.cc:859
+#line 757 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
@@ -1550,7 +1550,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 196:
-#line 759 "dhcp4_parser.yy" // lalr1.cc:859
+#line 762 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
@@ -1559,7 +1559,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
+#line 767 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
@@ -1568,7 +1568,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198:
-#line 769 "dhcp4_parser.yy" // lalr1.cc:859
+#line 772 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
@@ -1577,7 +1577,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199:
-#line 777 "dhcp4_parser.yy" // lalr1.cc:859
+#line 780 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
@@ -1588,7 +1588,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 200:
-#line 782 "dhcp4_parser.yy" // lalr1.cc:859
+#line 785 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1597,7 +1597,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 205:
-#line 802 "dhcp4_parser.yy" // lalr1.cc:859
+#line 805 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1607,7 +1607,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 206:
-#line 806 "dhcp4_parser.yy" // lalr1.cc:859
+#line 809 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1630,7 +1630,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 207:
-#line 825 "dhcp4_parser.yy" // lalr1.cc:859
+#line 828 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1640,7 +1640,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 208:
-#line 829 "dhcp4_parser.yy" // lalr1.cc:859
+#line 832 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1648,7 +1648,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 231:
-#line 861 "dhcp4_parser.yy" // lalr1.cc:859
+#line 864 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1656,7 +1656,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 232:
-#line 863 "dhcp4_parser.yy" // lalr1.cc:859
+#line 866 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -1666,7 +1666,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233:
-#line 869 "dhcp4_parser.yy" // lalr1.cc:859
+#line 872 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1674,7 +1674,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234:
-#line 871 "dhcp4_parser.yy" // lalr1.cc:859
+#line 874 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
@@ -1684,7 +1684,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 235:
-#line 877 "dhcp4_parser.yy" // lalr1.cc:859
+#line 880 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1692,7 +1692,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 236:
-#line 879 "dhcp4_parser.yy" // lalr1.cc:859
+#line 882 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
@@ -1702,7 +1702,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237:
-#line 885 "dhcp4_parser.yy" // lalr1.cc:859
+#line 888 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1710,7 +1710,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 238:
-#line 887 "dhcp4_parser.yy" // lalr1.cc:859
+#line 890 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
@@ -1720,7 +1720,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 239:
-#line 893 "dhcp4_parser.yy" // lalr1.cc:859
+#line 896 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1728,7 +1728,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 240:
-#line 895 "dhcp4_parser.yy" // lalr1.cc:859
+#line 898 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -1738,7 +1738,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 241:
-#line 901 "dhcp4_parser.yy" // lalr1.cc:859
+#line 904 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1746,7 +1746,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 242:
-#line 903 "dhcp4_parser.yy" // lalr1.cc:859
+#line 906 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
@@ -1756,7 +1756,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 243:
-#line 909 "dhcp4_parser.yy" // lalr1.cc:859
+#line 912 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
@@ -1764,7 +1764,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 244:
-#line 911 "dhcp4_parser.yy" // lalr1.cc:859
+#line 914 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -1774,7 +1774,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 245:
-#line 917 "dhcp4_parser.yy" // lalr1.cc:859
+#line 920 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1782,7 +1782,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 246:
-#line 919 "dhcp4_parser.yy" // lalr1.cc:859
+#line 922 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservation-mode", rm);
@@ -1792,7 +1792,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 247:
-#line 925 "dhcp4_parser.yy" // lalr1.cc:859
+#line 928 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
@@ -1801,7 +1801,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 248:
-#line 930 "dhcp4_parser.yy" // lalr1.cc:859
+#line 933 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
@@ -1810,7 +1810,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 249:
-#line 939 "dhcp4_parser.yy" // lalr1.cc:859
+#line 942 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1821,7 +1821,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 250:
-#line 944 "dhcp4_parser.yy" // lalr1.cc:859
+#line 947 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1830,7 +1830,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 255:
-#line 961 "dhcp4_parser.yy" // lalr1.cc:859
+#line 964 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1840,7 +1840,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 256:
-#line 965 "dhcp4_parser.yy" // lalr1.cc:859
+#line 968 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1848,7 +1848,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 257:
-#line 972 "dhcp4_parser.yy" // lalr1.cc:859
+#line 975 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1858,7 +1858,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 258:
-#line 976 "dhcp4_parser.yy" // lalr1.cc:859
+#line 979 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1866,7 +1866,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 272:
-#line 1002 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1005 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
@@ -1875,7 +1875,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274:
-#line 1009 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1883,7 +1883,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275:
-#line 1011 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1014 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -1893,7 +1893,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 276:
-#line 1017 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1901,7 +1901,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 277:
-#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1022 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -1911,7 +1911,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 278:
-#line 1025 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1919,7 +1919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 279:
-#line 1027 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -1929,7 +1929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281:
-#line 1035 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1937,7 +1937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282:
-#line 1037 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1040 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -1947,7 +1947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283:
-#line 1043 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1046 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
@@ -1956,7 +1956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 284:
-#line 1052 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1055 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -1967,7 +1967,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 285:
-#line 1057 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1060 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1976,7 +1976,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290:
-#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1079 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1986,7 +1986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 291:
-#line 1080 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1083 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1994,7 +1994,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 292:
-#line 1087 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1090 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2004,7 +2004,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 293:
-#line 1091 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1094 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2012,7 +2012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 305:
-#line 1120 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1123 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2020,7 +2020,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 306:
-#line 1122 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1125 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -2030,7 +2030,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 309:
-#line 1132 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1135 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
@@ -2039,7 +2039,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 310:
-#line 1140 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1143 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
@@ -2050,7 +2050,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 311:
-#line 1145 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2059,7 +2059,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 316:
-#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1163 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2069,7 +2069,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 317:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1167 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2077,7 +2077,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 318:
-#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1171 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2087,7 +2087,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 319:
-#line 1172 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1175 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2095,7 +2095,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 326:
-#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1189 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2103,7 +2103,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 327:
-#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1191 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -2113,7 +2113,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 328:
-#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1197 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2121,7 +2121,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 329:
-#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1199 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2130,7 +2130,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 330:
-#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1207 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
@@ -2141,7 +2141,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 331:
-#line 1209 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1212 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2150,7 +2150,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 336:
-#line 1222 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1225 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2160,7 +2160,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 337:
-#line 1226 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1229 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2168,7 +2168,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 338:
-#line 1230 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1233 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2178,7 +2178,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 339:
-#line 1234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1237 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2186,7 +2186,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 357:
-#line 1262 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1265 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2194,7 +2194,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 358:
-#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1267 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
@@ -2204,7 +2204,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 359:
-#line 1270 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1273 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2212,7 +2212,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 360:
-#line 1272 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1275 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
@@ -2222,7 +2222,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 361:
-#line 1278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2230,7 +2230,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 362:
-#line 1280 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1283 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
@@ -2240,7 +2240,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 363:
-#line 1286 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2248,7 +2248,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 364:
-#line 1288 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1291 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
@@ -2258,7 +2258,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 365:
-#line 1294 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2266,7 +2266,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 366:
-#line 1296 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -2276,7 +2276,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 367:
-#line 1302 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2284,7 +2284,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 368:
-#line 1304 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1307 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -2294,7 +2294,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 369:
-#line 1310 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2302,7 +2302,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 370:
-#line 1312 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1315 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
@@ -2312,7 +2312,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 371:
-#line 1318 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2320,7 +2320,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 372:
-#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1323 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
@@ -2330,7 +2330,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 373:
-#line 1326 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2338,7 +2338,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 374:
-#line 1328 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
@@ -2348,7 +2348,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 375:
-#line 1334 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2356,7 +2356,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 376:
-#line 1336 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -2366,7 +2366,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 377:
-#line 1342 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
@@ -2377,7 +2377,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 378:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1350 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2386,7 +2386,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 379:
-#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1358 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
@@ -2397,7 +2397,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 380:
-#line 1360 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2406,7 +2406,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 381:
-#line 1365 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1368 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2414,7 +2414,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 382:
-#line 1367 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1370 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
@@ -2424,7 +2424,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 383:
-#line 1376 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
@@ -2435,7 +2435,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 384:
-#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2444,7 +2444,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 387:
-#line 1390 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1393 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2454,7 +2454,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 388:
-#line 1394 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1397 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2462,7 +2462,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 401:
-#line 1417 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1420 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2470,7 +2470,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 402:
-#line 1419 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1422 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -2480,7 +2480,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 403:
-#line 1429 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1432 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
@@ -2489,7 +2489,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 404:
-#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1439 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -2500,7 +2500,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 405:
-#line 1441 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1444 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2509,7 +2509,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 410:
-#line 1454 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1457 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2517,7 +2517,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 411:
-#line 1456 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1459 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -2527,7 +2527,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 412:
-#line 1462 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1465 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2535,7 +2535,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 413:
-#line 1464 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -2545,7 +2545,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 414:
-#line 1472 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2556,7 +2556,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 415:
-#line 1477 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1480 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2565,7 +2565,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 416:
-#line 1482 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1485 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2575,7 +2575,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 417:
-#line 1486 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1489 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2583,7 +2583,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 435:
-#line 1511 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1514 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
@@ -2592,7 +2592,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 436:
-#line 1516 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1519 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2600,7 +2600,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 437:
-#line 1518 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1521 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
@@ -2610,7 +2610,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 438:
-#line 1524 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1527 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2618,7 +2618,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 439:
-#line 1526 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1529 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
@@ -2628,7 +2628,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 440:
-#line 1532 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
@@ -2637,7 +2637,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 441:
-#line 1537 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1540 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2645,7 +2645,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 442:
-#line 1539 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
@@ -2655,7 +2655,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 443:
-#line 1545 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
@@ -2664,7 +2664,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 444:
-#line 1550 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1553 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
@@ -2673,7 +2673,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 445:
-#line 1555 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
@@ -2681,7 +2681,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 446:
-#line 1557 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1560 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2690,19 +2690,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 447:
-#line 1563 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1566 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 2696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 448:
-#line 1564 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1567 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 2702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 449:
-#line 1567 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1570 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
@@ -2710,7 +2710,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 450:
-#line 1569 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1572 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -2720,7 +2720,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 451:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
@@ -2729,7 +2729,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 452:
-#line 1580 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
@@ -2738,7 +2738,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 453:
-#line 1585 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1588 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
@@ -2747,7 +2747,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 454:
-#line 1590 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1593 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
@@ -2755,7 +2755,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 455:
-#line 1592 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1595 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2764,7 +2764,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 456:
-#line 1598 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1601 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
@@ -2772,7 +2772,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 457:
-#line 1601 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1604 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2780,7 +2780,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 458:
-#line 1604 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1607 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2788,7 +2788,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 459:
-#line 1607 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1610 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2796,7 +2796,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 460:
-#line 1610 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1613 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -2805,7 +2805,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 461:
-#line 1616 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1619 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2813,7 +2813,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 462:
-#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1621 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
@@ -2823,7 +2823,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 463:
-#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2831,7 +2831,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 464:
-#line 1628 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1631 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2840,7 +2840,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 465:
-#line 1633 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1636 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2848,7 +2848,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 466:
-#line 1635 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2857,7 +2857,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 467:
-#line 1645 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1648 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
@@ -2868,7 +2868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 468:
-#line 1650 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1653 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2877,7 +2877,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 472:
-#line 1667 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1670 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -2888,7 +2888,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 473:
-#line 1672 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1675 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2897,7 +2897,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 476:
-#line 1684 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1687 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -2907,7 +2907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 477:
-#line 1688 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1691 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2915,7 +2915,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 485:
-#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1706 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
@@ -2924,7 +2924,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 486:
-#line 1708 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1711 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2932,7 +2932,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 487:
-#line 1710 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1713 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -2942,7 +2942,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 488:
-#line 1716 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -2953,7 +2953,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 489:
-#line 1721 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1724 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2962,7 +2962,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 492:
-#line 1730 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1733 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2972,23 +2972,23 @@ namespace isc { namespace dhcp {
     break;
 
   case 493:
-#line 1734 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1737 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2980 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 496:
-#line 1742 "dhcp4_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1751 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2988 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1744 "dhcp4_parser.yy" // lalr1.cc:859
+  case 501:
+#line 1753 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -2997,8 +2997,35 @@ namespace isc { namespace dhcp {
 #line 2998 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
+  case 502:
+#line 1759 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("flush", flush);
+}
+#line 3007 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 503:
+#line 1764 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxsize", maxsize);
+}
+#line 3016 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
 
-#line 3002 "dhcp4_parser.cc" // lalr1.cc:859
+  case 504:
+#line 1769 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxver", maxver);
+}
+#line 3025 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+
+#line 3029 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3260,88 +3287,90 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     201,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,    60,    19,    22,    57,    59,    68,    82,    84,
-      86,    99,   124,   128,  -473,  -473,  -473,  -473,  -473,  -473,
+      92,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,    34,    19,    31,    36,   108,   116,   127,   134,
+     143,   152,   175,   182,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -473,    19,   -16,    17,    79,
-     102,    18,    41,   109,   139,     1,   -25,   122,  -473,   142,
-     173,   174,   187,   203,  -473,  -473,  -473,  -473,   200,  -473,
-      29,  -473,  -473,  -473,  -473,  -473,  -473,   235,   244,  -473,
-    -473,  -473,   245,   251,   258,   259,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   260,  -473,  -473,  -473,    30,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,    19,   -94,    17,    80,
+     168,    18,    -7,   113,    16,   -19,   -35,   229,  -473,    53,
+      69,    79,    84,   188,  -473,  -473,  -473,  -473,   189,  -473,
+      52,  -473,  -473,  -473,  -473,  -473,  -473,   196,   202,  -473,
+    -473,  -473,   210,   241,   259,   260,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   262,  -473,  -473,  -473,    65,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,   155,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   262,   263,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,   156,  -473,  -473,  -473,  -473,  -473,
+    -473,    81,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   263,   265,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,    82,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,   158,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,    85,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,   261,   205,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,   231,   268,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,   269,  -473,  -473,
     -473,   270,  -473,  -473,   267,   274,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,   276,  -473,  -473,
     -473,  -473,   273,   275,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   162,  -473,  -473,  -473,   280,  -473,  -473,
+    -473,  -473,  -473,   139,  -473,  -473,  -473,   280,  -473,  -473,
      281,  -473,   283,   287,  -473,  -473,   288,   289,   290,  -473,
-    -473,  -473,   166,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,   140,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,    19,
-      19,  -473,   163,   296,   297,   299,   300,  -473,    17,  -473,
-     301,   171,   172,   304,   305,   306,   179,   181,   183,   184,
-     311,   314,   315,   316,   329,   330,   331,   207,   332,   333,
-      79,  -473,   334,   335,   102,  -473,    65,   337,   338,   339,
-     340,   341,   342,   343,   215,   214,   348,   349,   350,   351,
-      18,  -473,   352,   353,    41,  -473,   354,   355,   356,   357,
-     358,   359,   360,   361,   362,   363,  -473,   109,   364,   365,
-     237,   367,   368,   369,   240,  -473,   139,   370,   241,  -473,
-       1,   373,   374,    44,  -473,   246,   375,   376,   250,   378,
-     252,   254,   380,   382,   255,   256,   257,   384,   385,   122,
-    -473,  -473,  -473,   389,   387,   388,    19,    19,  -473,   390,
-    -473,  -473,   264,   391,   392,  -473,  -473,  -473,  -473,   395,
-     396,   397,   398,   399,   400,   401,  -473,   402,   403,  -473,
-     406,   132,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-     404,   410,  -473,  -473,  -473,   282,   284,   285,   413,   291,
-     292,   293,  -473,  -473,   298,   302,   414,   408,  -473,   303,
-     415,  -473,   307,   308,   406,   310,   313,   318,   319,   320,
-     321,   322,  -473,   323,   325,  -473,   326,   328,   336,  -473,
-    -473,   344,  -473,  -473,   345,    19,  -473,  -473,   346,   347,
-    -473,   366,  -473,  -473,    15,   312,  -473,  -473,  -473,    -1,
-     371,  -473,    19,    79,   324,  -473,  -473,   102,  -473,    11,
-      11,   421,   426,   429,    -3,    24,   430,   116,   170,   122,
-    -473,  -473,  -473,  -473,  -473,   417,  -473,    65,  -473,  -473,
-    -473,   436,  -473,  -473,  -473,  -473,  -473,   440,   386,  -473,
+      19,  -473,   160,   296,   297,   299,   300,  -473,    17,  -473,
+     301,   169,   170,   302,   305,   306,   176,   178,   179,   180,
+     313,   314,   315,   316,   332,   333,   334,   203,   336,   337,
+      80,  -473,   338,   339,   168,  -473,    28,   340,   341,   342,
+     343,   344,   345,   348,   217,   216,   351,   352,   353,   354,
+      18,  -473,   355,   356,    -7,  -473,   357,   358,   359,   361,
+     362,   363,   364,   365,   366,   367,  -473,   113,   368,   369,
+     238,   371,   372,   373,   240,  -473,    16,   375,   242,  -473,
+     -19,   377,   378,   172,  -473,   246,   379,   381,   250,   383,
+     252,   253,   386,   387,   254,   255,   256,   391,   392,   229,
+    -473,  -473,  -473,   393,   394,   395,    19,    19,  -473,   396,
+    -473,  -473,   264,   397,   398,  -473,  -473,  -473,  -473,   401,
+     402,   403,   404,   405,   406,   407,  -473,   408,   409,  -473,
+     412,   245,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+     390,   410,  -473,  -473,  -473,   277,   284,   285,   413,   286,
+     293,   295,  -473,  -473,   298,   303,   417,   416,  -473,   304,
+     418,  -473,   307,   308,   412,   310,   312,   317,   318,   319,
+     320,   322,  -473,   323,   325,  -473,   326,   327,   328,  -473,
+    -473,   329,  -473,  -473,   330,    19,  -473,  -473,   331,   335,
+    -473,   346,  -473,  -473,    22,   292,  -473,  -473,  -473,    26,
+     347,  -473,    19,    80,   321,  -473,  -473,   168,  -473,    76,
+      76,   427,   429,   430,   126,    35,   433,    91,   171,   229,
+    -473,  -473,  -473,  -473,  -473,   420,  -473,    28,  -473,  -473,
+    -473,   441,  -473,  -473,  -473,  -473,  -473,   443,   374,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,   169,  -473,   188,  -473,  -473,
-     204,  -473,  -473,  -473,  -473,   444,   457,   458,   460,   461,
-    -473,  -473,  -473,   206,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -473,  -473,   226,  -473,   463,
-     464,  -473,  -473,   465,   467,  -473,  -473,   466,   470,  -473,
-    -473,  -473,  -473,  -473,  -473,    70,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   136,  -473,   468,   472,  -473,   462,   476,
-     477,   478,   479,   480,   228,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,   229,  -473,  -473,  -473,   230,   372,
-     377,  -473,  -473,   481,   482,  -473,  -473,   483,   485,  -473,
-    -473,   484,  -473,   486,   324,  -473,  -473,   487,   489,   490,
-     491,   379,   271,   381,   272,   383,   492,   493,    11,  -473,
-    -473,    18,  -473,   421,   139,  -473,   426,     1,  -473,   429,
-      -3,  -473,    24,  -473,   -25,  -473,   430,   393,   394,   405,
-     407,   409,   411,   116,  -473,   495,   496,   170,  -473,  -473,
-    -473,   499,   498,  -473,    41,  -473,   436,   109,  -473,   440,
-     502,  -473,   497,  -473,    78,   416,   418,   419,  -473,  -473,
-    -473,  -473,  -473,   420,   422,  -473,   232,  -473,   500,  -473,
-     503,  -473,  -473,  -473,   239,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   423,   424,  -473,  -473,   425,   242,  -473,
-     505,  -473,   427,   508,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,   141,  -473,   159,  -473,  -473,
+     162,  -473,  -473,  -473,  -473,   463,   464,   465,   467,   468,
+    -473,  -473,  -473,   163,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,   199,  -473,   469,
+     470,  -473,  -473,   471,   473,  -473,  -473,   472,   476,  -473,
+    -473,  -473,  -473,  -473,  -473,   111,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   235,  -473,   474,   480,  -473,   481,   482,
+     483,   484,   485,   486,   200,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,   201,  -473,  -473,  -473,   224,   349,
+     360,  -473,  -473,   487,   488,  -473,  -473,   490,   489,  -473,
+    -473,   466,  -473,   493,   321,  -473,  -473,   494,   495,   496,
+     497,   370,   376,   380,   382,   385,   498,   499,    76,  -473,
+    -473,    18,  -473,   427,    16,  -473,   429,   -19,  -473,   430,
+     126,  -473,    35,  -473,   -35,  -473,   433,   388,   389,   399,
+     400,   411,   414,    91,  -473,   500,   501,   171,  -473,  -473,
+    -473,   502,   491,  -473,    -7,  -473,   441,   113,  -473,   443,
+     503,  -473,   504,  -473,   230,   384,   419,   421,  -473,  -473,
+    -473,  -473,  -473,   422,   423,  -473,   225,  -473,   505,  -473,
+     507,  -473,  -473,  -473,   226,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   424,   425,  -473,  -473,   426,   228,  -473,
+     509,  -473,   428,   511,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,   182,  -473,    23,   508,  -473,
-    -473,   506,  -473,  -473,  -473,   243,  -473,  -473,  -473,  -473,
-    -473,   513,   412,   514,    23,  -473,   515,  -473,   428,  -473,
-     512,  -473,  -473,   253,  -473,   431,   512,  -473,  -473,   249,
-    -473,  -473,   517,   431,  -473,   432,  -473,  -473
+    -473,  -473,  -473,  -473,  -473,   243,  -473,    77,   511,  -473,
+    -473,   506,  -473,  -473,  -473,   232,  -473,  -473,  -473,  -473,
+    -473,   508,   415,   518,    77,  -473,   521,  -473,   431,  -473,
+     516,  -473,  -473,   244,  -473,   -67,   516,  -473,  -473,   523,
+     524,   525,   234,  -473,  -473,  -473,  -473,  -473,  -473,   526,
+     432,   435,   436,   -67,  -473,   434,  -473,  -473,  -473,  -473,
+    -473
   };
 
   const unsigned short int
@@ -3427,44 +3456,47 @@ namespace isc { namespace dhcp {
       50,   317,   337,   382,   476,     0,   474,     0,     0,   473,
      488,     0,   486,   484,   480,     0,   478,   482,   483,   481,
      475,     0,     0,     0,     0,   477,     0,   485,     0,   479,
-       0,   487,   492,     0,   490,     0,     0,   489,   496,     0,
-     494,   491,     0,     0,   493,     0,   495,   497
+       0,   487,   492,     0,   490,     0,     0,   489,   500,     0,
+       0,     0,     0,   494,   496,   497,   498,   499,   491,     0,
+       0,     0,     0,     0,   493,     0,   502,   503,   504,   495,
+     501
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,   -36,  -473,    46,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,    63,  -473,  -473,  -473,   -58,  -473,
-    -473,  -473,   234,  -473,  -473,  -473,  -473,    40,   218,   -60,
-     -44,   -42,  -473,  -473,   -40,  -473,  -473,    37,   211,  -473,
+    -473,  -473,  -473,   -36,  -473,    71,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,    87,  -473,  -473,  -473,   -58,  -473,
+    -473,  -473,   249,  -473,  -473,  -473,  -473,    49,   223,   -60,
+     -44,   -42,  -473,  -473,   -40,  -473,  -473,    47,   227,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-      39,  -138,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+      48,  -129,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,   -63,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -149,  -473,  -473,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -154,  -473,  -473,  -473,  -151,
-     176,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -159,  -473,
-    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -137,
-    -473,  -473,  -473,  -136,   213,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -140,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -144,  -473,  -473,  -473,  -141,
+     181,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -148,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -127,
+    -473,  -473,  -473,  -123,   219,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -472,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -139,  -473,  -473,
-    -473,  -133,  -473,   190,  -473,   -49,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -124,  -473,  -473,
+    -473,  -121,  -473,   206,  -473,   -49,  -473,  -473,  -473,  -473,
     -473,   -47,  -473,  -473,  -473,  -473,  -473,   -51,  -473,  -473,
-    -473,  -130,  -473,  -473,  -473,  -124,  -473,   198,  -473,  -473,
-    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -145,  -473,
-    -473,  -473,  -142,   231,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,  -473,  -146,  -473,  -473,  -473,  -141,  -473,   220,   -48,
+    -473,  -115,  -473,  -473,  -473,  -122,  -473,   205,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -139,  -473,
+    -473,  -473,  -136,   239,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -135,  -473,  -473,  -473,  -132,  -473,   233,   -48,
     -473,  -302,  -473,  -294,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-    -473,    61,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -128,
-    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,    71,   192,
+    -473,    70,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -119,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,    83,   197,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
-     -82,  -473,  -473,  -473,  -205,  -473,  -473,  -220,  -473,  -473,
-    -473,  -473,  -473,  -473,  -231,  -473,  -473,  -237,  -473
+     -75,  -473,  -473,  -473,  -197,  -473,  -473,  -211,  -473,  -473,
+    -473,  -473,  -473,  -473,  -222,  -473,  -473,  -238,  -473,  -473,
+    -473,  -473,  -473
   };
 
   const short int
@@ -3500,7 +3532,8 @@ namespace isc { namespace dhcp {
      271,   372,   545,   272,   373,   273,   274,   275,   276,   377,
      552,   277,   378,    83,   285,    84,   286,    85,   284,   557,
      558,   559,   653,   775,   776,   777,   785,   786,   787,   788,
-     793,   789,   791,   803,   804,   805,   809,   810,   812
+     793,   789,   791,   803,   804,   805,   812,   813,   814,   819,
+     815,   816,   817
   };
 
   const unsigned short int
@@ -3508,63 +3541,63 @@ namespace isc { namespace dhcp {
   {
       79,   150,   229,   149,   173,   189,   212,   228,   242,   261,
      166,   174,   190,   169,   418,   194,   230,   151,   231,   152,
-      68,   153,   419,   612,    25,   135,    26,    74,    27,    36,
-     543,   135,   288,   310,   561,    88,    89,   289,   311,   562,
-     563,   564,   565,   566,   567,   568,   569,   570,   571,   206,
-     226,   207,   208,   227,   240,   241,    92,    93,    94,   206,
-      24,   136,   137,   138,    38,    98,    40,   600,   601,   602,
-     603,   206,   604,   680,   139,    42,   681,   140,   141,   142,
-     143,   144,   145,    89,   179,   180,   146,   147,    98,    44,
-      86,    46,   146,    48,   148,    87,    88,    89,   171,   172,
-      90,    91,   754,   755,   756,   757,    50,    78,   547,   548,
-     549,   550,    98,   206,   129,   130,    71,    92,    93,    94,
-      95,    96,   544,   240,   241,    97,    98,    89,   179,   180,
-      75,    52,   413,    78,   551,    54,    76,    77,   780,   682,
-     781,   782,   683,    78,    99,   100,   502,   503,   278,    78,
-      78,    28,    29,    30,    31,    78,    98,   101,   314,   330,
-     102,   334,   205,   315,   331,   363,   335,   103,   104,   379,
-     364,   105,   310,    78,   380,   181,   279,   652,   280,   182,
-     183,   184,   185,   186,   187,   778,   188,   206,   779,   207,
-     208,   654,   209,   210,   211,   281,   655,    78,   618,   619,
-     620,   621,   622,   623,   287,   418,   282,   314,   347,   668,
-     733,    78,   656,   419,   669,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   668,
-      79,   693,   697,   379,   670,   330,   694,   698,   699,   291,
-     764,    78,   363,   381,   382,   334,   794,   767,   292,   296,
-     771,   795,   813,   415,    78,   297,   806,   814,   414,   807,
-     632,   633,   298,   299,   307,   416,   324,   325,   417,   346,
-     150,    78,   149,   350,   354,   355,   173,   356,   360,   166,
+      68,   153,   419,   612,    25,   135,    26,    74,    27,   206,
+     226,   207,   208,   227,    24,    88,    89,   543,    36,   205,
+      98,    71,   135,    38,   240,   241,    89,   179,   180,   808,
+     171,   172,   809,   810,   811,   288,    92,    93,    94,   278,
+     289,   136,   137,   138,   206,    98,   207,   208,   310,   209,
+     210,   211,   279,   311,   139,    98,   206,   140,   141,   142,
+     143,   144,   145,   280,   314,   330,   146,   147,   334,   315,
+     331,    86,   281,   335,   148,   413,    87,    88,    89,   561,
+      78,    90,    91,   146,   562,   563,   564,   565,   566,   567,
+     568,   569,   570,   571,   680,    40,    78,   681,    92,    93,
+      94,    95,    96,    42,   206,   206,    97,    98,    78,   544,
+      75,    89,   179,   180,    44,   547,   548,   549,   550,    76,
+      77,    46,   363,   379,   310,    99,   100,   364,   380,   652,
+      48,    78,    78,    78,    28,    29,    30,    31,   101,    50,
+      98,   102,   654,    78,   551,   314,   668,   655,   103,   104,
+     656,   669,   105,   618,   619,   620,   621,   622,   623,   181,
+     129,   130,    52,   182,   183,   184,   185,   186,   187,    54,
+     188,   282,   780,   287,   781,   782,   600,   601,   602,   603,
+     291,   604,   668,   693,   697,   418,   292,   670,   694,   698,
+     733,    78,    78,   419,   296,    78,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,   379,   330,   363,
+      79,   334,   699,   764,   767,   794,   771,   823,   682,   346,
+     795,   683,   824,   381,   382,   297,   778,   806,    78,   779,
+     807,   240,   241,   415,   754,   755,   756,   757,   414,   502,
+     503,   632,   633,   298,   299,   416,   307,   324,   417,   325,
+     150,   347,   149,   350,   354,   355,   173,   356,   360,   166,
      358,   359,   169,   174,   365,   368,   151,   370,   152,   189,
      153,   371,   374,   375,   376,   383,   190,   229,   212,   194,
-     384,   385,   228,   386,   387,   389,   390,   391,   392,   393,
-     394,   230,   395,   231,   396,   399,   397,   398,   400,   401,
-     402,   261,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,   403,   404,   405,   407,   408,   410,   411,
-     406,   425,   426,   427,   428,   429,   430,   431,   432,   433,
-     485,   486,   434,   435,   436,   437,   439,   440,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   453,   454,
-     455,   456,   457,   458,   461,   459,   462,   464,   465,   468,
-     469,   467,   471,   470,   474,   472,   475,   473,   479,   480,
-     476,   477,   478,   482,   483,   484,   488,   487,   489,   490,
-     491,   492,   493,   494,   495,   496,   719,   721,   497,   498,
-     499,   500,   506,   507,   508,   518,   509,   510,   511,   517,
-     546,   640,    26,   512,   513,   514,   580,   580,   588,   539,
-     515,   572,   572,   592,   516,   519,   596,   614,   556,   522,
-     523,   261,   525,   642,   415,   526,   554,   646,   661,   414,
-     527,   528,   529,   530,   531,   532,   416,   533,   534,   417,
-     535,   662,   663,   650,   664,   665,   687,   673,   536,   672,
-     676,   675,   678,   679,   685,   686,   537,   538,   540,   541,
-     688,   689,   690,   691,   692,   706,   520,   705,   709,   708,
-     712,   714,   711,   715,   716,   717,   723,   724,   542,   743,
-     744,   747,   753,   553,   700,   746,   752,   524,   765,   703,
-     792,   766,   718,   772,   720,   774,   722,   796,   798,   802,
-     800,   815,   388,   555,   560,   412,   736,   737,   409,   587,
-     725,   732,   735,   734,   742,   726,   727,   729,   738,   466,
-     739,   728,   740,   438,   741,   797,   460,   808,   759,   731,
-     760,   761,   762,   730,   763,   768,   769,   770,   463,   773,
-     801,   749,   748,   751,   817,   441,   750,   452,   641,   745,
-     638,   481,   713,   790,   799,   811,   816,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     384,   385,   228,   386,   387,   389,   392,   390,   391,   393,
+     394,   230,   395,   231,   396,   397,   398,   399,   400,   401,
+     402,   261,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   403,   404,   405,   406,
+     407,   408,   410,   411,   425,   426,   427,   428,   429,   430,
+     485,   486,   431,   432,   433,   434,   435,   436,   437,   439,
+     440,   442,   443,   444,    78,   445,   446,   447,   448,   449,
+     450,   451,   453,   454,   455,   456,   457,   458,   459,   461,
+     462,   464,   465,   468,   467,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,   478,   479,   480,   482,   506,   488,
+     546,   483,   484,   487,   489,   490,   491,   492,   493,   494,
+     495,   496,   508,   507,   497,   498,   499,   500,   511,   509,
+     510,   512,   517,   518,   640,    26,   580,   580,   513,   539,
+     514,   572,   572,   515,   588,   556,   592,   596,   516,   519,
+     614,   261,   522,   523,   415,   525,   554,   526,   642,   414,
+     646,   650,   527,   528,   529,   530,   416,   531,   532,   417,
+     533,   534,   535,   536,   537,   538,   540,   661,   662,   663,
+     541,   664,   665,   673,   711,   672,   676,   675,   678,   679,
+     685,   542,   553,   686,   700,   687,   688,   689,   690,   691,
+     692,   706,   709,   705,   747,   703,   708,   712,   714,   715,
+     716,   717,   723,   724,   743,   744,   718,   752,   746,   753,
+     792,   520,   796,   765,   719,   766,   720,   772,   774,   759,
+     721,   722,   798,   802,   736,   737,   800,   820,   821,   822,
+     825,   524,   555,   409,   560,   738,   739,   388,   587,   725,
+     732,   412,   735,   734,   466,   742,   727,   740,   726,   438,
+     741,   797,   729,   728,   760,   730,   761,   762,   763,   768,
+     769,   770,   460,   773,   731,   463,   801,   749,   748,   830,
+     826,   827,   828,   441,   751,   750,   481,   641,   745,   713,
+     452,   790,   638,   799,   818,   829,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   580,     0,     0,     0,     0,
      572,   150,     0,   149,   229,     0,   212,     0,     0,   228,
@@ -3587,63 +3620,63 @@ namespace isc { namespace dhcp {
   {
       58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
       61,    62,    63,    61,   316,    63,    65,    61,    65,    61,
-      56,    61,   316,   495,     5,     7,     7,    10,     9,     7,
-      15,     7,     3,     3,    23,    17,    18,     8,     8,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    48,
-      49,    50,    51,    52,    79,    80,    38,    39,    40,    48,
-       0,    43,    44,    45,     7,    47,     7,    70,    71,    72,
-      73,    48,    75,     3,    56,     7,     6,    59,    60,    61,
-      62,    63,    64,    18,    19,    20,    68,    69,    47,     7,
-      11,     7,    68,     7,    76,    16,    17,    18,    57,    58,
-      21,    22,    24,    25,    26,    27,     7,   132,   109,   110,
-     111,   112,    47,    48,    12,    13,   132,    38,    39,    40,
-      41,    42,   107,    79,    80,    46,    47,    18,    19,    20,
-     113,     7,    67,   132,   135,     7,   119,   120,   115,     3,
-     117,   118,     6,   132,    65,    66,    14,    15,     6,   132,
-     132,   132,   133,   134,   135,   132,    47,    78,     3,     3,
-      81,     3,    23,     8,     8,     3,     8,    88,    89,     3,
-       8,    92,     3,   132,     8,    66,     3,     8,     4,    70,
-      71,    72,    73,    74,    75,     3,    77,    48,     6,    50,
-      51,     3,    53,    54,    55,     8,     8,   132,    82,    83,
-      84,    85,    86,    87,     4,   507,     3,     3,     3,     3,
-     682,   132,     8,   507,     8,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,     3,
-     288,     3,     3,     3,     8,     3,     8,     8,     8,     4,
-       8,   132,     3,   279,   280,     3,     3,     8,     4,     4,
-       8,     8,     3,   316,   132,     4,     3,     8,   316,     6,
-      90,    91,     4,     4,     4,   316,     4,     4,   316,     8,
-     330,   132,   330,     4,     4,     8,   334,     3,     3,   330,
+      56,    61,   316,   495,     5,     7,     7,    10,     9,    48,
+      49,    50,    51,    52,     0,    17,    18,    15,     7,    23,
+      47,   135,     7,     7,    79,    80,    18,    19,    20,   116,
+      57,    58,   119,   120,   121,     3,    38,    39,    40,     6,
+       8,    43,    44,    45,    48,    47,    50,    51,     3,    53,
+      54,    55,     3,     8,    56,    47,    48,    59,    60,    61,
+      62,    63,    64,     4,     3,     3,    68,    69,     3,     8,
+       8,    11,     8,     8,    76,    67,    16,    17,    18,    23,
+     135,    21,    22,    68,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,     3,     7,   135,     6,    38,    39,
+      40,    41,    42,     7,    48,    48,    46,    47,   135,   107,
+     113,    18,    19,    20,     7,   109,   110,   111,   112,   122,
+     123,     7,     3,     3,     3,    65,    66,     8,     8,     8,
+       7,   135,   135,   135,   135,   136,   137,   138,    78,     7,
+      47,    81,     3,   135,   138,     3,     3,     8,    88,    89,
+       8,     8,    92,    82,    83,    84,    85,    86,    87,    66,
+      12,    13,     7,    70,    71,    72,    73,    74,    75,     7,
+      77,     3,   115,     4,   117,   118,    70,    71,    72,    73,
+       4,    75,     3,     3,     3,   507,     4,     8,     8,     8,
+     682,   135,   135,   507,     4,   135,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,     3,     3,     3,
+     288,     3,     8,     8,     8,     3,     8,     3,     3,     8,
+       8,     6,     8,   279,   280,     4,     3,     3,   135,     6,
+       6,    79,    80,   316,    24,    25,    26,    27,   316,    14,
+      15,    90,    91,     4,     4,   316,     4,     4,   316,     4,
+     330,     3,   330,     4,     4,     8,   334,     3,     3,   330,
        4,     8,   330,   334,     4,     4,   330,     4,   330,   347,
-     330,     4,     4,     4,     4,   132,   347,   360,   356,   347,
-       4,     4,   360,     4,     4,     4,   135,   135,     4,     4,
-       4,   360,   133,   360,   133,     4,   133,   133,     4,     4,
-       4,   379,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,     4,     4,     4,     4,     4,     4,     4,
-     133,     4,     4,     4,     4,     4,     4,     4,   133,   135,
-     386,   387,     4,     4,     4,     4,     4,     4,     4,     4,
+     330,     4,     4,     4,     4,   135,   347,   360,   356,   347,
+       4,     4,   360,     4,     4,     4,     4,   138,   138,     4,
+       4,   360,   136,   360,   136,   136,   136,     4,     4,     4,
+       4,   379,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,     4,     4,     4,   136,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     133,     4,     4,     4,     4,   135,   135,     4,     4,     4,
-       4,   135,     4,   133,     4,   133,     4,   133,     4,     4,
-     135,   135,   135,     4,     7,     7,   132,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,   135,   135,     7,     7,
-       7,     5,     8,     3,   132,     7,   132,   132,     5,     5,
-     108,     4,     7,   132,   132,   132,   489,   490,     7,   465,
-     132,   489,   490,     7,   132,   132,     7,     7,   114,   132,
-     132,   499,   132,     7,   507,   132,   482,     7,     4,   507,
-     132,   132,   132,   132,   132,   132,   507,   132,   132,   507,
-     132,     4,     4,    77,     4,     4,     4,     3,   132,     6,
-       3,     6,     6,     3,     6,     3,   132,   132,   132,   132,
-       4,     4,     4,     4,     4,     3,   440,     6,     3,     6,
-       4,     4,     8,     4,     4,     4,     4,     4,   132,     4,
-       4,     3,     5,   132,   132,     6,     4,   444,     8,   132,
-       4,     8,   133,     8,   133,     7,   133,     4,     4,     7,
-       5,     4,   288,   483,   487,   314,   133,   133,   310,   490,
-     668,   680,   686,   684,   693,   671,   673,   676,   133,   363,
-     133,   674,   133,   330,   133,   133,   356,   116,   132,   679,
-     132,   132,   132,   677,   132,   132,   132,   132,   360,   132,
-     132,   706,   704,   709,   132,   334,   707,   347,   507,   697,
-     499,   379,   654,   778,   794,   806,   813,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     386,   387,     4,   136,   138,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   135,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   136,     4,     4,     4,   138,     4,
+     138,     4,     4,     4,   138,     4,   136,     4,   136,   136,
+       4,     4,   138,   138,   138,     4,     4,     4,     8,   135,
+     108,     7,     7,     7,     7,     7,     5,     5,     5,     5,
+       5,     5,   135,     3,     7,     7,     7,     5,     5,   135,
+     135,   135,     5,     7,     4,     7,   489,   490,   135,   465,
+     135,   489,   490,   135,     7,   114,     7,     7,   135,   135,
+       7,   499,   135,   135,   507,   135,   482,   135,     7,   507,
+       7,    77,   135,   135,   135,   135,   507,   135,   135,   507,
+     135,   135,   135,   135,   135,   135,   135,     4,     4,     4,
+     135,     4,     4,     3,     8,     6,     3,     6,     6,     3,
+       6,   135,   135,     3,   135,     4,     4,     4,     4,     4,
+       4,     3,     3,     6,     3,   135,     6,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   136,     4,     6,     5,
+       4,   440,     4,     8,   138,     8,   136,     8,     7,   135,
+     138,   136,     4,     7,   136,   136,     5,     4,     4,     4,
+       4,   444,   483,   310,   487,   136,   136,   288,   490,   668,
+     680,   314,   686,   684,   363,   693,   673,   136,   671,   330,
+     136,   136,   676,   674,   135,   677,   135,   135,   135,   135,
+     135,   135,   356,   135,   679,   360,   135,   706,   704,   135,
+     138,   136,   136,   334,   709,   707,   379,   507,   697,   654,
+     347,   778,   499,   794,   806,   823,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   668,    -1,    -1,    -1,    -1,
      668,   671,    -1,   671,   677,    -1,   674,    -1,    -1,   677,
@@ -3664,143 +3697,146 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,     0,     5,     7,     9,   132,   133,
-     134,   135,   149,   150,   151,   156,     7,   165,     7,   171,
-       7,   185,     7,   257,     7,   326,     7,   340,     7,   285,
-       7,   309,     7,   233,     7,   392,   157,   152,   166,   172,
-     186,   258,   327,   341,   286,   310,   234,   393,   149,   158,
-     159,   132,   154,   155,    10,   113,   119,   120,   132,   164,
-     167,   168,   169,   419,   421,   423,    11,    16,    17,    18,
+       0,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,     0,     5,     7,     9,   135,   136,
+     137,   138,   152,   153,   154,   159,     7,   168,     7,   174,
+       7,   188,     7,   260,     7,   329,     7,   343,     7,   288,
+       7,   312,     7,   236,     7,   395,   160,   155,   169,   175,
+     189,   261,   330,   344,   289,   313,   237,   396,   152,   161,
+     162,   135,   157,   158,    10,   113,   122,   123,   135,   167,
+     170,   171,   172,   422,   424,   426,    11,    16,    17,    18,
       21,    22,    38,    39,    40,    41,    42,    46,    47,    65,
-      66,    78,    81,    88,    89,    92,   164,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   192,   194,   218,   227,
-     241,   251,   279,   303,   345,   371,   381,   382,   390,    12,
-      13,   183,   184,   187,   189,     7,    43,    44,    45,    56,
-      59,    60,    61,    62,    63,    64,    68,    69,    76,   164,
-     175,   176,   177,   180,   259,   260,   261,   263,   265,   267,
-     269,   271,   273,   275,   277,   278,   303,   320,   334,   345,
-     367,    57,    58,   164,   303,   328,   329,   330,   332,    19,
-      20,    66,    70,    71,    72,    73,    74,    75,    77,   164,
-     303,   342,   343,   344,   345,   347,   349,   351,   353,   355,
-     357,   359,   361,   363,   365,    23,    48,    50,    51,    53,
-      54,    55,   164,   208,   287,   288,   289,   290,   291,   292,
-     293,   295,   297,   299,   300,   302,    49,    52,   164,   208,
-     291,   297,   311,   312,   313,   314,   315,   317,   318,   319,
-      79,    80,   164,   235,   236,   237,   239,    93,    94,    95,
+      66,    78,    81,    88,    89,    92,   167,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   195,   197,   221,   230,
+     244,   254,   282,   306,   348,   374,   384,   385,   393,    12,
+      13,   186,   187,   190,   192,     7,    43,    44,    45,    56,
+      59,    60,    61,    62,    63,    64,    68,    69,    76,   167,
+     178,   179,   180,   183,   262,   263,   264,   266,   268,   270,
+     272,   274,   276,   278,   280,   281,   306,   323,   337,   348,
+     370,    57,    58,   167,   306,   331,   332,   333,   335,    19,
+      20,    66,    70,    71,    72,    73,    74,    75,    77,   167,
+     306,   345,   346,   347,   348,   350,   352,   354,   356,   358,
+     360,   362,   364,   366,   368,    23,    48,    50,    51,    53,
+      54,    55,   167,   211,   290,   291,   292,   293,   294,   295,
+     296,   298,   300,   302,   303,   305,    49,    52,   167,   211,
+     294,   300,   314,   315,   316,   317,   318,   320,   321,   322,
+      79,    80,   167,   238,   239,   240,   242,    93,    94,    95,
       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   164,   394,   395,   396,   397,   399,   401,   402,   404,
-     405,   406,   409,   411,   412,   413,   414,   417,     6,     3,
-       4,     8,     3,   170,   424,   420,   422,     4,     3,     8,
-     182,     4,     4,   346,   193,   195,     4,     4,     4,     4,
-     252,   280,   304,   219,   372,   228,   242,     4,   383,   391,
-       3,     8,   188,   190,     3,     8,   374,   264,   266,   268,
-     321,   262,   270,   272,     4,     4,   276,   274,   335,   368,
-       3,     8,   331,   333,     3,     8,   348,   350,   366,   354,
-     356,   360,   358,   364,   362,   352,     8,     3,   294,   209,
-       4,   298,   296,   301,     4,     8,     3,   316,     4,     8,
-       3,   238,   240,     3,     8,     4,   398,   400,     4,   403,
-       4,     4,   407,   410,     4,     4,     4,   415,   418,     3,
-       8,   149,   149,   132,     4,     4,     4,     4,   168,     4,
-     135,   135,     4,     4,     4,   133,   133,   133,   133,     4,
-       4,     4,     4,     4,     4,     4,   133,     4,     4,   174,
-       4,     4,   184,    67,   164,   208,   303,   345,   347,   349,
-     375,   376,   377,   378,   379,     4,     4,     4,     4,     4,
-       4,     4,   133,   135,     4,     4,     4,     4,   260,     4,
-       4,   329,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   344,     4,     4,   133,     4,     4,     4,   135,
-     289,     4,   135,   313,     4,     4,   236,   135,     4,     4,
-     133,     4,   133,   133,     4,     4,   135,   135,   135,     4,
-       4,   395,     4,     7,     7,   149,   149,     7,   132,     7,
+     106,   167,   397,   398,   399,   400,   402,   404,   405,   407,
+     408,   409,   412,   414,   415,   416,   417,   420,     6,     3,
+       4,     8,     3,   173,   427,   423,   425,     4,     3,     8,
+     185,     4,     4,   349,   196,   198,     4,     4,     4,     4,
+     255,   283,   307,   222,   375,   231,   245,     4,   386,   394,
+       3,     8,   191,   193,     3,     8,   377,   267,   269,   271,
+     324,   265,   273,   275,     4,     4,   279,   277,   338,   371,
+       3,     8,   334,   336,     3,     8,   351,   353,   369,   357,
+     359,   363,   361,   367,   365,   355,     8,     3,   297,   212,
+       4,   301,   299,   304,     4,     8,     3,   319,     4,     8,
+       3,   241,   243,     3,     8,     4,   401,   403,     4,   406,
+       4,     4,   410,   413,     4,     4,     4,   418,   421,     3,
+       8,   152,   152,   135,     4,     4,     4,     4,   171,     4,
+     138,   138,     4,     4,     4,   136,   136,   136,   136,     4,
+       4,     4,     4,     4,     4,     4,   136,     4,     4,   177,
+       4,     4,   187,    67,   167,   211,   306,   348,   350,   352,
+     378,   379,   380,   381,   382,     4,     4,     4,     4,     4,
+       4,     4,   136,   138,     4,     4,     4,     4,   263,     4,
+       4,   332,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,   347,     4,     4,   136,     4,     4,     4,   138,
+     292,     4,   138,   316,     4,     4,   239,   138,     4,     4,
+     136,     4,   136,   136,     4,     4,   138,   138,   138,     4,
+       4,   398,     4,     7,     7,   152,   152,     7,   135,     7,
        7,     5,     5,     5,     5,     5,     5,     7,     7,     7,
-       5,   160,    14,    15,   191,   380,     8,     3,   132,   132,
-     132,     5,   132,   132,   132,   132,   132,     5,     7,   132,
-     151,   153,   132,   132,   160,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   149,
-     132,   132,   132,    15,   107,   408,   108,   109,   110,   111,
-     112,   135,   416,   132,   149,   173,   114,   425,   426,   427,
-     183,    23,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,   164,   196,   197,   198,   201,   203,   205,   207,
-     208,   210,   211,   212,   213,   214,   216,   196,     7,   253,
-     254,   255,     7,   281,   282,   283,     7,   305,   306,   307,
-      70,    71,    72,    73,    75,   220,   221,   222,   223,   224,
-     225,   226,   273,   373,     7,   229,   230,   231,    82,    83,
-      84,    85,    86,    87,   243,   244,   245,   246,   247,   248,
-     249,   250,    90,    91,   384,   385,   386,   388,   394,   161,
-       4,   377,     7,   322,   323,   324,     7,   336,   337,   338,
-      77,   369,     8,   428,     3,     8,     8,   199,   202,   204,
-     206,     4,     4,     4,     4,     4,   215,   217,     3,     8,
-       8,   256,     6,     3,   284,     6,     3,   308,     6,     3,
-       3,     6,     3,     6,   232,     6,     3,     4,     4,     4,
-       4,     4,     4,     3,     8,   387,   389,     3,     8,     8,
-     132,   162,   163,   132,   325,     6,     3,   339,     6,     3,
-     370,     8,     4,   426,     4,     4,     4,     4,   133,   135,
-     133,   135,   133,     4,     4,   197,   259,   255,   287,   283,
-     311,   307,   221,   273,   235,   231,   133,   133,   133,   133,
-     133,   133,   244,     4,     4,   385,     6,     3,   328,   324,
-     342,   338,     4,     5,    24,    25,    26,    27,   200,   132,
-     132,   132,   132,   132,     8,     8,     8,     8,   132,   132,
-     132,     8,     8,   132,     7,   429,   430,   431,     3,     6,
-     115,   117,   118,   164,   208,   432,   433,   434,   435,   437,
-     430,   438,     4,   436,     3,     8,     4,   133,     4,   433,
-       5,   132,     7,   439,   440,   441,     3,     6,   116,   442,
-     443,   440,   444,     3,     8,     4,   443,   132
+       5,   163,    14,    15,   194,   383,     8,     3,   135,   135,
+     135,     5,   135,   135,   135,   135,   135,     5,     7,   135,
+     154,   156,   135,   135,   163,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   152,
+     135,   135,   135,    15,   107,   411,   108,   109,   110,   111,
+     112,   138,   419,   135,   152,   176,   114,   428,   429,   430,
+     186,    23,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,   167,   199,   200,   201,   204,   206,   208,   210,
+     211,   213,   214,   215,   216,   217,   219,   199,     7,   256,
+     257,   258,     7,   284,   285,   286,     7,   308,   309,   310,
+      70,    71,    72,    73,    75,   223,   224,   225,   226,   227,
+     228,   229,   276,   376,     7,   232,   233,   234,    82,    83,
+      84,    85,    86,    87,   246,   247,   248,   249,   250,   251,
+     252,   253,    90,    91,   387,   388,   389,   391,   397,   164,
+       4,   380,     7,   325,   326,   327,     7,   339,   340,   341,
+      77,   372,     8,   431,     3,     8,     8,   202,   205,   207,
+     209,     4,     4,     4,     4,     4,   218,   220,     3,     8,
+       8,   259,     6,     3,   287,     6,     3,   311,     6,     3,
+       3,     6,     3,     6,   235,     6,     3,     4,     4,     4,
+       4,     4,     4,     3,     8,   390,   392,     3,     8,     8,
+     135,   165,   166,   135,   328,     6,     3,   342,     6,     3,
+     373,     8,     4,   429,     4,     4,     4,     4,   136,   138,
+     136,   138,   136,     4,     4,   200,   262,   258,   290,   286,
+     314,   310,   224,   276,   238,   234,   136,   136,   136,   136,
+     136,   136,   247,     4,     4,   388,     6,     3,   331,   327,
+     345,   341,     4,     5,    24,    25,    26,    27,   203,   135,
+     135,   135,   135,   135,     8,     8,     8,     8,   135,   135,
+     135,     8,     8,   135,     7,   432,   433,   434,     3,     6,
+     115,   117,   118,   167,   211,   435,   436,   437,   438,   440,
+     433,   441,     4,   439,     3,     8,     4,   136,     4,   436,
+       5,   135,     7,   442,   443,   444,     3,     6,   116,   119,
+     120,   121,   445,   446,   447,   449,   450,   451,   443,   448,
+       4,     4,     4,     3,     8,     4,   138,   136,   136,   446,
+     135
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   136,   138,   137,   139,   137,   140,   137,   141,   137,
-     142,   137,   143,   137,   144,   137,   145,   137,   146,   137,
-     147,   137,   148,   137,   149,   149,   149,   149,   149,   149,
-     149,   150,   152,   151,   153,   154,   154,   155,   155,   157,
-     156,   158,   158,   159,   159,   161,   160,   162,   162,   163,
-     163,   164,   166,   165,   167,   167,   168,   168,   168,   168,
-     168,   170,   169,   172,   171,   173,   173,   174,   174,   174,
-     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
-     174,   174,   174,   174,   174,   174,   174,   174,   175,   176,
-     177,   178,   179,   180,   182,   181,   183,   183,   184,   184,
-     186,   185,   188,   187,   190,   189,   191,   191,   193,   192,
-     195,   194,   196,   196,   197,   197,   197,   197,   197,   197,
-     197,   197,   197,   197,   197,   197,   197,   199,   198,   200,
-     200,   200,   200,   202,   201,   204,   203,   206,   205,   207,
-     209,   208,   210,   211,   212,   213,   215,   214,   217,   216,
-     219,   218,   220,   220,   221,   221,   221,   221,   221,   222,
-     223,   224,   225,   226,   228,   227,   229,   229,   230,   230,
-     232,   231,   234,   233,   235,   235,   235,   236,   236,   238,
-     237,   240,   239,   242,   241,   243,   243,   244,   244,   244,
-     244,   244,   244,   245,   246,   247,   248,   249,   250,   252,
-     251,   253,   253,   254,   254,   256,   255,   258,   257,   259,
-     259,   260,   260,   260,   260,   260,   260,   260,   260,   260,
-     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
-     260,   262,   261,   264,   263,   266,   265,   268,   267,   270,
-     269,   272,   271,   274,   273,   276,   275,   277,   278,   280,
-     279,   281,   281,   282,   282,   284,   283,   286,   285,   287,
-     287,   288,   288,   289,   289,   289,   289,   289,   289,   289,
-     289,   290,   291,   292,   294,   293,   296,   295,   298,   297,
-     299,   301,   300,   302,   304,   303,   305,   305,   306,   306,
-     308,   307,   310,   309,   311,   311,   312,   312,   313,   313,
-     313,   313,   313,   313,   314,   316,   315,   317,   318,   319,
-     321,   320,   322,   322,   323,   323,   325,   324,   327,   326,
-     328,   328,   329,   329,   329,   329,   331,   330,   333,   332,
-     335,   334,   336,   336,   337,   337,   339,   338,   341,   340,
-     342,   342,   343,   343,   344,   344,   344,   344,   344,   344,
-     344,   344,   344,   344,   344,   344,   344,   346,   345,   348,
-     347,   350,   349,   352,   351,   354,   353,   356,   355,   358,
-     357,   360,   359,   362,   361,   364,   363,   366,   365,   368,
-     367,   370,   369,   372,   371,   373,   373,   374,   273,   375,
-     375,   376,   376,   377,   377,   377,   377,   377,   377,   377,
-     378,   380,   379,   381,   383,   382,   384,   384,   385,   385,
-     387,   386,   389,   388,   391,   390,   393,   392,   394,   394,
-     395,   395,   395,   395,   395,   395,   395,   395,   395,   395,
-     395,   395,   395,   395,   395,   396,   398,   397,   400,   399,
-     401,   403,   402,   404,   405,   407,   406,   408,   408,   410,
-     409,   411,   412,   413,   415,   414,   416,   416,   416,   416,
-     416,   418,   417,   420,   419,   422,   421,   424,   423,   425,
-     425,   426,   428,   427,   429,   429,   431,   430,   432,   432,
-     433,   433,   433,   433,   433,   434,   436,   435,   438,   437,
-     439,   439,   441,   440,   442,   442,   444,   443
+       0,   139,   141,   140,   142,   140,   143,   140,   144,   140,
+     145,   140,   146,   140,   147,   140,   148,   140,   149,   140,
+     150,   140,   151,   140,   152,   152,   152,   152,   152,   152,
+     152,   153,   155,   154,   156,   157,   157,   158,   158,   160,
+     159,   161,   161,   162,   162,   164,   163,   165,   165,   166,
+     166,   167,   169,   168,   170,   170,   171,   171,   171,   171,
+     171,   173,   172,   175,   174,   176,   176,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   178,   179,
+     180,   181,   182,   183,   185,   184,   186,   186,   187,   187,
+     189,   188,   191,   190,   193,   192,   194,   194,   196,   195,
+     198,   197,   199,   199,   200,   200,   200,   200,   200,   200,
+     200,   200,   200,   200,   200,   200,   200,   202,   201,   203,
+     203,   203,   203,   205,   204,   207,   206,   209,   208,   210,
+     212,   211,   213,   214,   215,   216,   218,   217,   220,   219,
+     222,   221,   223,   223,   224,   224,   224,   224,   224,   225,
+     226,   227,   228,   229,   231,   230,   232,   232,   233,   233,
+     235,   234,   237,   236,   238,   238,   238,   239,   239,   241,
+     240,   243,   242,   245,   244,   246,   246,   247,   247,   247,
+     247,   247,   247,   248,   249,   250,   251,   252,   253,   255,
+     254,   256,   256,   257,   257,   259,   258,   261,   260,   262,
+     262,   263,   263,   263,   263,   263,   263,   263,   263,   263,
+     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
+     263,   265,   264,   267,   266,   269,   268,   271,   270,   273,
+     272,   275,   274,   277,   276,   279,   278,   280,   281,   283,
+     282,   284,   284,   285,   285,   287,   286,   289,   288,   290,
+     290,   291,   291,   292,   292,   292,   292,   292,   292,   292,
+     292,   293,   294,   295,   297,   296,   299,   298,   301,   300,
+     302,   304,   303,   305,   307,   306,   308,   308,   309,   309,
+     311,   310,   313,   312,   314,   314,   315,   315,   316,   316,
+     316,   316,   316,   316,   317,   319,   318,   320,   321,   322,
+     324,   323,   325,   325,   326,   326,   328,   327,   330,   329,
+     331,   331,   332,   332,   332,   332,   334,   333,   336,   335,
+     338,   337,   339,   339,   340,   340,   342,   341,   344,   343,
+     345,   345,   346,   346,   347,   347,   347,   347,   347,   347,
+     347,   347,   347,   347,   347,   347,   347,   349,   348,   351,
+     350,   353,   352,   355,   354,   357,   356,   359,   358,   361,
+     360,   363,   362,   365,   364,   367,   366,   369,   368,   371,
+     370,   373,   372,   375,   374,   376,   376,   377,   276,   378,
+     378,   379,   379,   380,   380,   380,   380,   380,   380,   380,
+     381,   383,   382,   384,   386,   385,   387,   387,   388,   388,
+     390,   389,   392,   391,   394,   393,   396,   395,   397,   397,
+     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
+     398,   398,   398,   398,   398,   399,   401,   400,   403,   402,
+     404,   406,   405,   407,   408,   410,   409,   411,   411,   413,
+     412,   414,   415,   416,   418,   417,   419,   419,   419,   419,
+     419,   421,   420,   423,   422,   425,   424,   427,   426,   428,
+     428,   429,   431,   430,   432,   432,   434,   433,   435,   435,
+     436,   436,   436,   436,   436,   437,   439,   438,   441,   440,
+     442,   442,   444,   443,   445,   445,   446,   446,   446,   446,
+     448,   447,   449,   450,   451
   };
 
   const unsigned char
@@ -3855,7 +3891,8 @@ namespace isc { namespace dhcp {
        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,     3,     0,     4,     0,     6,
-       1,     3,     0,     4,     1,     3,     0,     4
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
+       0,     4,     3,     3,     3
   };
 
 
@@ -3899,18 +3936,19 @@ namespace isc { namespace dhcp {
   "\"generated-prefix\"", "\"tcp\"", "\"JSON\"", "\"when-present\"",
   "\"never\"", "\"always\"", "\"when-not-present\"", "\"Logging\"",
   "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"Dhcp6\"", "\"DhcpDdns\"", "TOPLEVEL_JSON",
-  "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4",
-  "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
-  "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
-  "$@11", "value", "sub_json", "map2", "$@12", "map_value", "map_content",
-  "not_empty_map", "list_generic", "$@13", "list_content",
-  "not_empty_list", "list_strings", "$@14", "list_strings_content",
-  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@15",
-  "global_objects", "global_object", "dhcp4_object", "$@16", "sub_dhcp4",
-  "$@17", "global_params", "global_param", "valid_lifetime", "renew_timer",
+  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp6\"",
+  "\"DhcpDdns\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4",
+  "SUB_INTERFACES4", "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION",
+  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
+  "SUB_DHCP_DDNS", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "value",
+  "sub_json", "map2", "$@12", "map_value", "map_content", "not_empty_map",
+  "list_generic", "$@13", "list_content", "not_empty_list", "list_strings",
+  "$@14", "list_strings_content", "not_empty_list_strings",
+  "unknown_map_entry", "syntax_map", "$@15", "global_objects",
+  "global_object", "dhcp4_object", "$@16", "sub_dhcp4", "$@17",
+  "global_params", "global_param", "valid_lifetime", "renew_timer",
   "rebind_timer", "decline_probation_period", "echo_client_id",
   "match_client_id", "interfaces_config", "$@18",
   "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
@@ -3976,64 +4014,66 @@ namespace isc { namespace dhcp {
   "logging_params", "logging_param", "loggers", "$@99", "loggers_entries",
   "logger_entry", "$@100", "logger_params", "logger_param", "debuglevel",
   "severity", "$@101", "output_options_list", "$@102",
-  "output_options_list_content", "output_entry", "$@103", "output_params",
-  "output_param", "$@104", YY_NULLPTR
+  "output_options_list_content", "output_entry", "$@103",
+  "output_params_list", "output_params", "output", "$@104", "flush",
+  "maxsize", "maxver", YY_NULLPTR
   };
 
 #if PARSER4_DEBUG
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   216,   216,   216,   217,   217,   218,   218,   219,   219,
-     220,   220,   221,   221,   222,   222,   223,   223,   224,   224,
-     225,   225,   226,   226,   234,   235,   236,   237,   238,   239,
-     240,   243,   248,   248,   259,   262,   263,   266,   270,   277,
-     277,   284,   285,   288,   292,   299,   299,   306,   307,   310,
-     314,   325,   335,   335,   347,   348,   352,   353,   354,   355,
-     356,   359,   359,   376,   376,   384,   385,   390,   391,   392,
-     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
-     403,   404,   405,   406,   407,   408,   409,   410,   413,   418,
-     423,   428,   433,   438,   444,   444,   454,   455,   458,   459,
-     462,   462,   470,   470,   480,   480,   487,   488,   491,   491,
-     501,   501,   511,   512,   515,   516,   517,   518,   519,   520,
-     521,   522,   523,   524,   525,   526,   527,   530,   530,   537,
-     538,   539,   540,   543,   543,   551,   551,   559,   559,   567,
-     572,   572,   580,   585,   590,   595,   600,   600,   608,   608,
-     617,   617,   627,   628,   631,   632,   633,   634,   635,   638,
-     643,   648,   653,   658,   663,   663,   673,   674,   677,   678,
-     681,   681,   689,   689,   697,   698,   699,   702,   703,   706,
-     706,   714,   714,   722,   722,   732,   733,   736,   737,   738,
-     739,   740,   741,   744,   749,   754,   759,   764,   769,   777,
-     777,   790,   791,   794,   795,   802,   802,   825,   825,   834,
-     835,   839,   840,   841,   842,   843,   844,   845,   846,   847,
-     848,   849,   850,   851,   852,   853,   854,   855,   856,   857,
-     858,   861,   861,   869,   869,   877,   877,   885,   885,   893,
-     893,   901,   901,   909,   909,   917,   917,   925,   930,   939,
-     939,   951,   952,   955,   956,   961,   961,   972,   972,   982,
-     983,   986,   987,   990,   991,   992,   993,   994,   995,   996,
-     997,  1000,  1002,  1007,  1009,  1009,  1017,  1017,  1025,  1025,
-    1033,  1035,  1035,  1043,  1052,  1052,  1064,  1065,  1070,  1071,
-    1076,  1076,  1087,  1087,  1098,  1099,  1104,  1105,  1110,  1111,
-    1112,  1113,  1114,  1115,  1118,  1120,  1120,  1128,  1130,  1132,
-    1140,  1140,  1152,  1153,  1156,  1157,  1160,  1160,  1168,  1168,
-    1176,  1177,  1180,  1181,  1182,  1183,  1186,  1186,  1194,  1194,
-    1204,  1204,  1214,  1215,  1218,  1219,  1222,  1222,  1230,  1230,
-    1238,  1239,  1242,  1243,  1247,  1248,  1249,  1250,  1251,  1252,
-    1253,  1254,  1255,  1256,  1257,  1258,  1259,  1262,  1262,  1270,
-    1270,  1278,  1278,  1286,  1286,  1294,  1294,  1302,  1302,  1310,
-    1310,  1318,  1318,  1326,  1326,  1334,  1334,  1342,  1342,  1355,
-    1355,  1365,  1365,  1376,  1376,  1386,  1387,  1390,  1390,  1398,
-    1399,  1402,  1403,  1406,  1407,  1408,  1409,  1410,  1411,  1412,
-    1415,  1417,  1417,  1429,  1436,  1436,  1446,  1447,  1450,  1451,
-    1454,  1454,  1462,  1462,  1472,  1472,  1482,  1482,  1490,  1491,
-    1494,  1495,  1496,  1497,  1498,  1499,  1500,  1501,  1502,  1503,
-    1504,  1505,  1506,  1507,  1508,  1511,  1516,  1516,  1524,  1524,
-    1532,  1537,  1537,  1545,  1550,  1555,  1555,  1563,  1564,  1567,
-    1567,  1575,  1580,  1585,  1590,  1590,  1598,  1601,  1604,  1607,
-    1610,  1616,  1616,  1626,  1626,  1633,  1633,  1645,  1645,  1658,
-    1659,  1663,  1667,  1667,  1679,  1680,  1684,  1684,  1692,  1693,
-    1696,  1697,  1698,  1699,  1700,  1703,  1708,  1708,  1716,  1716,
-    1726,  1727,  1730,  1730,  1738,  1739,  1742,  1742
+       0,   219,   219,   219,   220,   220,   221,   221,   222,   222,
+     223,   223,   224,   224,   225,   225,   226,   226,   227,   227,
+     228,   228,   229,   229,   237,   238,   239,   240,   241,   242,
+     243,   246,   251,   251,   262,   265,   266,   269,   273,   280,
+     280,   287,   288,   291,   295,   302,   302,   309,   310,   313,
+     317,   328,   338,   338,   350,   351,   355,   356,   357,   358,
+     359,   362,   362,   379,   379,   387,   388,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,   412,   413,   416,   421,
+     426,   431,   436,   441,   447,   447,   457,   458,   461,   462,
+     465,   465,   473,   473,   483,   483,   490,   491,   494,   494,
+     504,   504,   514,   515,   518,   519,   520,   521,   522,   523,
+     524,   525,   526,   527,   528,   529,   530,   533,   533,   540,
+     541,   542,   543,   546,   546,   554,   554,   562,   562,   570,
+     575,   575,   583,   588,   593,   598,   603,   603,   611,   611,
+     620,   620,   630,   631,   634,   635,   636,   637,   638,   641,
+     646,   651,   656,   661,   666,   666,   676,   677,   680,   681,
+     684,   684,   692,   692,   700,   701,   702,   705,   706,   709,
+     709,   717,   717,   725,   725,   735,   736,   739,   740,   741,
+     742,   743,   744,   747,   752,   757,   762,   767,   772,   780,
+     780,   793,   794,   797,   798,   805,   805,   828,   828,   837,
+     838,   842,   843,   844,   845,   846,   847,   848,   849,   850,
+     851,   852,   853,   854,   855,   856,   857,   858,   859,   860,
+     861,   864,   864,   872,   872,   880,   880,   888,   888,   896,
+     896,   904,   904,   912,   912,   920,   920,   928,   933,   942,
+     942,   954,   955,   958,   959,   964,   964,   975,   975,   985,
+     986,   989,   990,   993,   994,   995,   996,   997,   998,   999,
+    1000,  1003,  1005,  1010,  1012,  1012,  1020,  1020,  1028,  1028,
+    1036,  1038,  1038,  1046,  1055,  1055,  1067,  1068,  1073,  1074,
+    1079,  1079,  1090,  1090,  1101,  1102,  1107,  1108,  1113,  1114,
+    1115,  1116,  1117,  1118,  1121,  1123,  1123,  1131,  1133,  1135,
+    1143,  1143,  1155,  1156,  1159,  1160,  1163,  1163,  1171,  1171,
+    1179,  1180,  1183,  1184,  1185,  1186,  1189,  1189,  1197,  1197,
+    1207,  1207,  1217,  1218,  1221,  1222,  1225,  1225,  1233,  1233,
+    1241,  1242,  1245,  1246,  1250,  1251,  1252,  1253,  1254,  1255,
+    1256,  1257,  1258,  1259,  1260,  1261,  1262,  1265,  1265,  1273,
+    1273,  1281,  1281,  1289,  1289,  1297,  1297,  1305,  1305,  1313,
+    1313,  1321,  1321,  1329,  1329,  1337,  1337,  1345,  1345,  1358,
+    1358,  1368,  1368,  1379,  1379,  1389,  1390,  1393,  1393,  1401,
+    1402,  1405,  1406,  1409,  1410,  1411,  1412,  1413,  1414,  1415,
+    1418,  1420,  1420,  1432,  1439,  1439,  1449,  1450,  1453,  1454,
+    1457,  1457,  1465,  1465,  1475,  1475,  1485,  1485,  1493,  1494,
+    1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,
+    1507,  1508,  1509,  1510,  1511,  1514,  1519,  1519,  1527,  1527,
+    1535,  1540,  1540,  1548,  1553,  1558,  1558,  1566,  1567,  1570,
+    1570,  1578,  1583,  1588,  1593,  1593,  1601,  1604,  1607,  1610,
+    1613,  1619,  1619,  1629,  1629,  1636,  1636,  1648,  1648,  1661,
+    1662,  1666,  1670,  1670,  1682,  1683,  1687,  1687,  1695,  1696,
+    1699,  1700,  1701,  1702,  1703,  1706,  1711,  1711,  1719,  1719,
+    1729,  1730,  1733,  1733,  1741,  1742,  1745,  1746,  1747,  1748,
+    1751,  1751,  1759,  1764,  1769
   };
 
   // Print the state stack on the debug stream.
@@ -4068,8 +4108,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4072 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1750 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4112 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1774 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 6ec7d83b4ac5c1b7792b2f9f9920a0e4fd5ce6aa..98253159c71c8876ea534c131eb1a435215aa419 100644 (file)
@@ -462,23 +462,26 @@ namespace isc { namespace dhcp {
         TOKEN_OUTPUT = 371,
         TOKEN_DEBUGLEVEL = 372,
         TOKEN_SEVERITY = 373,
-        TOKEN_DHCP6 = 374,
-        TOKEN_DHCPDDNS = 375,
-        TOKEN_TOPLEVEL_JSON = 376,
-        TOKEN_TOPLEVEL_DHCP4 = 377,
-        TOKEN_SUB_DHCP4 = 378,
-        TOKEN_SUB_INTERFACES4 = 379,
-        TOKEN_SUB_SUBNET4 = 380,
-        TOKEN_SUB_POOL4 = 381,
-        TOKEN_SUB_RESERVATION = 382,
-        TOKEN_SUB_OPTION_DEF = 383,
-        TOKEN_SUB_OPTION_DATA = 384,
-        TOKEN_SUB_HOOKS_LIBRARY = 385,
-        TOKEN_SUB_DHCP_DDNS = 386,
-        TOKEN_STRING = 387,
-        TOKEN_INTEGER = 388,
-        TOKEN_FLOAT = 389,
-        TOKEN_BOOLEAN = 390
+        TOKEN_FLUSH = 374,
+        TOKEN_MAXSIZE = 375,
+        TOKEN_MAXVER = 376,
+        TOKEN_DHCP6 = 377,
+        TOKEN_DHCPDDNS = 378,
+        TOKEN_TOPLEVEL_JSON = 379,
+        TOKEN_TOPLEVEL_DHCP4 = 380,
+        TOKEN_SUB_DHCP4 = 381,
+        TOKEN_SUB_INTERFACES4 = 382,
+        TOKEN_SUB_SUBNET4 = 383,
+        TOKEN_SUB_POOL4 = 384,
+        TOKEN_SUB_RESERVATION = 385,
+        TOKEN_SUB_OPTION_DEF = 386,
+        TOKEN_SUB_OPTION_DATA = 387,
+        TOKEN_SUB_HOOKS_LIBRARY = 388,
+        TOKEN_SUB_DHCP_DDNS = 389,
+        TOKEN_STRING = 390,
+        TOKEN_INTEGER = 391,
+        TOKEN_FLOAT = 392,
+        TOKEN_BOOLEAN = 393
       };
     };
 
@@ -1061,6 +1064,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_SEVERITY (const location_type& l);
 
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
     static inline
     symbol_type
     make_DHCP6 (const location_type& l);
@@ -1335,11 +1350,11 @@ namespace isc { namespace dhcp {
     {
       yyeof_ = 0,
       yylast_ = 736,     ///< Last index in yytable_.
-      yynnts_ = 309,  ///< Number of nonterminal symbols.
+      yynnts_ = 313,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 136  ///< Number of tokens.
+      yyntokens_ = 139  ///< Number of tokens.
     };
 
 
@@ -1395,9 +1410,9 @@ namespace isc { namespace dhcp {
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135
+     135,   136,   137,   138
     };
-    const unsigned int user_token_number_max_ = 390;
+    const unsigned int user_token_number_max_ = 393;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1430,28 +1445,28 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1472,28 +1487,28 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1573,28 +1588,28 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1621,28 +1636,28 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 149: // value
-      case 153: // map_value
-      case 191: // socket_type
-      case 200: // db_type
-      case 408: // ncr_protocol_value
-      case 416: // replace_client_name_value
+      case 152: // value
+      case 156: // map_value
+      case 194: // socket_type
+      case 203: // db_type
+      case 411: // ncr_protocol_value
+      case 419: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 135: // "boolean"
+      case 138: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 134: // "floating point"
+      case 137: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 133: // "integer"
+      case 136: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 132: // "constant string"
+      case 135: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1714,7 +1729,7 @@ namespace isc { namespace dhcp {
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   390
+     385,   386,   387,   388,   389,   390,   391,   392,   393
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2421,6 +2436,24 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_SEVERITY, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_DHCP6 (const location_type& l)
   {
@@ -2526,7 +2559,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2530 "dhcp4_parser.h" // lalr1.cc:377
+#line 2563 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index c30e2c1d472d793241d4fec00b963cd6f2aab754..b4648d03ebda5592d761f85e31fd747d019e2105 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 4d694d5e7c0975d4b50c45d1d8678b3b7debfda7..f3c2d39b638a809f3d13a7d5bcb6b78eb3f6886c 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 1842b0fa76886bd5f1e2e933427fffccf6cf552e..6bd2fde41026f071bcc981192ad9dc9ca7e45f04 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index 34eed0a8e9ba8940fd82430dc99b16a7e9c18090..28c3c85f0dda4bb84bb200521fbd6a733c7fc0fb 100644 (file)
@@ -524,8 +524,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to parser6_text[] 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 150
-#define YY_END_OF_BUFFER 151
+#define YY_NUM_RULES 153
+#define YY_END_OF_BUFFER 154
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -533,29 +533,29 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1192] =
+static const flex_int16_t yy_accept[1202] =
     {   0,
-      143,  143,    0,    0,    0,    0,    0,    0,    0,    0,
-      151,  149,   10,   11,  149,    1,  143,  140,  143,  143,
-      149,  142,  141,  149,  149,  149,  149,  149,  136,  137,
-      149,  149,  149,  138,  139,    5,    5,    5,  149,  149,
-      149,   10,   11,    0,    0,  132,    0,    0,    0,    0,
+      146,  146,    0,    0,    0,    0,    0,    0,    0,    0,
+      154,  152,   10,   11,  152,    1,  146,  143,  146,  146,
+      152,  145,  144,  152,  152,  152,  152,  152,  139,  140,
+      152,  152,  152,  141,  142,    5,    5,    5,  152,  152,
+      152,   10,   11,    0,    0,  135,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  143,  143,
-        0,  142,  143,    3,    2,    6,    0,  143,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  133,
+        0,    0,    0,    0,    0,    0,    0,    1,  146,  146,
+        0,  145,  146,    3,    2,    6,    0,  146,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  136,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  135,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  138,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,  112,
-        0,    0,  113,    0,    0,    0,    0,    0,    0,    0,
-        0,  134,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    8,    0,    0,    0,  115,
+        0,    0,  116,    0,    0,    0,    0,    0,    0,    0,
+        0,  137,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   77,
@@ -563,8 +563,8 @@ static const flex_int16_t yy_accept[1192] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  148,  146,    0,
-      145,  144,    0,    0,    0,    0,    0,    0,  111,    0,
+        0,    0,    0,    0,    0,    0,    0,  151,  149,    0,
+      148,  147,    0,    0,    0,    0,    0,    0,  114,    0,
         0,   27,    0,   26,    0,    0,    0,    0,    0,    0,
         0,    0,   45,    0,    0,    0,    0,    0,    0,    0,
 
@@ -574,99 +574,100 @@ static const flex_int16_t yy_accept[1192] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      147,  144,    0,    0,    0,    0,    0,    0,    0,   28,
-        0,    0,   30,    0,    0,    0,    0,    0,   80,    0,
-        0,    0,    0,   64,    0,    0,    0,    0,    0,   96,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  150,  147,    0,    0,    0,    0,    0,    0,
+        0,   28,    0,    0,   30,    0,    0,    0,    0,    0,
+       80,    0,    0,    0,    0,   64,    0,    0,    0,    0,
+        0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
 
-       48,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   63,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   72,
-        0,   49,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   48,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   63,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   72,    0,   49,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   92,  116,   41,    0,   46,    0,    0,    0,    0,
-        0,  130,   35,    0,   32,    0,   31,    0,    0,    0,
-      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   95,  119,   41,    0,   46,
+        0,    0,    0,    0,    0,  133,   35,    0,   32,    0,
+       31,    0,    0,    0,  107,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  115,    0,    0,    0,    0,    0,
+        0,   88,    0,    0,    0,    0,    0,    0,    0,  118,
 
-        0,    0,    0,    0,    0,    0,    0,    0,   43,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   65,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  105,    0,
-        0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
-        0,    0,    7,   33,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   65,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  108,    0,    0,    0,    0,
+        0,    0,    0,    0,  103,    0,    0,    0,    0,    7,
+       33,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   87,    0,
-        0,    0,    0,    0,    0,    0,    0,   67,    0,    0,
+        0,    0,   90,    0,    0,    0,    0,   87,    0,    0,
 
+        0,    0,    0,    0,    0,    0,   67,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   74,    0,    0,    0,    0,    0,
-       84,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
+        0,    0,    0,   74,    0,    0,    0,    0,    0,   84,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  109,   85,    0,    0,    0,   42,
+        0,    0,    0,    0,    0,    0,    0,    0,  102,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  112,   85,    0,    0,    0,   89,   42,
         0,    0,    0,    0,    0,    0,    0,    0,   50,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       60,    0,    0,    0,  131,    0,    0,    0,    0,    0,
 
+       60,    0,    0,    0,  134,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  101,    0,
         0,    0,    0,    0,   53,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   47,   66,    0,
-        0,    0,   95,    0,    0,   40,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   89,    0,
+        0,    0,   98,    0,    0,   40,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   92,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  129,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  132,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       75,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+       75,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
-        0,  110,   14,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  101,   88,    0,    0,
+        0,  113,   14,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  104,   91,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   97,  114,    0,   37,    0,  106,    0,    0,
+        0,    0,  100,  117,    0,   37,    0,  109,    0,    0,
         0,    0,    0,    0,   20,    0,    0,   61,    0,    0,
-        0,  108,   44,    0,   68,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  111,   44,    0,   68,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  103,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  106,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   81,    0,    0,
         0,   62,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   57,    0,    0,    0,   17,   15,  128,  127,
-        0,    0,    0,    0,   29,    0,   91,    0,    0,    0,
-        0,    0,    0,  125,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   76,    0,   94,    0,   51,    0,
+        0,    0,   57,    0,    0,    0,   17,   15,  131,  130,
+        0,    0,    0,    0,   29,    0,   94,    0,    0,    0,
+        0,    0,    0,  128,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   76,    0,   97,    0,   51,    0,
         0,    0,   19,    0,    0,    0,    0,    0,   78,   58,
-        0,  102,    0,    0,    0,   93,    0,   73,    0,    0,
-        0,    0,    0,    0,    0,    0,   71,    0,  117,    0,
+        0,  105,    0,    0,    0,   96,    0,   73,    0,    0,
 
+        0,    0,    0,    0,    0,    0,   71,    0,  120,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   90,    0,   54,  126,    0,
+        0,    0,    0,    0,    0,   93,    0,   54,  129,    0,
        12,    0,    0,    0,    0,    0,    0,    0,   39,    0,
        38,   18,    0,    0,   86,    0,    0,    0,    0,    0,
         0,    0,    0,    0,   56,    0,    0,   52,    0,   69,
-        0,    0,    0,    0,    0,  107,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
         0,    0,    0,    0,    0,   25,    0,    0,    0,    0,
-      123,    0,    0,    0,    0,    0,    0,    0,   79,    0,
 
+      126,    0,    0,    0,    0,    0,    0,    0,   79,    0,
         0,    0,    0,    0,    0,    0,    0,   36,    0,    0,
         0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  122,    0,   22,   55,    0,    0,
-        0,    0,   21,    0,   70,    0,    0,  121,    0,    0,
+        0,    0,    0,    0,  125,    0,   22,   55,    0,    0,
+        0,    0,   21,    0,   70,    0,    0,  124,    0,    0,
         0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,   23,    0,   82,    0,    0,    0,
-        0,    0,  119,  124,   59,    0,    0,    0,  118,    0,
-        0,    0,    0,    0,    0,    0,   83,    0,    0,  120,
-        0
+        0,    0,  122,  127,   59,    0,    0,    0,  121,    0,
+        0,    0,    0,    0,    0,    0,   83,    0,    0,  123,
 
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -713,177 +714,178 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1204] =
+static const flex_int16_t yy_base[1214] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1554, 1555,   32, 1550,  141,    0,  201, 1555,  206,   88,
-       11,  213, 1555, 1532,  114,   25,    2,    6, 1555, 1555,
-       73,   11,   17, 1555, 1555, 1555,  104, 1538, 1493,    0,
-     1530,  107, 1545,  217,  241, 1555,  185, 1496, 1516,   93,
+     1564, 1565,   32, 1560,  141,    0,  201, 1565,  206,   88,
+       11,  213, 1565, 1542,  114,   25,    2,    6, 1565, 1565,
+       73,   11,   17, 1565, 1565, 1565,  104, 1548, 1503,    0,
+     1540,  107, 1555,  217,  241, 1565,  185, 1506, 1526,   93,
        58,  190,   91,  211,  200,   14,  267,  213,  175,  188,
-       64,  220, 1497,  187,   75, 1496,  261,  215,  289,  256,
-      278, 1479,  207,  284,  311,  293, 1498,    0,  337,  352,
-      360,  366,  372, 1555,    0, 1555,  331,  378,  227,  231,
-      320,  294,  341,  325, 1555, 1495, 1534, 1555,  237, 1555,
-
-      377,  335, 1493, 1532,  366,  253,  323, 1487,  362,  295,
-      366,  306,  293, 1530,    0,  428,  365, 1474, 1482,  351,
-     1478, 1467, 1468,  360, 1484, 1477,  365,  358,  359, 1471,
-      374, 1459, 1515,  407, 1462, 1513, 1455, 1478, 1475, 1475,
-     1469,  366, 1462, 1455, 1460, 1454, 1451, 1450, 1464,  363,
-     1500, 1449,  398, 1461, 1464, 1448,  423,  400, 1460, 1461,
-     1459, 1441, 1446, 1442, 1434, 1451, 1443,    0,  385,  408,
-      391,  424,  416,  439, 1442, 1555,    0,  445, 1437, 1555,
-      428,  440, 1555, 1489, 1444,  454, 1487,  456, 1486,  453,
-     1485, 1555,  497,  463, 1446, 1441, 1440,  431, 1481, 1475,
-
-     1441, 1420, 1428, 1434, 1422, 1433, 1434, 1434, 1429, 1421,
-     1423, 1407, 1411, 1424, 1424, 1416, 1406, 1409, 1423, 1555,
-     1409, 1417, 1420, 1401, 1400, 1450, 1399, 1409, 1447, 1446,
-     1407, 1395, 1406, 1442, 1400, 1392, 1389, 1405, 1386, 1388,
-     1384, 1390, 1381, 1380, 1393, 1386, 1388, 1392, 1386,   80,
-     1393, 1388, 1380, 1386, 1386, 1367, 1383, 1376, 1383, 1371,
-     1364, 1378, 1377, 1380, 1362, 1370,  466, 1555, 1555,  467,
-     1555, 1555, 1357,    0,  456,  484,  468, 1414, 1555, 1367,
-      465, 1555, 1412, 1555, 1406,  533,  457, 1348, 1358, 1408,
-     1365,  473, 1555, 1363, 1405, 1360, 1357, 1358,  490, 1401,
-
-     1351, 1346, 1343, 1339, 1341, 1390, 1349, 1338, 1387, 1335,
-      526, 1348, 1348, 1331, 1332, 1345, 1332, 1342, 1337, 1344,
-     1339, 1324,  467, 1333, 1329, 1377,  480, 1324, 1317, 1319,
-     1323, 1312, 1319, 1324,   62, 1369, 1324,  483, 1321, 1325,
-     1313, 1313, 1325, 1307, 1299, 1300, 1321, 1303, 1315, 1314,
-     1300, 1312, 1311, 1310, 1351, 1350, 1349, 1293,  527, 1306,
-     1555, 1555, 1305,    0,  502, 1345, 1344, 1302, 1342, 1555,
-     1290, 1340, 1555,  530,  576,  506, 1339, 1281, 1555, 1297,
-     1296, 1283, 1282, 1555, 1284, 1281, 1293, 1289, 1277, 1555,
-     1286, 1271, 1273, 1284, 1282, 1277, 1317, 1283, 1265, 1314,
-
-     1555, 1263, 1279, 1311, 1315, 1273, 1267, 1269, 1270, 1272,
-     1304, 1257, 1252, 1251, 1253, 1246, 1261, 1253, 1301, 1555,
-     1248, 1244, 1247, 1240, 1250, 1253, 1242, 1241, 1236, 1555,
-     1291, 1555, 1235, 1234, 1227, 1244, 1281, 1234, 1243, 1237,
-     1241,  555, 1276, 1240, 1220, 1223, 1222, 1230, 1218, 1274,
-     1216, 1555, 1555, 1555, 1221, 1555, 1231, 1265, 1227,    0,
-     1268, 1555, 1555, 1216, 1555, 1222, 1555,  472,  532,  561,
-     1555, 1260, 1207, 1206, 1213, 1206, 1218, 1217, 1201, 1216,
-     1246, 1250, 1196, 1198, 1210, 1210, 1209, 1194, 1191, 1205,
-     1197, 1203, 1194, 1202, 1555, 1187, 1198, 1202, 1184, 1198,
-
-     1196, 1179, 1173, 1178, 1175, 1190, 1191, 1188, 1555, 1174,
-     1176, 1222,  563, 1185, 1168, 1169, 1174, 1165, 1555, 1179,
-     1165,  564, 1157, 1178, 1168, 1211, 1165, 1209, 1555, 1157,
-     1155, 1169, 1172, 1204, 1203, 1150, 1201, 1555,  547, 1163,
-     1152, 1154, 1555, 1555, 1146, 1201,  541,  525, 1154, 1159,
-     1193, 1192, 1191, 1145, 1135, 1188, 1150, 1140, 1185, 1131,
-     1139, 1141, 1145, 1180, 1184, 1141, 1140, 1141, 1134, 1123,
-     1136, 1139, 1134, 1129, 1134, 1131, 1130, 1133, 1128, 1169,
-     1168, 1112, 1108, 1116, 1164, 1113, 1105, 1120, 1555, 1108,
-     1117, 1116, 1116, 1100, 1155, 1098, 1111, 1555, 1103, 1095,
-
-     1104, 1097, 1086, 1090, 1141, 1088, 1086, 1097, 1137, 1084,
-      544,  555, 1078,  548, 1555, 1139, 1097, 1086, 1090, 1135,
-     1555, 1129,  551, 1082, 1083, 1074, 1077, 1073, 1090, 1085,
-     1073, 1084, 1068, 1070, 1069, 1083, 1064, 1114, 1069, 1555,
-     1077, 1075, 1066, 1075, 1071, 1112, 1054, 1054, 1067, 1066,
-     1051, 1106, 1048, 1049, 1555, 1555, 1063, 1060, 1063, 1555,
-     1062, 1047,  571, 1045, 1092, 1041, 1095, 1094, 1555, 1039,
-     1051, 1049, 1090, 1038, 1038, 1087, 1040, 1028, 1022, 1030,
-     1032, 1041, 1034, 1026, 1026,  527, 1025, 1076, 1037, 1012,
-     1555, 1068, 1015, 1028, 1555,  576,  546, 1030, 1031, 1022,
-
-     1015, 1014, 1008, 1015, 1008, 1057, 1061, 1008, 1018, 1001,
-     1015, 1003, 1013, 1005, 1048, 1014,  996,  995, 1555,   15,
-       64,  185,  620,  219, 1555,  316,  345,  387,  435,  396,
-      443,  463,  488,  503,  521,  570,  533, 1555, 1555,  554,
-      599,  560, 1555,  568,  572, 1555,  573,  578,  573,  574,
-      586,  581,  579,  632,  578,  634,  635,  581, 1555,  587,
-      585,  584,  598,  599,  615,  620,  594,  589,  596,  601,
-      608,  649,  650,  599,  603, 1555,  598,  616,  613,  651,
-      602,  620,  621,  607,  615,  624,  604,  625,  665,  666,
-     1555,  621,  668,  669,  633,  636,  619,  621,  628,  679,
-
-      628,  643,  682,  637,  635,  633,  686,  687,  639,  689,
-      685,  645,  650,  643,  652,  646,  641,  651,  647, 1555,
-      642, 1555, 1555,  643,  659,  660,  661,  643,  648,  687,
-      678,  650,  653,  668,  661,  665, 1555, 1555,  675,  673,
-      659,  660,  718,  673,  678,  665,  676,  668,  674,  670,
-      688,  689, 1555, 1555,  687, 1555,  690, 1555,  675,  694,
-      684,  734,  690,  732, 1555,  689,  739, 1555,  688,  695,
-      737, 1555, 1555,  697, 1555,  688,  688,  691,  705,  692,
-      703,  750,  709,  747,  753,  754,  755,  756,  717,  701,
-      713,  732,  761,  721,  763,  712,  708,  724,  729,  717,
-
-      769,  728, 1555,  730,  729,  731,  724,  733,  734,  731,
-      721,  723,  780,  729,  782,  727,  784, 1555,  722,  737,
-      787, 1555,  738,  748,  733,  749,  735,  795,  796,  742,
-      798,  757, 1555,  749,  751,  802, 1555, 1555, 1555, 1555,
-      755,  806,  757,  789, 1555,  767, 1555,  754,  753,  756,
-      756,  757,  815, 1555,  760,  817,  772,  763,  778,  778,
-      781,  781,  778,  783, 1555,  775, 1555,  785, 1555,  786,
-      787,  784, 1555,  776,  782,  781,  793,  793, 1555, 1555,
-      832, 1555,  797,  782,  788, 1555,  803, 1555,  800,  819,
-      839,  845,  789,  847,  848,  803, 1555,  850, 1555,  790,
-
-      847,  812,  808,  850,  800,  805,  858,  816,  860,  861,
-      824,  813,  864,  808,  825,  810,  825,  809,  866,  867,
-      832,  828,  875,  847,  834, 1555,  878, 1555, 1555,  827,
-     1555,  880,  828,  877,  822,  827,  886,  836, 1555,  842,
-     1555, 1555,  833,  848, 1555,  886,  854,  847,  848,  857,
-      844,  846,  856,  849, 1555,  900,  847, 1555,  851, 1555,
-      854,  850,  849,  907,  862, 1555,  904,  866,  869,  912,
-      855,  857,  865,  855,  871,  865,  881,  920,  916, 1555,
-      881,  918,  882,  873,  880, 1555,  877,  882,  929,  874,
-     1555,  878,  890,  891,  934,  878,  879,  887, 1555,  898,
-
-      888,  887,  890,  902,  893,  902,  904, 1555,  946,  906,
-      948,  949, 1555,  945,  905,  910,  891,  954,  913,  956,
-      915,  916,  959,  918, 1555,  923, 1555, 1555,  905,  911,
-      964,  925, 1555,  911, 1555,  911,  913, 1555,  918,  913,
-      925,  921, 1555,  924,  928,  919,  971,  920,  936,  929,
-      924,  939,  930,  937,  924,  939,  986,  945,  988,  933,
-      949,  940,  954,  950, 1555,  994, 1555,  995,  996,  953,
-      952,  953, 1555, 1555, 1555, 1000,  944,  960, 1555,  998,
-      949,  948,  950,  961, 1008,  959, 1555,  968, 1011, 1555,
-     1555, 1017, 1022, 1027, 1032, 1037, 1042, 1047, 1050, 1024,
-
-     1029, 1031, 1044
+       64,  220, 1507,  187,   75, 1506,  261,  215,  289,  256,
+      278, 1489,  207,  284,  311,  293, 1508,    0,  337,  352,
+      360,  366,  372, 1565,    0, 1565,  331,  378,  227,  231,
+      320,  294,  341,  325, 1565, 1505, 1544, 1565,  237, 1565,
+
+      377,  335, 1503, 1542,  366,  253,  323, 1497,  362,  295,
+      366,  306,  293, 1540,    0,  428,  365, 1484, 1492,  351,
+     1488, 1477, 1478,  360, 1494, 1487,  365,  358,  359, 1481,
+      374, 1469, 1525,  407, 1472, 1523, 1465, 1488, 1485, 1485,
+     1479,  366, 1472, 1465, 1470, 1464, 1461, 1460, 1474,  363,
+     1510, 1459,  398, 1471, 1474, 1458,  423,  400, 1470, 1471,
+     1469, 1451, 1456, 1452, 1444, 1461, 1453,    0,  385,  408,
+      391,  424,  416,  439, 1452, 1565,    0,  445, 1447, 1565,
+      428,  440, 1565, 1499, 1454,  454, 1497,  456, 1496,  453,
+     1495, 1565,  497,  463, 1456, 1451, 1450,  431, 1491, 1485,
+
+     1451, 1430, 1438, 1444, 1432, 1443, 1444, 1444, 1439, 1431,
+     1433, 1417, 1421, 1434, 1434, 1426, 1416, 1419, 1433, 1565,
+     1419, 1427, 1430, 1411, 1410, 1460, 1409, 1419, 1457,  485,
+     1418, 1406, 1417, 1453, 1411, 1403, 1400, 1416, 1397, 1399,
+     1395, 1401, 1392, 1391, 1404, 1397, 1399, 1403, 1397,   80,
+     1404, 1399, 1391, 1397, 1397, 1378, 1394, 1387, 1394, 1382,
+     1375, 1389, 1388, 1391, 1373, 1381,  466, 1565, 1565,  467,
+     1565, 1565, 1368,    0,  456,  484,  468, 1425, 1565, 1378,
+      465, 1565, 1423, 1565, 1417,  537,  462, 1359, 1369, 1419,
+     1376,  473, 1565, 1374, 1416, 1371, 1368, 1369,  494, 1412,
+
+     1362, 1357, 1354, 1350, 1352, 1401, 1360, 1349, 1398, 1346,
+      543, 1359, 1359, 1342, 1343, 1356, 1343, 1353, 1348, 1355,
+     1350, 1335,  467, 1344, 1347, 1342, 1338, 1386,  476, 1333,
+     1326, 1328, 1332, 1321, 1328, 1333,   62, 1378, 1333,  481,
+     1330, 1334, 1322, 1322, 1334, 1316, 1308, 1309, 1330, 1312,
+     1324, 1323, 1309, 1321, 1320, 1319, 1360, 1359, 1358, 1302,
+      525, 1315, 1565, 1565, 1314,    0,  503, 1354, 1353, 1311,
+     1351, 1565, 1299, 1349, 1565,  534,  592,  505, 1348, 1290,
+     1565, 1306, 1305, 1292, 1291, 1565, 1293, 1290, 1302, 1298,
+     1286, 1565, 1295, 1280, 1282, 1293, 1291, 1286,  562, 1293,
+
+     1275, 1324, 1565, 1273, 1289, 1321, 1325, 1283, 1277, 1279,
+     1280, 1282, 1314, 1267, 1262, 1261, 1263, 1256, 1271, 1249,
+     1256, 1261, 1309, 1565, 1256, 1252, 1255, 1248, 1258, 1261,
+     1250, 1249, 1244, 1565, 1299, 1565, 1243, 1242, 1235, 1252,
+     1289, 1242, 1251, 1245, 1249,  563, 1284, 1248, 1228, 1231,
+     1230, 1238, 1226, 1282, 1224, 1565, 1565, 1565, 1229, 1565,
+     1239, 1273, 1235,    0, 1276, 1565, 1565, 1224, 1565, 1230,
+     1565,  517,  537,  565, 1565, 1268, 1215, 1214, 1221, 1214,
+     1226, 1225, 1209, 1224, 1254, 1258, 1204, 1206, 1218, 1218,
+     1217, 1565, 1202, 1199, 1213, 1205, 1211, 1202, 1210, 1565,
+
+     1195, 1206, 1210, 1192, 1206, 1204, 1187, 1181, 1186, 1183,
+     1198, 1199, 1196, 1237, 1194, 1565, 1180, 1182, 1228,  497,
+     1191, 1174, 1175, 1180, 1171, 1565, 1185, 1171,  581, 1163,
+     1184, 1174, 1217, 1171, 1215, 1565, 1163, 1161, 1175, 1178,
+     1210, 1209, 1156, 1207, 1565,  572, 1169, 1158, 1160, 1565,
+     1565, 1152, 1207,  559,  507, 1160, 1165, 1199, 1198, 1197,
+     1151, 1141, 1194, 1156, 1146, 1191, 1137, 1145, 1147, 1151,
+     1186, 1190, 1147, 1146, 1147, 1140, 1129, 1142, 1145, 1140,
+     1135, 1140, 1137, 1136, 1139, 1134, 1175, 1174, 1118, 1114,
+     1122, 1170, 1565, 1169, 1118, 1110, 1125, 1565, 1113, 1122,
+
+     1121, 1121, 1105, 1160, 1103, 1116, 1565, 1108, 1100, 1109,
+     1102, 1091, 1095, 1146, 1093, 1091, 1102, 1142, 1089,  520,
+      537, 1083,  538, 1565, 1144, 1102, 1091, 1095, 1140, 1565,
+     1134,  563, 1087, 1088, 1079, 1082, 1078, 1095, 1090, 1078,
+     1089, 1073, 1075, 1074, 1088, 1069, 1119, 1074, 1565, 1082,
+     1080, 1071, 1080, 1076, 1117, 1059, 1059, 1072, 1071, 1056,
+     1111, 1053, 1054, 1565, 1565, 1068, 1065, 1068, 1565, 1565,
+     1067, 1052,  555, 1050, 1097, 1046, 1100, 1099, 1565, 1044,
+     1056, 1054, 1095, 1043, 1043, 1092, 1045, 1033, 1027, 1035,
+     1037, 1046, 1039, 1031, 1031,  543, 1030, 1081, 1042, 1017,
+
+     1565, 1073, 1020, 1033, 1565,  545,  532, 1035, 1036, 1027,
+     1020, 1019, 1013, 1020, 1013, 1062, 1066, 1013, 1023, 1006,
+     1020, 1008, 1018,    4,  115,  202,  220,  299, 1565,  366,
+      373,  385,  613,  386, 1565,  462,  473,  508,  598,  558,
+      548,  566,  557,  572,  560,  585,  564, 1565, 1565,  572,
+      617,  573, 1565,  582,  577, 1565,  578,  583,  584,  585,
+      597,  591,  589,  642,  588,  644,  645,  591, 1565,  597,
+      595,  594,  608,  609,  625,  630,  604,  599,  606,  611,
+      618,  659,  660,  609,  613, 1565,  608,  626,  623,  661,
+      612,  630,  632,  618,  626,  635,  615,  636,  676,  677,
+
+     1565,  632,  679,  682,  644,  647,  630,  631,  638,  689,
+      638,  653,  692,  647,  645,  643,  696,  697,  649,  699,
+      695,  655,  660,  653,  662,  656,  651,  661,  657, 1565,
+      652, 1565, 1565,  653,  669,  670,  671,  653,  658,  697,
+      688,  660,  663,  678,  670,  674, 1565, 1565,  684,  683,
+      669,  670,  728,  683,  688,  675,  686,  678,  684,  680,
+      698,  699, 1565, 1565,  697, 1565,  700, 1565,  685,  704,
+      694,  744,  700,  742, 1565,  699,  749, 1565,  698,  705,
+      747, 1565, 1565,  707, 1565,  698,  698,  701,  715,  702,
+      713,  760,  719,  757,  763,  764,  765,  766,  727,  711,
+
+      723,  742,  771,  731,  773,  722,  718,  734,  739,  727,
+      779,  738, 1565,  740,  739,  741,  734,  743,  744,  741,
+      731,  733,  790,  739,  792,  737,  794, 1565,  732,  747,
+      797, 1565,  748,  758,  743,  759,  745,  805,  806,  752,
+      808,  767, 1565,  759,  761,  812, 1565, 1565, 1565, 1565,
+      765,  816,  767,  799, 1565,  777, 1565,  764,  763,  766,
+      766,  767,  825, 1565,  770,  827,  782,  773,  788,  788,
+      791,  791,  788,  793, 1565,  785, 1565,  795, 1565,  796,
+      797,  794, 1565,  786,  792,  791,  803,  803, 1565, 1565,
+      842, 1565,  807,  792,  798, 1565,  813, 1565,  810,  829,
+
+      849,  855,  799,  857,  858,  813, 1565,  860, 1565,  800,
+      857,  822,  818,  860,  810,  815,  868,  826,  870,  871,
+      834,  823,  874,  818,  835,  820,  835,  819,  876,  877,
+      842,  838,  885,  857,  844, 1565,  888, 1565, 1565,  837,
+     1565,  890,  838,  887,  832,  837,  896,  846, 1565,  852,
+     1565, 1565,  843,  858, 1565,  896,  864,  857,  858,  867,
+      854,  856,  866,  859, 1565,  910,  857, 1565,  861, 1565,
+      864,  860,  859,  917,  872, 1565,  914,  876,  879,  922,
+      865,  867,  875,  865,  881,  875,  891,  930,  926, 1565,
+      891,  928,  892,  883,  890, 1565,  887,  892,  939,  884,
+
+     1565,  888,  900,  901,  944,  888,  889,  897, 1565,  908,
+      898,  897,  900,  912,  903,  912,  914, 1565,  956,  916,
+      958,  959, 1565,  955,  915,  920,  901,  964,  923,  966,
+      925,  926,  969,  928, 1565,  933, 1565, 1565,  915,  921,
+      974,  935, 1565,  921, 1565,  921,  923, 1565,  928,  923,
+      935,  931, 1565,  934,  938,  929,  981,  930,  946,  939,
+      934,  949,  940,  947,  934,  949,  996,  955,  998,  943,
+      959,  950,  964,  960, 1565, 1004, 1565, 1005, 1006,  963,
+      962,  963, 1565, 1565, 1565, 1010,  954,  970, 1565, 1008,
+      959,  958,  960,  971, 1018,  969, 1565,  978, 1021, 1565,
+
+     1565, 1027, 1032, 1037, 1042, 1047, 1052, 1057, 1060, 1034,
+     1039, 1041, 1054
     } ;
 
-static const flex_int16_t yy_def[1204] =
+static const flex_int16_t yy_def[1214] =
     {   0,
-     1192, 1192, 1193, 1193, 1192, 1192, 1192, 1192, 1192, 1192,
-     1191, 1191, 1191, 1191, 1191, 1194, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1195,
-     1191, 1191, 1191, 1196,   15, 1191,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1197,   45,   45,   45,
+     1202, 1202, 1203, 1203, 1202, 1202, 1202, 1202, 1202, 1202,
+     1201, 1201, 1201, 1201, 1201, 1204, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1205,
+     1201, 1201, 1201, 1206,   15, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1207,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1194, 1191, 1191,
-     1191, 1191, 1191, 1191, 1198, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1195, 1191, 1196, 1191,
+       45,   45,   45,   45,   45,   45,   45, 1204, 1201, 1201,
+     1201, 1201, 1201, 1201, 1208, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1205, 1201, 1206, 1201,
 
-     1191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1199,   45, 1197,   45,   45,   45,   45,
+     1201,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1209,   45, 1207,   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,   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, 1198, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1200,   45,   45, 1191,
-       45,   45, 1191,   45,   45,   45,   45,   45,   45,   45,
-     1199, 1191, 1197,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1208, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1210,   45,   45, 1201,
+       45,   45, 1201,   45,   45,   45,   45,   45,   45,   45,
+     1209, 1201, 1207,   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, 1191,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1201,
        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,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1201,   45,   45,   45,   45, 1191,   45,
-       45, 1191,   45, 1191,   45, 1197,   45,   45,   45,   45,
-       45,   45, 1191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1211,   45,   45,   45,   45, 1201,   45,
+       45, 1201,   45, 1201,   45, 1207,   45,   45,   45,   45,
+       45,   45, 1201,   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,   45,
@@ -891,119 +893,120 @@ static const flex_int16_t yy_def[1204] =
        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,   45,   45,   45,   45,
-     1191, 1191, 1191, 1202,   45,   45,   45,   45,   45, 1191,
-       45,   45, 1191,   45, 1197,   45,   45,   45, 1191,   45,
-       45,   45,   45, 1191,   45,   45,   45,   45,   45, 1191,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201, 1201, 1201, 1212,   45,   45,   45,   45,
+       45, 1201,   45,   45, 1201,   45, 1207,   45,   45,   45,
+     1201,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+       45, 1201,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1191,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1191,
-       45, 1191,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1201,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1201,   45, 1201,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1191, 1191, 1191,   45, 1191,   45,   45, 1191, 1203,
-       45, 1191, 1191,   45, 1191,   45, 1191,   45,   45,   45,
-     1191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201, 1201, 1201,   45, 1201,
+       45,   45, 1201, 1213,   45, 1201, 1201,   45, 1201,   45,
+     1201,   45,   45,   45, 1201,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45,   45,   45,   45,   45,
+       45, 1201,   45,   45,   45,   45,   45,   45,   45, 1201,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45,   45,   45,   45, 1191,   45,   45,
-       45,   45, 1191, 1191,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45, 1201,   45,   45,   45,   45, 1201,
+     1201,   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,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45,   45,   45,   45, 1191,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201,   45,   45,   45,   45, 1201,   45,   45,
 
+       45,   45,   45,   45,   45,   45, 1201,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1201,   45,   45,   45,   45,   45, 1201,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45,   45,   45,   45,   45,
-     1191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1191,
+       45,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191, 1191,   45,   45,   45, 1191,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
+       45,   45,   45, 1201, 1201,   45,   45,   45, 1201, 1201,
+       45,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1191,   45,   45,   45, 1191,   45,   45,   45,   45,   45,
 
+     1201,   45,   45,   45, 1201,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45, 1191,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1191, 1191,   45,
-       45,   45, 1191,   45,   45, 1191,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
+       45,   45,   45,   45, 1201,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1201, 1201,   45,
+       45,   45, 1201,   45,   45, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1191,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1191,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
+     1201,   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,   45,   45, 1191,
-       45, 1191, 1191,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1191, 1191,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1191, 1191,   45, 1191,   45, 1191,   45,   45,
-       45,   45,   45,   45, 1191,   45,   45, 1191,   45,   45,
-       45, 1191, 1191,   45, 1191,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1201,
+       45, 1201, 1201,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1201, 1201,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201, 1201,   45, 1201,   45, 1201,   45,   45,
+       45,   45,   45,   45, 1201,   45,   45, 1201,   45,   45,
+       45, 1201, 1201,   45, 1201,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1191,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1191,   45,   45,
-       45, 1191,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1191,   45,   45,   45, 1191, 1191, 1191, 1191,
-       45,   45,   45,   45, 1191,   45, 1191,   45,   45,   45,
-       45,   45,   45, 1191,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45, 1191,   45, 1191,   45,
-       45,   45, 1191,   45,   45,   45,   45,   45, 1191, 1191,
-       45, 1191,   45,   45,   45, 1191,   45, 1191,   45,   45,
-       45,   45,   45,   45,   45,   45, 1191,   45, 1191,   45,
-
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1201,   45,   45,
+       45, 1201,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1201,   45,   45,   45, 1201, 1201, 1201, 1201,
+       45,   45,   45,   45, 1201,   45, 1201,   45,   45,   45,
+       45,   45,   45, 1201,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1201,   45, 1201,   45, 1201,   45,
+       45,   45, 1201,   45,   45,   45,   45,   45, 1201, 1201,
+       45, 1201,   45,   45,   45, 1201,   45, 1201,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1201,   45, 1201,   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, 1191,   45, 1191, 1191,   45,
-     1191,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-     1191, 1191,   45,   45, 1191,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45,   45, 1191,   45, 1191,
-       45,   45,   45,   45,   45, 1191,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1191,
-       45,   45,   45,   45,   45, 1191,   45,   45,   45,   45,
-     1191,   45,   45,   45,   45,   45,   45,   45, 1191,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 1191,   45,   45,
-       45,   45, 1191,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45, 1191, 1191,   45,   45,
-       45,   45, 1191,   45, 1191,   45,   45, 1191,   45,   45,
-       45,   45, 1191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1201,   45, 1201, 1201,   45,
+     1201,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
+     1201, 1201,   45,   45, 1201,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1201,   45,   45, 1201,   45, 1201,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1201,
+       45,   45,   45,   45,   45, 1201,   45,   45,   45,   45,
+
+     1201,   45,   45,   45,   45,   45,   45,   45, 1201,   45,
+       45,   45,   45,   45,   45,   45,   45, 1201,   45,   45,
+       45,   45, 1201,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1201,   45, 1201, 1201,   45,   45,
+       45,   45, 1201,   45, 1201,   45,   45, 1201,   45,   45,
+       45,   45, 1201,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1191,   45, 1191,   45,   45,   45,
-       45,   45, 1191, 1191, 1191,   45,   45,   45, 1191,   45,
-       45,   45,   45,   45,   45,   45, 1191,   45,   45, 1191,
-        0, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+       45,   45,   45,   45, 1201,   45, 1201,   45,   45,   45,
+       45,   45, 1201, 1201, 1201,   45,   45,   45, 1201,   45,
+       45,   45,   45,   45,   45,   45, 1201,   45,   45, 1201,
 
-     1191, 1191, 1191
+        0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201
     } ;
 
-static const flex_int16_t yy_nxt[1627] =
+static const flex_int16_t yy_nxt[1637] =
     {   0,
-     1191,   13,   14,   13, 1191,   15,   16, 1191,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   84, 1191,
-       37,   14,   37,   85,   25,   26,   38, 1191, 1191,   27,
+     1201,   13,   14,   13, 1201,   15,   16, 1201,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   84, 1201,
+       37,   14,   37,   85,   25,   26,   38, 1201, 1201,   27,
        37,   14,   37,   42,   28,   42,   38,   90,   91,   29,
       113,   30,   13,   14,   13,   89,   90,   25,   31,   91,
-       13,   14,   13,   13,   14,   13,   32,   40,  788,   13,
-       14,   13,   33,   40,  113,   90,   91,  430,   89,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  793,   13,
+       14,   13,   33,   40,  113,   90,   91,  434,   89,   34,
        35,   13,   14,   13,   93,   15,   16,   94,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  106,   39,   89,   25,   26,   13,   14,   13,   27,
 
        39,   83,   83,   83,   28,   42,   41,   42,   42,   29,
        42,   30,   81,  105,   41,  109,   92,   25,   31,  106,
-      127,  134,   87,  431,   87,  789,   32,   88,   88,   88,
-      128,  135,   33,  136,  343,   81,  105,  344,  109,   34,
+      127,  134,   87,  435,   87,  794,   32,   88,   88,   88,
+      128,  135,   33,  136,  345,   81,  105,  346,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   45,   48,   49,   50,   45,   51,   52,
@@ -1015,11 +1018,11 @@ static const flex_int16_t yy_nxt[1627] =
        45,   45,   79,  102,   80,   80,   80,   79,  107,   82,
        82,   82,  100,  112,   79,   81,   82,   82,   82,  119,
        81,  123,  120,  110,  121,  124,  122,   81,  125,  102,
-      105,  102,  100,  111,  131,  790,  112,  108,   81,  132,
+      105,  102,  100,  111,  131,  795,  112,  108,   81,  132,
       156,  126,  133,   81,  157,  169,  110,  101,  142,  170,
        81,   45,  143,  105,   45,   45,   45,  117,   45,   45,
        45,  111,  115,  118,  129,   45,   45,  101,   45,   45,
-      794,  169,  144,  182,   45,  170,   45,   45,   45,   45,
+      796,  169,  144,  182,   45,  170,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,  138,  139,
@@ -1027,69 +1030,69 @@ static const flex_int16_t yy_nxt[1627] =
       149,  150,  169,   45,  151,  152,  187,   45,  183,   45,
       116,  158,  145,  110,  146,  153,  109,  189,  154,  112,
       190,  159,  160,  111,   88,   88,   88,  161,  172,  165,
-       83,   83,   83,  187,  166,  171,  110,  184,  162,  795,
+       83,   83,   83,  187,  166,  171,  110,  184,  162,  797,
       171,   81,  163,   79,  189,   80,   80,   80,   87,  170,
        87,  111,  178,   88,   88,   88,   81,   79,  164,   82,
        82,   82,   99,  171,   81,   83,   83,   83,  174,   99,
        81,   88,   88,   88,  181,  173,   81,  197,  186,   81,
 
-      178,  188,  178,  210,  202,  203,  212,  198,  207,  796,
+      178,  188,  178,  210,  202,  203,  212,  198,  207,  798,
       208,  229,  220,   81,  204,  269,  211,   99,  267,   81,
       181,   99,  213,  238,  239,   99,  186,  209,  215,  188,
-      194,  216,  230,   99,  797,  217,  268,   99,  269,   99,
-      177,  193,  193,  193,  268,  798,  267,  799,  193,  193,
+      194,  216,  230,   99,  799,  217,  268,   99,  269,   99,
+      177,  193,  193,  193,  268,  800,  267,  804,  193,  193,
       193,  193,  193,  193,  221,  242,  255,  267,  243,  244,
       256,  277,  268,  269,  257,  275,  248,  249,  250,  278,
       271,  193,  193,  193,  193,  193,  193,  251,  281,  252,
       283,  253,  285,  275,  254,  270,  272,  291,  275,  277,
-      361,  361,  369,  292,  365,  365,  278,  372,  366,  367,
-
-      388,  281,  547,  283,  389,  800,  287,  368,  801,  285,
-      286,  286,  286,  361,  362,  369,  381,  286,  286,  286,
-      286,  286,  286,  365,  376,  372,  416,  417,  421,  547,
-      434,  401,  456,  382,  435,  461,  402,  457,  422,  461,
-      286,  286,  286,  286,  286,  286,  375,  375,  375,  623,
-      802,  803,  615,  375,  375,  375,  375,  375,  375,  468,
-      529,  469,  616,  461,  548,  530,  544,  470,  589,  598,
-      766,  549,  623,  756,  599,  622,  375,  375,  375,  375,
-      375,  375,  403,  804,  697,  757,  468,  404,  469,   45,
-       45,   45,  548,  766,  807,  684,   45,   45,   45,   45,
-
-       45,   45,  685,  622,  689,  590,  686,  765,  808,  809,
-      690,  600,  697,  687,  733,  805,  810,  811,  734,   45,
-       45,   45,   45,   45,   45,  791,  806,  812,  813,  814,
-      792,  815,  816,  817,  765,  818,  819,  820,  821,  822,
-      823,  824,  825,  826,  827,  828,  829,  830,  832,  831,
-      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      363,  363,  371,  292,  367,  323,  278,  374,  368,  369,
+
+      367,  281,  598,  283,  390,  805,  287,  370,  391,  285,
+      286,  286,  286,  363,  364,  371,  383,  286,  286,  286,
+      286,  286,  286,  367,  425,  374,  418,  419,  438,  378,
+      460,  632,  439,  384,  426,  461,  465,  806,  465,  599,
+      286,  286,  286,  286,  286,  286,  324,  554,  403,  325,
+      377,  377,  377,  404,  632,  807,  776,  377,  377,  377,
+      377,  377,  377,  472,  465,  473,  474,  492,  536,  555,
+      551,  694,  493,  537,  554,  556,  775,  624,  695,  776,
+      377,  377,  377,  377,  377,  377,  607,  625,  696,  766,
+      472,  608,  473,  631,  699,  697,  707,  555,  743,  405,
+
+      700,  767,  744,  775,  406,   45,   45,   45,  808,  809,
+      810,  811,   45,   45,   45,   45,   45,   45,  801,  812,
+      813,  631,  814,  802,  707,  817,  818,  819,  609,  820,
+      815,  821,  822,  823,  824,   45,   45,   45,   45,   45,
+       45,  816,  825,  826,  827,  828,  829,  830,  831,  832,
+      833,  834,  835,  836,  837,  838,  839,  840,  842,  841,
       843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
-      853,  854,  855,  856,  858,  830,  831,  860,  857,  861,
-      862,  793,  863,  864,  865,  866,  867,  868,  869,  870,
+      853,  854,  855,  856,  803,  857,  858,  859,  860,  861,
+      862,  863,  864,  865,  866,  840,  841,  868,  870,  867,
       871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
 
       881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  894,  895,  896,  859,  897,  898,  899,
-      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
-      910,  911,  912,  913,  892,  914,  915,  916,  917,  918,
-      893,  919,  920,  921,  922,  923,  924,  925,  926,  927,
-      928,  929,  930,  931,  932,  933,  934,  935,  937,  938,
-      939,  940,  941,  942,  943,  944,  945,  946,  947,  949,
-      950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
+      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
+      901,  902,  903,  904,  905,  906,  907,  908,  909,  869,
+      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
+      920,  921,  922,  923,  902,  924,  925,  926,  927,  928,
+      903,  929,  930,  931,  932,  933,  934,  935,  936,  937,
+      938,  939,  940,  941,  942,  943,  944,  945,  947,  948,
+      949,  950,  951,  952,  953,  954,  955,  956,  957,  959,
       960,  961,  962,  963,  964,  965,  966,  967,  968,  969,
-      970,  971,  973,  944,  974,  975,  976,  977,  978,  972,
+      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
 
-      979,  980,  981,  982,  983,  984,  985,  986,  936,  987,
-      948,  988,  989,  990,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
-     1007, 1008, 1009, 1010, 1011, 1012,  990, 1013, 1014, 1015,
-     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
+      980,  981,  983,  954,  984,  985,  986,  987,  988,  982,
+      989,  990,  991,  992,  993,  994,  995,  996,  946,  997,
+      958,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
+     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016,
+     1017, 1018, 1019, 1020, 1021, 1022, 1000, 1023, 1024, 1025,
      1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
      1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1024, 1051, 1052, 1053, 1054,
-     1055, 1056, 1057, 1058, 1059, 1060, 1062, 1063, 1064, 1065,
-     1061, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
+     1056, 1057, 1058, 1059, 1060, 1034, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1072, 1073, 1074, 1075,
 
-     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1056,
-     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
+     1071, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1066,
      1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
      1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
      1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
@@ -1100,92 +1103,93 @@ static const flex_int16_t yy_nxt[1627] =
      1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
 
      1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
-     1184, 1185, 1186, 1187, 1188, 1189, 1190,   12,   12,   12,
+     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
+     1194, 1195, 1196, 1197, 1198, 1199, 1200,   12,   12,   12,
        12,   12,   36,   36,   36,   36,   36,   78,  274,   78,
-       78,   78,   97,  364,   97,  460,   97,   99,   99,   99,
+       78,   78,   97,  366,   97,  464,   97,   99,   99,   99,
        99,   99,  114,  114,  114,  114,  114,  168,   99,  168,
-      168,  168,  191,  191,  191,  787,  786,  785,  784,  783,
-      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
-      772,  771,  770,  769,  768,  767,  764,  763,  762,  761,
-      760,  759,  758,  755,  754,  753,  752,  751,  750,  749,
-      748,  747,  746,  745,  744,  743,  742,  741,  740,  739,
-
-      738,  737,  736,  735,  732,  731,  730,  729,  728,  727,
-      726,  725,  724,  723,  722,  721,  720,  719,  718,  717,
-      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
-      706,  705,  704,  703,  702,  701,  700,  699,  698,  696,
-      695,  694,  693,  692,  691,  688,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
-      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
-      639,  638,  637,  636,  635,  634,  633,  632,  631,  630,
-
-      629,  628,  627,  626,  625,  624,  621,  620,  619,  618,
-      617,  614,  613,  612,  611,  610,  609,  608,  607,  606,
-      605,  604,  603,  602,  601,  597,  596,  595,  594,  593,
-      592,  591,  588,  587,  586,  585,  584,  583,  582,  581,
-      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
-      570,  569,  568,  567,  566,  565,  564,  563,  562,  561,
-      560,  559,  558,  557,  556,  555,  554,  553,  552,  551,
-      550,  546,  545,  544,  543,  542,  541,  540,  539,  538,
-      537,  536,  535,  534,  533,  532,  531,  528,  527,  526,
-      525,  524,  523,  522,  521,  520,  519,  518,  517,  516,
-
-      515,  514,  513,  512,  511,  510,  509,  508,  507,  506,
-      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
-      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
-      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
-      475,  474,  473,  472,  471,  467,  466,  465,  464,  463,
-      462,  459,  458,  455,  454,  453,  452,  451,  450,  449,
-      448,  447,  446,  445,  444,  443,  442,  441,  440,  439,
-      438,  437,  436,  433,  432,  429,  428,  427,  426,  425,
-      424,  423,  420,  419,  418,  415,  414,  413,  412,  411,
-      410,  409,  408,  407,  406,  405,  400,  399,  398,  397,
-
-      396,  395,  394,  393,  392,  391,  390,  387,  386,  385,
-      384,  383,  380,  379,  378,  377,  374,  373,  371,  370,
-      363,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  342,  341,  340,
-      339,  338,  337,  336,  335,  334,  333,  332,  331,  330,
-      329,  328,  327,  326,  325,  324,  323,  322,  321,  320,
+      168,  168,  191,  191,  191,  792,  791,  790,  789,  788,
+      787,  786,  785,  784,  783,  782,  781,  780,  779,  778,
+      777,  774,  773,  772,  771,  770,  769,  768,  765,  764,
+      763,  762,  761,  760,  759,  758,  757,  756,  755,  754,
+
+      753,  752,  751,  750,  749,  748,  747,  746,  745,  742,
+      741,  740,  739,  738,  737,  736,  735,  734,  733,  732,
+      731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
+      721,  720,  719,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  706,  705,  704,  703,  702,  701,
+      698,  693,  692,  691,  690,  689,  688,  687,  686,  685,
+      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
+      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
+
+      644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
+      634,  633,  630,  629,  628,  627,  626,  623,  622,  621,
+      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
+      610,  606,  605,  604,  603,  602,  601,  600,  597,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
+      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
+      565,  564,  563,  562,  561,  560,  559,  558,  557,  553,
+      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
+      542,  541,  540,  539,  538,  535,  534,  533,  532,  531,
+
+      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
+      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
+      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
+      500,  499,  498,  497,  496,  495,  494,  491,  490,  489,
+      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
+      478,  477,  476,  475,  471,  470,  469,  468,  467,  466,
+      463,  462,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+      441,  440,  437,  436,  433,  432,  431,  430,  429,  428,
+      427,  424,  423,  422,  421,  420,  417,  416,  415,  414,
+
+      413,  412,  411,  410,  409,  408,  407,  402,  401,  400,
+      399,  398,  397,  396,  395,  394,  393,  392,  389,  388,
+      387,  386,  385,  382,  381,  380,  379,  376,  375,  373,
+      372,  365,  362,  361,  360,  359,  358,  357,  356,  355,
+      354,  353,  352,  351,  350,  349,  348,  347,  344,  343,
+      342,  341,  340,  339,  338,  337,  336,  335,  334,  333,
+      332,  331,  330,  329,  328,  327,  326,  322,  321,  320,
       319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
       309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
       299,  298,  297,  296,  295,  294,  293,  290,  289,  288,
-      192,  284,  282,  280,  279,  276,  273,  266,  265,  264,
 
+      192,  284,  282,  280,  279,  276,  273,  266,  265,  264,
       263,  262,  261,  260,  259,  258,  247,  246,  245,  241,
       240,  237,  236,  235,  234,  233,  232,  231,  228,  227,
       226,  225,  224,  223,  222,  219,  218,  214,  206,  205,
       201,  200,  199,  196,  195,  192,  185,  180,  179,  176,
       175,  167,  155,  137,  130,  104,  103,   43,   98,   96,
-       95,   86,   43, 1191,   11, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191
+       95,   86,   43, 1201,   11, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201
     } ;
 
-static const flex_int16_t yy_chk[1627] =
+static const flex_int16_t yy_chk[1637] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,   21,    0,
         3,    3,    3,   21,    1,    1,    3,    0,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        56,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  720,    8,
-        8,    8,    1,    8,   56,   27,   28,  335,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,  724,    8,
+        8,    8,    1,    8,   56,   27,   28,  337,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   51,    5,   31,    2,    2,   10,   10,   10,    2,
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
-       61,   65,   25,  335,   25,  721,    2,   25,   25,   25,
+       61,   65,   25,  337,   25,  725,    2,   25,   25,   25,
        61,   65,    2,   65,  250,   20,   50,  250,   53,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1198,11 +1202,11 @@ static const flex_int16_t yy_chk[1627] =
        15,   15,   17,   47,   17,   17,   17,   19,   52,   19,
        19,   19,   44,   55,   22,   17,   22,   22,   22,   59,
        19,   60,   59,   54,   59,   60,   59,   22,   60,   47,
-       62,   58,   99,   54,   64,  722,   55,   52,   17,   64,
+       62,   58,   99,   54,   64,  726,   55,   52,   17,   64,
        73,   60,   64,   19,   73,   89,   54,   44,   68,   90,
        22,   45,   68,   62,   45,   45,   45,   58,   45,   45,
        45,   54,   57,   58,   62,   45,   45,   99,   45,   57,
-      724,   89,   68,  106,   45,   90,   45,   45,   45,   45,
+      727,   89,   68,  106,   45,   90,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   57,   67,   67,
@@ -1210,147 +1214,148 @@ static const flex_int16_t yy_chk[1627] =
        70,   71,   92,   57,   71,   71,  110,   57,  107,   57,
        57,   74,   69,   75,   69,   71,   69,  112,   71,   76,
       113,   74,   74,   75,   87,   87,   87,   74,   92,   76,
-       79,   79,   79,  110,   76,   91,   75,  107,   75,  726,
+       79,   79,   79,  110,   76,   91,   75,  107,   75,  728,
        94,   79,   75,   80,  112,   80,   80,   80,   81,   93,
        81,   75,  102,   81,   81,   81,   80,   82,   75,   82,
        82,   82,  101,   91,   79,   83,   83,   83,   94,  101,
        82,   88,   88,   88,  105,   93,   83,  120,  109,   80,
 
-      102,  111,  117,  128,  124,  124,  129,  120,  127,  727,
+      102,  111,  117,  128,  124,  124,  129,  120,  127,  730,
       127,  142,  134,   82,  124,  171,  128,  101,  169,   83,
       105,  101,  129,  150,  150,  101,  109,  127,  131,  111,
-      117,  131,  142,  101,  728,  131,  170,  101,  171,  101,
-      101,  116,  116,  116,  173,  729,  169,  730,  116,  116,
+      117,  131,  142,  101,  731,  131,  170,  101,  171,  101,
+      101,  116,  116,  116,  173,  732,  169,  734,  116,  116,
       116,  116,  116,  116,  134,  153,  158,  172,  153,  153,
       158,  181,  170,  174,  158,  178,  157,  157,  157,  182,
       173,  116,  116,  116,  116,  116,  116,  157,  186,  157,
       188,  157,  190,  194,  157,  172,  174,  198,  178,  181,
-      267,  270,  277,  198,  275,  287,  182,  281,  276,  276,
+      267,  270,  277,  198,  275,  230,  182,  281,  276,  276,
 
-      299,  186,  468,  188,  299,  731,  194,  276,  732,  190,
+      287,  186,  520,  188,  299,  736,  194,  276,  299,  190,
       193,  193,  193,  267,  270,  277,  292,  193,  193,  193,
-      193,  193,  193,  275,  287,  281,  323,  323,  327,  468,
-      338,  311,  359,  292,  338,  365,  311,  359,  327,  376,
-      193,  193,  193,  193,  193,  193,  286,  286,  286,  548,
-      733,  734,  539,  286,  286,  286,  286,  286,  286,  374,
-      442,  374,  539,  365,  469,  442,  470,  376,  513,  522,
-      697,  470,  548,  686,  522,  547,  286,  286,  286,  286,
-      286,  286,  311,  735,  623,  686,  374,  311,  374,  375,
-      375,  375,  469,  697,  737,  611,  375,  375,  375,  375,
-
-      375,  375,  611,  547,  614,  513,  612,  696,  740,  741,
-      614,  522,  623,  612,  663,  736,  742,  744,  663,  375,
-      375,  375,  375,  375,  375,  723,  736,  745,  747,  748,
-      723,  749,  750,  751,  696,  752,  753,  754,  755,  756,
-      757,  758,  760,  761,  762,  763,  764,  765,  767,  766,
-      768,  769,  770,  771,  772,  773,  774,  775,  777,  778,
-      779,  780,  781,  782,  783,  784,  785,  786,  787,  788,
-      789,  790,  792,  793,  794,  765,  766,  795,  793,  796,
-      797,  723,  798,  799,  800,  801,  802,  803,  804,  805,
+      193,  193,  193,  275,  329,  281,  323,  323,  340,  287,
+      361,  555,  340,  292,  329,  361,  367,  737,  378,  520,
+      193,  193,  193,  193,  193,  193,  230,  472,  311,  230,
+      286,  286,  286,  311,  555,  738,  707,  286,  286,  286,
+      286,  286,  286,  376,  367,  376,  378,  399,  446,  473,
+      474,  620,  399,  446,  472,  474,  706,  546,  620,  707,
+      286,  286,  286,  286,  286,  286,  529,  546,  621,  696,
+      376,  529,  376,  554,  623,  621,  632,  473,  673,  311,
+
+      623,  696,  673,  706,  311,  377,  377,  377,  739,  740,
+      741,  742,  377,  377,  377,  377,  377,  377,  733,  743,
+      744,  554,  745,  733,  632,  747,  750,  751,  529,  752,
+      746,  754,  755,  757,  758,  377,  377,  377,  377,  377,
+      377,  746,  759,  760,  761,  762,  763,  764,  765,  766,
+      767,  768,  770,  771,  772,  773,  774,  775,  777,  776,
+      778,  779,  780,  781,  782,  783,  784,  785,  787,  788,
+      789,  790,  791,  792,  733,  793,  794,  795,  796,  797,
+      798,  799,  800,  802,  803,  775,  776,  804,  805,  803,
       806,  807,  808,  809,  810,  811,  812,  813,  814,  815,
 
-      816,  817,  818,  819,  821,  824,  825,  826,  827,  828,
-      829,  830,  831,  832,  833,  834,  794,  835,  836,  839,
-      840,  841,  842,  843,  844,  845,  846,  847,  848,  849,
-      850,  851,  852,  855,  830,  857,  859,  860,  861,  862,
-      831,  863,  864,  866,  867,  869,  870,  871,  874,  876,
-      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      816,  817,  818,  819,  820,  821,  822,  823,  824,  825,
+      826,  827,  828,  829,  831,  834,  835,  836,  837,  838,
+      839,  840,  841,  842,  843,  844,  845,  846,  849,  804,
+      850,  851,  852,  853,  854,  855,  856,  857,  858,  859,
+      860,  861,  862,  865,  840,  867,  869,  870,  871,  872,
+      841,  873,  874,  876,  877,  879,  880,  881,  884,  886,
       887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
-      897,  898,  899,  900,  901,  902,  904,  905,  906,  907,
-      908,  909,  910,  911,  912,  913,  914,  915,  916,  917,
-      919,  920,  921,  892,  923,  924,  925,  926,  927,  920,
-
-      928,  929,  930,  931,  932,  934,  935,  936,  884,  941,
-      895,  942,  943,  944,  946,  948,  949,  950,  951,  952,
-      953,  955,  956,  957,  958,  959,  960,  961,  962,  963,
-      964,  966,  968,  970,  971,  972,  944,  974,  975,  976,
-      977,  978,  981,  983,  984,  985,  987,  989,  990,  991,
-      992,  993,  994,  995,  996,  998, 1000, 1001, 1002, 1003,
-     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
-     1014, 1015, 1016, 1017, 1018,  990, 1019, 1020, 1021, 1022,
-     1023, 1024, 1025, 1027, 1030, 1032, 1033, 1034, 1035, 1036,
-     1032, 1037, 1038, 1040, 1043, 1044, 1046, 1047, 1048, 1049,
-
-     1050, 1051, 1052, 1053, 1054, 1056, 1057, 1059, 1061, 1024,
-     1062, 1063, 1064, 1065, 1067, 1068, 1069, 1070, 1071, 1072,
-     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1081, 1082, 1083,
-     1084, 1085, 1087, 1088, 1089, 1090, 1092, 1093, 1094, 1095,
-     1096, 1097, 1098, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
-     1107, 1109, 1110, 1111, 1112, 1114, 1115, 1116, 1117, 1118,
-     1119, 1120, 1121, 1122, 1123, 1124, 1126, 1129, 1130, 1131,
-     1132, 1134, 1136, 1137, 1139, 1140, 1141, 1142, 1144, 1145,
-     1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155,
-     1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1166,
-
-     1168, 1169, 1170, 1171, 1172, 1176, 1177, 1178, 1180, 1181,
-     1182, 1183, 1184, 1185, 1186, 1188, 1189, 1192, 1192, 1192,
-     1192, 1192, 1193, 1193, 1193, 1193, 1193, 1194, 1200, 1194,
-     1194, 1194, 1195, 1201, 1195, 1202, 1195, 1196, 1196, 1196,
-     1196, 1196, 1197, 1197, 1197, 1197, 1197, 1198, 1203, 1198,
-     1198, 1198, 1199, 1199, 1199,  718,  717,  716,  715,  714,
-      713,  712,  711,  710,  709,  708,  707,  706,  705,  704,
-      703,  702,  701,  700,  699,  698,  694,  693,  692,  690,
-      689,  688,  687,  685,  684,  683,  682,  681,  680,  679,
-      678,  677,  676,  675,  674,  673,  672,  671,  670,  668,
-
-      667,  666,  665,  664,  662,  661,  659,  658,  657,  654,
-      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
-      643,  642,  641,  639,  638,  637,  636,  635,  634,  633,
-      632,  631,  630,  629,  628,  627,  626,  625,  624,  622,
-      620,  619,  618,  617,  616,  613,  610,  609,  608,  607,
-      606,  605,  604,  603,  602,  601,  600,  599,  597,  596,
-      595,  594,  593,  592,  591,  590,  588,  587,  586,  585,
-      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
-      574,  573,  572,  571,  570,  569,  568,  567,  566,  565,
-      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
-
-      554,  553,  552,  551,  550,  549,  546,  545,  542,  541,
-      540,  537,  536,  535,  534,  533,  532,  531,  530,  528,
-      527,  526,  525,  524,  523,  521,  520,  518,  517,  516,
-      515,  514,  512,  511,  510,  508,  507,  506,  505,  504,
-      503,  502,  501,  500,  499,  498,  497,  496,  494,  493,
-      492,  491,  490,  489,  488,  487,  486,  485,  484,  483,
-      482,  481,  480,  479,  478,  477,  476,  475,  474,  473,
-      472,  466,  464,  461,  459,  458,  457,  455,  451,  450,
-      449,  448,  447,  446,  445,  444,  443,  441,  440,  439,
-      438,  437,  436,  435,  434,  433,  431,  429,  428,  427,
-
-      426,  425,  424,  423,  422,  421,  419,  418,  417,  416,
-      415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
-      405,  404,  403,  402,  400,  399,  398,  397,  396,  395,
-      394,  393,  392,  391,  389,  388,  387,  386,  385,  383,
-      382,  381,  380,  378,  377,  372,  371,  369,  368,  367,
-      366,  363,  360,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  337,  336,  334,  333,  332,  331,  330,
-      329,  328,  326,  325,  324,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  313,  312,  310,  309,  308,  307,
-
-      306,  305,  304,  303,  302,  301,  300,  298,  297,  296,
-      295,  294,  291,  290,  289,  288,  285,  283,  280,  278,
-      273,  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,  239,  238,  237,
-      236,  235,  234,  233,  232,  231,  230,  229,  228,  227,
+      897,  898,  899,  900,  901,  902,  903,  904,  905,  906,
+      907,  908,  909,  910,  911,  912,  914,  915,  916,  917,
+      918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
+
+      929,  930,  931,  902,  933,  934,  935,  936,  937,  930,
+      938,  939,  940,  941,  942,  944,  945,  946,  894,  951,
+      905,  952,  953,  954,  956,  958,  959,  960,  961,  962,
+      963,  965,  966,  967,  968,  969,  970,  971,  972,  973,
+      974,  976,  978,  980,  981,  982,  954,  984,  985,  986,
+      987,  988,  991,  993,  994,  995,  997,  999, 1000, 1001,
+     1002, 1003, 1004, 1005, 1006, 1008, 1010, 1011, 1012, 1013,
+     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+     1024, 1025, 1026, 1027, 1028, 1000, 1029, 1030, 1031, 1032,
+     1033, 1034, 1035, 1037, 1040, 1042, 1043, 1044, 1045, 1046,
+
+     1042, 1047, 1048, 1050, 1053, 1054, 1056, 1057, 1058, 1059,
+     1060, 1061, 1062, 1063, 1064, 1066, 1067, 1069, 1071, 1034,
+     1072, 1073, 1074, 1075, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 1093,
+     1094, 1095, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105,
+     1106, 1107, 1108, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
+     1117, 1119, 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128,
+     1129, 1130, 1131, 1132, 1133, 1134, 1136, 1139, 1140, 1141,
+     1142, 1144, 1146, 1147, 1149, 1150, 1151, 1152, 1154, 1155,
+     1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165,
+
+     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1176,
+     1178, 1179, 1180, 1181, 1182, 1186, 1187, 1188, 1190, 1191,
+     1192, 1193, 1194, 1195, 1196, 1198, 1199, 1202, 1202, 1202,
+     1202, 1202, 1203, 1203, 1203, 1203, 1203, 1204, 1210, 1204,
+     1204, 1204, 1205, 1211, 1205, 1212, 1205, 1206, 1206, 1206,
+     1206, 1206, 1207, 1207, 1207, 1207, 1207, 1208, 1213, 1208,
+     1208, 1208, 1209, 1209, 1209,  723,  722,  721,  720,  719,
+      718,  717,  716,  715,  714,  713,  712,  711,  710,  709,
+      708,  704,  703,  702,  700,  699,  698,  697,  695,  694,
+      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+
+      683,  682,  681,  680,  678,  677,  676,  675,  674,  672,
+      671,  668,  667,  666,  663,  662,  661,  660,  659,  658,
+      657,  656,  655,  654,  653,  652,  651,  650,  648,  647,
+      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
+      636,  635,  634,  633,  631,  629,  628,  627,  626,  625,
+      622,  619,  618,  617,  616,  615,  614,  613,  612,  611,
+      610,  609,  608,  606,  605,  604,  603,  602,  601,  600,
+      599,  597,  596,  595,  594,  592,  591,  590,  589,  588,
+      587,  586,  585,  584,  583,  582,  581,  580,  579,  578,
+      577,  576,  575,  574,  573,  572,  571,  570,  569,  568,
+
+      567,  566,  565,  564,  563,  562,  561,  560,  559,  558,
+      557,  556,  553,  552,  549,  548,  547,  544,  543,  542,
+      541,  540,  539,  538,  537,  535,  534,  533,  532,  531,
+      530,  528,  527,  525,  524,  523,  522,  521,  519,  518,
+      517,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  499,  498,  497,  496,
+      495,  494,  493,  491,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  478,  477,  476,  470,
+      468,  465,  463,  462,  461,  459,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  445,  444,  443,  442,  441,
+
+      440,  439,  438,  437,  435,  433,  432,  431,  430,  429,
+      428,  427,  426,  425,  423,  422,  421,  420,  419,  418,
+      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
+      407,  406,  405,  404,  402,  401,  400,  398,  397,  396,
+      395,  394,  393,  391,  390,  389,  388,  387,  385,  384,
+      383,  382,  380,  379,  374,  373,  371,  370,  369,  368,
+      365,  362,  360,  359,  358,  357,  356,  355,  354,  353,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  341,  339,  338,  336,  335,  334,  333,  332,  331,
+      330,  328,  327,  326,  325,  324,  322,  321,  320,  319,
+
+      318,  317,  316,  315,  314,  313,  312,  310,  309,  308,
+      307,  306,  305,  304,  303,  302,  301,  300,  298,  297,
+      296,  295,  294,  291,  290,  289,  288,  285,  283,  280,
+      278,  273,  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,  239,  238,
+      237,  236,  235,  234,  233,  232,  231,  229,  228,  227,
       226,  225,  224,  223,  222,  221,  219,  218,  217,  216,
       215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
       205,  204,  203,  202,  201,  200,  199,  197,  196,  195,
-      191,  189,  187,  185,  184,  179,  175,  167,  166,  165,
 
+      191,  189,  187,  185,  184,  179,  175,  167,  166,  165,
       164,  163,  162,  161,  160,  159,  156,  155,  154,  152,
       151,  149,  148,  147,  146,  145,  144,  143,  141,  140,
       139,  138,  137,  136,  135,  133,  132,  130,  126,  125,
       123,  122,  121,  119,  118,  114,  108,  104,  103,   97,
        96,   77,   72,   66,   63,   49,   48,   43,   41,   39,
-       38,   24,   14,   11, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191
+       38,   24,   14,   11, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1359,7 +1364,7 @@ static char *yy_last_accepting_cpos;
 extern int parser6__flex_debug;
 int parser6__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[150] =
+static const flex_int16_t yy_rule_linenum[153] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  195,  204,  213,  222,  231,  240,  249,
@@ -1370,13 +1375,14 @@ static const flex_int16_t yy_rule_linenum[150] =
       644,  653,  668,  683,  692,  701,  710,  719,  728,  737,
       746,  755,  764,  774,  783,  792,  801,  810,  819,  828,
       838,  847,  856,  865,  874,  883,  892,  901,  910,  919,
-      929,  939,  949,  958,  967,  976,  987,  997, 1006, 1016,
-
-     1026, 1035, 1044, 1053, 1062, 1071, 1080, 1090, 1099, 1108,
-     1117, 1126, 1135, 1144, 1153, 1162, 1171, 1180, 1189, 1198,
-     1207, 1216, 1225, 1234, 1243, 1252, 1261, 1270, 1279, 1288,
-     1297, 1306, 1404, 1409, 1414, 1419, 1420, 1421, 1422, 1423,
-     1424, 1426, 1444, 1457, 1462, 1466, 1468, 1470, 1472
+      929,  938,  947,  957,  967,  977,  986,  995, 1004, 1015,
+
+     1025, 1034, 1044, 1054, 1063, 1072, 1081, 1090, 1099, 1108,
+     1118, 1127, 1136, 1145, 1154, 1163, 1172, 1181, 1190, 1199,
+     1208, 1217, 1226, 1235, 1244, 1253, 1262, 1271, 1280, 1289,
+     1298, 1307, 1316, 1325, 1334, 1432, 1437, 1442, 1447, 1448,
+     1449, 1450, 1451, 1452, 1454, 1472, 1485, 1490, 1494, 1496,
+     1498, 1500
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1421,7 +1427,7 @@ unsigned int comment_start_line = 0;
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1424 "dhcp6_lexer.cc"
+#line 1430 "dhcp6_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
@@ -1447,8 +1453,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 1450 "dhcp6_lexer.cc"
-#line 1451 "dhcp6_lexer.cc"
+#line 1456 "dhcp6_lexer.cc"
+#line 1457 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1772,7 +1778,7 @@ YY_DECL
     }
 
 
-#line 1775 "dhcp6_lexer.cc"
+#line 1781 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1801,13 +1807,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 >= 1192 )
+                               if ( yy_current_state >= 1202 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1191 );
+               while ( yy_current_state != 1201 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1826,13 +1832,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 < 150 )
+                       else if ( yy_act < 153 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser6_text );
-                       else if ( yy_act == 150 )
+                       else if ( yy_act == 153 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser6_text );
-                       else if ( yy_act == 151 )
+                       else if ( yy_act == 154 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2891,6 +2897,42 @@ YY_RULE_SETUP
 case 88:
 YY_RULE_SETUP
 #line 901 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp6Parser::make_FLUSH(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("flush", driver.loc_);
+    }
+}
+       YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 910 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp6Parser::make_MAXSIZE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("maxsize", driver.loc_);
+    }
+}
+       YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 919 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
+        return isc::dhcp::Dhcp6Parser::make_MAXVER(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("maxver", driver.loc_);
+    }
+}
+       YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 929 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -2900,9 +2942,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 92:
 YY_RULE_SETUP
-#line 910 "dhcp6_lexer.ll"
+#line 938 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -2912,9 +2954,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 93:
 YY_RULE_SETUP
-#line 919 "dhcp6_lexer.ll"
+#line 947 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2925,9 +2967,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 94:
 YY_RULE_SETUP
-#line 929 "dhcp6_lexer.ll"
+#line 957 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2938,9 +2980,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 95:
 YY_RULE_SETUP
-#line 939 "dhcp6_lexer.ll"
+#line 967 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -2951,9 +2993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 96:
 YY_RULE_SETUP
-#line 949 "dhcp6_lexer.ll"
+#line 977 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2963,9 +3005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 97:
 YY_RULE_SETUP
-#line 958 "dhcp6_lexer.ll"
+#line 986 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -2975,9 +3017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 967 "dhcp6_lexer.ll"
+#line 995 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -2987,9 +3029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 99:
 YY_RULE_SETUP
-#line 976 "dhcp6_lexer.ll"
+#line 1004 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3001,9 +3043,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 100:
 YY_RULE_SETUP
-#line 987 "dhcp6_lexer.ll"
+#line 1015 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3014,9 +3056,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 101:
 YY_RULE_SETUP
-#line 997 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3026,9 +3068,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 102:
 YY_RULE_SETUP
-#line 1006 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3039,9 +3081,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 103:
 YY_RULE_SETUP
-#line 1016 "dhcp6_lexer.ll"
+#line 1044 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3052,9 +3094,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 104:
 YY_RULE_SETUP
-#line 1026 "dhcp6_lexer.ll"
+#line 1054 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3064,9 +3106,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 105:
 YY_RULE_SETUP
-#line 1035 "dhcp6_lexer.ll"
+#line 1063 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3076,9 +3118,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 106:
 YY_RULE_SETUP
-#line 1044 "dhcp6_lexer.ll"
+#line 1072 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3088,9 +3130,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 107:
 YY_RULE_SETUP
-#line 1053 "dhcp6_lexer.ll"
+#line 1081 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3100,9 +3142,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 108:
 YY_RULE_SETUP
-#line 1062 "dhcp6_lexer.ll"
+#line 1090 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3112,9 +3154,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 109:
 YY_RULE_SETUP
-#line 1071 "dhcp6_lexer.ll"
+#line 1099 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3124,9 +3166,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 110:
 YY_RULE_SETUP
-#line 1080 "dhcp6_lexer.ll"
+#line 1108 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3136,9 +3178,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 111:
 YY_RULE_SETUP
-#line 1090 "dhcp6_lexer.ll"
+#line 1118 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3148,9 +3190,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 112:
 YY_RULE_SETUP
-#line 1099 "dhcp6_lexer.ll"
+#line 1127 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3160,9 +3202,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 113:
 YY_RULE_SETUP
-#line 1108 "dhcp6_lexer.ll"
+#line 1136 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3172,9 +3214,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 114:
 YY_RULE_SETUP
-#line 1117 "dhcp6_lexer.ll"
+#line 1145 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3184,9 +3226,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 115:
 YY_RULE_SETUP
-#line 1126 "dhcp6_lexer.ll"
+#line 1154 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3196,9 +3238,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 116:
 YY_RULE_SETUP
-#line 1135 "dhcp6_lexer.ll"
+#line 1163 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3208,9 +3250,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 117:
 YY_RULE_SETUP
-#line 1144 "dhcp6_lexer.ll"
+#line 1172 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3220,9 +3262,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 118:
 YY_RULE_SETUP
-#line 1153 "dhcp6_lexer.ll"
+#line 1181 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3232,9 +3274,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 119:
 YY_RULE_SETUP
-#line 1162 "dhcp6_lexer.ll"
+#line 1190 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3244,9 +3286,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 120:
 YY_RULE_SETUP
-#line 1171 "dhcp6_lexer.ll"
+#line 1199 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3256,9 +3298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 121:
 YY_RULE_SETUP
-#line 1180 "dhcp6_lexer.ll"
+#line 1208 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3268,9 +3310,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 122:
 YY_RULE_SETUP
-#line 1189 "dhcp6_lexer.ll"
+#line 1217 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3280,9 +3322,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 123:
 YY_RULE_SETUP
-#line 1198 "dhcp6_lexer.ll"
+#line 1226 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3292,9 +3334,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 124:
 YY_RULE_SETUP
-#line 1207 "dhcp6_lexer.ll"
+#line 1235 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3304,9 +3346,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 125:
 YY_RULE_SETUP
-#line 1216 "dhcp6_lexer.ll"
+#line 1244 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3316,9 +3358,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 126:
 YY_RULE_SETUP
-#line 1225 "dhcp6_lexer.ll"
+#line 1253 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3328,9 +3370,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 127:
 YY_RULE_SETUP
-#line 1234 "dhcp6_lexer.ll"
+#line 1262 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3340,9 +3382,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 128:
 YY_RULE_SETUP
-#line 1243 "dhcp6_lexer.ll"
+#line 1271 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3352,9 +3394,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 129:
 YY_RULE_SETUP
-#line 1252 "dhcp6_lexer.ll"
+#line 1280 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3364,9 +3406,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 130:
 YY_RULE_SETUP
-#line 1261 "dhcp6_lexer.ll"
+#line 1289 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3376,9 +3418,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 131:
 YY_RULE_SETUP
-#line 1270 "dhcp6_lexer.ll"
+#line 1298 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3388,9 +3430,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 132:
 YY_RULE_SETUP
-#line 1279 "dhcp6_lexer.ll"
+#line 1307 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3400,9 +3442,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 133:
 YY_RULE_SETUP
-#line 1288 "dhcp6_lexer.ll"
+#line 1316 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3412,9 +3454,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 134:
 YY_RULE_SETUP
-#line 1297 "dhcp6_lexer.ll"
+#line 1325 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3424,9 +3466,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 135:
 YY_RULE_SETUP
-#line 1306 "dhcp6_lexer.ll"
+#line 1334 "dhcp6_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.
@@ -3525,65 +3567,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 133:
-/* rule 133 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 1404 "dhcp6_lexer.ll"
+#line 1432 "dhcp6_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 134:
-/* rule 134 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 1409 "dhcp6_lexer.ll"
+#line 1437 "dhcp6_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 135:
+case 138:
 YY_RULE_SETUP
-#line 1414 "dhcp6_lexer.ll"
+#line 1442 "dhcp6_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 136:
+case 139:
 YY_RULE_SETUP
-#line 1419 "dhcp6_lexer.ll"
+#line 1447 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 137:
+case 140:
 YY_RULE_SETUP
-#line 1420 "dhcp6_lexer.ll"
+#line 1448 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 138:
+case 141:
 YY_RULE_SETUP
-#line 1421 "dhcp6_lexer.ll"
+#line 1449 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 139:
+case 142:
 YY_RULE_SETUP
-#line 1422 "dhcp6_lexer.ll"
+#line 1450 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 140:
+case 143:
 YY_RULE_SETUP
-#line 1423 "dhcp6_lexer.ll"
+#line 1451 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 141:
+case 144:
 YY_RULE_SETUP
-#line 1424 "dhcp6_lexer.ll"
+#line 1452 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 142:
+case 145:
 YY_RULE_SETUP
-#line 1426 "dhcp6_lexer.ll"
+#line 1454 "dhcp6_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
@@ -3602,9 +3644,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 143:
+case 146:
 YY_RULE_SETUP
-#line 1444 "dhcp6_lexer.ll"
+#line 1472 "dhcp6_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
@@ -3618,43 +3660,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 144:
+case 147:
 YY_RULE_SETUP
-#line 1457 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 145:
+case 148:
 YY_RULE_SETUP
-#line 1462 "dhcp6_lexer.ll"
+#line 1490 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 146:
+case 149:
 YY_RULE_SETUP
-#line 1466 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 147:
+case 150:
 YY_RULE_SETUP
-#line 1468 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 148:
+case 151:
 YY_RULE_SETUP
-#line 1470 "dhcp6_lexer.ll"
+#line 1498 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 149:
+case 152:
 YY_RULE_SETUP
-#line 1472 "dhcp6_lexer.ll"
+#line 1500 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1474 "dhcp6_lexer.ll"
+#line 1502 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3678,12 +3720,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 150:
+case 153:
 YY_RULE_SETUP
-#line 1497 "dhcp6_lexer.ll"
+#line 1525 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3686 "dhcp6_lexer.cc"
+#line 3728 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -3998,7 +4040,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 >= 1192 )
+                       if ( yy_current_state >= 1202 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4031,11 +4073,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 >= 1192 )
+               if ( yy_current_state >= 1202 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1191);
+       yy_is_jam = (yy_current_state == 1201);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4784,7 +4826,7 @@ void parser6_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1497 "dhcp6_lexer.ll"
+#line 1525 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 2ef88000a97744661887a3247ee342f89b6b6748..c65b680b1011672247129e1f9b8c2bc49af0178c 100644 (file)
@@ -253,28 +253,28 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -293,28 +293,28 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -354,72 +354,72 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 140: // "constant string"
+            case 143: // "constant string"
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 362 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 369 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 376 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 383 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 158: // value
+      case 161: // value
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 390 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 162: // map_value
+      case 165: // map_value
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 397 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 203: // db_type
+      case 206: // db_type
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 404 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 398: // duid_type
+      case 401: // duid_type
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 411 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 431: // ncr_protocol_value
+      case 434: // ncr_protocol_value
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 418 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 439: // replace_client_name_value
+      case 442: // replace_client_name_value
 
-#line 215 "dhcp6_parser.yy" // lalr1.cc:636
+#line 218 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 425 "dhcp6_parser.cc" // lalr1.cc:636
         break;
@@ -621,28 +621,28 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -664,121 +664,121 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 224 "dhcp6_parser.yy" // lalr1.cc:859
+#line 227 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 670 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 225 "dhcp6_parser.yy" // lalr1.cc:859
+#line 228 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 226 "dhcp6_parser.yy" // lalr1.cc:859
+#line 229 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 682 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 227 "dhcp6_parser.yy" // lalr1.cc:859
+#line 230 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 228 "dhcp6_parser.yy" // lalr1.cc:859
+#line 231 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 694 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 229 "dhcp6_parser.yy" // lalr1.cc:859
+#line 232 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 700 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 230 "dhcp6_parser.yy" // lalr1.cc:859
+#line 233 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 231 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 712 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 232 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 718 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 233 "dhcp6_parser.yy" // lalr1.cc:859
+#line 236 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 237 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 730 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 238 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 736 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 246 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 244 "dhcp6_parser.yy" // lalr1.cc:859
+#line 247 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 748 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 245 "dhcp6_parser.yy" // lalr1.cc:859
+#line 248 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 754 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 246 "dhcp6_parser.yy" // lalr1.cc:859
+#line 249 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 760 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 247 "dhcp6_parser.yy" // lalr1.cc:859
+#line 250 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 766 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 248 "dhcp6_parser.yy" // lalr1.cc:859
+#line 251 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 772 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 249 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 778 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 252 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -787,7 +787,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -798,7 +798,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 35:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:859
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -808,13 +808,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 268 "dhcp6_parser.yy" // lalr1.cc:859
+#line 271 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 814 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 275 "dhcp6_parser.yy" // lalr1.cc:859
+#line 278 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -823,7 +823,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 279 "dhcp6_parser.yy" // lalr1.cc:859
+#line 282 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -833,7 +833,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 286 "dhcp6_parser.yy" // lalr1.cc:859
+#line 289 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -842,7 +842,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 289 "dhcp6_parser.yy" // lalr1.cc:859
+#line 292 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -850,7 +850,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 297 "dhcp6_parser.yy" // lalr1.cc:859
+#line 300 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -859,7 +859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 301 "dhcp6_parser.yy" // lalr1.cc:859
+#line 304 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -868,7 +868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 308 "dhcp6_parser.yy" // lalr1.cc:859
+#line 311 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -876,7 +876,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 310 "dhcp6_parser.yy" // lalr1.cc:859
+#line 313 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -885,7 +885,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 319 "dhcp6_parser.yy" // lalr1.cc:859
+#line 322 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -894,7 +894,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 323 "dhcp6_parser.yy" // lalr1.cc:859
+#line 326 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -903,7 +903,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 334 "dhcp6_parser.yy" // lalr1.cc:859
+#line 337 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -914,7 +914,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 344 "dhcp6_parser.yy" // lalr1.cc:859
+#line 347 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -925,7 +925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 349 "dhcp6_parser.yy" // lalr1.cc:859
+#line 352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -935,7 +935,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63:
-#line 368 "dhcp6_parser.yy" // lalr1.cc:859
+#line 371 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -948,7 +948,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64:
-#line 375 "dhcp6_parser.yy" // lalr1.cc:859
+#line 378 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -960,7 +960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 65:
-#line 385 "dhcp6_parser.yy" // lalr1.cc:859
+#line 388 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -970,7 +970,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66:
-#line 389 "dhcp6_parser.yy" // lalr1.cc:859
+#line 392 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -978,7 +978,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 91:
-#line 423 "dhcp6_parser.yy" // lalr1.cc:859
+#line 426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
@@ -987,7 +987,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 92:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:859
+#line 431 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -996,7 +996,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 433 "dhcp6_parser.yy" // lalr1.cc:859
+#line 436 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1005,7 +1005,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 438 "dhcp6_parser.yy" // lalr1.cc:859
+#line 441 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1014,7 +1014,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 443 "dhcp6_parser.yy" // lalr1.cc:859
+#line 446 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1023,7 +1023,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 96:
-#line 448 "dhcp6_parser.yy" // lalr1.cc:859
+#line 451 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1034,7 +1034,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 97:
-#line 453 "dhcp6_parser.yy" // lalr1.cc:859
+#line 456 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 98:
-#line 458 "dhcp6_parser.yy" // lalr1.cc:859
+#line 461 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1053,7 +1053,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 99:
-#line 462 "dhcp6_parser.yy" // lalr1.cc:859
+#line 465 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 100:
-#line 466 "dhcp6_parser.yy" // lalr1.cc:859
+#line 469 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1072,7 +1072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 471 "dhcp6_parser.yy" // lalr1.cc:859
+#line 474 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 476 "dhcp6_parser.yy" // lalr1.cc:859
+#line 479 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1092,7 +1092,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 103:
-#line 481 "dhcp6_parser.yy" // lalr1.cc:859
+#line 484 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1101,7 +1101,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 486 "dhcp6_parser.yy" // lalr1.cc:859
+#line 489 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1112,7 +1112,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 491 "dhcp6_parser.yy" // lalr1.cc:859
+#line 494 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1121,7 +1121,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 121:
-#line 515 "dhcp6_parser.yy" // lalr1.cc:859
+#line 518 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1129,7 +1129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 122:
-#line 517 "dhcp6_parser.yy" // lalr1.cc:859
+#line 520 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1138,31 +1138,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 123:
-#line 522 "dhcp6_parser.yy" // lalr1.cc:859
+#line 525 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1144 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 124:
-#line 523 "dhcp6_parser.yy" // lalr1.cc:859
+#line 526 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1150 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 125:
-#line 524 "dhcp6_parser.yy" // lalr1.cc:859
+#line 527 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1156 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 126:
-#line 525 "dhcp6_parser.yy" // lalr1.cc:859
+#line 528 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1162 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 127:
-#line 528 "dhcp6_parser.yy" // lalr1.cc:859
+#line 531 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1170,7 +1170,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 128:
-#line 530 "dhcp6_parser.yy" // lalr1.cc:859
+#line 533 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1180,7 +1180,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 129:
-#line 536 "dhcp6_parser.yy" // lalr1.cc:859
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1188,7 +1188,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 130:
-#line 538 "dhcp6_parser.yy" // lalr1.cc:859
+#line 541 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1198,7 +1198,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 131:
-#line 544 "dhcp6_parser.yy" // lalr1.cc:859
+#line 547 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1206,7 +1206,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 132:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+#line 549 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1216,7 +1216,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 133:
-#line 552 "dhcp6_parser.yy" // lalr1.cc:859
+#line 555 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
@@ -1225,7 +1225,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 134:
-#line 557 "dhcp6_parser.yy" // lalr1.cc:859
+#line 560 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1233,7 +1233,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 135:
-#line 559 "dhcp6_parser.yy" // lalr1.cc:859
+#line 562 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1243,7 +1243,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 136:
-#line 565 "dhcp6_parser.yy" // lalr1.cc:859
+#line 568 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
@@ -1252,7 +1252,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 137:
-#line 570 "dhcp6_parser.yy" // lalr1.cc:859
+#line 573 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
@@ -1261,7 +1261,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 138:
-#line 575 "dhcp6_parser.yy" // lalr1.cc:859
+#line 578 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
@@ -1270,7 +1270,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139:
-#line 580 "dhcp6_parser.yy" // lalr1.cc:859
+#line 583 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
@@ -1279,7 +1279,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140:
-#line 585 "dhcp6_parser.yy" // lalr1.cc:859
+#line 588 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1287,7 +1287,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141:
-#line 587 "dhcp6_parser.yy" // lalr1.cc:859
+#line 590 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
@@ -1297,7 +1297,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142:
-#line 593 "dhcp6_parser.yy" // lalr1.cc:859
+#line 596 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1305,7 +1305,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143:
-#line 595 "dhcp6_parser.yy" // lalr1.cc:859
+#line 598 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
@@ -1315,7 +1315,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144:
-#line 602 "dhcp6_parser.yy" // lalr1.cc:859
+#line 605 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
@@ -1326,7 +1326,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145:
-#line 607 "dhcp6_parser.yy" // lalr1.cc:859
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1335,7 +1335,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150:
-#line 620 "dhcp6_parser.yy" // lalr1.cc:859
+#line 623 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1344,7 +1344,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151:
-#line 625 "dhcp6_parser.yy" // lalr1.cc:859
+#line 628 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1353,7 +1353,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 152:
-#line 630 "dhcp6_parser.yy" // lalr1.cc:859
+#line 633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1364,7 +1364,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 153:
-#line 635 "dhcp6_parser.yy" // lalr1.cc:859
+#line 638 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1373,7 +1373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 159:
-#line 649 "dhcp6_parser.yy" // lalr1.cc:859
+#line 652 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1382,7 +1382,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 160:
-#line 654 "dhcp6_parser.yy" // lalr1.cc:859
+#line 657 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1391,7 +1391,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 161:
-#line 661 "dhcp6_parser.yy" // lalr1.cc:859
+#line 664 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
@@ -1402,7 +1402,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162:
-#line 666 "dhcp6_parser.yy" // lalr1.cc:859
+#line 669 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1411,7 +1411,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163:
-#line 671 "dhcp6_parser.yy" // lalr1.cc:859
+#line 674 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1422,7 +1422,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164:
-#line 676 "dhcp6_parser.yy" // lalr1.cc:859
+#line 679 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1431,7 +1431,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 169:
-#line 689 "dhcp6_parser.yy" // lalr1.cc:859
+#line 692 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1441,7 +1441,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 170:
-#line 693 "dhcp6_parser.yy" // lalr1.cc:859
+#line 696 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1449,7 +1449,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 171:
-#line 697 "dhcp6_parser.yy" // lalr1.cc:859
+#line 700 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1459,7 +1459,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172:
-#line 701 "dhcp6_parser.yy" // lalr1.cc:859
+#line 704 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1467,7 +1467,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 178:
-#line 714 "dhcp6_parser.yy" // lalr1.cc:859
+#line 717 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1475,7 +1475,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 179:
-#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+#line 719 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -1485,7 +1485,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 180:
-#line 722 "dhcp6_parser.yy" // lalr1.cc:859
+#line 725 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1493,7 +1493,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181:
-#line 724 "dhcp6_parser.yy" // lalr1.cc:859
+#line 727 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1502,7 +1502,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 182:
-#line 730 "dhcp6_parser.yy" // lalr1.cc:859
+#line 733 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1513,7 +1513,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183:
-#line 735 "dhcp6_parser.yy" // lalr1.cc:859
+#line 738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1522,7 +1522,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 192:
-#line 752 "dhcp6_parser.yy" // lalr1.cc:859
+#line 755 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
@@ -1531,7 +1531,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 193:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:859
+#line 760 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
@@ -1540,7 +1540,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 194:
-#line 762 "dhcp6_parser.yy" // lalr1.cc:859
+#line 765 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
@@ -1549,7 +1549,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 195:
-#line 767 "dhcp6_parser.yy" // lalr1.cc:859
+#line 770 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
@@ -1558,7 +1558,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 196:
-#line 772 "dhcp6_parser.yy" // lalr1.cc:859
+#line 775 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
@@ -1567,7 +1567,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197:
-#line 777 "dhcp6_parser.yy" // lalr1.cc:859
+#line 780 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
@@ -1576,7 +1576,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198:
-#line 785 "dhcp6_parser.yy" // lalr1.cc:859
+#line 788 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
@@ -1587,7 +1587,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199:
-#line 790 "dhcp6_parser.yy" // lalr1.cc:859
+#line 793 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1596,7 +1596,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 204:
-#line 810 "dhcp6_parser.yy" // lalr1.cc:859
+#line 813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1606,7 +1606,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 205:
-#line 814 "dhcp6_parser.yy" // lalr1.cc:859
+#line 817 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1629,7 +1629,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 206:
-#line 833 "dhcp6_parser.yy" // lalr1.cc:859
+#line 836 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1639,7 +1639,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 207:
-#line 837 "dhcp6_parser.yy" // lalr1.cc:859
+#line 840 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1647,7 +1647,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 227:
-#line 866 "dhcp6_parser.yy" // lalr1.cc:859
+#line 869 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1655,7 +1655,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 228:
-#line 868 "dhcp6_parser.yy" // lalr1.cc:859
+#line 871 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -1665,7 +1665,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 229:
-#line 874 "dhcp6_parser.yy" // lalr1.cc:859
+#line 877 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1673,7 +1673,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 230:
-#line 876 "dhcp6_parser.yy" // lalr1.cc:859
+#line 879 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -1683,7 +1683,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 231:
-#line 882 "dhcp6_parser.yy" // lalr1.cc:859
+#line 885 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1691,7 +1691,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 232:
-#line 884 "dhcp6_parser.yy" // lalr1.cc:859
+#line 887 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
@@ -1701,7 +1701,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:859
+#line 893 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
@@ -1709,7 +1709,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234:
-#line 892 "dhcp6_parser.yy" // lalr1.cc:859
+#line 895 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -1719,7 +1719,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 235:
-#line 898 "dhcp6_parser.yy" // lalr1.cc:859
+#line 901 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1727,7 +1727,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 236:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:859
+#line 903 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservation-mode", rm);
@@ -1737,7 +1737,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237:
-#line 906 "dhcp6_parser.yy" // lalr1.cc:859
+#line 909 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
@@ -1746,7 +1746,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 238:
-#line 911 "dhcp6_parser.yy" // lalr1.cc:859
+#line 914 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
@@ -1755,7 +1755,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 239:
-#line 920 "dhcp6_parser.yy" // lalr1.cc:859
+#line 923 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1766,7 +1766,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 240:
-#line 925 "dhcp6_parser.yy" // lalr1.cc:859
+#line 928 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1775,7 +1775,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 245:
-#line 942 "dhcp6_parser.yy" // lalr1.cc:859
+#line 945 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1785,7 +1785,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 246:
-#line 946 "dhcp6_parser.yy" // lalr1.cc:859
+#line 949 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1793,7 +1793,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 247:
-#line 953 "dhcp6_parser.yy" // lalr1.cc:859
+#line 956 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1803,7 +1803,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 248:
-#line 957 "dhcp6_parser.yy" // lalr1.cc:859
+#line 960 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1811,7 +1811,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 262:
-#line 983 "dhcp6_parser.yy" // lalr1.cc:859
+#line 986 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
@@ -1820,7 +1820,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 264:
-#line 990 "dhcp6_parser.yy" // lalr1.cc:859
+#line 993 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1828,7 +1828,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 265:
-#line 992 "dhcp6_parser.yy" // lalr1.cc:859
+#line 995 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -1838,7 +1838,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 266:
-#line 998 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1001 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1846,7 +1846,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 267:
-#line 1000 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1003 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -1856,7 +1856,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 268:
-#line 1006 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1009 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1864,7 +1864,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 269:
-#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1011 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -1874,7 +1874,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 271:
-#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1019 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1882,7 +1882,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 272:
-#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1021 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -1892,7 +1892,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 273:
-#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1027 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
@@ -1901,7 +1901,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274:
-#line 1033 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1036 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -1912,7 +1912,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275:
-#line 1038 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1041 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1921,7 +1921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280:
-#line 1057 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1060 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1931,7 +1931,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281:
-#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1064 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -1939,7 +1939,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282:
-#line 1068 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1071 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1949,7 +1949,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283:
-#line 1072 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1957,7 +1957,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 295:
-#line 1101 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1104 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1965,7 +1965,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 296:
-#line 1103 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1106 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -1975,7 +1975,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 299:
-#line 1113 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1116 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
@@ -1984,7 +1984,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 300:
-#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1124 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
@@ -1995,7 +1995,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 301:
-#line 1126 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2004,7 +2004,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 306:
-#line 1141 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1144 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2014,7 +2014,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 307:
-#line 1145 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1148 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2022,7 +2022,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 308:
-#line 1149 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2032,7 +2032,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 309:
-#line 1153 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1156 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2040,7 +2040,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 316:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1170 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2048,7 +2048,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 317:
-#line 1169 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1172 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -2058,7 +2058,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 318:
-#line 1175 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2066,7 +2066,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 319:
-#line 1177 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1180 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2075,7 +2075,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 320:
-#line 1185 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1188 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
@@ -2086,7 +2086,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 321:
-#line 1190 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2095,7 +2095,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 326:
-#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1208 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2105,7 +2105,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 327:
-#line 1209 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1212 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2113,7 +2113,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 328:
-#line 1213 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1216 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2123,7 +2123,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 329:
-#line 1217 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1220 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2131,7 +2131,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 340:
-#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1238 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2139,7 +2139,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 341:
-#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1240 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
@@ -2149,7 +2149,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 342:
-#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1246 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
@@ -2158,7 +2158,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 343:
-#line 1248 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1251 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2166,7 +2166,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 344:
-#line 1250 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1253 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
@@ -2176,7 +2176,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 345:
-#line 1256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1259 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
@@ -2185,7 +2185,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 346:
-#line 1261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
@@ -2194,7 +2194,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 347:
-#line 1269 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1272 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
@@ -2205,7 +2205,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 348:
-#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1277 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2214,7 +2214,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 353:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1290 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2224,7 +2224,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 354:
-#line 1291 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1294 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2232,7 +2232,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 355:
-#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1298 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2242,7 +2242,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 356:
-#line 1299 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1302 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2250,7 +2250,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 370:
-#line 1323 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1326 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
@@ -2261,7 +2261,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 371:
-#line 1328 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1331 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2270,7 +2270,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 372:
-#line 1333 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1336 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
@@ -2281,7 +2281,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 373:
-#line 1338 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1341 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2290,7 +2290,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 374:
-#line 1343 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1346 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2298,7 +2298,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 375:
-#line 1345 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1348 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -2308,7 +2308,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 376:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2316,7 +2316,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 377:
-#line 1353 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1356 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -2326,7 +2326,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 378:
-#line 1359 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1362 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2334,7 +2334,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 379:
-#line 1361 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -2344,7 +2344,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 380:
-#line 1367 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1370 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2352,7 +2352,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 381:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
@@ -2362,7 +2362,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 382:
-#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1378 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
@@ -2373,7 +2373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 383:
-#line 1380 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1383 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2382,7 +2382,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 384:
-#line 1388 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1391 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
@@ -2393,7 +2393,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 385:
-#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1396 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2402,7 +2402,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 386:
-#line 1398 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1401 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2410,7 +2410,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 387:
-#line 1400 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1403 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
@@ -2420,7 +2420,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 388:
-#line 1409 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1412 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
@@ -2431,7 +2431,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 389:
-#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1417 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2440,7 +2440,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 392:
-#line 1423 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2450,7 +2450,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 393:
-#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1430 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -2458,7 +2458,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 403:
-#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1450 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2466,7 +2466,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 404:
-#line 1449 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -2476,7 +2476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 405:
-#line 1458 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1461 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
@@ -2487,7 +2487,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 406:
-#line 1463 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2496,7 +2496,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 416:
-#line 1481 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1484 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
@@ -2504,7 +2504,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 417:
-#line 1483 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1486 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2513,25 +2513,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 418:
-#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1491 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 2519 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 419:
-#line 1489 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1492 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 2525 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 420:
-#line 1490 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1493 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
 #line 2531 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 421:
-#line 1493 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1496 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
@@ -2540,7 +2540,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 422:
-#line 1498 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1501 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2548,7 +2548,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 423:
-#line 1500 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1503 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
@@ -2558,7 +2558,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 424:
-#line 1506 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
@@ -2567,7 +2567,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 425:
-#line 1511 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
@@ -2576,7 +2576,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 426:
-#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1521 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
@@ -2585,7 +2585,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 427:
-#line 1525 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1528 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -2596,7 +2596,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 428:
-#line 1530 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1533 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2605,7 +2605,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 433:
-#line 1543 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1546 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2613,7 +2613,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 434:
-#line 1545 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1548 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -2623,7 +2623,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 435:
-#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1554 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2631,7 +2631,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 436:
-#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1556 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -2641,7 +2641,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 437:
-#line 1561 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1564 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2652,7 +2652,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 438:
-#line 1566 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2661,7 +2661,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 439:
-#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2671,7 +2671,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 440:
-#line 1575 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1578 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -2679,7 +2679,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 458:
-#line 1600 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1603 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
@@ -2688,7 +2688,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 459:
-#line 1605 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1608 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2696,7 +2696,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 460:
-#line 1607 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
@@ -2706,7 +2706,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 461:
-#line 1613 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1616 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2714,7 +2714,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 462:
-#line 1615 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1618 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
@@ -2724,7 +2724,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 463:
-#line 1621 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1624 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
@@ -2733,7 +2733,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 464:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1629 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2741,7 +2741,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 465:
-#line 1628 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
@@ -2751,7 +2751,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 466:
-#line 1634 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1637 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
@@ -2760,7 +2760,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 467:
-#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1642 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
@@ -2769,7 +2769,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 468:
-#line 1644 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1647 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
@@ -2777,7 +2777,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 469:
-#line 1646 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1649 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2786,19 +2786,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 470:
-#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1655 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 2792 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 471:
-#line 1653 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1656 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 2798 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 472:
-#line 1656 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1659 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
@@ -2806,7 +2806,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 473:
-#line 1658 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1661 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -2816,7 +2816,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 474:
-#line 1664 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1667 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
@@ -2825,7 +2825,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 475:
-#line 1669 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
@@ -2834,7 +2834,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 476:
-#line 1674 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1677 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
@@ -2843,7 +2843,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 477:
-#line 1679 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1682 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
@@ -2851,7 +2851,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 478:
-#line 1681 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1684 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2860,7 +2860,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 479:
-#line 1687 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1690 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
@@ -2868,7 +2868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 480:
-#line 1690 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1693 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2876,7 +2876,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 481:
-#line 1693 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1696 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2884,7 +2884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 482:
-#line 1696 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -2892,7 +2892,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 483:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1702 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -2901,7 +2901,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 484:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1708 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2909,7 +2909,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 485:
-#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1710 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
@@ -2919,7 +2919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 486:
-#line 1715 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2927,7 +2927,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 487:
-#line 1717 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1720 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2936,7 +2936,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 488:
-#line 1722 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -2944,7 +2944,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 489:
-#line 1724 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1727 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2953,7 +2953,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 490:
-#line 1734 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1737 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
@@ -2964,7 +2964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 491:
-#line 1739 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1742 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2973,7 +2973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 495:
-#line 1756 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1759 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -2984,7 +2984,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 496:
-#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1764 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2993,7 +2993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 499:
-#line 1773 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1776 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -3003,7 +3003,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 500:
-#line 1777 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1780 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
@@ -3011,7 +3011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 508:
-#line 1792 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1795 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
@@ -3020,7 +3020,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 509:
-#line 1797 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1800 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3028,7 +3028,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 510:
-#line 1799 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1802 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -3038,7 +3038,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 511:
-#line 1805 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1808 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -3049,7 +3049,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 512:
-#line 1810 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3058,7 +3058,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 515:
-#line 1819 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1822 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3068,23 +3068,23 @@ namespace isc { namespace dhcp {
     break;
 
   case 516:
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1826 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 3076 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 519:
-#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
+  case 523:
+#line 1840 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3084 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1833 "dhcp6_parser.yy" // lalr1.cc:859
+  case 524:
+#line 1842 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -3093,8 +3093,35 @@ namespace isc { namespace dhcp {
 #line 3094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
+  case 525:
+#line 1848 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("flush", flush);
+}
+#line 3103 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 526:
+#line 1853 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxsize", maxsize);
+}
+#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 527:
+#line 1858 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("maxver", maxver);
+}
+#line 3121 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
 
-#line 3098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3125 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3356,93 +3383,94 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     183,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,    31,    20,    40,    63,    76,    95,   111,
-     142,   143,   150,   158,   185,   214,  -490,  -490,  -490,  -490,
+     180,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,    47,    20,    63,    80,    95,   102,   113,
+     153,   174,   188,   189,   216,   220,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-      20,    91,    18,    27,   231,    19,    -1,    45,    83,    28,
-     132,   -33,    96,  -490,   256,   262,   263,   260,   266,  -490,
-    -490,  -490,  -490,   270,  -490,    29,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,   272,   273,   275,   276,   277,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,   282,
-    -490,  -490,  -490,   101,  -490,  -490,  -490,  -490,  -490,  -490,
+      20,   -32,    18,    27,   175,    19,    -1,    45,    81,    28,
+     117,   -33,    99,  -490,   223,   234,   241,   249,   263,  -490,
+    -490,  -490,  -490,   264,  -490,    29,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,   265,   268,   270,   272,   273,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,   287,
+    -490,  -490,  -490,    97,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,   279,  -490,  -490,
-    -490,  -490,  -490,  -490,   284,   287,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,   102,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,   285,  -490,  -490,
+    -490,  -490,  -490,  -490,   293,   294,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,   104,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,   116,  -490,  -490,  -490,  -490,   289,  -490,
-     293,   294,  -490,  -490,  -490,   140,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,   116,  -490,  -490,  -490,  -490,   295,  -490,
+     296,   298,  -490,  -490,  -490,   136,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,   291,   297,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,   298,  -490,  -490,  -490,   299,  -490,  -490,
-     296,   304,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,   319,  -490,  -490,  -490,  -490,   317,   323,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,   172,
-    -490,  -490,  -490,   324,  -490,  -490,   325,  -490,   326,   327,
-    -490,  -490,   328,   329,   330,  -490,  -490,  -490,   174,  -490,
+    -490,   299,   300,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,   319,  -490,  -490,  -490,   321,  -490,  -490,
+     318,   301,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,   323,  -490,  -490,  -490,  -490,   320,   326,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,   165,
+    -490,  -490,  -490,   327,  -490,  -490,   328,  -490,   329,   330,
+    -490,  -490,   331,   332,   333,  -490,  -490,  -490,   166,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,    20,    20,  -490,   126,   331,
-     332,   333,   334,  -490,    18,  -490,   335,   336,   337,   186,
-     201,   202,   203,   204,   342,   343,   344,   345,   346,   347,
-     348,   349,   350,   351,   215,   353,   354,    27,  -490,   355,
-    -490,    43,   356,   357,   358,   359,   360,   224,   223,   363,
-     364,   365,   366,    19,  -490,   367,   368,    -1,  -490,   369,
-     233,   371,   235,   239,    45,  -490,   373,   374,   375,   377,
-     378,   379,   380,  -490,    83,   381,   382,   249,   383,   384,
-     385,   251,  -490,    28,   387,   252,  -490,   132,   388,   389,
-     -23,  -490,   253,   393,   394,   259,   395,   264,   265,   397,
-     400,   267,   268,   269,   403,   404,    96,  -490,  -490,  -490,
-     405,   406,   407,    20,    20,  -490,   408,   409,   410,  -490,
-    -490,  -490,  -490,  -490,   413,   414,   415,   416,   417,   418,
-     419,   420,   421,   422,  -490,   425,   426,  -490,   431,  -490,
-    -490,  -490,  -490,   429,   423,  -490,  -490,  -490,   433,   434,
-     300,   302,   305,  -490,  -490,   306,   307,   439,   442,  -490,
-     310,   444,  -490,   313,  -490,   314,  -490,  -490,  -490,   431,
-     431,   431,   315,   316,   318,   320,  -490,   321,   339,  -490,
-     340,   341,   352,  -490,  -490,   361,  -490,  -490,   362,    20,
-    -490,  -490,   370,   372,  -490,   376,  -490,  -490,    -2,   312,
-    -490,  -490,  -490,    70,   386,  -490,    20,    27,   338,  -490,
-    -490,   231,   108,   108,   450,   456,   457,   -40,    20,   120,
-      35,   458,   134,    24,    30,    96,  -490,  -490,   462,  -490,
-      43,   460,   461,  -490,  -490,  -490,  -490,  -490,   463,   396,
+    -490,  -490,  -490,  -490,  -490,    20,    20,  -490,   187,   334,
+     335,   336,   337,  -490,    18,  -490,   338,   339,   340,   201,
+     202,   203,   204,   205,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   217,   356,   358,    27,  -490,   359,
+    -490,    43,   360,   361,   362,   363,   364,   225,   224,   367,
+     368,   369,   370,    19,  -490,   371,   372,    -1,  -490,   373,
+     235,   374,   239,   242,    45,  -490,   376,   377,   378,   380,
+     381,   383,   384,  -490,    81,   385,   386,   247,   388,   389,
+     390,   250,  -490,    28,   391,   251,  -490,   117,   394,   395,
+     -23,  -490,   254,   397,   400,   262,   401,   266,   267,   403,
+     404,   269,   271,   274,   405,   408,    99,  -490,  -490,  -490,
+     409,   407,   411,    20,    20,  -490,   412,   414,   415,  -490,
+    -490,  -490,  -490,  -490,   418,   419,   420,   421,   422,   423,
+     424,   427,   426,   429,  -490,   430,   431,  -490,   434,  -490,
+    -490,  -490,  -490,   432,   413,  -490,  -490,  -490,   437,   439,
+     302,   303,   304,  -490,  -490,   306,   307,   446,   447,  -490,
+     310,   448,  -490,   313,  -490,   314,  -490,  -490,  -490,   434,
+     434,   434,   315,   316,   317,   322,  -490,   324,   325,  -490,
+     341,   342,   343,  -490,  -490,   344,  -490,  -490,   345,    20,
+    -490,  -490,   357,   365,  -490,   366,  -490,  -490,   -30,   375,
+    -490,  -490,  -490,    66,   379,  -490,    20,    27,   382,  -490,
+    -490,   175,   108,   108,   454,   456,   457,   -39,    20,    70,
+      35,   459,   109,    24,    30,    99,  -490,  -490,   465,  -490,
+      43,   463,   464,  -490,  -490,  -490,  -490,  -490,   466,   399,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,   217,  -490,   219,  -490,  -490,
-     464,  -490,  -490,  -490,  -490,   465,   469,   470,   471,   472,
-    -490,  -490,  -490,   221,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,   227,  -490,   476,
-     474,  -490,  -490,   477,   481,  -490,  -490,   479,   483,  -490,
-    -490,  -490,    81,  -490,  -490,  -490,   482,  -490,  -490,  -490,
-     163,  -490,  -490,  -490,  -490,   178,  -490,   484,   486,  -490,
-     487,   489,   490,   492,   493,   494,   230,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,   495,   496,   499,  -490,
-    -490,   234,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-     236,  -490,  -490,  -490,   237,   390,   391,  -490,  -490,   498,
-     502,  -490,  -490,   500,   504,  -490,  -490,   503,   505,  -490,
-    -490,   506,  -490,   507,   338,  -490,  -490,   509,   511,   513,
-     514,   392,   398,   399,   401,   402,   515,   516,   108,  -490,
-    -490,    19,  -490,   450,    28,  -490,   456,   132,  -490,   457,
-     -40,  -490,  -490,   120,  -490,    35,  -490,   -33,  -490,   458,
-     411,   412,   424,   427,   428,   430,   134,  -490,   517,   518,
-     432,   435,   436,    24,  -490,   519,   520,    30,  -490,  -490,
-    -490,   521,   522,  -490,    -1,  -490,   460,    45,  -490,   461,
-      83,  -490,   463,   524,  -490,   527,  -490,   193,   438,   440,
-     441,  -490,  -490,  -490,  -490,  -490,   443,   445,  -490,   238,
-    -490,   526,  -490,   528,  -490,  -490,  -490,  -490,   244,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,   -54,   446,  -490,
-    -490,  -490,  -490,   447,   448,  -490,  -490,   449,   246,  -490,
-     247,  -490,   529,  -490,   451,   480,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,   169,  -490,   172,  -490,  -490,
+     467,  -490,  -490,  -490,  -490,   468,   472,   473,   475,   476,
+    -490,  -490,  -490,   210,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,   211,  -490,   477,
+     478,  -490,  -490,   483,   479,  -490,  -490,   485,   489,  -490,
+    -490,  -490,   244,  -490,  -490,  -490,   487,  -490,  -490,  -490,
+     246,  -490,  -490,  -490,  -490,   255,  -490,   488,   493,  -490,
+     494,   495,   497,   498,   500,   501,   212,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,   502,   503,   506,  -490,
+    -490,   213,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+     214,  -490,  -490,  -490,   222,   387,   392,  -490,  -490,   491,
+     508,  -490,  -490,   507,   509,  -490,  -490,   510,   511,  -490,
+    -490,   512,  -490,   513,   382,  -490,  -490,   514,   515,   517,
+     519,   393,   396,   402,   398,   406,   520,   521,   108,  -490,
+    -490,    19,  -490,   454,    28,  -490,   456,   117,  -490,   457,
+     -39,  -490,  -490,    70,  -490,    35,  -490,   -33,  -490,   459,
+     410,   416,   417,   425,   428,   433,   109,  -490,   522,   523,
+     435,   436,   438,    24,  -490,   524,   525,    30,  -490,  -490,
+    -490,   526,   528,  -490,    -1,  -490,   463,    45,  -490,   464,
+      81,  -490,   466,   529,  -490,   531,  -490,   237,   440,   441,
+     442,  -490,  -490,  -490,  -490,  -490,   443,   444,  -490,   228,
+    -490,   530,  -490,   532,  -490,  -490,  -490,  -490,   230,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,   192,   445,  -490,
+    -490,  -490,  -490,   449,   450,  -490,  -490,   451,   232,  -490,
+     236,  -490,   533,  -490,   452,   527,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,   254,  -490,    54,   480,  -490,  -490,   525,
-    -490,  -490,  -490,   248,  -490,  -490,  -490,  -490,  -490,   531,
-     452,   534,    54,  -490,   537,  -490,   454,  -490,   532,  -490,
-    -490,   258,  -490,   437,   532,  -490,  -490,   250,  -490,  -490,
-     541,   437,  -490,   455,  -490,  -490
+    -490,  -490,  -490,   259,  -490,    54,   527,  -490,  -490,   535,
+    -490,  -490,  -490,   238,  -490,  -490,  -490,  -490,  -490,   539,
+     453,   541,    54,  -490,   542,  -490,   455,  -490,   544,  -490,
+    -490,   261,  -490,   -93,   544,  -490,  -490,   545,   548,   549,
+     240,  -490,  -490,  -490,  -490,  -490,  -490,   551,   458,   461,
+     462,   -93,  -490,   460,  -490,  -490,  -490,  -490,  -490
   };
 
   const unsigned short int
@@ -3533,46 +3561,47 @@ namespace isc { namespace dhcp {
      354,   387,   499,     0,   497,     0,     0,   496,   511,     0,
      509,   507,   503,     0,   501,   505,   506,   504,   498,     0,
        0,     0,     0,   500,     0,   508,     0,   502,     0,   510,
-     515,     0,   513,     0,     0,   512,   519,     0,   517,   514,
-       0,     0,   516,     0,   518,   520
+     515,     0,   513,     0,     0,   512,   523,     0,     0,     0,
+       0,   517,   519,   520,   521,   522,   514,     0,     0,     0,
+       0,     0,   516,     0,   525,   526,   527,   518,   524
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,     9,  -490,   105,  -490,  -490,  -490,
-    -490,  -490,  -490,    49,  -490,  -309,  -490,  -490,  -490,   -62,
-    -490,  -490,  -490,   255,  -490,  -490,  -490,  -490,    61,   240,
-     -63,   -50,   -49,   -43,  -490,  -490,  -490,  -490,  -490,    59,
-    -490,  -490,  -490,  -490,  -490,    58,  -134,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,     9,  -490,    74,  -490,  -490,  -490,
+    -490,  -490,  -490,    50,  -490,  -163,  -490,  -490,  -490,   -62,
+    -490,  -490,  -490,   276,  -490,  -490,  -490,  -490,    69,   245,
+     -63,   -50,   -49,   -43,  -490,  -490,  -490,  -490,  -490,    67,
+    -490,  -490,  -490,  -490,  -490,    64,  -129,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,   -58,  -490,  -489,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -145,  -475,  -490,  -490,  -490,  -490,  -147,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,  -151,  -490,  -490,  -490,  -148,
-     191,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -154,  -490,
-    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -130,
-    -490,  -490,  -490,  -127,   241,  -490,  -490,  -490,  -490,  -490,
+    -137,  -475,  -490,  -490,  -490,  -490,  -139,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,  -144,  -490,  -490,  -490,  -141,
+     197,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -148,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -122,
+    -490,  -490,  -490,  -118,   243,  -490,  -490,  -490,  -490,  -490,
     -490,  -479,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -129,  -490,  -490,  -490,  -128,  -490,   207,  -490,   -59,
+    -490,  -121,  -490,  -490,  -490,  -120,  -490,   215,  -490,   -59,
     -490,  -490,  -490,  -490,  -490,   -57,  -490,  -490,  -490,  -490,
-    -490,   -48,  -490,  -490,  -490,  -124,  -490,  -490,  -490,  -125,
-    -490,   212,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -152,  -490,  -490,  -490,  -144,   245,  -490,  -490,
-     -66,  -490,  -490,  -490,  -490,  -490,  -143,  -490,  -490,  -490,
-    -140,   257,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -150,  -490,  -490,  -490,  -142,  -490,   261,
+    -490,   -48,  -490,  -490,  -490,  -110,  -490,  -490,  -490,  -116,
+    -490,   229,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -146,  -490,  -490,  -490,  -143,   275,  -490,  -490,
+     -66,  -490,  -490,  -490,  -490,  -490,  -140,  -490,  -490,  -490,
+    -136,   256,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -135,  -490,  -490,  -490,  -138,  -490,   257,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,    89,  -490,  -490,  -490,  -490,  -490,
-    -490,  -123,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -122,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,    97,   218,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,    98,  -490,  -490,  -490,  -490,  -490,
+    -490,  -114,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -117,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,   110,   227,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
     -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
-    -490,  -490,  -490,  -490,  -490,   -71,  -490,  -490,  -490,  -220,
-    -490,  -490,  -235,  -490,  -490,  -490,  -490,  -490,  -490,  -246,
-    -490,  -490,  -252,  -490
+    -490,  -490,  -490,  -490,  -490,   -60,  -490,  -490,  -490,  -210,
+    -490,  -490,  -225,  -490,  -490,  -490,  -490,  -490,  -490,  -236,
+    -490,  -490,  -252,  -490,  -490,  -490,  -490,  -490
   };
 
   const short int
@@ -3610,7 +3639,7 @@ namespace isc { namespace dhcp {
      279,   280,   281,   282,   384,   552,   283,   385,    88,   291,
       89,   292,    90,   290,   557,   558,   559,   673,   823,   824,
      825,   833,   834,   835,   836,   841,   837,   839,   851,   852,
-     853,   857,   858,   860
+     853,   860,   861,   862,   867,   863,   864,   865
   };
 
   const unsigned short int
@@ -3619,65 +3648,65 @@ namespace isc { namespace dhcp {
       84,   184,   151,   150,   171,   182,   199,   218,   234,   248,
      267,   236,   235,   237,   640,   152,   153,   164,   172,   183,
      200,   614,   154,    34,   609,    27,   138,    28,    79,    29,
-     600,    26,   294,   810,   811,   812,   101,   295,    91,   634,
-      92,    93,   138,   211,   246,   247,   169,    38,   566,    94,
+     856,   600,   294,   857,   858,   859,   101,   295,    91,   634,
+      92,    93,   138,   211,   246,   247,   169,    26,   566,    94,
       95,    96,    97,   170,   246,   247,   101,    94,    95,    96,
       97,    98,    99,   100,   101,   139,   212,   140,   213,   214,
-      40,   215,   216,   217,   141,   142,   143,   144,   145,   146,
-     101,   212,   101,    42,   700,   147,   148,   701,   102,   103,
+      38,   215,   216,   217,   141,   142,   143,   144,   145,   146,
+     101,   212,   101,   543,   544,   147,   148,    40,   102,   103,
      104,   105,   212,   149,   177,   178,   179,   180,   181,   170,
-     601,   147,    44,   106,   317,   333,   107,    83,   419,   318,
-     334,   543,   544,   108,   635,   636,   637,   638,    46,   337,
-     101,   109,   110,   561,   338,   111,   648,   649,   562,   563,
-     564,   565,   566,   567,   568,   569,   570,   571,    80,    83,
-     525,   526,   527,   344,    81,    82,   212,   192,   345,    48,
-      50,   193,   194,   195,   196,   197,   198,    52,    83,    83,
-      30,    31,    32,    33,    83,    54,   703,    83,    83,   704,
-     212,   232,   213,   214,   233,   370,   828,   386,   829,   830,
-     371,   705,   387,    83,   706,    83,   547,   548,   549,   550,
-     600,   607,    56,   608,    83,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   796,
-     797,   798,   799,   551,   620,   621,   622,   623,   624,   625,
-     317,    58,   674,    83,   688,   672,   767,   675,   609,   689,
-     688,    76,    84,   716,   640,   690,    83,   723,   717,   727,
-     386,   333,   724,   136,   728,   729,   806,   370,    83,   337,
-     344,   842,   809,   861,   818,   819,   843,   826,   862,   420,
-     827,   854,   284,   421,   855,   285,   390,   286,   287,   288,
-     151,   150,    83,   422,   293,   171,   299,   300,   184,   301,
-     302,   303,   182,   152,   153,   164,   314,   320,   327,   172,
-     154,   328,   199,   340,   388,   389,   183,   342,   343,   353,
-     354,   218,   357,   361,   362,   234,   200,   363,   236,   235,
+     317,   147,    42,   106,   601,   318,   107,   333,   419,    44,
+      83,    76,   334,   108,   635,   636,   637,   638,   101,   337,
+      46,   109,   110,   561,   338,   111,   648,   649,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,    80,   344,
+     600,   607,    83,   608,   345,   192,   212,    81,    82,   193,
+     194,   195,   196,   197,   198,   212,   232,   213,   214,   233,
+      48,    83,    83,    30,    31,    32,    33,    83,   370,   386,
+      83,    83,   317,   371,   387,   674,   828,   672,   829,   830,
+     675,    50,   547,   548,   549,   550,    83,   136,    83,   620,
+     621,   622,   623,   624,   625,    52,    54,    83,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   551,   688,   688,   716,   723,   727,   689,   690,
+     717,   724,   728,    56,    83,   386,   767,    58,   609,   284,
+     729,   333,    84,   370,   640,   337,   806,   285,   809,   344,
+     818,   842,    83,   871,   819,   286,   843,   700,   872,   703,
+     701,    83,   704,   796,   797,   798,   799,   287,   705,   420,
+      83,   706,   826,   421,   854,   827,   288,   855,   293,   299,
+     151,   150,   300,   422,   301,   171,   302,   303,   184,   810,
+     811,   812,   182,   152,   153,   164,   525,   526,   527,   172,
+     154,   314,   199,   320,   388,   389,   183,   327,   328,   340,
+     342,   218,   343,   354,   363,   234,   200,   353,   236,   235,
      237,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,   365,   267,   366,   367,   399,   372,   375,
-     377,   378,   381,   382,   383,   391,   392,   393,   394,   396,
-     397,   398,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,   416,   418,
-     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
-     438,   440,   441,   443,   444,   445,   446,   449,   450,   451,
-     447,   452,   453,   454,   455,   457,   458,   460,   461,   462,
-     459,   465,   468,   469,   463,   466,   471,   472,   473,   475,
-     474,   478,   489,   490,   479,   476,   477,   483,   484,   486,
-     480,   481,   482,   487,   488,   491,   492,   493,   494,   495,
-     496,   497,   498,   499,   500,   501,   510,   546,   502,   503,
-     572,   572,   504,   505,   580,   580,   506,   509,   511,   512,
-     513,   639,   514,   267,   518,   515,   516,   517,   420,   519,
-     520,    28,   421,   523,   524,   528,   529,   588,   530,   556,
-     531,   532,   422,   592,   596,   616,   656,   658,   662,   681,
-     666,   670,   676,   682,   683,   684,   685,   693,   539,   533,
-     534,   535,   692,   695,   696,   698,   699,   822,   702,   709,
-     708,   710,   536,   711,   712,   554,   713,   714,   715,   720,
-     721,   537,   538,   722,   735,   736,   738,   739,   742,   741,
-     540,   745,   541,   747,   744,   748,   542,   749,   750,   756,
-     757,   777,   778,   783,   784,   787,   553,   786,   794,   840,
-     730,   733,   795,   751,   807,   844,   808,   820,   846,   850,
-     753,   752,   848,   755,   754,   863,   521,   606,   555,   395,
-     560,   587,   770,   771,   758,   765,   766,   417,   769,   768,
-     856,   470,   776,   760,   759,   772,   761,   762,   773,   774,
-     464,   775,   763,   779,   439,   764,   780,   781,   801,   467,
-     802,   803,   442,   804,   789,   805,   814,   815,   816,   817,
-     788,   821,   793,   845,   849,   865,   791,   790,   792,   657,
-     782,   448,   654,   746,   485,   785,   838,   847,   859,   864,
-       0,     0,     0,     0,     0,   456,     0,     0,     0,     0,
+      10,    11,    12,   357,   267,   361,   362,   365,   366,   367,
+     390,   372,   375,   377,   378,   381,   382,   383,   391,   392,
+     393,   394,   396,   397,   398,   399,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
+     415,   414,   416,   418,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   440,   441,   443,   445,   444,
+     449,   450,   451,   446,   452,   453,   447,   454,   455,   457,
+     458,   459,   460,   461,   462,   465,   463,   466,   468,   469,
+     471,   472,   489,   490,   473,   475,   474,   478,   479,   483,
+     476,   477,   484,   486,   487,   480,   510,   481,   488,   491,
+     482,   492,   493,   494,   495,   496,   497,   498,   499,   500,
+     572,   572,   501,   502,   580,   580,   503,   504,   505,   506,
+     509,   639,   511,   267,   512,   513,   514,   515,   420,   516,
+     517,   518,   421,   520,   519,    28,   523,   524,   528,   529,
+     530,   588,   422,   592,   596,   531,   616,   532,   533,   656,
+     658,   662,   681,   666,   670,   676,   682,   683,   539,   684,
+     685,   693,   696,   692,   534,   535,   536,   537,   538,   695,
+     546,   698,   699,   702,   708,   554,   709,   735,   710,   711,
+     540,   712,   713,   556,   714,   715,   720,   721,   541,   542,
+     722,   736,   739,   738,   742,   521,   741,   745,   747,   748,
+     744,   749,   553,   750,   756,   757,   777,   778,   783,   784,
+     730,   787,   786,   794,   822,   733,   795,   751,   807,   840,
+     808,   820,   752,   844,   754,   846,   753,   848,   606,   868,
+     755,   850,   869,   870,   770,   873,   555,   587,   560,   758,
+     771,   772,   417,   765,   766,   769,   768,   470,   776,   773,
+     395,   760,   774,   759,   761,   762,   439,   775,   464,   779,
+     780,   763,   781,   801,   802,   803,   804,   805,   814,   764,
+     789,   788,   815,   816,   817,   821,   467,   845,   849,   791,
+     448,   790,   792,   878,   874,   875,   876,   793,   657,   782,
+     785,   456,   442,   485,   746,   654,   838,   847,   866,   877,
        0,     0,     0,     0,     0,     0,   572,     0,   151,   150,
      580,     0,   218,     0,     0,   234,     0,     0,   236,   235,
      237,   152,   153,   164,     0,   248,     0,     0,   154,     0,
@@ -3703,65 +3732,65 @@ namespace isc { namespace dhcp {
       62,    67,    65,    65,    66,    67,    68,    69,    70,    71,
       72,    70,    70,    70,   503,    65,    65,    65,    66,    67,
       68,   500,    65,    14,   499,     5,     7,     7,    10,     9,
-      70,     0,     3,    87,    88,    89,    37,     8,    11,    15,
-      13,    14,     7,    15,    77,    78,    47,     7,    24,    30,
+     123,    70,     3,   126,   127,   128,    37,     8,    11,    15,
+      13,    14,     7,    15,    77,    78,    47,     0,    24,    30,
       31,    32,    33,    54,    77,    78,    37,    30,    31,    32,
       33,    34,    35,    36,    37,    46,    38,    48,    40,    41,
        7,    43,    44,    45,    55,    56,    57,    58,    59,    60,
-      37,    38,    37,     7,     3,    66,    67,     6,    61,    62,
+      37,    38,    37,   113,   114,    66,    67,     7,    61,    62,
       63,    64,    38,    74,    49,    50,    51,    52,    53,    54,
-     140,    66,     7,    76,     3,     3,    79,   140,    65,     8,
-       8,   113,   114,    86,    90,    91,    92,    93,     7,     3,
-      37,    94,    95,    15,     8,    98,    96,    97,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,   120,   140,
-     449,   450,   451,     3,   126,   127,    38,    64,     8,     7,
-       7,    68,    69,    70,    71,    72,    73,     7,   140,   140,
-     140,   141,   142,   143,   140,     7,     3,   140,   140,     6,
-      38,    39,    40,    41,    42,     3,   122,     3,   124,   125,
-       8,     3,     8,   140,     6,   140,   116,   117,   118,   119,
-      70,    71,     7,    73,   140,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,    16,
-      17,    18,    19,   143,    80,    81,    82,    83,    84,    85,
-       3,     7,     3,   140,     3,     8,   705,     8,   703,     8,
-       3,   140,   294,     3,   723,     8,   140,     3,     8,     3,
-       3,     3,     8,    12,     8,     8,     8,     3,   140,     3,
-       3,     3,     8,     3,     8,     8,     8,     3,     8,   321,
-       6,     3,     6,   321,     6,     3,   140,     4,     8,     3,
-     333,   333,   140,   321,     4,   337,     4,     4,   344,     4,
-       4,     4,   344,   333,   333,   333,     4,     8,     4,   337,
-     333,     4,   354,     4,   285,   286,   344,     4,     4,     8,
-       3,   363,     4,     4,     8,   367,   354,     3,   367,   367,
-     367,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,     4,   386,     8,     3,   141,     4,     4,
+       3,    66,     7,    76,   143,     8,    79,     3,    65,     7,
+     143,   143,     8,    86,    90,    91,    92,    93,    37,     3,
+       7,    94,    95,    15,     8,    98,    96,    97,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,   120,     3,
+      70,    71,   143,    73,     8,    64,    38,   129,   130,    68,
+      69,    70,    71,    72,    73,    38,    39,    40,    41,    42,
+       7,   143,   143,   143,   144,   145,   146,   143,     3,     3,
+     143,   143,     3,     8,     8,     3,   122,     8,   124,   125,
+       8,     7,   116,   117,   118,   119,   143,    12,   143,    80,
+      81,    82,    83,    84,    85,     7,     7,   143,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   146,     3,     3,     3,     3,     3,     8,     8,
+       8,     8,     8,     7,   143,     3,   705,     7,   703,     6,
+       8,     3,   294,     3,   723,     3,     8,     3,     8,     3,
+       8,     3,   143,     3,     8,     4,     8,     3,     8,     3,
+       6,   143,     6,    16,    17,    18,    19,     8,     3,   321,
+     143,     6,     3,   321,     3,     6,     3,     6,     4,     4,
+     333,   333,     4,   321,     4,   337,     4,     4,   344,    87,
+      88,    89,   344,   333,   333,   333,   449,   450,   451,   337,
+     333,     4,   354,     8,   285,   286,   344,     4,     4,     4,
+       4,   363,     4,     3,     3,   367,   354,     8,   367,   367,
+     367,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,     4,   386,     4,     8,     4,     8,     3,
+     143,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   144,   144,   144,   144,   144,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   141,   141,   141,   141,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   141,     4,     4,     4,
-       4,     4,     4,     4,     4,   141,   143,     4,     4,     4,
-       4,     4,     4,     4,   141,     4,   141,     4,     4,     4,
-     141,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     141,     4,     4,     4,   143,   143,   143,     4,     4,     4,
-     141,     4,   393,   394,     4,   141,   141,     4,     4,     4,
-     143,   143,   143,     7,     7,     7,     7,     7,     5,     5,
-       5,     5,     5,     5,     5,     5,     3,   115,     7,     7,
-     492,   493,     7,     7,   492,   493,     5,     8,     5,     5,
-     140,   503,   140,   505,     5,   140,   140,   140,   510,     7,
-     140,     7,   510,   140,   140,   140,   140,     7,   140,   121,
-     140,   140,   510,     7,     7,     7,     4,     7,     7,     4,
-       7,    75,     8,     4,     4,     4,     4,     3,   469,   140,
-     140,   140,     6,     6,     3,     6,     3,     7,     6,     3,
-       6,     4,   140,     4,     4,   486,     4,     4,     4,     4,
-       4,   140,   140,     4,     6,     3,     6,     3,     3,     6,
-     140,     4,   140,     4,     8,     4,   140,     4,     4,     4,
-       4,     4,     4,     4,     4,     3,   140,     6,     4,     4,
-     140,   140,     5,   141,     8,     4,     8,     8,     4,     7,
-     141,   143,     5,   141,   143,     4,   441,   498,   487,   294,
-     491,   493,   141,   141,   688,   700,   703,   317,   709,   707,
-     123,   370,   716,   693,   691,   141,   694,   696,   141,   141,
-     363,   141,   697,   141,   333,   699,   141,   141,   140,   367,
-     140,   140,   337,   140,   736,   140,   140,   140,   140,   140,
-     734,   140,   742,   141,   140,   140,   739,   737,   740,   510,
-     723,   344,   505,   674,   386,   727,   826,   842,   854,   861,
-      -1,    -1,    -1,    -1,    -1,   354,    -1,    -1,    -1,    -1,
+       4,   144,     4,     4,     4,     4,     4,     4,     4,   144,
+     146,     4,     4,     4,     4,     4,     4,     4,     4,   144,
+       4,     4,     4,   144,     4,     4,   144,     4,     4,     4,
+       4,   144,     4,     4,     4,     4,   146,   146,     4,     4,
+     146,     4,   393,   394,     4,     4,   144,     4,     4,     4,
+     144,   144,     4,     4,     7,   146,     3,   146,     7,     7,
+     146,     7,     7,     5,     5,     5,     5,     5,     5,     5,
+     492,   493,     5,     7,   492,   493,     7,     7,     7,     5,
+       8,   503,     5,   505,     5,   143,   143,   143,   510,   143,
+     143,     5,   510,   143,     7,     7,   143,   143,   143,   143,
+     143,     7,   510,     7,     7,   143,     7,   143,   143,     4,
+       7,     7,     4,     7,    75,     8,     4,     4,   469,     4,
+       4,     3,     3,     6,   143,   143,   143,   143,   143,     6,
+     115,     6,     3,     6,     6,   486,     3,     6,     4,     4,
+     143,     4,     4,   121,     4,     4,     4,     4,   143,   143,
+       4,     3,     3,     6,     3,   441,     6,     4,     4,     4,
+       8,     4,   143,     4,     4,     4,     4,     4,     4,     4,
+     143,     3,     6,     4,     7,   143,     5,   144,     8,     4,
+       8,     8,   146,     4,   146,     4,   144,     5,   498,     4,
+     144,     7,     4,     4,   144,     4,   487,   493,   491,   688,
+     144,   144,   317,   700,   703,   709,   707,   370,   716,   144,
+     294,   693,   144,   691,   694,   696,   333,   144,   363,   144,
+     144,   697,   144,   143,   143,   143,   143,   143,   143,   699,
+     736,   734,   143,   143,   143,   143,   367,   144,   143,   739,
+     344,   737,   740,   143,   146,   144,   144,   742,   510,   723,
+     727,   354,   337,   386,   674,   505,   826,   842,   854,   871,
       -1,    -1,    -1,    -1,    -1,    -1,   688,    -1,   691,   691,
      688,    -1,   694,    -1,    -1,   697,    -1,    -1,   697,   697,
      697,   691,   691,   691,    -1,   707,    -1,    -1,   691,    -1,
@@ -3784,151 +3813,152 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,     0,     5,     7,     9,
-     140,   141,   142,   143,   158,   159,   160,   165,     7,   174,
-       7,   180,     7,   191,     7,   265,     7,   328,     7,   342,
-       7,   359,     7,   287,     7,   311,     7,   241,     7,   415,
-     166,   161,   175,   181,   192,   266,   329,   343,   360,   288,
-     312,   242,   416,   158,   167,   168,   140,   163,   164,    10,
-     120,   126,   127,   140,   173,   176,   177,   178,   442,   444,
-     446,    11,    13,    14,    30,    31,    32,    33,    34,    35,
+       0,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,     0,     5,     7,     9,
+     143,   144,   145,   146,   161,   162,   163,   168,     7,   177,
+       7,   183,     7,   194,     7,   268,     7,   331,     7,   345,
+       7,   362,     7,   290,     7,   314,     7,   244,     7,   418,
+     169,   164,   178,   184,   195,   269,   332,   346,   363,   291,
+     315,   245,   419,   161,   170,   171,   143,   166,   167,    10,
+     120,   129,   130,   143,   176,   179,   180,   181,   445,   447,
+     449,    11,    13,    14,    30,    31,    32,    33,    34,    35,
       36,    37,    61,    62,    63,    64,    76,    79,    86,    94,
-      95,    98,   173,   182,   183,   184,   185,   186,   187,   188,
-     189,   195,   197,   221,   227,   233,   235,   249,   259,   281,
-     305,   382,   392,   404,   405,   413,    12,   193,     7,    46,
+      95,    98,   176,   185,   186,   187,   188,   189,   190,   191,
+     192,   198,   200,   224,   230,   236,   238,   252,   262,   284,
+     308,   385,   395,   407,   408,   416,    12,   196,     7,    46,
       48,    55,    56,    57,    58,    59,    60,    66,    67,    74,
-     173,   184,   185,   186,   187,   267,   268,   269,   271,   273,
-     275,   277,   279,   280,   305,   322,   336,   353,   378,    47,
-      54,   173,   305,   330,   331,   332,   334,    49,    50,    51,
-      52,    53,   173,   305,   334,   344,   345,   346,   348,   349,
-     351,   352,    64,    68,    69,    70,    71,    72,    73,   173,
-     305,   361,   362,   363,   364,   366,   368,   370,   372,   374,
-     376,    15,    38,    40,    41,    43,    44,    45,   173,   211,
-     289,   290,   291,   292,   293,   294,   295,   297,   299,   301,
-     302,   304,    39,    42,   173,   211,   293,   299,   313,   314,
-     315,   316,   317,   319,   320,   321,    77,    78,   173,   243,
-     244,   245,   247,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   173,   417,   418,
-     419,   420,   422,   424,   425,   427,   428,   429,   432,   434,
-     435,   436,   437,   440,     6,     3,     4,     8,     3,   179,
-     447,   443,   445,     4,     3,     8,   190,   196,   198,     4,
-       4,     4,     4,     4,   260,   282,   306,   222,   234,   228,
-     383,   236,   250,   393,     4,   406,   414,     3,     8,   194,
-       8,   385,   323,   337,   270,   272,   274,     4,     4,   278,
-     276,   354,   379,     3,     8,   333,   335,     3,     8,   347,
-       4,   350,     4,     4,     3,     8,   377,   365,   367,   369,
-     371,   373,   375,     8,     3,   296,   212,     4,   300,   298,
-     303,     4,     8,     3,   318,     4,     8,     3,   246,   248,
-       3,     8,     4,   421,   423,     4,   426,     4,     4,   430,
-     433,     4,     4,     4,   438,   441,     3,     8,   158,   158,
-     140,     4,     4,     4,     4,   177,     4,     4,     4,   141,
-     141,   141,   141,   141,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   141,     4,     4,   183,     4,    65,
-     173,   211,   305,   386,   387,   388,   389,   390,     4,     4,
-       4,     4,     4,   141,   143,     4,     4,     4,     4,   268,
-       4,     4,   331,     4,   141,     4,   141,   141,   345,     4,
-       4,     4,     4,     4,     4,     4,   363,     4,     4,   141,
-       4,     4,     4,   143,   291,     4,   143,   315,     4,     4,
-     244,   143,     4,     4,   141,     4,   141,   141,     4,     4,
-     143,   143,   143,     4,     4,   418,     4,     7,     7,   158,
-     158,     7,     7,     7,     5,     5,     5,     5,     5,     5,
-       5,     5,     7,     7,     7,     7,     5,   169,   391,     8,
-       3,     5,     5,   140,   140,   140,   140,   140,     5,     7,
-     140,   160,   162,   140,   140,   169,   169,   169,   140,   140,
-     140,   140,   140,   140,   140,   140,   140,   140,   140,   158,
-     140,   140,   140,   113,   114,   431,   115,   116,   117,   118,
-     119,   143,   439,   140,   158,   182,   121,   448,   449,   450,
-     193,    15,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,   173,   199,   200,   201,   204,   206,   208,   210,
-     211,   213,   214,   215,   216,   217,   219,   199,     7,   261,
-     262,   263,     7,   283,   284,   285,     7,   307,   308,   309,
-      70,   140,   223,   224,   225,   226,   167,    71,    73,   225,
-     229,   230,   231,   232,   275,   384,     7,   237,   238,   239,
-      80,    81,    82,    83,    84,    85,   251,   252,   253,   254,
-     255,   256,   257,   258,    15,    90,    91,    92,    93,   173,
-     213,   394,   395,   396,   399,   400,   402,   403,    96,    97,
-     407,   408,   409,   411,   417,   170,     4,   388,     7,   324,
-     325,   326,     7,   338,   339,   340,     7,   355,   356,   357,
-      75,   380,     8,   451,     3,     8,     8,   202,   205,   207,
-     209,     4,     4,     4,     4,     4,   218,   220,     3,     8,
-       8,   264,     6,     3,   286,     6,     3,   310,     6,     3,
-       3,     6,     6,     3,     6,     3,     6,   240,     6,     3,
-       4,     4,     4,     4,     4,     4,     3,     8,   397,   401,
-       4,     4,     4,     3,     8,   410,   412,     3,     8,     8,
-     140,   171,   172,   140,   327,     6,     3,   341,     6,     3,
-     358,     6,     3,   381,     8,     4,   449,     4,     4,     4,
-       4,   141,   143,   141,   143,   141,     4,     4,   200,   267,
-     263,   289,   285,   313,   309,   224,   230,   275,   243,   239,
-     141,   141,   141,   141,   141,   141,   252,     4,     4,   141,
-     141,   141,   395,     4,     4,   408,     6,     3,   330,   326,
-     344,   340,   361,   357,     4,     5,    16,    17,    18,    19,
-     203,   140,   140,   140,   140,   140,     8,     8,     8,     8,
-      87,    88,    89,   398,   140,   140,   140,   140,     8,     8,
-       8,   140,     7,   452,   453,   454,     3,     6,   122,   124,
-     125,   173,   211,   455,   456,   457,   458,   460,   453,   461,
-       4,   459,     3,     8,     4,   141,     4,   456,     5,   140,
-       7,   462,   463,   464,     3,     6,   123,   465,   466,   463,
-     467,     3,     8,     4,   466,   140
+     176,   187,   188,   189,   190,   270,   271,   272,   274,   276,
+     278,   280,   282,   283,   308,   325,   339,   356,   381,    47,
+      54,   176,   308,   333,   334,   335,   337,    49,    50,    51,
+      52,    53,   176,   308,   337,   347,   348,   349,   351,   352,
+     354,   355,    64,    68,    69,    70,    71,    72,    73,   176,
+     308,   364,   365,   366,   367,   369,   371,   373,   375,   377,
+     379,    15,    38,    40,    41,    43,    44,    45,   176,   214,
+     292,   293,   294,   295,   296,   297,   298,   300,   302,   304,
+     305,   307,    39,    42,   176,   214,   296,   302,   316,   317,
+     318,   319,   320,   322,   323,   324,    77,    78,   176,   246,
+     247,   248,   250,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   176,   420,   421,
+     422,   423,   425,   427,   428,   430,   431,   432,   435,   437,
+     438,   439,   440,   443,     6,     3,     4,     8,     3,   182,
+     450,   446,   448,     4,     3,     8,   193,   199,   201,     4,
+       4,     4,     4,     4,   263,   285,   309,   225,   237,   231,
+     386,   239,   253,   396,     4,   409,   417,     3,     8,   197,
+       8,   388,   326,   340,   273,   275,   277,     4,     4,   281,
+     279,   357,   382,     3,     8,   336,   338,     3,     8,   350,
+       4,   353,     4,     4,     3,     8,   380,   368,   370,   372,
+     374,   376,   378,     8,     3,   299,   215,     4,   303,   301,
+     306,     4,     8,     3,   321,     4,     8,     3,   249,   251,
+       3,     8,     4,   424,   426,     4,   429,     4,     4,   433,
+     436,     4,     4,     4,   441,   444,     3,     8,   161,   161,
+     143,     4,     4,     4,     4,   180,     4,     4,     4,   144,
+     144,   144,   144,   144,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   144,     4,     4,   186,     4,    65,
+     176,   214,   308,   389,   390,   391,   392,   393,     4,     4,
+       4,     4,     4,   144,   146,     4,     4,     4,     4,   271,
+       4,     4,   334,     4,   144,     4,   144,   144,   348,     4,
+       4,     4,     4,     4,     4,     4,   366,     4,     4,   144,
+       4,     4,     4,   146,   294,     4,   146,   318,     4,     4,
+     247,   146,     4,     4,   144,     4,   144,   144,     4,     4,
+     146,   146,   146,     4,     4,   421,     4,     7,     7,   161,
+     161,     7,     7,     7,     5,     5,     5,     5,     5,     5,
+       5,     5,     7,     7,     7,     7,     5,   172,   394,     8,
+       3,     5,     5,   143,   143,   143,   143,   143,     5,     7,
+     143,   163,   165,   143,   143,   172,   172,   172,   143,   143,
+     143,   143,   143,   143,   143,   143,   143,   143,   143,   161,
+     143,   143,   143,   113,   114,   434,   115,   116,   117,   118,
+     119,   146,   442,   143,   161,   185,   121,   451,   452,   453,
+     196,    15,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,   176,   202,   203,   204,   207,   209,   211,   213,
+     214,   216,   217,   218,   219,   220,   222,   202,     7,   264,
+     265,   266,     7,   286,   287,   288,     7,   310,   311,   312,
+      70,   143,   226,   227,   228,   229,   170,    71,    73,   228,
+     232,   233,   234,   235,   278,   387,     7,   240,   241,   242,
+      80,    81,    82,    83,    84,    85,   254,   255,   256,   257,
+     258,   259,   260,   261,    15,    90,    91,    92,    93,   176,
+     216,   397,   398,   399,   402,   403,   405,   406,    96,    97,
+     410,   411,   412,   414,   420,   173,     4,   391,     7,   327,
+     328,   329,     7,   341,   342,   343,     7,   358,   359,   360,
+      75,   383,     8,   454,     3,     8,     8,   205,   208,   210,
+     212,     4,     4,     4,     4,     4,   221,   223,     3,     8,
+       8,   267,     6,     3,   289,     6,     3,   313,     6,     3,
+       3,     6,     6,     3,     6,     3,     6,   243,     6,     3,
+       4,     4,     4,     4,     4,     4,     3,     8,   400,   404,
+       4,     4,     4,     3,     8,   413,   415,     3,     8,     8,
+     143,   174,   175,   143,   330,     6,     3,   344,     6,     3,
+     361,     6,     3,   384,     8,     4,   452,     4,     4,     4,
+       4,   144,   146,   144,   146,   144,     4,     4,   203,   270,
+     266,   292,   288,   316,   312,   227,   233,   278,   246,   242,
+     144,   144,   144,   144,   144,   144,   255,     4,     4,   144,
+     144,   144,   398,     4,     4,   411,     6,     3,   333,   329,
+     347,   343,   364,   360,     4,     5,    16,    17,    18,    19,
+     206,   143,   143,   143,   143,   143,     8,     8,     8,     8,
+      87,    88,    89,   401,   143,   143,   143,   143,     8,     8,
+       8,   143,     7,   455,   456,   457,     3,     6,   122,   124,
+     125,   176,   214,   458,   459,   460,   461,   463,   456,   464,
+       4,   462,     3,     8,     4,   144,     4,   459,     5,   143,
+       7,   465,   466,   467,     3,     6,   123,   126,   127,   128,
+     468,   469,   470,   472,   473,   474,   466,   471,     4,     4,
+       4,     3,     8,     4,   146,   144,   144,   469,   143
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   144,   146,   145,   147,   145,   148,   145,   149,   145,
-     150,   145,   151,   145,   152,   145,   153,   145,   154,   145,
-     155,   145,   156,   145,   157,   145,   158,   158,   158,   158,
-     158,   158,   158,   159,   161,   160,   162,   163,   163,   164,
-     164,   166,   165,   167,   167,   168,   168,   170,   169,   171,
-     171,   172,   172,   173,   175,   174,   176,   176,   177,   177,
-     177,   177,   177,   179,   178,   181,   180,   182,   182,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   184,   185,   186,   187,   188,   190,   189,   192,   191,
-     194,   193,   196,   195,   198,   197,   199,   199,   200,   200,
-     200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
-     200,   202,   201,   203,   203,   203,   203,   205,   204,   207,
-     206,   209,   208,   210,   212,   211,   213,   214,   215,   216,
-     218,   217,   220,   219,   222,   221,   223,   223,   224,   224,
-     225,   226,   228,   227,   229,   229,   230,   230,   230,   231,
-     232,   234,   233,   236,   235,   237,   237,   238,   238,   240,
-     239,   242,   241,   243,   243,   243,   244,   244,   246,   245,
-     248,   247,   250,   249,   251,   251,   252,   252,   252,   252,
-     252,   252,   253,   254,   255,   256,   257,   258,   260,   259,
-     261,   261,   262,   262,   264,   263,   266,   265,   267,   267,
-     268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
-     268,   268,   268,   268,   268,   268,   268,   270,   269,   272,
-     271,   274,   273,   276,   275,   278,   277,   279,   280,   282,
-     281,   283,   283,   284,   284,   286,   285,   288,   287,   289,
-     289,   290,   290,   291,   291,   291,   291,   291,   291,   291,
-     291,   292,   293,   294,   296,   295,   298,   297,   300,   299,
-     301,   303,   302,   304,   306,   305,   307,   307,   308,   308,
-     310,   309,   312,   311,   313,   313,   314,   314,   315,   315,
-     315,   315,   315,   315,   316,   318,   317,   319,   320,   321,
-     323,   322,   324,   324,   325,   325,   327,   326,   329,   328,
-     330,   330,   331,   331,   331,   331,   333,   332,   335,   334,
-     337,   336,   338,   338,   339,   339,   341,   340,   343,   342,
-     344,   344,   345,   345,   345,   345,   345,   345,   345,   345,
-     347,   346,   348,   350,   349,   351,   352,   354,   353,   355,
-     355,   356,   356,   358,   357,   360,   359,   361,   361,   362,
-     362,   363,   363,   363,   363,   363,   363,   363,   363,   363,
-     365,   364,   367,   366,   369,   368,   371,   370,   373,   372,
-     375,   374,   377,   376,   379,   378,   381,   380,   383,   382,
-     384,   384,   385,   275,   386,   386,   387,   387,   388,   388,
-     388,   388,   389,   391,   390,   393,   392,   394,   394,   395,
-     395,   395,   395,   395,   395,   395,   397,   396,   398,   398,
-     398,   399,   401,   400,   402,   403,   404,   406,   405,   407,
-     407,   408,   408,   410,   409,   412,   411,   414,   413,   416,
-     415,   417,   417,   418,   418,   418,   418,   418,   418,   418,
-     418,   418,   418,   418,   418,   418,   418,   418,   419,   421,
-     420,   423,   422,   424,   426,   425,   427,   428,   430,   429,
-     431,   431,   433,   432,   434,   435,   436,   438,   437,   439,
-     439,   439,   439,   439,   441,   440,   443,   442,   445,   444,
-     447,   446,   448,   448,   449,   451,   450,   452,   452,   454,
-     453,   455,   455,   456,   456,   456,   456,   456,   457,   459,
-     458,   461,   460,   462,   462,   464,   463,   465,   465,   467,
-     466
+       0,   147,   149,   148,   150,   148,   151,   148,   152,   148,
+     153,   148,   154,   148,   155,   148,   156,   148,   157,   148,
+     158,   148,   159,   148,   160,   148,   161,   161,   161,   161,
+     161,   161,   161,   162,   164,   163,   165,   166,   166,   167,
+     167,   169,   168,   170,   170,   171,   171,   173,   172,   174,
+     174,   175,   175,   176,   178,   177,   179,   179,   180,   180,
+     180,   180,   180,   182,   181,   184,   183,   185,   185,   186,
+     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
+     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
+     186,   187,   188,   189,   190,   191,   193,   192,   195,   194,
+     197,   196,   199,   198,   201,   200,   202,   202,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   205,   204,   206,   206,   206,   206,   208,   207,   210,
+     209,   212,   211,   213,   215,   214,   216,   217,   218,   219,
+     221,   220,   223,   222,   225,   224,   226,   226,   227,   227,
+     228,   229,   231,   230,   232,   232,   233,   233,   233,   234,
+     235,   237,   236,   239,   238,   240,   240,   241,   241,   243,
+     242,   245,   244,   246,   246,   246,   247,   247,   249,   248,
+     251,   250,   253,   252,   254,   254,   255,   255,   255,   255,
+     255,   255,   256,   257,   258,   259,   260,   261,   263,   262,
+     264,   264,   265,   265,   267,   266,   269,   268,   270,   270,
+     271,   271,   271,   271,   271,   271,   271,   271,   271,   271,
+     271,   271,   271,   271,   271,   271,   271,   273,   272,   275,
+     274,   277,   276,   279,   278,   281,   280,   282,   283,   285,
+     284,   286,   286,   287,   287,   289,   288,   291,   290,   292,
+     292,   293,   293,   294,   294,   294,   294,   294,   294,   294,
+     294,   295,   296,   297,   299,   298,   301,   300,   303,   302,
+     304,   306,   305,   307,   309,   308,   310,   310,   311,   311,
+     313,   312,   315,   314,   316,   316,   317,   317,   318,   318,
+     318,   318,   318,   318,   319,   321,   320,   322,   323,   324,
+     326,   325,   327,   327,   328,   328,   330,   329,   332,   331,
+     333,   333,   334,   334,   334,   334,   336,   335,   338,   337,
+     340,   339,   341,   341,   342,   342,   344,   343,   346,   345,
+     347,   347,   348,   348,   348,   348,   348,   348,   348,   348,
+     350,   349,   351,   353,   352,   354,   355,   357,   356,   358,
+     358,   359,   359,   361,   360,   363,   362,   364,   364,   365,
+     365,   366,   366,   366,   366,   366,   366,   366,   366,   366,
+     368,   367,   370,   369,   372,   371,   374,   373,   376,   375,
+     378,   377,   380,   379,   382,   381,   384,   383,   386,   385,
+     387,   387,   388,   278,   389,   389,   390,   390,   391,   391,
+     391,   391,   392,   394,   393,   396,   395,   397,   397,   398,
+     398,   398,   398,   398,   398,   398,   400,   399,   401,   401,
+     401,   402,   404,   403,   405,   406,   407,   409,   408,   410,
+     410,   411,   411,   413,   412,   415,   414,   417,   416,   419,
+     418,   420,   420,   421,   421,   421,   421,   421,   421,   421,
+     421,   421,   421,   421,   421,   421,   421,   421,   422,   424,
+     423,   426,   425,   427,   429,   428,   430,   431,   433,   432,
+     434,   434,   436,   435,   437,   438,   439,   441,   440,   442,
+     442,   442,   442,   442,   444,   443,   446,   445,   448,   447,
+     450,   449,   451,   451,   452,   454,   453,   455,   455,   457,
+     456,   458,   458,   459,   459,   459,   459,   459,   460,   462,
+     461,   464,   463,   465,   465,   467,   466,   468,   468,   469,
+     469,   469,   469,   471,   470,   472,   473,   474
   };
 
   const unsigned char
@@ -3985,8 +4015,8 @@ namespace isc { namespace dhcp {
        1,     1,     1,     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,     3,     0,
-       4,     0,     6,     1,     3,     0,     4,     1,     3,     0,
-       4
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -4031,29 +4061,29 @@ namespace isc { namespace dhcp {
   "\"generated-prefix\"", "\"UDP\"", "\"TCP\"", "\"JSON\"",
   "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
   "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
-  "\"debuglevel\"", "\"severity\"", "\"Dhcp4\"", "\"DhcpDdns\"",
-  "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6",
-  "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION",
-  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
-  "SUB_DHCP_DDNS", "\"constant string\"", "\"integer\"",
-  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
-  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12",
-  "value", "sub_json", "map2", "$@13", "map_value", "map_content",
-  "not_empty_map", "list_generic", "$@14", "list_content",
-  "not_empty_list", "list_strings", "$@15", "list_strings_content",
-  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@16",
-  "global_objects", "global_object", "dhcp6_object", "$@17", "sub_dhcp6",
-  "$@18", "global_params", "global_param", "preferred_lifetime",
-  "valid_lifetime", "renew_timer", "rebind_timer",
-  "decline_probation_period", "interfaces_config", "$@19",
-  "sub_interfaces6", "$@20", "interface_config_map", "$@21",
-  "lease_database", "$@22", "hosts_database", "$@23",
-  "database_map_params", "database_map_param", "database_type", "$@24",
-  "db_type", "user", "$@25", "password", "$@26", "host", "$@27", "port",
-  "name", "$@28", "persist", "lfc_interval", "readonly", "connect_timeout",
-  "contact_points", "$@29", "keyspace", "$@30", "mac_sources", "$@31",
-  "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
-  "host_reservation_identifiers", "$@32",
+  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
+  "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"", "TOPLEVEL_JSON",
+  "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
+  "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEF",
+  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
+  "\"constant string\"", "\"integer\"", "\"floating point\"",
+  "\"boolean\"", "$accept", "start", "$@1", "$@2", "$@3", "$@4", "$@5",
+  "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "value", "sub_json",
+  "map2", "$@13", "map_value", "map_content", "not_empty_map",
+  "list_generic", "$@14", "list_content", "not_empty_list", "list_strings",
+  "$@15", "list_strings_content", "not_empty_list_strings",
+  "unknown_map_entry", "syntax_map", "$@16", "global_objects",
+  "global_object", "dhcp6_object", "$@17", "sub_dhcp6", "$@18",
+  "global_params", "global_param", "preferred_lifetime", "valid_lifetime",
+  "renew_timer", "rebind_timer", "decline_probation_period",
+  "interfaces_config", "$@19", "sub_interfaces6", "$@20",
+  "interface_config_map", "$@21", "lease_database", "$@22",
+  "hosts_database", "$@23", "database_map_params", "database_map_param",
+  "database_type", "$@24", "db_type", "user", "$@25", "password", "$@26",
+  "host", "$@27", "port", "name", "$@28", "persist", "lfc_interval",
+  "readonly", "connect_timeout", "contact_points", "$@29", "keyspace",
+  "$@30", "mac_sources", "$@31", "mac_sources_list", "mac_sources_value",
+  "duid_id", "string_id", "host_reservation_identifiers", "$@32",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "flex_id", "relay_supplied_options", "$@33",
   "hooks_libraries", "$@34", "hooks_libraries_list",
@@ -4112,67 +4142,68 @@ namespace isc { namespace dhcp {
   "logging_params", "logging_param", "loggers", "$@102", "loggers_entries",
   "logger_entry", "$@103", "logger_params", "logger_param", "debuglevel",
   "severity", "$@104", "output_options_list", "$@105",
-  "output_options_list_content", "output_entry", "$@106", "output_params",
-  "output_param", "$@107", YY_NULLPTR
+  "output_options_list_content", "output_entry", "$@106",
+  "output_params_list", "output_params", "output", "$@107", "flush",
+  "maxsize", "maxver", YY_NULLPTR
   };
 
 #if PARSER6_DEBUG
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   224,   224,   224,   225,   225,   226,   226,   227,   227,
-     228,   228,   229,   229,   230,   230,   231,   231,   232,   232,
-     233,   233,   234,   234,   235,   235,   243,   244,   245,   246,
-     247,   248,   249,   252,   257,   257,   268,   271,   272,   275,
-     279,   286,   286,   293,   294,   297,   301,   308,   308,   315,
-     316,   319,   323,   334,   344,   344,   356,   357,   361,   362,
-     363,   364,   365,   368,   368,   385,   385,   393,   394,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
-     420,   423,   428,   433,   438,   443,   448,   448,   458,   458,
-     466,   466,   476,   476,   486,   486,   496,   497,   500,   501,
-     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
-     512,   515,   515,   522,   523,   524,   525,   528,   528,   536,
-     536,   544,   544,   552,   557,   557,   565,   570,   575,   580,
-     585,   585,   593,   593,   602,   602,   612,   613,   616,   617,
-     620,   625,   630,   630,   640,   641,   644,   645,   646,   649,
-     654,   661,   661,   671,   671,   681,   682,   685,   686,   689,
-     689,   697,   697,   705,   706,   707,   710,   711,   714,   714,
-     722,   722,   730,   730,   740,   741,   744,   745,   746,   747,
-     748,   749,   752,   757,   762,   767,   772,   777,   785,   785,
-     798,   799,   802,   803,   810,   810,   833,   833,   842,   843,
-     847,   848,   849,   850,   851,   852,   853,   854,   855,   856,
-     857,   858,   859,   860,   861,   862,   863,   866,   866,   874,
-     874,   882,   882,   890,   890,   898,   898,   906,   911,   920,
-     920,   932,   933,   936,   937,   942,   942,   953,   953,   963,
-     964,   967,   968,   971,   972,   973,   974,   975,   976,   977,
-     978,   981,   983,   988,   990,   990,   998,   998,  1006,  1006,
-    1014,  1016,  1016,  1024,  1033,  1033,  1045,  1046,  1051,  1052,
-    1057,  1057,  1068,  1068,  1079,  1080,  1085,  1086,  1091,  1092,
-    1093,  1094,  1095,  1096,  1099,  1101,  1101,  1109,  1111,  1113,
-    1121,  1121,  1133,  1134,  1137,  1138,  1141,  1141,  1149,  1149,
-    1157,  1158,  1161,  1162,  1163,  1164,  1167,  1167,  1175,  1175,
-    1185,  1185,  1197,  1198,  1201,  1202,  1205,  1205,  1213,  1213,
-    1221,  1222,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,
-    1235,  1235,  1243,  1248,  1248,  1256,  1261,  1269,  1269,  1279,
-    1280,  1283,  1284,  1287,  1287,  1295,  1295,  1303,  1304,  1307,
-    1308,  1312,  1313,  1314,  1315,  1316,  1317,  1318,  1319,  1320,
-    1323,  1323,  1333,  1333,  1343,  1343,  1351,  1351,  1359,  1359,
-    1367,  1367,  1375,  1375,  1388,  1388,  1398,  1398,  1409,  1409,
-    1419,  1420,  1423,  1423,  1431,  1432,  1435,  1436,  1439,  1440,
-    1441,  1442,  1445,  1447,  1447,  1458,  1458,  1468,  1469,  1472,
-    1473,  1474,  1475,  1476,  1477,  1478,  1481,  1481,  1488,  1489,
-    1490,  1493,  1498,  1498,  1506,  1511,  1518,  1525,  1525,  1535,
-    1536,  1539,  1540,  1543,  1543,  1551,  1551,  1561,  1561,  1571,
-    1571,  1579,  1580,  1583,  1584,  1585,  1586,  1587,  1588,  1589,
-    1590,  1591,  1592,  1593,  1594,  1595,  1596,  1597,  1600,  1605,
-    1605,  1613,  1613,  1621,  1626,  1626,  1634,  1639,  1644,  1644,
-    1652,  1653,  1656,  1656,  1664,  1669,  1674,  1679,  1679,  1687,
-    1690,  1693,  1696,  1699,  1705,  1705,  1715,  1715,  1722,  1722,
-    1734,  1734,  1747,  1748,  1752,  1756,  1756,  1768,  1769,  1773,
-    1773,  1781,  1782,  1785,  1786,  1787,  1788,  1789,  1792,  1797,
-    1797,  1805,  1805,  1815,  1816,  1819,  1819,  1827,  1828,  1831,
-    1831
+       0,   227,   227,   227,   228,   228,   229,   229,   230,   230,
+     231,   231,   232,   232,   233,   233,   234,   234,   235,   235,
+     236,   236,   237,   237,   238,   238,   246,   247,   248,   249,
+     250,   251,   252,   255,   260,   260,   271,   274,   275,   278,
+     282,   289,   289,   296,   297,   300,   304,   311,   311,   318,
+     319,   322,   326,   337,   347,   347,   359,   360,   364,   365,
+     366,   367,   368,   371,   371,   388,   388,   396,   397,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
+     423,   426,   431,   436,   441,   446,   451,   451,   461,   461,
+     469,   469,   479,   479,   489,   489,   499,   500,   503,   504,
+     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
+     515,   518,   518,   525,   526,   527,   528,   531,   531,   539,
+     539,   547,   547,   555,   560,   560,   568,   573,   578,   583,
+     588,   588,   596,   596,   605,   605,   615,   616,   619,   620,
+     623,   628,   633,   633,   643,   644,   647,   648,   649,   652,
+     657,   664,   664,   674,   674,   684,   685,   688,   689,   692,
+     692,   700,   700,   708,   709,   710,   713,   714,   717,   717,
+     725,   725,   733,   733,   743,   744,   747,   748,   749,   750,
+     751,   752,   755,   760,   765,   770,   775,   780,   788,   788,
+     801,   802,   805,   806,   813,   813,   836,   836,   845,   846,
+     850,   851,   852,   853,   854,   855,   856,   857,   858,   859,
+     860,   861,   862,   863,   864,   865,   866,   869,   869,   877,
+     877,   885,   885,   893,   893,   901,   901,   909,   914,   923,
+     923,   935,   936,   939,   940,   945,   945,   956,   956,   966,
+     967,   970,   971,   974,   975,   976,   977,   978,   979,   980,
+     981,   984,   986,   991,   993,   993,  1001,  1001,  1009,  1009,
+    1017,  1019,  1019,  1027,  1036,  1036,  1048,  1049,  1054,  1055,
+    1060,  1060,  1071,  1071,  1082,  1083,  1088,  1089,  1094,  1095,
+    1096,  1097,  1098,  1099,  1102,  1104,  1104,  1112,  1114,  1116,
+    1124,  1124,  1136,  1137,  1140,  1141,  1144,  1144,  1152,  1152,
+    1160,  1161,  1164,  1165,  1166,  1167,  1170,  1170,  1178,  1178,
+    1188,  1188,  1200,  1201,  1204,  1205,  1208,  1208,  1216,  1216,
+    1224,  1225,  1228,  1229,  1230,  1231,  1232,  1233,  1234,  1235,
+    1238,  1238,  1246,  1251,  1251,  1259,  1264,  1272,  1272,  1282,
+    1283,  1286,  1287,  1290,  1290,  1298,  1298,  1306,  1307,  1310,
+    1311,  1315,  1316,  1317,  1318,  1319,  1320,  1321,  1322,  1323,
+    1326,  1326,  1336,  1336,  1346,  1346,  1354,  1354,  1362,  1362,
+    1370,  1370,  1378,  1378,  1391,  1391,  1401,  1401,  1412,  1412,
+    1422,  1423,  1426,  1426,  1434,  1435,  1438,  1439,  1442,  1443,
+    1444,  1445,  1448,  1450,  1450,  1461,  1461,  1471,  1472,  1475,
+    1476,  1477,  1478,  1479,  1480,  1481,  1484,  1484,  1491,  1492,
+    1493,  1496,  1501,  1501,  1509,  1514,  1521,  1528,  1528,  1538,
+    1539,  1542,  1543,  1546,  1546,  1554,  1554,  1564,  1564,  1574,
+    1574,  1582,  1583,  1586,  1587,  1588,  1589,  1590,  1591,  1592,
+    1593,  1594,  1595,  1596,  1597,  1598,  1599,  1600,  1603,  1608,
+    1608,  1616,  1616,  1624,  1629,  1629,  1637,  1642,  1647,  1647,
+    1655,  1656,  1659,  1659,  1667,  1672,  1677,  1682,  1682,  1690,
+    1693,  1696,  1699,  1702,  1708,  1708,  1718,  1718,  1725,  1725,
+    1737,  1737,  1750,  1751,  1755,  1759,  1759,  1771,  1772,  1776,
+    1776,  1784,  1785,  1788,  1789,  1790,  1791,  1792,  1795,  1800,
+    1800,  1808,  1808,  1818,  1819,  1822,  1822,  1830,  1831,  1834,
+    1835,  1836,  1837,  1840,  1840,  1848,  1853,  1858
   };
 
   // Print the state stack on the debug stream.
@@ -4207,8 +4238,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4211 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1839 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4242 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1863 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index c0f589eaa89a4380367a1662bc9146c686989b4c..b7088120b7f3d1b25fe002bbdc7cc98dae83c4a3 100644 (file)
@@ -469,24 +469,27 @@ namespace isc { namespace dhcp {
         TOKEN_OUTPUT = 378,
         TOKEN_DEBUGLEVEL = 379,
         TOKEN_SEVERITY = 380,
-        TOKEN_DHCP4 = 381,
-        TOKEN_DHCPDDNS = 382,
-        TOKEN_TOPLEVEL_JSON = 383,
-        TOKEN_TOPLEVEL_DHCP6 = 384,
-        TOKEN_SUB_DHCP6 = 385,
-        TOKEN_SUB_INTERFACES6 = 386,
-        TOKEN_SUB_SUBNET6 = 387,
-        TOKEN_SUB_POOL6 = 388,
-        TOKEN_SUB_PD_POOL = 389,
-        TOKEN_SUB_RESERVATION = 390,
-        TOKEN_SUB_OPTION_DEF = 391,
-        TOKEN_SUB_OPTION_DATA = 392,
-        TOKEN_SUB_HOOKS_LIBRARY = 393,
-        TOKEN_SUB_DHCP_DDNS = 394,
-        TOKEN_STRING = 395,
-        TOKEN_INTEGER = 396,
-        TOKEN_FLOAT = 397,
-        TOKEN_BOOLEAN = 398
+        TOKEN_FLUSH = 381,
+        TOKEN_MAXSIZE = 382,
+        TOKEN_MAXVER = 383,
+        TOKEN_DHCP4 = 384,
+        TOKEN_DHCPDDNS = 385,
+        TOKEN_TOPLEVEL_JSON = 386,
+        TOKEN_TOPLEVEL_DHCP6 = 387,
+        TOKEN_SUB_DHCP6 = 388,
+        TOKEN_SUB_INTERFACES6 = 389,
+        TOKEN_SUB_SUBNET6 = 390,
+        TOKEN_SUB_POOL6 = 391,
+        TOKEN_SUB_PD_POOL = 392,
+        TOKEN_SUB_RESERVATION = 393,
+        TOKEN_SUB_OPTION_DEF = 394,
+        TOKEN_SUB_OPTION_DATA = 395,
+        TOKEN_SUB_HOOKS_LIBRARY = 396,
+        TOKEN_SUB_DHCP_DDNS = 397,
+        TOKEN_STRING = 398,
+        TOKEN_INTEGER = 399,
+        TOKEN_FLOAT = 400,
+        TOKEN_BOOLEAN = 401
       };
     };
 
@@ -1097,6 +1100,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_SEVERITY (const location_type& l);
 
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
     static inline
     symbol_type
     make_DHCP4 (const location_type& l);
@@ -1375,11 +1390,11 @@ namespace isc { namespace dhcp {
     {
       yyeof_ = 0,
       yylast_ = 784,     ///< Last index in yytable_.
-      yynnts_ = 324,  ///< Number of nonterminal symbols.
+      yynnts_ = 328,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 144  ///< Number of tokens.
+      yyntokens_ = 147  ///< Number of tokens.
     };
 
 
@@ -1435,9 +1450,10 @@ namespace isc { namespace dhcp {
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146
     };
-    const unsigned int user_token_number_max_ = 398;
+    const unsigned int user_token_number_max_ = 401;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1470,28 +1486,28 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1512,28 +1528,28 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1613,28 +1629,28 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1661,28 +1677,28 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 158: // value
-      case 162: // map_value
-      case 203: // db_type
-      case 398: // duid_type
-      case 431: // ncr_protocol_value
-      case 439: // replace_client_name_value
+      case 161: // value
+      case 165: // map_value
+      case 206: // db_type
+      case 401: // duid_type
+      case 434: // ncr_protocol_value
+      case 442: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 143: // "boolean"
+      case 146: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 142: // "floating point"
+      case 145: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 141: // "integer"
+      case 144: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 140: // "constant string"
+      case 143: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1755,7 +1771,7 @@ namespace isc { namespace dhcp {
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398
+     395,   396,   397,   398,   399,   400,   401
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2504,6 +2520,24 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_SEVERITY, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_DHCP4 (const location_type& l)
   {
@@ -2615,7 +2649,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2619 "dhcp6_parser.h" // lalr1.cc:377
+#line 2653 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index c7c4ee44fad2603e84dc9a49217352c91b786b51..0e91c1faa5975a6c2f5a5e7718fcb0395140b5d8 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 7302746fab7dc1e90e5359480309ed344988ac8c..66f6c9d73357402556bb0618c6357ff01ffb2d6c 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index ab207a0c5ab072273c29f0c809ac0be641a28ee8..bda5a611985f9d68525fcc8b840ded6982f4b1b9 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201703291825
+// Generated 201704181957
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++