]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Regenerated parser files after merge of 5108. trac5333_base
authorMarcin Siodelski <marcin@isc.org>
Fri, 14 Jul 2017 11:27:28 +0000 (11:27 +0000)
committerMarcin Siodelski <marcin@isc.org>
Fri, 14 Jul 2017 11:27:28 +0000 (11:27 +0000)
21 files changed:
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 e82942b9d8e32e9904e29a9eabecd7d7a0582b5b..dc210433211ef7a687ffc97a6da9cff0f9f4a471 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707051400
+// Generated 201707141119
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 5b74724aaf1537a19c9126ebd06e5885e455d291..f6dfb447a358df2b746a59735bb215d1ac67eaba 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707051400
+// Generated 201707141119
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 36024fd4d778119347a1aba013ece70cd651df1a..e35c66c1c415df32c9d6b87ac0c434baabf11f53 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707051400
+// Generated 201707141119
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index 41d6f7169d92834895c9484342da11279c591a98..9331f4fe39d0ed064f9f26e20304301ea864ffe2 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
+#define YY_NUM_RULES 62
+#define YY_END_OF_BUFFER 63
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,47 +700,48 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[353] =
+static const flex_int16_t yy_accept[367] =
     {   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,
+       55,   55,    0,    0,    0,    0,    0,    0,    0,    0,
+       63,   61,   10,   11,   61,    1,   55,   52,   55,   55,
+       61,   54,   53,   61,   61,   61,   61,   61,   48,   49,
+       61,   61,   61,   50,   51,    5,    5,    5,   61,   61,
+       61,   10,   11,    0,    0,   44,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    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,    1,   55,   55,
+        0,   54,   55,    3,    2,    6,    0,   55,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,   45,
+        0,    0,    0,    0,    0,    0,    0,    0,   47,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
-        0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
-        0,    0,    0,   45,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    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,    2,
+        0,    0,    0,    0,    0,    0,    0,    8,    0,    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,    0,    0,    0,    0,    0,   60,
+       58,    0,   57,   56,    0,    0,    0,    0,    0,    0,
+       19,   18,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       58,   55,    0,    0,    0,    0,    0,   20,    0,    0,
+        0,    0,    0,    0,   59,   56,    0,    0,    0,    0,
 
+        0,    0,   20,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   38,    0,
+        0,    0,   14,    0,    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,   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,
-        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
+        0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   37,
+        0,    0,   34,    0,    0,   30,    0,    0,    0,    0,
+       31,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       32,   36,    0,    0,    0,    0,    0,    0,    0,   12,
+
+        0,    0,    0,    0,    0,    0,   26,    0,   24,    0,
+        0,    0,    0,   40,    0,    0,   28,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   27,    0,    0,
+       39,    0,    0,    0,    0,   13,   17,    0,    0,    0,
+        0,    0,   29,    0,   25,    0,    0,    0,    0,    0,
+       23,    0,   21,   16,    0,   22,   43,    0,    0,    0,
+       33,    0,    0,    0,   15,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -786,95 +787,97 @@ static const YY_CHAR yy_meta[67] =
         3,    3,    3,    3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[365] =
+static const flex_int16_t yy_base[378] =
     {   0,
         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
+      684,  685,   89,  680,  137,    0,  192,  685,  197,  200,
+       86,  212,  685,  662,   97,   74,   63,   69,  685,  685,
+       83,   68,   78,  685,  685,  685,  124,  668,  627,    0,
+      660,  128,  675,  212,  234,  685,  623,  629,  172,  621,
+      196,  196,  257,  623,  187,  191,  619,  617,  627,  616,
+      629,   91,  609,  613,  622,  621,  209,    0,  281,  289,
+      239,  305,  293,  685,    0,  685,  257,  308,  182,  195,
+      208,  224,  248,  276,  685,  622,  657,  685,  228,  685,
+      321,  609,  619,  282,  614,  295,  297,  653,    0,  367,
+
+      612,  604,  615,  609,  597,  594,  596,  594,  639,  586,
+      602,  585,  594,  589,  586,  587,  582,  218,  593,    0,
+      296,  303,  307,  306,  310,  315,  589,  685,    0,  581,
+      583,  312,  591,  630,  629,  628,  685,  399,  579,  575,
+      572,  586,  618,  571,  566,  568,  585,  613,  577,  285,
+      578,  610,  565,  561,  574,  561,  572,  569,  323,  685,
+      685,  331,  685,  685,  555,    0,  557,  331,  606,  563,
+      685,  685,  431,  554,  598,  562,  550,  549,  558,  564,
+      550,  559,  548,  556,  551,  554,  591,  315,  537,  589,
+      538,  549,  536,  580,  685,  685,  547,    0,  535,  582,
+
+      581,  543,  685,  532,  463,  536,  540,  531,  523,  536,
+      573,  522,  537,  533,  535,  518,  509,  516,  685,  517,
+      514,  511,  685,  511,  509,  518,  515,  520,    0,  512,
+      685,  685,  509,  515,  502,  505,  514,  546,  500,  685,
+      512,  502,  497,  500,  494,  506,  543,  492,  493,  241,
+      502,  539,  486,  499,  685,  531,  478,  516,  473,  463,
+      442,  460,  440,  488,  454,  453,  452,  489,  488,  685,
+      441,  434,  685,  437,  479,  685,  420,  419,  441,  474,
+      685,  418,  429,  424,  419,  422,  422,  458,  406,  456,
+      685,  685,  421,  406,  404,  415,  445,  393,  403,  685,
+
+      442,  390,  386,  378,  379,  391,  685,  376,  685,  374,
+      389,  372,  386,  685,  422,  383,  685,  373,  413,  361,
+      346,  364,  410,  400,  351,  356,  349,  685,  348,  343,
+      685,  393,  340,  391,  339,  685,  685,  344,  340,  330,
+      328,  379,  685,  336,  685,  372,  370,  320,  366,  365,
+      685,  317,  685,  685,  311,  685,  685,  320,  338,  289,
+      685,  241,  206,  253,  685,  685,  508,  513,  518,  523,
+      528,  533,  536,  216,  130,  115,   87
     } ;
 
-static const flex_int16_t yy_def[365] =
+static const flex_int16_t yy_def[378] =
     {   0,
-      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
+      366,    1,  367,  367,    1,    5,    5,    5,    5,    5,
+      366,  366,  366,  366,  366,  368,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  369,
+      366,  366,  366,  370,   15,  366,   45,   45,   45,   45,
+       45,   45,  371,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  368,  366,  366,
+      366,  366,  366,  366,  372,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  369,  366,  370,  366,
+      366,   45,   45,   45,   45,   45,   45,  373,   45,  371,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  372,
+      366,  366,  366,  366,  366,  366,  366,  366,  374,   45,
+       45,   45,   45,   45,   45,  373,  366,  371,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,  366,  366,
+      366,  366,  366,  366,  366,  375,   45,   45,   45,   45,
+      366,  366,  371,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,  366,  366,  366,  376,   45,   45,
+
+       45,   45,  366,   45,  371,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,  366,   45,
+       45,   45,  366,   45,   45,   45,   45,  366,  377,   45,
+      366,  366,   45,   45,   45,   45,   45,   45,   45,  366,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,  366,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  366,
+       45,   45,  366,   45,   45,  366,   45,   45,   45,   45,
+      366,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+      366,  366,   45,   45,   45,   45,   45,   45,   45,  366,
+
+       45,   45,   45,   45,   45,   45,  366,   45,  366,   45,
+       45,   45,   45,  366,   45,   45,  366,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  366,   45,   45,
+      366,   45,   45,   45,   45,  366,  366,   45,   45,   45,
+       45,   45,  366,   45,  366,   45,   45,   45,   45,   45,
+      366,   45,  366,  366,   45,  366,  366,   45,   45,   45,
+      366,   45,   45,   45,  366,    0,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366
     } ;
 
-static const flex_int16_t yy_nxt[2469] =
+static const flex_int16_t yy_nxt[752] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -885,271 +888,83 @@ static const flex_int16_t yy_nxt[2469] =
        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
+       42,   89,   42,   74,   79,   12,   12,   80,   75,   12,
+
+       81,   12,   80,   79,   12,   77,   12,   77,   12,   81,
+       78,   78,   78,   79,   12,   12,   12,   12,   39,  229,
+       12,   80,   82,   12,   81,   42,   83,   42,   12,   42,
+      113,   42,  114,   84,  198,   12,   12,   44,   44,   44,
+       45,   45,   46,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   47,
+       48,   45,   45,   49,   50,   45,   45,   45,   45,   45,
+       51,   52,   45,   53,   45,   45,   54,   45,   45,   55,
+       45,   56,   45,   57,   58,   49,   59,   60,   61,   62,
+       63,   64,   65,   66,   67,   52,   45,   45,   45,   45,
+
+       45,   45,   45,   69,   94,   70,   70,   70,   69,  121,
+       72,   72,   72,   73,   73,   73,   71,   90,   96,   97,
+      166,   71,  122,   69,   71,   72,   72,   72,   94,  102,
+      103,   96,  121,   90,  104,   71,   71,   96,   97,  105,
+       71,  106,  123,   71,  107,  122,  273,   77,   91,   77,
+       96,  121,   78,   78,   78,   71,   45,   45,  365,  156,
+       45,   45,   99,  364,   91,  119,  123,   45,   45,   45,
+       78,   78,   78,   45,  124,  122,   45,  157,   45,  274,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   73,   73,   73,   45,  125,  363,
+
+       69,   45,   70,   70,   70,   71,   73,   73,   73,   45,
+      123,  132,   45,   71,   45,  100,   69,   71,   72,   72,
+       72,   78,   78,   78,   71,  134,   89,  135,  159,   71,
+      160,  161,   71,   89,  126,  132,   71,  160,  159,  161,
+      169,  185,  362,  361,  186,  200,  201,  195,   71,  134,
+      161,  135,  159,  160,  202,  195,  333,   89,  164,  220,
+      163,   89,  162,  360,  169,   89,  195,  359,  358,  221,
+      357,  356,  355,   89,  196,  354,   89,  353,   89,  129,
+      138,  138,  138,  352,  351,  350,  349,  138,  138,  138,
+      138,  138,  138,  348,  347,  346,  345,  344,  343,  342,
+
+      341,  340,  334,  339,  338,  337,  138,  138,  138,  138,
+      138,  138,  173,  173,  173,  336,  335,  332,  331,  173,
+      173,  173,  173,  173,  173,  330,  329,  328,  327,  326,
+      325,  324,  323,  322,  321,  320,  319,  318,  173,  173,
+      173,  173,  173,  173,  205,  205,  205,  317,  316,  315,
+      314,  205,  205,  205,  205,  205,  205,  313,  312,  311,
+      310,  309,  308,  307,  306,  305,  304,  303,  302,  301,
+      205,  205,  205,  205,  205,  205,   45,   45,   45,  300,
+      299,  298,  297,   45,   45,   45,   45,   45,   45,  296,
+      295,  294,  293,  292,  291,  290,  289,  288,  287,  286,
+
+      285,  284,   45,   45,   45,   45,   45,   45,   36,   36,
+       36,   36,   36,   68,  283,   68,   68,   68,   87,  282,
+       87,  281,   87,   89,   89,   89,   89,   89,   98,   98,
+       98,   98,   98,  120,  280,  120,  120,  120,  136,  136,
+      136,  279,  278,  277,  276,  275,  272,  271,  270,  269,
+      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
+      258,  257,  256,  255,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  228,
+      227,  226,  225,  224,  223,  222,  219,  218,  217,  216,
+
+      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
+      204,  203,  199,  197,  194,  193,  192,  191,  190,  189,
+      188,  187,  184,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,  137,  172,  171,  170,  168,  167,  165,
+      158,  155,  154,  153,  152,  151,  150,  149,  148,  147,
+      146,  145,  144,  143,  142,  141,  140,  139,  137,  133,
+      131,  130,  128,  127,  118,  117,  116,  115,  112,  111,
+      110,  109,  108,  101,   95,   93,   92,   43,   88,   86,
+       85,   76,   43,  366,   11,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366
     } ;
 
-static const flex_int16_t yy_chk[2469] =
+static const flex_int16_t yy_chk[752] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1160,268 +975,80 @@ static const flex_int16_t yy_chk[2469] =
         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
+       13,  377,   13,   21,   26,    5,    5,   27,   21,    5,
+
+       28,    9,   32,   31,    5,   25,    5,   25,    5,   33,
+       25,   25,   25,   26,    5,    5,    7,   10,    5,  376,
+        8,   27,   31,    5,   28,   37,   32,   37,    5,   42,
+       62,   42,   62,   33,  375,    5,    5,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+
+       15,   15,   15,   17,   49,   17,   17,   17,   19,   79,
+       19,   19,   19,   20,   20,   20,   17,   44,   51,   52,
+      374,   19,   80,   22,   20,   22,   22,   22,   49,   55,
+       55,   67,   79,   89,   55,   17,   22,   51,   52,   55,
+       19,   56,   81,   20,   56,   80,  250,   71,   44,   71,
+       67,   82,   71,   71,   71,   22,   45,   45,  364,  118,
+       45,   45,   53,  363,   89,   67,   81,   45,   45,   53,
+       77,   77,   77,   45,   82,   83,   45,  118,   45,  250,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   53,   69,   69,   69,   53,   83,  362,
+
+       70,   53,   70,   70,   70,   69,   73,   73,   73,   53,
+       84,   94,   53,   70,   53,   53,   72,   73,   72,   72,
+       72,   78,   78,   78,   69,   96,   91,   97,  121,   72,
+      122,  123,   70,   91,   84,   94,   73,  125,  124,  126,
+      132,  150,  360,  359,  150,  168,  168,  159,   72,   96,
+      123,   97,  121,  122,  168,  162,  321,   91,  126,  188,
+      125,   91,  124,  358,  132,   91,  159,  355,  352,  188,
+      350,  349,  348,   91,  162,  347,   91,  346,   91,   91,
+      100,  100,  100,  344,  342,  341,  340,  100,  100,  100,
+      100,  100,  100,  339,  338,  335,  334,  333,  332,  330,
+
+      329,  327,  321,  326,  325,  324,  100,  100,  100,  100,
+      100,  100,  138,  138,  138,  323,  322,  320,  319,  138,
+      138,  138,  138,  138,  138,  318,  316,  315,  313,  312,
+      311,  310,  308,  306,  305,  304,  303,  302,  138,  138,
+      138,  138,  138,  138,  173,  173,  173,  301,  299,  298,
+      297,  173,  173,  173,  173,  173,  173,  296,  295,  294,
+      293,  290,  289,  288,  287,  286,  285,  284,  283,  282,
+      173,  173,  173,  173,  173,  173,  205,  205,  205,  280,
+      279,  278,  277,  205,  205,  205,  205,  205,  205,  275,
+      274,  272,  271,  269,  268,  267,  266,  265,  264,  263,
+
+      262,  261,  205,  205,  205,  205,  205,  205,  367,  367,
+      367,  367,  367,  368,  260,  368,  368,  368,  369,  259,
+      369,  258,  369,  370,  370,  370,  370,  370,  371,  371,
+      371,  371,  371,  372,  257,  372,  372,  372,  373,  373,
+      373,  256,  254,  253,  252,  251,  249,  248,  247,  246,
+      245,  244,  243,  242,  241,  239,  238,  237,  236,  235,
+      234,  233,  230,  228,  227,  226,  225,  224,  222,  221,
+      220,  218,  217,  216,  215,  214,  213,  212,  211,  210,
+      209,  208,  207,  206,  204,  202,  201,  200,  199,  197,
+      194,  193,  192,  191,  190,  189,  187,  186,  185,  184,
+
+      183,  182,  181,  180,  179,  178,  177,  176,  175,  174,
+      170,  169,  167,  165,  158,  157,  156,  155,  154,  153,
+      152,  151,  149,  148,  147,  146,  145,  144,  143,  142,
+      141,  140,  139,  136,  135,  134,  133,  131,  130,  127,
+      119,  117,  116,  115,  114,  113,  112,  111,  110,  109,
+      108,  107,  106,  105,  104,  103,  102,  101,   98,   95,
+       93,   92,   87,   86,   66,   65,   64,   63,   61,   60,
+       59,   58,   57,   54,   50,   48,   47,   43,   41,   39,
+       38,   24,   14,   11,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1430,14 +1057,15 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[61] =
+static const flex_int16_t yy_rule_linenum[62] =
     {   0,
       129,  131,  133,  138,  139,  144,  145,  146,  158,  161,
       166,  172,  181,  192,  203,  212,  221,  230,  240,  250,
       260,  269,  278,  288,  298,  308,  319,  328,  338,  348,
       359,  368,  377,  386,  395,  404,  413,  422,  435,  444,
-      453,  462,  472,  570,  575,  580,  585,  586,  587,  588,
-      589,  590,  592,  610,  623,  628,  632,  634,  636,  638
+      453,  462,  471,  481,  579,  584,  589,  594,  595,  596,
+      597,  598,  599,  601,  619,  632,  637,  641,  643,  645,
+      647
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1484,7 +1112,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 1487 "d2_lexer.cc"
+#line 1115 "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
@@ -1510,8 +1138,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 1513 "d2_lexer.cc"
-#line 1514 "d2_lexer.cc"
+#line 1141 "d2_lexer.cc"
+#line 1142 "d2_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1829,7 +1457,7 @@ YY_DECL
     }
 
 
-#line 1832 "d2_lexer.cc"
+#line 1460 "d2_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1858,13 +1486,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 >= 353 )
+                               if ( yy_current_state >= 367 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 352 );
+               while ( yy_current_state != 366 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1883,13 +1511,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 < 61 )
+                       else if ( yy_act < 62 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 61 )
+                       else if ( yy_act == 62 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 62 )
+                       else if ( yy_act == 63 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2385,7 +2013,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 472 "d2_lexer.ll"
+#line 471 "d2_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::d2::D2ParserContext::CONFIG:
+        return isc::d2::D2Parser::make_CONTROL_AGENT(driver.loc_);
+    default:
+        return isc::d2::D2Parser::make_STRING("Control-agent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 481 "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.
@@ -2484,65 +2124,65 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 44:
-/* rule 44 can match eol */
+case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 570 "d2_lexer.ll"
+#line 579 "d2_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 45:
-/* rule 45 can match eol */
+case 46:
+/* rule 46 can match eol */
 YY_RULE_SETUP
-#line 575 "d2_lexer.ll"
+#line 584 "d2_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 580 "d2_lexer.ll"
+#line 589 "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 47:
+case 48:
 YY_RULE_SETUP
-#line 585 "d2_lexer.ll"
+#line 594 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 586 "d2_lexer.ll"
+#line 595 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 587 "d2_lexer.ll"
+#line 596 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 588 "d2_lexer.ll"
+#line 597 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 589 "d2_lexer.ll"
+#line 598 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 590 "d2_lexer.ll"
+#line 599 "d2_lexer.ll"
 { return isc::d2::D2Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 592 "d2_lexer.ll"
+#line 601 "d2_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -2561,9 +2201,9 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 610 "d2_lexer.ll"
+#line 619 "d2_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -2577,43 +2217,43 @@ YY_RULE_SETUP
     return isc::d2::D2Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 623 "d2_lexer.ll"
+#line 632 "d2_lexer.ll"
 {
     string tmp(yytext);
     return isc::d2::D2Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 628 "d2_lexer.ll"
+#line 637 "d2_lexer.ll"
 {
    return isc::d2::D2Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 632 "d2_lexer.ll"
+#line 641 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 634 "d2_lexer.ll"
+#line 643 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 636 "d2_lexer.ll"
+#line 645 "d2_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 638 "d2_lexer.ll"
+#line 647 "d2_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 640 "d2_lexer.ll"
+#line 649 "d2_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::d2::D2Parser::make_END(driver.loc_);
@@ -2637,12 +2277,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 663 "d2_lexer.ll"
+#line 672 "d2_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2645 "d2_lexer.cc"
+#line 2285 "d2_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2961,7 +2601,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 >= 353 )
+                       if ( yy_current_state >= 367 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2994,11 +2634,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 >= 353 )
+               if ( yy_current_state >= 367 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 352);
+       yy_is_jam = (yy_current_state == 366);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3747,7 +3387,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 663 "d2_lexer.ll"
+#line 672 "d2_lexer.ll"
 
 
 using namespace isc::dhcp;
index d1a020de0eba6866462591bdb1ef73e63eb3dc57..b4405c679d94379406a0d3b3a95088dcbcdcb89a 100644 (file)
@@ -253,24 +253,24 @@ namespace isc { namespace d2 {
   {
       switch (that.type_get ())
     {
-      case 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 50: // "constant string"
+      case 51: // "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 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -346,44 +346,44 @@ namespace isc { namespace d2 {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 50: // "constant string"
+            case 51: // "constant string"
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 354 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 361 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 368 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 375 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 65: // value
+      case 66: // value
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "d2_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 382 "d2_parser.cc" // lalr1.cc:636
         break;
 
-      case 92: // ncr_protocol_value
+      case 93: // ncr_protocol_value
 
-#line 107 "d2_parser.yy" // lalr1.cc:636
+#line 108 "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 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -624,103 +624,103 @@ namespace isc { namespace d2 {
           switch (yyn)
             {
   case 2:
-#line 116 "d2_parser.yy" // lalr1.cc:859
+#line 117 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 630 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 117 "d2_parser.yy" // lalr1.cc:859
+#line 118 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 636 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 118 "d2_parser.yy" // lalr1.cc:859
+#line 119 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCPDDNS; }
 #line 642 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 119 "d2_parser.yy" // lalr1.cc:859
+#line 120 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.TSIG_KEY; }
 #line 648 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 120 "d2_parser.yy" // lalr1.cc:859
+#line 121 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.TSIG_KEYS; }
 #line 654 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 121 "d2_parser.yy" // lalr1.cc:859
+#line 122 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 #line 660 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 122 "d2_parser.yy" // lalr1.cc:859
+#line 123 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 #line 666 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 123 "d2_parser.yy" // lalr1.cc:859
+#line 124 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 672 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 124 "d2_parser.yy" // lalr1.cc:859
+#line 125 "d2_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 678 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 132 "d2_parser.yy" // lalr1.cc:859
+#line 133 "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 133 "d2_parser.yy" // lalr1.cc:859
+#line 134 "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 134 "d2_parser.yy" // lalr1.cc:859
+#line 135 "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 135 "d2_parser.yy" // lalr1.cc:859
+#line 136 "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 136 "d2_parser.yy" // lalr1.cc:859
+#line 137 "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 137 "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 714 "d2_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 138 "d2_parser.yy" // lalr1.cc:859
+#line 139 "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 141 "d2_parser.yy" // lalr1.cc:859
+#line 142 "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 146 "d2_parser.yy" // lalr1.cc:859
+#line 147 "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 151 "d2_parser.yy" // lalr1.cc:859
+#line 152 "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 162 "d2_parser.yy" // lalr1.cc:859
+#line 163 "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 166 "d2_parser.yy" // lalr1.cc:859
+#line 167 "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 173 "d2_parser.yy" // lalr1.cc:859
+#line 174 "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 176 "d2_parser.yy" // lalr1.cc:859
+#line 177 "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 184 "d2_parser.yy" // lalr1.cc:859
+#line 185 "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 188 "d2_parser.yy" // lalr1.cc:859
+#line 189 "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 199 "d2_parser.yy" // lalr1.cc:859
+#line 200 "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 209 "d2_parser.yy" // lalr1.cc:859
+#line 210 "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 214 "d2_parser.yy" // lalr1.cc:859
+#line 215 "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
@@ -835,8 +835,8 @@ namespace isc { namespace d2 {
 #line 836 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 50:
-#line 235 "d2_parser.yy" // lalr1.cc:859
+  case 51:
+#line 237 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("DhcpDdns", m);
@@ -846,8 +846,8 @@ namespace isc { namespace d2 {
 #line 847 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 51:
-#line 240 "d2_parser.yy" // lalr1.cc:859
+  case 52:
+#line 242 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -855,8 +855,8 @@ namespace isc { namespace d2 {
 #line 856 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 52:
-#line 245 "d2_parser.yy" // lalr1.cc:859
+  case 53:
+#line 247 "d2_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcpddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -865,24 +865,24 @@ namespace isc { namespace d2 {
 #line 866 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 53:
-#line 249 "d2_parser.yy" // lalr1.cc:859
+  case 54:
+#line 251 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 874 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 65:
-#line 269 "d2_parser.yy" // lalr1.cc:859
+  case 66:
+#line 271 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 882 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 66:
-#line 271 "d2_parser.yy" // lalr1.cc:859
+  case 67:
+#line 273 "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);
@@ -891,8 +891,8 @@ namespace isc { namespace d2 {
 #line 892 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 67:
-#line 277 "d2_parser.yy" // lalr1.cc:859
+  case 68:
+#line 279 "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");
@@ -903,8 +903,8 @@ namespace isc { namespace d2 {
 #line 904 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 68:
-#line 285 "d2_parser.yy" // lalr1.cc:859
+  case 69:
+#line 287 "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");
@@ -916,16 +916,16 @@ namespace isc { namespace d2 {
 #line 917 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 69:
-#line 294 "d2_parser.yy" // lalr1.cc:859
+  case 70:
+#line 296 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
 #line 925 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 70:
-#line 296 "d2_parser.yy" // lalr1.cc:859
+  case 71:
+#line 298 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -933,28 +933,28 @@ namespace isc { namespace d2 {
 #line 934 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 71:
-#line 302 "d2_parser.yy" // lalr1.cc:859
+  case 72:
+#line 304 "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 303 "d2_parser.yy" // lalr1.cc:859
+  case 73:
+#line 305 "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 306 "d2_parser.yy" // lalr1.cc:859
+  case 74:
+#line 308 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
 #line 954 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 74:
-#line 308 "d2_parser.yy" // lalr1.cc:859
+  case 75:
+#line 310 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -963,8 +963,8 @@ namespace isc { namespace d2 {
 #line 964 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 75:
-#line 314 "d2_parser.yy" // lalr1.cc:859
+  case 76:
+#line 316 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("forward-ddns", m);
@@ -974,8 +974,8 @@ namespace isc { namespace d2 {
 #line 975 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 76:
-#line 319 "d2_parser.yy" // lalr1.cc:859
+  case 77:
+#line 321 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -983,8 +983,8 @@ namespace isc { namespace d2 {
 #line 984 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 77:
-#line 324 "d2_parser.yy" // lalr1.cc:859
+  case 78:
+#line 326 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reverse-ddns", m);
@@ -994,8 +994,8 @@ namespace isc { namespace d2 {
 #line 995 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 78:
-#line 329 "d2_parser.yy" // lalr1.cc:859
+  case 79:
+#line 331 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1003,8 +1003,8 @@ namespace isc { namespace d2 {
 #line 1004 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 85:
-#line 348 "d2_parser.yy" // lalr1.cc:859
+  case 86:
+#line 350 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-domains", l);
@@ -1014,8 +1014,8 @@ namespace isc { namespace d2 {
 #line 1015 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 86:
-#line 353 "d2_parser.yy" // lalr1.cc:859
+  case 87:
+#line 355 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1023,8 +1023,8 @@ namespace isc { namespace d2 {
 #line 1024 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 87:
-#line 358 "d2_parser.yy" // lalr1.cc:859
+  case 88:
+#line 360 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1032,16 +1032,16 @@ namespace isc { namespace d2 {
 #line 1033 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 88:
-#line 361 "d2_parser.yy" // lalr1.cc:859
+  case 89:
+#line 363 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1041 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 93:
-#line 373 "d2_parser.yy" // lalr1.cc:859
+  case 94:
+#line 375 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1050,16 +1050,16 @@ namespace isc { namespace d2 {
 #line 1051 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 94:
-#line 377 "d2_parser.yy" // lalr1.cc:859
+  case 95:
+#line 379 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1059 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 95:
-#line 381 "d2_parser.yy" // lalr1.cc:859
+  case 96:
+#line 383 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1067,24 +1067,24 @@ namespace isc { namespace d2 {
 #line 1068 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 96:
-#line 384 "d2_parser.yy" // lalr1.cc:859
+  case 97:
+#line 386 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1076 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 399 "d2_parser.yy" // lalr1.cc:859
+  case 104:
+#line 401 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1084 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 401 "d2_parser.yy" // lalr1.cc:859
+  case 105:
+#line 403 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "Ddns domain name cannot be blank");
@@ -1097,16 +1097,16 @@ namespace isc { namespace d2 {
 #line 1098 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 411 "d2_parser.yy" // lalr1.cc:859
+  case 106:
+#line 413 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1106 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 413 "d2_parser.yy" // lalr1.cc:859
+  case 107:
+#line 415 "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)));
@@ -1116,8 +1116,8 @@ namespace isc { namespace d2 {
 #line 1117 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 423 "d2_parser.yy" // lalr1.cc:859
+  case 108:
+#line 425 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dns-servers", l);
@@ -1127,8 +1127,8 @@ namespace isc { namespace d2 {
 #line 1128 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 428 "d2_parser.yy" // lalr1.cc:859
+  case 109:
+#line 430 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1136,8 +1136,8 @@ namespace isc { namespace d2 {
 #line 1137 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 433 "d2_parser.yy" // lalr1.cc:859
+  case 110:
+#line 435 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1145,16 +1145,16 @@ namespace isc { namespace d2 {
 #line 1146 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 436 "d2_parser.yy" // lalr1.cc:859
+  case 111:
+#line 438 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1154 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 113:
-#line 444 "d2_parser.yy" // lalr1.cc:859
+  case 114:
+#line 446 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1163,16 +1163,16 @@ namespace isc { namespace d2 {
 #line 1164 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 114:
-#line 448 "d2_parser.yy" // lalr1.cc:859
+  case 115:
+#line 450 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1172 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 115:
-#line 452 "d2_parser.yy" // lalr1.cc:859
+  case 116:
+#line 454 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -1180,24 +1180,24 @@ namespace isc { namespace d2 {
 #line 1181 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 116:
-#line 455 "d2_parser.yy" // lalr1.cc:859
+  case 117:
+#line 457 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1189 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 469 "d2_parser.yy" // lalr1.cc:859
+  case 124:
+#line 471 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1197 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 471 "d2_parser.yy" // lalr1.cc:859
+  case 125:
+#line 473 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () != "") {
         error(yystack_[1].location, "hostname is not yet supported");
@@ -1210,16 +1210,16 @@ namespace isc { namespace d2 {
 #line 1211 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 481 "d2_parser.yy" // lalr1.cc:859
+  case 126:
+#line 483 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1219 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 483 "d2_parser.yy" // lalr1.cc:859
+  case 127:
+#line 485 "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);
@@ -1228,8 +1228,8 @@ namespace isc { namespace d2 {
 #line 1229 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 489 "d2_parser.yy" // lalr1.cc:859
+  case 128:
+#line 491 "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");
@@ -1240,8 +1240,8 @@ namespace isc { namespace d2 {
 #line 1241 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 503 "d2_parser.yy" // lalr1.cc:859
+  case 129:
+#line 505 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tsig-keys", l);
@@ -1251,8 +1251,8 @@ namespace isc { namespace d2 {
 #line 1252 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 508 "d2_parser.yy" // lalr1.cc:859
+  case 130:
+#line 510 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1260,8 +1260,8 @@ namespace isc { namespace d2 {
 #line 1261 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 513 "d2_parser.yy" // lalr1.cc:859
+  case 131:
+#line 515 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -1269,16 +1269,16 @@ namespace isc { namespace d2 {
 #line 1270 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 516 "d2_parser.yy" // lalr1.cc:859
+  case 132:
+#line 518 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1278 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 528 "d2_parser.yy" // lalr1.cc:859
+  case 137:
+#line 530 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1287,16 +1287,16 @@ namespace isc { namespace d2 {
 #line 1288 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 532 "d2_parser.yy" // lalr1.cc:859
+  case 138:
+#line 534 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1296 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 536 "d2_parser.yy" // lalr1.cc:859
+  case 139:
+#line 538 "d2_parser.yy" // lalr1.cc:859
     {
     // Parse tsig key list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1305,24 +1305,24 @@ namespace isc { namespace d2 {
 #line 1306 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 540 "d2_parser.yy" // lalr1.cc:859
+  case 140:
+#line 542 "d2_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1314 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 556 "d2_parser.yy" // lalr1.cc:859
+  case 148:
+#line 558 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1322 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 558 "d2_parser.yy" // lalr1.cc:859
+  case 149:
+#line 560 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key name cannot be blank");
@@ -1335,16 +1335,16 @@ namespace isc { namespace d2 {
 #line 1336 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 568 "d2_parser.yy" // lalr1.cc:859
+  case 150:
+#line 570 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1344 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 570 "d2_parser.yy" // lalr1.cc:859
+  case 151:
+#line 572 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key algorithm cannot be blank");
@@ -1356,8 +1356,8 @@ namespace isc { namespace d2 {
 #line 1357 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 579 "d2_parser.yy" // lalr1.cc:859
+  case 152:
+#line 581 "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");
@@ -1368,16 +1368,16 @@ namespace isc { namespace d2 {
 #line 1369 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 587 "d2_parser.yy" // lalr1.cc:859
+  case 153:
+#line 589 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1377 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 589 "d2_parser.yy" // lalr1.cc:859
+  case 154:
+#line 591 "d2_parser.yy" // lalr1.cc:859
     {
     if (yystack_[0].value.as< std::string > () == "") {
         error(yystack_[1].location, "TSIG key secret cannot be blank");
@@ -1389,16 +1389,16 @@ namespace isc { namespace d2 {
 #line 1390 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 154:
-#line 602 "d2_parser.yy" // lalr1.cc:859
+  case 155:
+#line 604 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1398 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 604 "d2_parser.yy" // lalr1.cc:859
+  case 156:
+#line 606 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1406,16 +1406,16 @@ namespace isc { namespace d2 {
 #line 1407 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 609 "d2_parser.yy" // lalr1.cc:859
+  case 157:
+#line 611 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1415 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 611 "d2_parser.yy" // lalr1.cc:859
+  case 158:
+#line 613 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1423,194 +1423,211 @@ namespace isc { namespace d2 {
 #line 1424 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 621 "d2_parser.yy" // lalr1.cc:859
+  case 159:
+#line 618 "d2_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1432 "d2_parser.cc" // lalr1.cc:859
+    break;
+
+  case 160:
+#line 620 "d2_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+    ctx.leave();
+}
+#line 1441 "d2_parser.cc" // lalr1.cc:859
+    break;
+
+  case 161:
+#line 630 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 1435 "d2_parser.cc" // lalr1.cc:859
+#line 1452 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 626 "d2_parser.yy" // lalr1.cc:859
+  case 162:
+#line 635 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1444 "d2_parser.cc" // lalr1.cc:859
+#line 1461 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 643 "d2_parser.yy" // lalr1.cc:859
+  case 166:
+#line 652 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 1455 "d2_parser.cc" // lalr1.cc:859
+#line 1472 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 648 "d2_parser.yy" // lalr1.cc:859
+  case 167:
+#line 657 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1464 "d2_parser.cc" // lalr1.cc:859
+#line 1481 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 660 "d2_parser.yy" // lalr1.cc:859
+  case 170:
+#line 669 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1474 "d2_parser.cc" // lalr1.cc:859
+#line 1491 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 664 "d2_parser.yy" // lalr1.cc:859
+  case 171:
+#line 673 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1482 "d2_parser.cc" // lalr1.cc:859
+#line 1499 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 679 "d2_parser.yy" // lalr1.cc:859
+  case 179:
+#line 688 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1490 "d2_parser.cc" // lalr1.cc:859
+#line 1507 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 681 "d2_parser.yy" // lalr1.cc:859
+  case 180:
+#line 690 "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);
     ctx.leave();
 }
-#line 1500 "d2_parser.cc" // lalr1.cc:859
+#line 1517 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 687 "d2_parser.yy" // lalr1.cc:859
+  case 181:
+#line 696 "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);
 }
-#line 1509 "d2_parser.cc" // lalr1.cc:859
+#line 1526 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 691 "d2_parser.yy" // lalr1.cc:859
+  case 182:
+#line 700 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1517 "d2_parser.cc" // lalr1.cc:859
+#line 1534 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 693 "d2_parser.yy" // lalr1.cc:859
+  case 183:
+#line 702 "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);
     ctx.leave();
 }
-#line 1527 "d2_parser.cc" // lalr1.cc:859
+#line 1544 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 699 "d2_parser.yy" // lalr1.cc:859
+  case 184:
+#line 708 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1538 "d2_parser.cc" // lalr1.cc:859
+#line 1555 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 704 "d2_parser.yy" // lalr1.cc:859
+  case 185:
+#line 713 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1547 "d2_parser.cc" // lalr1.cc:859
+#line 1564 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 713 "d2_parser.yy" // lalr1.cc:859
+  case 188:
+#line 722 "d2_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1557 "d2_parser.cc" // lalr1.cc:859
+#line 1574 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 717 "d2_parser.yy" // lalr1.cc:859
+  case 189:
+#line 726 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1565 "d2_parser.cc" // lalr1.cc:859
+#line 1582 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 731 "d2_parser.yy" // lalr1.cc:859
+  case 196:
+#line 740 "d2_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1573 "d2_parser.cc" // lalr1.cc:859
+#line 1590 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 733 "d2_parser.yy" // lalr1.cc:859
+  case 197:
+#line 742 "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);
     ctx.leave();
 }
-#line 1583 "d2_parser.cc" // lalr1.cc:859
+#line 1600 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 739 "d2_parser.yy" // lalr1.cc:859
+  case 198:
+#line 748 "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
+#line 1609 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 744 "d2_parser.yy" // lalr1.cc:859
+  case 199:
+#line 753 "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
+#line 1618 "d2_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 749 "d2_parser.yy" // lalr1.cc:859
+  case 200:
+#line 758 "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
+#line 1627 "d2_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 1614 "d2_parser.cc" // lalr1.cc:859
+#line 1631 "d2_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1865,47 +1882,48 @@ namespace isc { namespace d2 {
   }
 
 
-  const signed char D2Parser::yypact_ninf_ = -108;
+  const signed char D2Parser::yypact_ninf_ = -111;
 
   const signed char D2Parser::yytable_ninf_ = -1;
 
   const short int
   D2Parser::yypact_[] =
   {
-      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
+      20,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+      24,    -2,    35,    51,    96,    31,   100,   101,   102,   103,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,    -2,    59,
+       2,     3,    10,   104,     4,   105,    -6,   106,  -111,   109,
+     114,   115,   110,   117,  -111,  -111,  -111,  -111,  -111,   119,
+    -111,     8,  -111,  -111,  -111,  -111,  -111,  -111,  -111,   121,
+     122,  -111,  -111,  -111,  -111,  -111,  -111,    19,  -111,  -111,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,   123,  -111,
+    -111,  -111,    25,  -111,  -111,  -111,  -111,  -111,  -111,   125,
+     118,  -111,  -111,  -111,  -111,  -111,    68,  -111,  -111,  -111,
+    -111,  -111,   127,   126,  -111,  -111,   124,  -111,  -111,    69,
+    -111,  -111,  -111,  -111,  -111,    29,  -111,  -111,    -2,    -2,
+    -111,    83,   131,   132,   133,   134,   135,  -111,     2,  -111,
+     136,    92,    93,   142,   143,   144,   145,   146,     3,  -111,
+     147,   107,   148,   149,    10,  -111,    10,  -111,   104,   150,
+     151,   152,     4,  -111,     4,  -111,   105,   153,   108,   154,
+      -6,  -111,    -6,   106,  -111,  -111,  -111,   157,    -2,    -2,
+      -2,   155,   156,  -111,   113,  -111,  -111,    77,   158,   159,
+     160,   163,  -111,   120,  -111,   129,   130,  -111,    71,  -111,
+     137,   164,   138,  -111,    72,  -111,   139,  -111,   140,  -111,
+      75,  -111,    -2,  -111,  -111,  -111,     3,   141,  -111,  -111,
+    -111,  -111,  -111,   -14,   -14,   104,  -111,  -111,  -111,  -111,
+    -111,   106,  -111,  -111,  -111,  -111,  -111,  -111,    78,  -111,
+      79,  -111,  -111,  -111,  -111,    81,  -111,  -111,  -111,    82,
+     166,    94,  -111,   161,   141,  -111,   169,   -14,  -111,  -111,
+    -111,  -111,   165,  -111,   171,  -111,   170,   105,  -111,    98,
+    -111,   172,    22,   170,  -111,  -111,  -111,  -111,   178,  -111,
+    -111,    85,  -111,  -111,  -111,  -111,  -111,  -111,   181,   182,
+     162,   183,    22,  -111,   167,   187,  -111,   168,  -111,  -111,
+     186,  -111,  -111,    99,  -111,     7,   186,  -111,  -111,   190,
+     191,   192,    91,  -111,  -111,  -111,  -111,  -111,  -111,   193,
+     173,   174,   176,     7,  -111,   179,  -111,  -111,  -111,  -111,
+    -111
   };
 
   const unsigned char
@@ -1914,56 +1932,57 @@ namespace isc { namespace d2 {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    34,    28,    24,    23,    20,    21,    22,    27,     3,
-      25,    26,    41,     5,    52,     7,   138,     9,   130,    11,
-      95,    13,    87,    15,   115,    17,   109,    19,    36,    30,
-       0,     0,     0,   132,     0,    89,     0,     0,    38,     0,
-      37,     0,     0,    31,   154,   156,    50,   158,     0,    49,
-       0,    43,    48,    45,    47,    46,    65,     0,     0,    69,
-      73,    75,    77,   128,    64,     0,    54,    56,    57,    58,
-      59,    60,    61,    62,    63,   149,     0,   152,   147,   146,
-       0,   140,   142,   143,   144,   145,   136,     0,   133,   134,
-     105,   107,   103,   102,     0,    97,    99,   100,   101,    93,
-       0,    90,    91,   125,     0,   123,   122,     0,   117,   119,
-     120,   121,   113,     0,   111,    35,     0,     0,    29,     0,
-       0,     0,     0,     0,    40,     0,    42,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    53,     0,     0,     0,
-       0,     0,   139,     0,   131,     0,     0,     0,     0,     0,
-      96,     0,    88,     0,     0,     0,     0,     0,   116,     0,
-       0,   110,    39,    32,     0,     0,     0,     0,     0,    44,
-       0,    67,    68,     0,     0,     0,     0,     0,    55,     0,
-     151,     0,     0,   141,     0,   135,     0,     0,     0,    98,
-       0,    92,     0,   127,     0,   118,     0,   112,     0,   155,
-     157,     0,     0,    66,    71,    72,    70,    74,    79,    79,
-     132,   150,   153,   148,   137,   106,     0,   104,    94,   126,
-     124,   114,    33,     0,   163,     0,   160,   162,    85,    84,
-       0,    80,    81,    83,     0,     0,     0,    51,     0,     0,
-     159,     0,     0,    76,    78,   129,   108,     0,   161,     0,
-      82,     0,    89,   167,     0,   165,     0,     0,     0,   164,
-      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,   193,     0,     0,     0,     0,   187,   189,
-     190,   191,   192,   184,     0,     0,     0,     0,     0,   186,
-       0,   195,   196,   197,   188,   194
+      25,    26,    41,     5,    53,     7,   139,     9,   131,    11,
+      96,    13,    88,    15,   116,    17,   110,    19,    36,    30,
+       0,     0,     0,   133,     0,    90,     0,     0,    38,     0,
+      37,     0,     0,    31,   155,   157,   159,    51,   161,     0,
+      50,     0,    43,    48,    45,    47,    49,    46,    66,     0,
+       0,    70,    74,    76,    78,   129,    65,     0,    55,    57,
+      58,    59,    60,    61,    62,    63,    64,   150,     0,   153,
+     148,   147,     0,   141,   143,   144,   145,   146,   137,     0,
+     134,   135,   106,   108,   104,   103,     0,    98,   100,   101,
+     102,    94,     0,    91,    92,   126,     0,   124,   123,     0,
+     118,   120,   121,   122,   114,     0,   112,    35,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    40,     0,    42,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    54,
+       0,     0,     0,     0,     0,   140,     0,   132,     0,     0,
+       0,     0,     0,    97,     0,    89,     0,     0,     0,     0,
+       0,   117,     0,     0,   111,    39,    32,     0,     0,     0,
+       0,     0,     0,    44,     0,    68,    69,     0,     0,     0,
+       0,     0,    56,     0,   152,     0,     0,   142,     0,   136,
+       0,     0,     0,    99,     0,    93,     0,   128,     0,   119,
+       0,   113,     0,   156,   158,   160,     0,     0,    67,    72,
+      73,    71,    75,    80,    80,   133,   151,   154,   149,   138,
+     107,     0,   105,    95,   127,   125,   115,    33,     0,   166,
+       0,   163,   165,    86,    85,     0,    81,    82,    84,     0,
+       0,     0,    52,     0,     0,   162,     0,     0,    77,    79,
+     130,   109,     0,   164,     0,    83,     0,    90,   170,     0,
+     168,     0,     0,     0,   167,    87,   179,   184,     0,   182,
+     178,     0,   172,   174,   176,   177,   175,   169,     0,     0,
+       0,     0,     0,   171,     0,     0,   181,     0,   173,   180,
+       0,   183,   188,     0,   186,     0,     0,   185,   196,     0,
+       0,     0,     0,   190,   192,   193,   194,   195,   187,     0,
+       0,     0,     0,     0,   189,     0,   198,   199,   200,   191,
+     197
   };
 
   const signed char
   D2Parser::yypgoto_[] =
   {
-    -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
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,   -47,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,   -50,  -111,  -111,  -111,    50,  -111,  -111,  -111,  -111,
+     -27,    42,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,  -111,   -33,  -111,   -65,  -111,  -111,
+    -111,  -111,   -74,  -111,    28,  -111,  -111,  -111,    32,    33,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,   -34,    26,
+    -111,  -111,  -111,    30,    36,  -111,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,   -25,  -111,    40,  -111,  -111,  -111,
+      45,    49,  -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,  -111,  -111,  -111,  -111,   -49,  -111,
+    -111,  -111,   -63,  -111,  -111,   -81,  -111,  -111,  -111,  -111,
+    -111,  -111,  -111,  -111,   -94,  -111,  -111,  -110,  -111,  -111,
+    -111,  -111,  -111
   };
 
   const short int
@@ -1971,142 +1990,146 @@ namespace isc { namespace d2 {
   {
       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    28,    29,    30,    49,    62,    63,    31,    48,    59,
-      60,    84,    33,    50,    70,    71,    72,   142,    35,    51,
-      85,    86,    87,   147,    88,    89,    90,   150,   226,    91,
-     151,    92,   152,    93,   153,   250,   251,   252,   253,   261,
-      43,    55,   120,   121,   122,   171,    41,    54,   114,   115,
-     116,   168,   117,   166,   118,   167,    47,    57,   133,   134,
-     179,    45,    56,   127,   128,   129,   176,   130,   174,   131,
-      94,   154,    39,    53,   107,   108,   109,   163,    37,    52,
-     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,   317,   318,   319,   324,   320,   321,
-     322
+      60,    86,    33,    50,    71,    72,    73,   145,    35,    51,
+      87,    88,    89,   150,    90,    91,    92,   153,   231,    93,
+     154,    94,   155,    95,   156,   255,   256,   257,   258,   266,
+      43,    55,   122,   123,   124,   174,    41,    54,   116,   117,
+     118,   171,   119,   169,   120,   170,    47,    57,   135,   136,
+     182,    45,    56,   129,   130,   131,   179,   132,   177,   133,
+      96,   157,    39,    53,   109,   110,   111,   166,    37,    52,
+     102,   103,   104,   163,   105,   160,   106,   107,   162,    74,
+     142,    75,   143,    76,   144,    77,   146,   250,   251,   252,
+     263,   279,   280,   282,   291,   292,   293,   298,   294,   295,
+     301,   296,   299,   313,   314,   315,   322,   323,   324,   329,
+     325,   326,   327
   };
 
   const unsigned short int
   D2Parser::yytable_[] =
   {
-      69,    58,    99,    21,   113,    22,   126,    23,   123,   124,
-     248,    20,    64,    65,    66,   145,    76,    77,    78,    79,
-     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,
+      70,    58,   101,    21,   115,    22,   128,    23,   125,   126,
+     253,   148,    64,    65,    66,    67,   149,    78,    79,    80,
+      81,   127,   158,    82,    20,    83,    84,   159,   164,   112,
+     113,    85,   183,   165,    68,   184,    38,    69,   114,    97,
+      98,    99,    32,   318,   100,    69,   319,   320,   321,    24,
+      25,    26,    27,    69,    69,    69,   286,   287,    34,   288,
+     289,    69,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,   172,   180,    69,   164,   172,   173,   181,   180,   239,
+     243,   158,   264,   246,   267,   267,   262,   265,   302,   268,
+     269,   185,   186,   303,   333,   229,   230,   183,    70,   334,
+     271,   283,   316,    36,   284,   317,    42,    40,    46,    44,
+      61,   108,   121,   134,   101,   137,   101,   138,   140,   139,
+     141,   168,   115,   147,   115,   151,   152,   161,   178,   176,
+     128,   167,   128,   175,   187,   188,   189,   190,   191,   192,
+     194,   223,   224,   225,   195,   196,   197,   198,   199,   200,
+     201,   203,   205,   206,   210,   211,   212,   216,   218,   204,
+     217,   222,   226,   227,   228,   272,   233,   234,   235,   241,
+     276,   236,   270,   274,   249,   247,   277,   278,   285,   232,
+     237,   238,   300,   254,   254,   304,   305,   307,   240,   242,
+     244,   245,   310,   312,   330,   331,   332,   335,   193,   248,
+     202,   259,   275,   281,   215,   213,   214,   261,   209,   221,
+     260,   208,   220,   207,   306,   273,   219,   254,   309,   311,
+     297,   308,   328,   339,     0,     0,   337,   336,   338,     0,
+     340,     0,   290,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   285
+       0,     0,   290
   };
 
   const short int
   D2Parser::yycheck_[] =
   {
-      50,    48,    52,     5,    54,     7,    56,     9,    13,    14,
-      23,     0,    10,    11,    12,     3,    13,    14,    15,    16,
-       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,
+      50,    48,    52,     5,    54,     7,    56,     9,    14,    15,
+      24,     3,    10,    11,    12,    13,     8,    14,    15,    16,
+      17,    27,     3,    20,     0,    22,    23,     8,     3,    25,
+      26,    28,     3,     8,    32,     6,     5,    51,    34,    29,
+      30,    31,     7,    36,    34,    51,    39,    40,    41,    51,
+      52,    53,    54,    51,    51,    51,    34,    35,     7,    37,
+      38,    51,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,     3,     3,    51,     3,     3,     8,     8,     3,     8,
+       8,     3,     3,     8,     3,     3,     8,     8,     3,     8,
+       8,   138,   139,     8,     3,    18,    19,     3,   148,     8,
+       6,     3,     3,     7,     6,     6,     5,     7,     5,     7,
+      51,     7,     7,     7,   164,     6,   166,     3,     8,     4,
+       3,     3,   172,     4,   174,     4,     4,     4,     4,     3,
+     180,     6,   182,     6,    51,     4,     4,     4,     4,     4,
+       4,   188,   189,   190,    52,    52,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,    52,
+      52,     4,     7,     7,    51,     4,     7,     7,     5,     5,
+       5,    51,     6,     4,    33,   222,     5,     7,     6,    21,
+      51,    51,     4,   233,   234,     4,     4,     4,    51,    51,
+      51,    51,     5,     7,     4,     4,     4,     4,   148,   226,
+     158,   234,   267,   277,   176,   172,   174,   241,   168,   183,
+     235,   166,   182,   164,    52,   264,   180,   267,    51,    51,
+     283,   302,   316,   333,    -1,    -1,    52,    54,    52,    -1,
+      51,    -1,   282,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   297
+      -1,    -1,   302
   };
 
   const unsigned char
   D2Parser::yystos_[] =
   {
-       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
+       0,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+       0,     5,     7,     9,    51,    52,    53,    54,    66,    67,
+      68,    72,     7,    77,     7,    83,     7,   143,     5,   137,
+       7,   111,     5,   105,     7,   126,     5,   121,    73,    69,
+      78,    84,   144,   138,   112,   106,   127,   122,    66,    74,
+      75,    51,    70,    71,    10,    11,    12,    13,    32,    51,
+      76,    79,    80,    81,   154,   156,   158,   160,    14,    15,
+      16,    17,    20,    22,    23,    28,    76,    85,    86,    87,
+      89,    90,    91,    94,    96,    98,   135,    29,    30,    31,
+      34,    76,   145,   146,   147,   149,   151,   152,     7,   139,
+     140,   141,    25,    26,    34,    76,   113,   114,   115,   117,
+     119,     7,   107,   108,   109,    14,    15,    27,    76,   128,
+     129,   130,   132,   134,     7,   123,   124,     6,     3,     4,
+       8,     3,   155,   157,   159,    82,   161,     4,     3,     8,
+      88,     4,     4,    92,    95,    97,    99,   136,     3,     8,
+     150,     4,   153,   148,     3,     8,   142,     6,     3,   118,
+     120,   116,     3,     8,   110,     6,     3,   133,     4,   131,
+       3,     8,   125,     3,     6,    66,    66,    51,     4,     4,
+       4,     4,     4,    80,     4,    52,    52,     4,     4,     4,
+       4,     4,    86,     4,    52,     4,     4,   146,   145,   141,
+       4,     4,     4,   114,   113,   109,     4,    52,     4,   129,
+     128,   124,     4,    66,    66,    66,     7,     7,    51,    18,
+      19,    93,    21,     7,     7,     5,    51,    51,    51,     8,
+      51,     5,    51,     8,    51,    51,     8,    66,    85,    33,
+     162,   163,   164,    24,    76,   100,   101,   102,   103,   100,
+     139,   123,     8,   165,     3,     8,   104,     3,     8,     8,
+       6,     6,     4,   163,     4,   102,     5,     5,     7,   166,
+     167,   107,   168,     3,     6,     6,    34,    35,    37,    38,
+      76,   169,   170,   171,   173,   174,   176,   167,   172,   177,
+       4,   175,     3,     8,     4,     4,    52,     4,   170,    51,
+       5,    51,     7,   178,   179,   180,     3,     6,    36,    39,
+      40,    41,   181,   182,   183,   185,   186,   187,   179,   184,
+       4,     4,     4,     3,     8,     4,    54,    52,    52,   182,
+      51
   };
 
   const unsigned char
   D2Parser::yyr1_[] =
   {
-       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
+       0,    55,    57,    56,    58,    56,    59,    56,    60,    56,
+      61,    56,    62,    56,    63,    56,    64,    56,    65,    56,
+      66,    66,    66,    66,    66,    66,    66,    67,    69,    68,
+      70,    70,    71,    71,    73,    72,    74,    74,    75,    75,
+      76,    78,    77,    79,    79,    80,    80,    80,    80,    80,
+      80,    82,    81,    84,    83,    85,    85,    86,    86,    86,
+      86,    86,    86,    86,    86,    86,    88,    87,    89,    90,
+      92,    91,    93,    93,    95,    94,    97,    96,    99,    98,
+     100,   100,   101,   101,   102,   102,   104,   103,   106,   105,
+     107,   107,   108,   108,   110,   109,   112,   111,   113,   113,
+     114,   114,   114,   114,   116,   115,   118,   117,   120,   119,
+     122,   121,   123,   123,   125,   124,   127,   126,   128,   128,
+     129,   129,   129,   129,   131,   130,   133,   132,   134,   136,
+     135,   138,   137,   139,   139,   140,   140,   142,   141,   144,
+     143,   145,   145,   146,   146,   146,   146,   146,   148,   147,
+     150,   149,   151,   153,   152,   155,   154,   157,   156,   159,
+     158,   161,   160,   162,   162,   163,   165,   164,   166,   166,
+     168,   167,   169,   169,   170,   170,   170,   170,   170,   172,
+     171,   173,   175,   174,   177,   176,   178,   178,   180,   179,
+     181,   181,   182,   182,   182,   182,   184,   183,   185,   186,
+     187
   };
 
   const unsigned char
@@ -2117,21 +2140,22 @@ namespace isc { namespace d2 {
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        0,     1,     3,     5,     0,     4,     0,     1,     1,     3,
        2,     0,     4,     1,     3,     1,     1,     1,     1,     1,
-       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     3,     3,     0,
-       4,     1,     1,     0,     4,     0,     6,     0,     6,     0,
-       1,     1,     3,     1,     1,     0,     6,     0,     4,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     6,     0,
-       4,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     1,     0,     4,     0,     4,     3,     0,     6,
-       0,     4,     0,     1,     1,     3,     0,     4,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
-       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,     1,
-       1,     1,     1,     0,     4,     3,     3,     3
+       1,     0,     6,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     3,     3,
+       0,     4,     1,     1,     0,     4,     0,     6,     0,     6,
+       0,     1,     1,     3,     1,     1,     0,     6,     0,     4,
+       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       0,     4,     1,     3,     0,     4,     0,     4,     1,     3,
+       1,     1,     1,     1,     0,     4,     0,     4,     3,     0,
+       6,     0,     4,     0,     1,     1,     3,     0,     4,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     3,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     6,     1,     3,     1,     0,     6,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     0,
+       4,     3,     0,     4,     0,     6,     1,     3,     0,     4,
+       1,     3,     1,     1,     1,     1,     0,     4,     3,     3,
+       3
   };
 
 
@@ -2143,27 +2167,28 @@ namespace isc { namespace d2 {
   {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"Dhcp4\"",
-  "\"DhcpDdns\"", "\"ip-address\"", "\"port\"", "\"dns-server-timeout\"",
-  "\"ncr-protocol\"", "\"UDP\"", "\"TCP\"", "\"ncr-format\"", "\"JSON\"",
-  "\"forward-ddns\"", "\"reverse-ddns\"", "\"ddns-domains\"",
-  "\"key-name\"", "\"dns-servers\"", "\"hostname\"", "\"tsig-keys\"",
-  "\"algorithm\"", "\"digest-bits\"", "\"secret\"", "\"Logging\"",
-  "\"loggers\"", "\"name\"", "\"output_options\"", "\"output\"",
-  "\"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",
+  "\"Control-agent\"", "\"DhcpDdns\"", "\"ip-address\"", "\"port\"",
+  "\"dns-server-timeout\"", "\"ncr-protocol\"", "\"UDP\"", "\"TCP\"",
+  "\"ncr-format\"", "\"JSON\"", "\"forward-ddns\"", "\"reverse-ddns\"",
+  "\"ddns-domains\"", "\"key-name\"", "\"dns-servers\"", "\"hostname\"",
+  "\"tsig-keys\"", "\"algorithm\"", "\"digest-bits\"", "\"secret\"",
+  "\"Logging\"", "\"loggers\"", "\"name\"", "\"output_options\"",
+  "\"output\"", "\"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",
@@ -2175,39 +2200,40 @@ namespace isc { namespace d2 {
   "sub_tsig_key", "$@35", "tsig_key_params", "tsig_key_param",
   "tsig_key_name", "$@36", "tsig_key_algorithm", "$@37",
   "tsig_key_digest_bits", "tsig_key_secret", "$@38", "dhcp6_json_object",
-  "$@39", "dhcp4_json_object", "$@40", "logging_object", "$@41",
-  "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_list", "output_params", "output", "$@48", "flush",
-  "maxsize", "maxver", YY_NULLPTR
+  "$@39", "dhcp4_json_object", "$@40", "control_agent_json_object", "$@41",
+  "logging_object", "$@42", "logging_params", "logging_param", "loggers",
+  "$@43", "loggers_entries", "logger_entry", "$@44", "logger_params",
+  "logger_param", "name", "$@45", "debuglevel", "severity", "$@46",
+  "output_options_list", "$@47", "output_options_list_content",
+  "output_entry", "$@48", "output_params_list", "output_params", "output",
+  "$@49", "flush", "maxsize", "maxver", YY_NULLPTR
   };
 
 #if D2_PARSER_DEBUG
   const unsigned short int
   D2Parser::yyrline_[] =
   {
-       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
+       0,   117,   117,   117,   118,   118,   119,   119,   120,   120,
+     121,   121,   122,   122,   123,   123,   124,   124,   125,   125,
+     133,   134,   135,   136,   137,   138,   139,   142,   147,   147,
+     159,   160,   163,   167,   174,   174,   181,   182,   185,   189,
+     200,   210,   210,   222,   223,   227,   228,   229,   230,   231,
+     232,   237,   237,   247,   247,   255,   256,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   271,   271,   279,   287,
+     296,   296,   304,   305,   308,   308,   316,   316,   326,   326,
+     336,   337,   340,   341,   344,   345,   350,   350,   360,   360,
+     367,   368,   371,   372,   375,   375,   383,   383,   390,   391,
+     394,   395,   396,   397,   401,   401,   413,   413,   425,   425,
+     435,   435,   442,   443,   446,   446,   454,   454,   461,   462,
+     465,   466,   467,   468,   471,   471,   483,   483,   491,   505,
+     505,   515,   515,   522,   523,   526,   527,   530,   530,   538,
+     538,   547,   548,   551,   552,   553,   554,   555,   558,   558,
+     570,   570,   581,   589,   589,   604,   604,   611,   611,   618,
+     618,   630,   630,   643,   644,   648,   652,   652,   664,   665,
+     669,   669,   677,   678,   681,   682,   683,   684,   685,   688,
+     688,   696,   700,   700,   708,   708,   718,   719,   722,   722,
+     730,   731,   734,   735,   736,   737,   740,   740,   748,   753,
+     758
   };
 
   // Print the state stack on the debug stream.
@@ -2242,8 +2268,8 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy" // lalr1.cc:1167
 } } // isc::d2
-#line 2246 "d2_parser.cc" // lalr1.cc:1167
-#line 754 "d2_parser.yy" // lalr1.cc:1168
+#line 2272 "d2_parser.cc" // lalr1.cc:1167
+#line 763 "d2_parser.yy" // lalr1.cc:1168
 
 
 void
index e8e7b72e657965ce2d3c948b8665c0b3f606cd8f..6e158a689292c109151fbcfe39d1fcc04ff7cb6d 100644 (file)
@@ -351,48 +351,49 @@ namespace isc { namespace d2 {
         TOKEN_NULL_TYPE = 264,
         TOKEN_DHCP6 = 265,
         TOKEN_DHCP4 = 266,
-        TOKEN_DHCPDDNS = 267,
-        TOKEN_IP_ADDRESS = 268,
-        TOKEN_PORT = 269,
-        TOKEN_DNS_SERVER_TIMEOUT = 270,
-        TOKEN_NCR_PROTOCOL = 271,
-        TOKEN_UDP = 272,
-        TOKEN_TCP = 273,
-        TOKEN_NCR_FORMAT = 274,
-        TOKEN_JSON = 275,
-        TOKEN_FORWARD_DDNS = 276,
-        TOKEN_REVERSE_DDNS = 277,
-        TOKEN_DDNS_DOMAINS = 278,
-        TOKEN_KEY_NAME = 279,
-        TOKEN_DNS_SERVERS = 280,
-        TOKEN_HOSTNAME = 281,
-        TOKEN_TSIG_KEYS = 282,
-        TOKEN_ALGORITHM = 283,
-        TOKEN_DIGEST_BITS = 284,
-        TOKEN_SECRET = 285,
-        TOKEN_LOGGING = 286,
-        TOKEN_LOGGERS = 287,
-        TOKEN_NAME = 288,
-        TOKEN_OUTPUT_OPTIONS = 289,
-        TOKEN_OUTPUT = 290,
-        TOKEN_DEBUGLEVEL = 291,
-        TOKEN_SEVERITY = 292,
-        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
+        TOKEN_CONTROL_AGENT = 267,
+        TOKEN_DHCPDDNS = 268,
+        TOKEN_IP_ADDRESS = 269,
+        TOKEN_PORT = 270,
+        TOKEN_DNS_SERVER_TIMEOUT = 271,
+        TOKEN_NCR_PROTOCOL = 272,
+        TOKEN_UDP = 273,
+        TOKEN_TCP = 274,
+        TOKEN_NCR_FORMAT = 275,
+        TOKEN_JSON = 276,
+        TOKEN_FORWARD_DDNS = 277,
+        TOKEN_REVERSE_DDNS = 278,
+        TOKEN_DDNS_DOMAINS = 279,
+        TOKEN_KEY_NAME = 280,
+        TOKEN_DNS_SERVERS = 281,
+        TOKEN_HOSTNAME = 282,
+        TOKEN_TSIG_KEYS = 283,
+        TOKEN_ALGORITHM = 284,
+        TOKEN_DIGEST_BITS = 285,
+        TOKEN_SECRET = 286,
+        TOKEN_LOGGING = 287,
+        TOKEN_LOGGERS = 288,
+        TOKEN_NAME = 289,
+        TOKEN_OUTPUT_OPTIONS = 290,
+        TOKEN_OUTPUT = 291,
+        TOKEN_DEBUGLEVEL = 292,
+        TOKEN_SEVERITY = 293,
+        TOKEN_FLUSH = 294,
+        TOKEN_MAXSIZE = 295,
+        TOKEN_MAXVER = 296,
+        TOKEN_TOPLEVEL_JSON = 297,
+        TOKEN_TOPLEVEL_DHCPDDNS = 298,
+        TOKEN_SUB_DHCPDDNS = 299,
+        TOKEN_SUB_TSIG_KEY = 300,
+        TOKEN_SUB_TSIG_KEYS = 301,
+        TOKEN_SUB_DDNS_DOMAIN = 302,
+        TOKEN_SUB_DDNS_DOMAINS = 303,
+        TOKEN_SUB_DNS_SERVER = 304,
+        TOKEN_SUB_DNS_SERVERS = 305,
+        TOKEN_STRING = 306,
+        TOKEN_INTEGER = 307,
+        TOKEN_FLOAT = 308,
+        TOKEN_BOOLEAN = 309
       };
     };
 
@@ -547,6 +548,10 @@ namespace isc { namespace d2 {
     symbol_type
     make_DHCP4 (const location_type& l);
 
+    static inline
+    symbol_type
+    make_CONTROL_AGENT (const location_type& l);
+
     static inline
     symbol_type
     make_DHCPDDNS (const location_type& l);
@@ -920,12 +925,12 @@ namespace isc { namespace d2 {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 247,     ///< Last index in yytable_.
-      yynnts_ = 131,  ///< Number of nonterminal symbols.
+      yylast_ = 252,     ///< Last index in yytable_.
+      yynnts_ = 133,  ///< Number of nonterminal symbols.
       yyfinal_ = 20, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 54  ///< Number of tokens.
+      yyntokens_ = 55  ///< Number of tokens.
     };
 
 
@@ -972,9 +977,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,    51,    52,    53
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54
     };
-    const unsigned int user_token_number_max_ = 308;
+    const unsigned int user_token_number_max_ = 309;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1007,24 +1012,24 @@ namespace isc { namespace d2 {
   {
       switch (other.type_get ())
     {
-      case 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1045,24 +1050,24 @@ namespace isc { namespace d2 {
     (void) v;
       switch (this->type_get ())
     {
-      case 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1142,24 +1147,24 @@ namespace isc { namespace d2 {
     // Type destructor.
     switch (yytype)
     {
-      case 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1186,24 +1191,24 @@ namespace isc { namespace d2 {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 65: // value
-      case 92: // ncr_protocol_value
+      case 66: // value
+      case 93: // ncr_protocol_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 53: // "boolean"
+      case 54: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 52: // "floating point"
+      case 53: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 51: // "integer"
+      case 52: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 50: // "constant string"
+      case 51: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1267,7 +1272,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,   306,   307,   308
+     305,   306,   307,   308,   309
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1332,6 +1337,12 @@ namespace isc { namespace d2 {
     return symbol_type (token::TOKEN_DHCP4, l);
   }
 
+  D2Parser::symbol_type
+  D2Parser::make_CONTROL_AGENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+  }
+
   D2Parser::symbol_type
   D2Parser::make_DHCPDDNS (const location_type& l)
   {
@@ -1587,7 +1598,7 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy" // lalr1.cc:377
 } } // isc::d2
-#line 1591 "d2_parser.h" // lalr1.cc:377
+#line 1602 "d2_parser.h" // lalr1.cc:377
 
 
 
index 89f0aa99813acf29b4f6f180c9853201c60c572d..688788769876146505471aab187a47f5358a0bcb 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201705171457
+// Generated 201707141118
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 813a7f7723ffdad881c747b843ed48fdc473b9c2..37a87bb18525f978299fd70f385b4e5ad810c295 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201705171457
+// Generated 201707141118
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 899a5511a59cfa436c648f2a4b8115ca3c154cae..ef39e9e9cfb7b1f30d79e903798edccb5fa43933 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201705171457
+// Generated 201707141118
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index 56167230854731960b2a84fc1075f2702cbffbd3..a9bbe73f52182b90eeebe8a06d6bc19e19fe83d2 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 152
-#define YY_END_OF_BUFFER 153
+#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
@@ -700,142 +700,143 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1212] =
+static const flex_int16_t yy_accept[1226] =
     {   0,
-      145,  145,    0,    0,    0,    0,    0,    0,    0,    0,
-      153,  151,   10,   11,  151,    1,  145,  142,  145,  145,
-      151,  144,  143,  151,  151,  151,  151,  151,  138,  139,
-      151,  151,  151,  140,  141,    5,    5,    5,  151,  151,
-      151,   10,   11,    0,    0,  134,    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,    0,    1,  145,
-      145,    0,  144,  145,    3,    2,    6,    0,  145,    0,
-        0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
+        0,    0,    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,
 
-      135,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  137,    0,    0,    0,    0,    0,
+        0,  136,    0,    0,    0,    0,    0,    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,    0,
-        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  136,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
+        8,    0,    0,    0,    0,    0,    0,    0,    0,    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,   51,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   51,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      150,  148,    0,  147,  146,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  116,    0,  115,    0,    0,   57,
-        0,    0,    0,    0,    0,    0,    0,    0,   26,    0,
+        0,    0,    0,  151,  149,    0,  148,  147,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
+      115,    0,    0,   57,    0,    0,    0,    0,    0,    0,
 
+        0,    0,   26,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   55,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   55,    0,    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,    0,    0,    0,   16,    0,    0,    0,  149,  146,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  117,
-        0,    0,  119,    0,    0,    0,    0,    0,    0,    0,
-       58,    0,    0,    0,    0,   44,    0,    0,    0,    0,
-
-        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   29,    0,    0,    0,    0,    0,    0,    0,    0,
+       15,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
+        0,    0,  150,  147,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  117,    0,    0,  119,    0,    0,
+        0,    0,    0,    0,    0,   58,    0,    0,    0,    0,
+
+       44,    0,    0,    0,    0,    0,   73,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   29,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   46,    0,   30,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   46,    0,   30,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   71,   22,    0,   27,    0,    0,    0,    0,
-        0,    0,    0,   12,  124,    0,  121,    0,  120,    0,
-        0,    0,   83,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   71,   22,    0,
+       27,    0,    0,    0,    0,    0,    0,    0,    0,   12,
+      124,    0,  121,    0,  120,    0,    0,    0,   83,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   65,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   65,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   24,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   45,    0,    0,    0,    0,    0,
-        0,    0,    0,   84,    0,    0,    0,    0,    0,    0,
-        0,   79,    0,    0,    0,    0,    7,    0,    0,  122,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   24,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       45,    0,    0,    0,    0,    0,    0,    0,    0,   84,
+        0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
+        0,    0,    7,    0,    0,  122,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,   67,    0,    0,    0,    0,    0,    0,   63,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   67,
+        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   48,    0,    0,
+        0,    0,    0,    0,    0,    0,   60,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       48,    0,    0,    0,    0,    0,    0,    0,   60,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       77,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   88,   61,    0,    0,    0,   66,
-       23,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       31,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   88,   61,    0,    0,    0,   66,   23,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   31,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       40,    0,    0,    0,    0,    0,  125,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   40,    0,
+        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   54,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,    0,    0,    0,   34,    0,
+        0,    0,   54,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   78,    0,    0,    0,    0,   34,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   28,    0,    0,    0,    0,   21,    0,
+        0,    0,   28,    0,    0,    0,    0,   21,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   68,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       68,    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,  100,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   18,    0,    0,
         0,    0,    0,    0,  105,    0,    0,  103,    0,    0,
-        0,    0,    0,    0,    0,  128,    0,    0,    0,    0,
-       76,    0,    0,    0,    0,   80,   64,    0,    0,    0,
+        0,    0,    0,    0,    0,  129,    0,    0,    0,    0,
+        0,   76,    0,    0,    0,    0,   80,   64,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       74,    0,   17,    0,   85,    0,    0,    0,    0,    0,
-      109,    0,    0,    0,   41,    0,    0,    0,    0,   87,
+        0,   74,    0,   17,    0,   85,    0,    0,    0,    0,
 
-       25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  109,    0,    0,    0,   41,    0,    0,    0,    0,
+       87,   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,   82,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  131,   42,   56,
-        0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
-        0,    0,  106,    0,  104,   99,   98,    0,    0,    0,
-        0,    0,  118,    0,    0,   70,    0,    0,    0,    0,
-        0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   50,    0,    0,   32,    0,    0,    0,    0,
-
-      108,    0,    0,    0,    0,   52,   38,    0,   81,    0,
-        0,   72,    0,    0,   47,    0,  126,    0,    0,    0,
+        0,    0,    0,   82,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  132,
+       42,   56,    0,    0,    0,    0,    0,    0,    0,    0,
+       37,    0,    0,    0,  106,    0,  104,   99,   98,    0,
+        0,    0,    0,    0,    0,  118,    0,    0,   70,    0,
+        0,    0,    0,    0,    0,   96,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,   50,    0,    0,   32,    0,
+        0,    0,    0,  108,    0,    0,    0,    0,   52,   38,
+        0,   81,    0,    0,   72,    0,    0,   47,    0,  127,
+        0,  126,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  134,
+       69,    0,   35,   97,    0,    0,  130,  101,    0,    0,
+        0,    0,    0,    0,   20,    0,   19,    0,  107,    0,
+        0,   62,    0,    0,    0,    0,    0,    0,    0,    0,
+
+       36,    0,    0,    0,   33,    0,    0,    0,    0,    0,
+        0,   86,    0,    0,  131,    0,    0,    0,    0,    0,
+        0,    0,    0,  133,    0,  128,  123,    0,    0,   14,
+        0,    0,  114,    0,    0,    0,    0,   94,    0,    0,
+        0,    0,    0,   53,    0,    0,    0,    0,    0,    0,
+        0,   13,    0,    0,    0,  102,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   93,    0,  111,    0,    0,
+        0,  110,    0,    0,    0,   92,    0,    0,    0,  113,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  133,   69,    0,   35,   97,
-        0,    0,  129,  101,    0,    0,    0,    0,    0,    0,
-       20,    0,   19,    0,  107,    0,    0,   62,    0,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
-       33,    0,    0,    0,    0,    0,    0,   86,    0,    0,
-
-      130,    0,    0,    0,    0,    0,    0,    0,    0,  132,
-        0,  127,  123,    0,    0,   14,    0,    0,  114,    0,
-        0,    0,    0,   94,    0,    0,    0,    0,    0,   53,
-        0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
-        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   93,    0,  111,    0,    0,    0,  110,    0,    0,
-        0,   92,    0,    0,    0,  113,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
-        0,    0,   90,   95,   39,    0,    0,    0,   89,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
 
-        0,    0,    0,    0,    0,    0,   59,    0,    0,   91,
-        0
+        0,    0,    0,    0,    0,    0,   90,   95,   39,    0,
+        0,    0,   89,    0,    0,    0,    0,    0,    0,    0,
+       59,    0,    0,   91,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -882,486 +883,489 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1224] =
+static const flex_int16_t yy_base[1238] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1573, 1574,   32, 1569,  141,    0,  201, 1574,  206,   88,
-       11,  213, 1574, 1551,  114,   25,    2,    6, 1574, 1574,
-       73,   11,   17, 1574, 1574, 1574,  104, 1557, 1512,    0,
-     1549,  107, 1564,  217,  247, 1574, 1508,  185, 1514,   93,
-       58, 1506,   91,  209,  200,   14,  273,  190, 1505,  181,
-      208,  200,  209, 1514,   66,  231, 1513,  267,  221,  295,
-      268,  280, 1496,   78,  287,  317,  297, 1515,    0,  333,
-      341,  353,  358,  361, 1574,    0, 1574,  376,  379,  208,
-      219,  316,  332,  342,  324, 1574, 1512, 1551, 1574,  373,
-
-     1574,  390, 1540,  344, 1509,  369,  353, 1504,  362,  369,
-      366,  373,  375, 1547,    0,  441,  370, 1491, 1493, 1489,
-     1497,   74, 1493, 1482, 1483,   89, 1499, 1482, 1491, 1491,
-      285, 1482,  186, 1483,  357, 1528, 1532, 1474, 1525, 1467,
-     1490, 1487, 1487, 1481,  217, 1474, 1467, 1472, 1466,  376,
-     1477, 1462, 1461, 1475,  355, 1461,  360, 1477,  367,  437,
-      377, 1474, 1475, 1473, 1455, 1457,  412, 1449, 1466, 1458,
-        0,  406,  391,  404,  411,  420,  412, 1457, 1574,    0,
-     1500,  440, 1451,  416,  440, 1459,  447, 1502,  452, 1501,
-      444, 1500, 1574,  488, 1499,  472, 1460, 1440, 1456, 1453,
-
-     1452,  224, 1493, 1487, 1453, 1432, 1440, 1435, 1449, 1445,
-     1433, 1445, 1445, 1436, 1420, 1424, 1437, 1437, 1429, 1419,
-     1437, 1574, 1432, 1435, 1416, 1415, 1465, 1414, 1424, 1427,
-      458, 1423, 1411, 1422, 1458, 1405, 1461, 1414,    9, 1404,
-     1420, 1401, 1400, 1406, 1397, 1396, 1403, 1405, 1450, 1408,
-     1407, 1401,  268, 1408, 1403, 1395, 1401, 1401, 1382, 1398,
-     1391, 1398, 1386, 1379, 1393, 1434, 1395, 1377, 1385,  473,
-     1574, 1574,  480, 1574, 1574, 1372,    0,  455,  440,  503,
-      481, 1429, 1382,  482, 1574, 1427, 1574, 1421,  530, 1574,
-      491, 1363, 1419, 1365, 1371, 1421, 1378,  415, 1574, 1376,
-
-     1418, 1373, 1370,  511, 1376, 1414, 1408, 1363, 1358, 1355,
-     1404, 1363, 1352, 1401, 1349,  536, 1363, 1348, 1361, 1348,
-     1358, 1353, 1360, 1355, 1351,  464, 1349, 1352, 1347, 1343,
-     1391,  482, 1385, 1574, 1337, 1336, 1329, 1331, 1335, 1324,
-     1337,  532, 1382, 1337, 1334, 1338, 1574, 1336, 1325, 1325,
-     1337, 1319, 1311, 1312, 1333, 1315, 1327, 1326, 1312, 1324,
-     1323, 1322, 1363, 1362, 1574, 1306,  551, 1319, 1574, 1574,
-     1318,    0, 1307, 1299,  505, 1356, 1355, 1313, 1353, 1574,
-     1301, 1351, 1574,  528,  585,  506, 1350, 1306, 1302, 1290,
-     1574, 1306, 1305, 1292, 1291, 1574, 1293, 1290,  501, 1288,
-
-     1290, 1574, 1298, 1295, 1280, 1293, 1288,  555, 1295, 1277,
-     1326, 1574, 1275, 1291, 1323, 1286, 1283, 1284, 1286, 1318,
-     1271, 1266, 1265, 1314, 1260, 1275, 1253, 1260, 1265, 1313,
-     1574, 1260, 1256, 1254, 1258, 1265, 1250, 1260, 1263, 1252,
-     1247, 1574, 1302, 1574, 1246, 1257, 1294, 1241, 1246, 1255,
-     1249, 1253, 1293, 1287, 1251, 1231, 1234, 1233, 1241, 1229,
-     1285, 1227, 1574, 1574, 1232, 1574, 1242, 1276, 1238,    0,
-     1222, 1239, 1277, 1574, 1574, 1225, 1574, 1231, 1574,  533,
-      536,  559, 1574, 1228, 1216, 1267, 1214, 1213, 1220, 1213,
-     1225, 1224, 1224, 1212, 1253, 1220, 1212, 1255, 1201, 1217,
-
-     1216, 1574, 1201, 1198, 1212, 1204, 1210, 1201, 1209, 1194,
-     1210, 1192, 1206, 1204, 1187, 1181, 1186, 1201, 1198, 1199,
-     1196, 1237, 1194, 1574, 1180, 1182, 1191, 1227, 1226,  543,
-     1189, 1172, 1173, 1170, 1574, 1184, 1163, 1184, 1181, 1173,
-     1216, 1170, 1214, 1574, 1161, 1175, 1178, 1210, 1209, 1156,
-     1207, 1574,  229, 1169, 1158, 1160, 1574, 1166, 1156, 1574,
-     1150, 1205,  549,  525, 1158, 1154, 1197,  536, 1196, 1195,
-     1194, 1148, 1138, 1191, 1144, 1154, 1188, 1151, 1145, 1132,
-     1140, 1183, 1187, 1144, 1143, 1144, 1137, 1126, 1139, 1142,
-     1137, 1138, 1135, 1134, 1137, 1132, 1173, 1172, 1122, 1112,
-
-     1120, 1168, 1574, 1167, 1116, 1108, 1109, 1122, 1109, 1574,
-     1109, 1118, 1117, 1117, 1157, 1100, 1109, 1102, 1113, 1090,
-     1094, 1145, 1092, 1102, 1142, 1089,  531,  544, 1083,  556,
-     1574, 1144, 1102, 1091, 1095, 1085, 1097, 1138, 1574, 1132,
-      555, 1085, 1093, 1088, 1084, 1091, 1074, 1077, 1073, 1090,
-     1085, 1073, 1069, 1076, 1070, 1122, 1079, 1067, 1081, 1069,
-     1574, 1077, 1075, 1066, 1075, 1071, 1112, 1054, 1054, 1067,
-     1052, 1107, 1049, 1050, 1574, 1574, 1058, 1061, 1064, 1574,
-     1574, 1063, 1048, 1040,  570, 1046, 1044, 1091, 1040, 1094,
-     1574, 1039, 1041, 1041, 1033, 1089, 1042, 1030, 1024, 1035,
-
-     1044, 1037, 1029, 1029, 1028, 1026, 1026, 1077, 1038, 1013,
-     1574, 1069, 1016, 1029, 1028, 1013, 1574,  583,  556, 1029,
-       17,   12,   94,  260,  290,  346,  349,  395,  425,  430,
-      565,  524,  522, 1574,  535,  555,  542,  568,  565,  610,
-      578,  562,  563, 1574,  581,  564,  629,  565, 1574,  584,
-      571,  589,  627,  587,  578,  597,  596,  582,  597,  589,
-      585,  603,  588, 1574,  596,  602,  597,  648, 1574,  599,
-      604,  598,  610,  604,  603,  656,  602,  602,  659,  605,
-     1574,  611,  609,  608,  622,  623,  628,  667,  641,  646,
-      620,  620,  672,  617, 1574,  624,  629,  636,  677,  678,
-
-      627, 1574,  623,  626,  625,  645,  642,  648,  649,  635,
-      643,  652,  632,  653,  693, 1574,  648,  695,  698,  660,
-      663,  651,  647,  654,  705,  654,  652,  670,  709,  661,
-      665,  663,  661,  714,  715,  711,  671, 1574,  676,  669,
-      678,  666,  676,  672, 1574,  667,  668, 1574,  669,  685,
-      686,  687,  669,  674,  692, 1574,  714,  705,  677,  698,
-     1574,  681,  696,  688,  692, 1574, 1574,  702,  737,  686,
-      739,  688,  746,  691,  702,  694,  700,  696,  714,  715,
-     1574,  713, 1574,  715, 1574,  719,  709,  702,  714,  756,
-     1574,  714,  764,  765, 1574,  766,  715,  722,  764, 1574,
-
-     1574,  714,  714,  717,  731,  718,  775,  734,  772,  778,
-      728,  780,  781,  782,  743,  727,  739,  744,  759,  788,
-      748,  740,  791,  740,  736,  752,  757,  739,  797,  752,
-      757, 1574,  758,  751,  760,  761,  758,  748,  750,  807,
-      756,  753,  810,  806,  749,  764,  814, 1574, 1574, 1574,
-      765,  775,  760,  761,  820,  822,  768,  824, 1574,  774,
-      776,  827, 1574,  791, 1574, 1574, 1574,  781,  831,  782,
-      834,  816, 1574,  794,  795, 1574,  782,  782,  785,  785,
-      786,  782, 1574,  804,  790,  791,  806,  806,  809,  809,
-      806,  811, 1574,  803,  813, 1574,  810,  815,  817,  814,
-
-     1574,  805,  811,  810,  821, 1574, 1574,  860, 1574,  809,
-      815, 1574,  818,  831, 1574,  828, 1574,  825,  848,  868,
-      874,  875,  819,  877,  878,  833,  827,  881,  882,  878,
-      843,  839,  881,  831,  836,  889,  847,  891,  851,  893,
-      856,  845,  896,  840,  857,  857,  841,  897,  862,  862,
-      859,  906,  866,  879,  866, 1574, 1574,  910, 1574, 1574,
-      859,  870, 1574, 1574,  860,  909,  854,  859,  917,  867,
-     1574,  873, 1574,  920, 1574,  865,  880, 1574,  918,  886,
-      879,  888,  876,  886,  929,  880, 1574,  931,  932,  879,
-     1574,  883,  935,  882,  881,  939,  894, 1574,  936,  898,
-
-     1574,  901,  944,  887,  889,  886,  902,  911,  950, 1574,
-      946, 1574, 1574,  911,  948, 1574,  902,  909, 1574,  906,
-      911,  958,  903, 1574,  907,  919,  962,  906,  914, 1574,
-      925,  915,  914,  928,  919,  928,  930, 1574,  972,  932,
-      974, 1574,  970,  934,  915,  978,  937,  938,  939,  982,
-      941, 1574,  946, 1574,  928,  986,  947, 1574,  933,  933,
-      935, 1574,  940,  935,  947, 1574,  945,  949,  940,  992,
-      941,  957,  950,  959,  950,  957,  944,  959, 1006,  965,
-      952,  968,  959,  973,  969, 1574, 1013, 1014, 1015,  972,
-      971,  972, 1574, 1574, 1574, 1019,  963,  979, 1574, 1017,
-
-      968,  967,  969,  980, 1027,  978, 1574,  987, 1030, 1574,
-     1574, 1036, 1041, 1046, 1051, 1056, 1061, 1066, 1069, 1043,
-     1048, 1050, 1063
+     1588, 1589,   32, 1584,  141,    0,  201, 1589,  206,   88,
+       11,  213, 1589, 1566,  114,   25,    2,    6, 1589, 1589,
+       73,   11,   17, 1589, 1589, 1589,  104, 1572, 1527,    0,
+     1564,  107, 1579,  217,  247, 1589, 1523,  185, 1522, 1528,
+       93,   58, 1520,   91,  211,  195,   14,  273,  195, 1519,
+      181,  275,  202,  209, 1528,   66,  188, 1527,  232,  219,
+      296,  282,  207, 1510,   78,  290,  310,  304, 1529,    0,
+      348,  360,  368,  374,  377, 1589,    0, 1589,  301,  353,
+      223,  295,  196,  300,  351,  210, 1589, 1526, 1565, 1589,
+
+      319, 1589,  388, 1554,  315, 1512, 1522,  358,  301, 1517,
+      333,  365,  359,  368,  241, 1560,    0,  439,  365, 1504,
+     1506, 1502, 1510,   74, 1506, 1495, 1496,   89, 1512, 1495,
+     1504, 1504,  361, 1495,  362, 1496,  354, 1541, 1545, 1487,
+     1538, 1480, 1503, 1500, 1500, 1494,  348, 1487, 1480, 1485,
+     1479,  367, 1490, 1475, 1474, 1488,  356, 1474,  377, 1490,
+      286,  435,  379, 1487, 1488, 1486, 1468, 1470,  382, 1462,
+     1479, 1471,    0,  385,  401,  418,  408,  419,  425, 1470,
+     1589,    0, 1513,  438, 1460, 1463,  433,  439, 1471,  443,
+     1514,  450, 1513,  442, 1512, 1589,  486, 1511,  472, 1472,
+
+     1452, 1468, 1465, 1464,  414, 1505, 1499, 1465, 1444, 1452,
+     1447, 1461, 1457, 1445, 1457, 1457, 1448, 1432, 1436, 1449,
+     1449, 1441, 1431, 1449, 1589, 1444, 1447, 1428, 1427, 1477,
+     1426, 1436, 1439,  478, 1435, 1423, 1434, 1470, 1417, 1473,
+     1426,    9, 1416, 1432, 1413, 1412, 1418, 1409, 1408, 1415,
+     1417, 1462, 1420, 1419, 1413,  448, 1420, 1415, 1407, 1413,
+     1413, 1394, 1410, 1403, 1410, 1398, 1391, 1405, 1446, 1407,
+     1389, 1397,  479, 1589, 1589,  480, 1589, 1589, 1384,    0,
+      461,  389, 1386,  502,  489, 1440, 1393,  486, 1589, 1438,
+     1589, 1432,  534, 1589,  476, 1374, 1430, 1376, 1382, 1432,
+
+     1389,  477, 1589, 1387, 1429, 1384, 1381,  509, 1387, 1425,
+     1419, 1374, 1369, 1366, 1415, 1374, 1363, 1412, 1360,  530,
+     1374, 1359, 1372, 1359, 1369, 1364, 1371, 1366, 1362,  485,
+     1360, 1363, 1358, 1354, 1402,  480, 1396, 1589, 1348, 1347,
+     1340, 1342, 1346, 1335, 1348,  359, 1393, 1348, 1345, 1349,
+     1589, 1347, 1336, 1336, 1348, 1330, 1322, 1323, 1344, 1326,
+     1338, 1337, 1323, 1335, 1334, 1333, 1374, 1373, 1589, 1317,
+      555, 1330, 1589, 1589, 1329,    0, 1318, 1310,  491, 1315,
+     1366, 1365, 1323, 1363, 1589, 1311, 1361, 1589,  532,  579,
+      508, 1360, 1316, 1312, 1300, 1589, 1316, 1315, 1302, 1301,
+
+     1589, 1303, 1300,  273, 1298, 1300, 1589, 1308, 1305, 1290,
+     1303, 1298,  557, 1305, 1287, 1336, 1589, 1285, 1301, 1333,
+     1296, 1293, 1294, 1296, 1328, 1281, 1276, 1275, 1324, 1270,
+     1285, 1263, 1270, 1275, 1323, 1589, 1270, 1266, 1264, 1268,
+     1275, 1260, 1270, 1273, 1262, 1257, 1589, 1312, 1589, 1256,
+     1267, 1304, 1251, 1256, 1265, 1259, 1263, 1303, 1297, 1261,
+     1241, 1244, 1243, 1251, 1239, 1295, 1237, 1589, 1589, 1242,
+     1589, 1252, 1286, 1248,    0, 1232, 1249, 1287, 1237, 1589,
+     1589, 1234, 1589, 1240, 1589,  538,  538,  561, 1589, 1237,
+     1225, 1276, 1223, 1222, 1229, 1222, 1234, 1233, 1233, 1221,
+
+     1262, 1229, 1221, 1264, 1210, 1226, 1225, 1589, 1210, 1207,
+     1221, 1213, 1219, 1210, 1218, 1203, 1219, 1201, 1215, 1213,
+     1196, 1190, 1195, 1210, 1207, 1208, 1205, 1246, 1203, 1589,
+     1189, 1191, 1200, 1236, 1235,  545, 1198, 1181, 1182, 1179,
+     1589, 1193, 1172, 1193, 1190, 1182, 1225, 1179, 1223, 1589,
+     1170, 1184, 1187, 1219, 1218, 1165, 1216, 1589,  559, 1178,
+     1167, 1169, 1589, 1175, 1165, 1589, 1210, 1158, 1213,  549,
+      527, 1166, 1162, 1205,  561, 1204, 1203, 1202, 1156, 1146,
+     1199, 1152, 1162, 1196, 1159, 1153, 1140, 1148, 1191, 1195,
+     1152, 1151, 1152, 1145, 1134, 1147, 1150, 1145, 1146, 1143,
+
+     1142, 1145, 1140, 1181, 1180, 1130, 1120, 1128, 1176, 1589,
+     1175, 1124, 1116, 1117, 1130, 1117, 1589, 1117, 1126, 1125,
+     1125, 1165, 1108, 1117, 1110, 1121, 1098, 1102, 1153, 1100,
+     1110, 1150, 1097,  538,  557, 1091,  554, 1589, 1152, 1110,
+     1099, 1103, 1093, 1105, 1108, 1145, 1589, 1139,  552, 1092,
+     1100, 1095, 1091, 1098, 1081, 1084, 1080, 1097, 1092, 1080,
+     1076, 1083, 1077, 1129, 1086, 1074, 1088, 1076, 1589, 1084,
+     1082, 1073, 1082, 1078, 1119, 1061, 1061, 1074, 1059, 1114,
+     1056, 1057, 1589, 1589, 1065, 1068, 1071, 1589, 1589, 1070,
+     1055, 1047,  529, 1053, 1051, 1098, 1047, 1101, 1589, 1046,
+
+     1048, 1048, 1040, 1096, 1049, 1037, 1031, 1042, 1051, 1044,
+     1036, 1036, 1035, 1033, 1033, 1084,   15,   70, 1589,  226,
+      225,  308,  409,  413,  428, 1589,  574,  573,  476,  543,
+      529,  541,  604,  563,  560,  561,  557,  567,  568,  624,
+      583,  574, 1589,  577,  588,  573,  589,  583,  628,  596,
+      580,  581, 1589,  599,  582,  639,  584, 1589,  603,  583,
+      601,  640,  600,  590,  608,  607,  593,  608,  600,  596,
+      614,  599, 1589,  607,  613,  608,  659, 1589,  610,  615,
+      609,  621,  615,  614,  667,  613,  613,  670,  616, 1589,
+      622,  620,  619,  633,  634,  639,  678,  637,  653,  658,
+
+      632,  632,  684,  629, 1589,  636,  641,  648,  689,  690,
+      639, 1589,  635,  638,  637,  658,  655,  660,  661,  647,
+      655,  664,  644,  665,  705, 1589,  660,  707,  710,  672,
+      675,  663,  659,  666,  717,  666,  664,  682,  721,  673,
+      677,  675,  673,  726,  727,  723,  683, 1589,  688,  681,
+      690,  678,  688,  684, 1589,  679,  680, 1589,  681,  697,
+      698,  699,  681,  686,  704, 1589,  694,  727,  718,  690,
+      711, 1589,  694,  709,  701,  705, 1589, 1589,  715,  750,
+      699,  752,  701,  759,  704,  715,  707,  713,  709,  727,
+      728, 1589,  726, 1589,  728, 1589,  732,  722,  715,  727,
+
+      769, 1589,  727,  777,  778, 1589,  779,  728,  735,  777,
+     1589, 1589,  727,  727,  730,  744,  731,  788,  747,  785,
+      791,  741,  793,  794,  795,  756,  740,  752,  757,  743,
+      773,  802,  762,  754,  805,  754,  750,  766,  771,  753,
+      811,  766,  771, 1589,  772,  765,  774,  775,  772,  762,
+      764,  821,  770,  767,  824,  820,  763,  778,  828, 1589,
+     1589, 1589,  779,  789,  774,  775,  834,  836,  782,  838,
+     1589,  788,  790,  842, 1589,  805, 1589, 1589, 1589,  795,
+      845,  796,  848,  849,  831, 1589,  809,  810, 1589,  798,
+      797,  800,  800,  801,  797, 1589,  819,  805,  806,  821,
+
+      821,  824,  824,  821,  826, 1589,  818,  828, 1589,  825,
+      830,  832,  829, 1589,  820,  826,  825,  836, 1589, 1589,
+      875, 1589,  824,  830, 1589,  833,  846, 1589,  843, 1589,
+      840, 1589,  863,  883,  889,  890,  834,  892,  893,  848,
+      842,  896,  897,  893,  858,  854,  896,  846,  851,  904,
+      862,  906,  866,  908,  871,  860,  911,  855,  872,  872,
+      856,  912,  877,  877,  874,  921,  881,  894,  881, 1589,
+     1589,  925, 1589, 1589,  874,  885, 1589, 1589,  875,  924,
+      869,  874,  932,  882, 1589,  888, 1589,  935, 1589,  880,
+      895, 1589,  933,  901,  894,  903,  891,  901,  944,  895,
+
+     1589,  946,  947,  894, 1589,  898,  950,  897,  896,  954,
+      909, 1589,  951,  913, 1589,  916,  959,  902,  904,  901,
+      917,  926,  965, 1589,  961, 1589, 1589,  926,  963, 1589,
+      917,  924, 1589,  921,  926,  973,  918, 1589,  922,  934,
+      977,  921,  929, 1589,  940,  930,  929,  943,  934,  943,
+      945, 1589,  987,  947,  989, 1589,  985,  949,  930,  993,
+      952,  953,  954,  997,  956, 1589,  961, 1589,  943, 1001,
+      962, 1589,  948,  948,  950, 1589,  955,  950,  962, 1589,
+      960,  964,  955, 1007,  956,  972,  965,  974,  965,  972,
+      959,  974, 1021,  980,  967,  983,  974,  988,  984, 1589,
+
+     1028, 1029, 1030,  987,  986,  987, 1589, 1589, 1589, 1034,
+      978,  994, 1589, 1032,  983,  982,  984,  995, 1042,  993,
+     1589, 1002, 1045, 1589, 1589, 1051, 1056, 1061, 1066, 1071,
+     1076, 1081, 1084, 1058, 1063, 1065, 1078
     } ;
 
-static const flex_int16_t yy_def[1224] =
+static const flex_int16_t yy_def[1238] =
     {   0,
-     1212, 1212, 1213, 1213, 1212, 1212, 1212, 1212, 1212, 1212,
-     1211, 1211, 1211, 1211, 1211, 1214, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215,
-     1211, 1211, 1211, 1216,   15, 1211,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1217,   45,   45,   45,
+     1226, 1226, 1227, 1227, 1226, 1226, 1226, 1226, 1226, 1226,
+     1225, 1225, 1225, 1225, 1225, 1228, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1229,
+     1225, 1225, 1225, 1230,   15, 1225,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1231,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1214, 1211,
-     1211, 1211, 1211, 1211, 1211, 1218, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1215, 1211, 1216,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1228,
+     1225, 1225, 1225, 1225, 1225, 1225, 1232, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1229, 1225,
 
-     1211, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1219,   45, 1217,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1230, 1225, 1225,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1233,   45, 1231,   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,
-     1218, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1220,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1219, 1211, 1217,   45,   45,   45,   45,   45,   45,
+       45,   45, 1232, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1234,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1233, 1225, 1231,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1225,   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, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1221,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45, 1211,   45, 1217, 1211,
-       45,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1235,
+       45,   45,   45,   45,   45,   45,   45,   45, 1225,   45,
+     1225,   45, 1231, 1225,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1225,   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, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1225,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45, 1211, 1211,
-     1211, 1222,   45,   45,   45,   45,   45,   45,   45, 1211,
-       45,   45, 1211,   45, 1217,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
-
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+     1225,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1225,   45,
+       45,   45, 1225, 1225, 1225, 1236,   45,   45,   45,   45,
+       45,   45,   45,   45, 1225,   45,   45, 1225,   45, 1231,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
+
+     1225,   45,   45,   45,   45,   45, 1225,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1225,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45, 1211,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1225,   45, 1225,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1211, 1211,   45, 1211,   45,   45, 1211, 1223,
-       45,   45,   45, 1211, 1211,   45, 1211,   45, 1211,   45,
-       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1225, 1225,   45,
+     1225,   45,   45, 1225, 1237,   45,   45,   45,   45, 1225,
+     1225,   45, 1225,   45, 1225,   45,   45,   45, 1225,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1225,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45, 1211,   45,   45, 1211,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1225,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
+       45,   45,   45,   45,   45,   45,   45, 1225,   45,   45,
+       45,   45, 1225,   45,   45, 1225,   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, 1211,   45,   45,   45,   45,   45,   45, 1211,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
+       45,   45,   45,   45,   45,   45, 1225,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1225,   45,   45,
+       45,   45,   45,   45,   45,   45, 1225,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1225,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211, 1211,   45,   45,   45, 1211,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1225, 1225,   45,   45,   45, 1225, 1225,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1225,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1225,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
+       45,   45, 1225,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1225,   45,   45,   45,   45, 1225,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45, 1211,   45,
+       45,   45, 1225,   45,   45,   45,   45, 1225,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45,   45,   45,   45,
 
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45, 1225,   45,   45,   45,   45,   45,
+       45, 1225,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45, 1211,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
-     1211,   45,   45,   45,   45, 1211, 1211,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1225,   45,   45,
+       45,   45,   45,   45, 1225,   45,   45, 1225,   45,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
+       45, 1225,   45,   45,   45,   45, 1225, 1225,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1211,   45, 1211,   45, 1211,   45,   45,   45,   45,   45,
-     1211,   45,   45,   45, 1211,   45,   45,   45,   45, 1211,
+       45, 1225,   45, 1225,   45, 1225,   45,   45,   45,   45,
 
-     1211,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1225,   45,   45,   45, 1225,   45,   45,   45,   45,
+     1225, 1225,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1211, 1211, 1211,
-       45,   45,   45,   45,   45,   45,   45,   45, 1211,   45,
-       45,   45, 1211,   45, 1211, 1211, 1211,   45,   45,   45,
-       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
-       45,   45, 1211,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1211,   45,   45, 1211,   45,   45,   45,   45,
-
-     1211,   45,   45,   45,   45, 1211, 1211,   45, 1211,   45,
-       45, 1211,   45,   45, 1211,   45, 1211,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1225,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
+     1225, 1225,   45,   45,   45,   45,   45,   45,   45,   45,
+     1225,   45,   45,   45, 1225,   45, 1225, 1225, 1225,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45, 1225,   45,
+       45,   45,   45,   45,   45, 1225,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1225,   45,   45, 1225,   45,
+       45,   45,   45, 1225,   45,   45,   45,   45, 1225, 1225,
+       45, 1225,   45,   45, 1225,   45,   45, 1225,   45, 1225,
+       45, 1225,   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, 1211, 1211,   45, 1211, 1211,
-       45,   45, 1211, 1211,   45,   45,   45,   45,   45,   45,
-     1211,   45, 1211,   45, 1211,   45,   45, 1211,   45,   45,
-       45,   45,   45,   45,   45,   45, 1211,   45,   45,   45,
-     1211,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-
-     1211,   45,   45,   45,   45,   45,   45,   45,   45, 1211,
-       45, 1211, 1211,   45,   45, 1211,   45,   45, 1211,   45,
-       45,   45,   45, 1211,   45,   45,   45,   45,   45, 1211,
-       45,   45,   45,   45,   45,   45,   45, 1211,   45,   45,
-       45, 1211,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1211,   45, 1211,   45,   45,   45, 1211,   45,   45,
-       45, 1211,   45,   45,   45, 1211,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
+     1225,   45, 1225, 1225,   45,   45, 1225, 1225,   45,   45,
+       45,   45,   45,   45, 1225,   45, 1225,   45, 1225,   45,
+       45, 1225,   45,   45,   45,   45,   45,   45,   45,   45,
+
+     1225,   45,   45,   45, 1225,   45,   45,   45,   45,   45,
+       45, 1225,   45,   45, 1225,   45,   45,   45,   45,   45,
+       45,   45,   45, 1225,   45, 1225, 1225,   45,   45, 1225,
+       45,   45, 1225,   45,   45,   45,   45, 1225,   45,   45,
+       45,   45,   45, 1225,   45,   45,   45,   45,   45,   45,
+       45, 1225,   45,   45,   45, 1225,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1225,   45, 1225,   45,   45,
+       45, 1225,   45,   45,   45, 1225,   45,   45,   45, 1225,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1211,   45,   45,   45,   45,
-       45,   45, 1211, 1211, 1211,   45,   45,   45, 1211,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1225,
 
-       45,   45,   45,   45,   45,   45, 1211,   45,   45, 1211,
-        0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211
+       45,   45,   45,   45,   45,   45, 1225, 1225, 1225,   45,
+       45,   45, 1225,   45,   45,   45,   45,   45,   45,   45,
+     1225,   45,   45, 1225,    0, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225
     } ;
 
-static const flex_int16_t yy_nxt[1646] =
+static const flex_int16_t yy_nxt[1661] =
     {   0,
-     1211,   13,   14,   13, 1211,   15,   16, 1211,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  336,
-       37,   14,   37,   86,   25,   26,   38,  792, 1211,   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,  793,   13,
-       14,   13,   33,   40,  113,   91,   92,  337,   90,   34,
-       35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
+     1225,   13,   14,   13, 1225,   15,   16, 1225,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   86,  340,
+       37,   14,   37,   87,   25,   26,   38, 1225, 1225,   27,
+       37,   14,   37,   42,   28,   42,   38,   92,   93,   29,
+      115,   30,   13,   14,   13,   91,   92,   25,   31,   93,
+       13,   14,   13,   13,   14,   13,   32,   40,  791,   13,
+       14,   13,   33,   40,  115,   92,   93,  341,   91,   34,
+       35,   13,   14,   13,   95,   15,   16,   96,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
-       13,  107,   39,   90,   25,   26,   13,   14,   13,   27,
+       13,  109,   39,   91,   25,   26,   13,   14,   13,   27,
 
-       39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
-       42,   30,   82,  106,   41,  109,   93,   25,   31,  107,
-      201,  159,   88,  135,   88,  160,   32,   89,   89,   89,
-      202,  136,   33,  206,  207,   82,  106,  794,  109,   34,
+       39,   85,   85,   85,   28,   42,   41,   42,   42,   29,
+       42,   30,   83,  108,   41,  111,   94,   25,   31,  109,
+      204,  161,   89,  137,   89,  162,   32,   90,   90,   90,
+      205,  138,   33,  209,  210,   83,  108,  792,  111,   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,
-       53,   45,   45,   45,   45,   54,   55,   45,   56,   45,
-       45,   57,   45,   45,   58,   59,   60,   61,   62,   63,
-       64,   65,   66,   51,   67,   68,   69,   70,   71,   72,
-
-       73,   74,   75,   76,   77,   78,   56,   45,   45,   45,
-       45,   45,   80,  104,   81,   81,   81,   80,  104,   83,
-       83,   83,  101,  112,   80,   82,   83,   83,   83,  106,
-       82,  110,  120,  215,  631,  121,  172,   82,  122,  104,
-      123,  111,  124,  632,  117,  130,  112,  173,   82,  216,
-      118,  125,  106,   82,  110,  126,  131,  102,  127,  128,
-       82,   45,  172,  133,  145,  795,  132,   45,  146,  111,
-       45,  129,   45,  173,   45,   45,   45,  137,  115,  230,
-      297,   45,   45,  231,   45,   45,  298,  138,  147,  139,
+       45,   48,   45,   49,   50,   45,   51,   45,   52,   53,
+       54,   45,   45,   45,   45,   55,   56,   45,   57,   45,
+       45,   58,   45,   45,   59,   60,   61,   62,   63,   64,
+       65,   66,   67,   52,   68,   69,   70,   71,   72,   73,
+
+       74,   75,   76,   77,   78,   79,   57,   45,   45,   45,
+       45,   45,   81,  105,   82,   82,   82,   81,  114,   84,
+       84,   84,  102,  105,   81,   83,   84,   84,   84,  108,
+       83,  176,  122,  112,  139,  123,  793,   83,  124,  105,
+      125,  114,  126,  113,  140,  176,  141,  132,   83,  119,
+      157,  174,  108,   83,  158,  120,  112,  103,  133,  176,
+       83,   45,  147,  135,  159,  194,  148,   45,  134,   45,
+       45,  113,   45,  179,   45,   45,   45,  174,  117,  143,
+      144,   45,   45,  145,   45,   45,  149,  794,  194,  146,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  141,  142,  151,   45,  143,  109,
-      112,   45,  351,  155,  144,  352,  152,  156,  212,   45,
-      213,  153,  154,   45,  161,   45,  116,  157,  148,  110,
-      149,  796,  150,  167,  162,  163,   84,   84,   84,  111,
-      164,  174,   80,  168,   81,   81,   81,   82,  169,  174,
-      172,   88,  110,   88,  165,   82,   89,   89,   89,   80,
-      173,   83,   83,   83,   84,   84,   84,  111,  101,  174,
-       82,  182,   82,  185,  166,   82,  175,  177,   82,   89,
-       89,   89,   89,   89,   89,  100,  176,  184,  187,  191,
-
-      188,  189,  100,  797,  190,   82,  798,  182,   82,  182,
-      185,  218,  187,  102,  219,  241,  242,  244,  220,  271,
-      245,  246,  191,  184,  195,  248,  187,  188,  272,  189,
-      100,  190,  249,  258,  100,  196,  272,  259,  100,  270,
-      187,  260,  236,  190,  270,  271,  100,  250,  271,  281,
-      100,  272,  100,  180,  194,  194,  194,  799,  393,  275,
-      279,  194,  194,  194,  194,  194,  194,  270,  326,  282,
-      266,  284,  273,  288,  274,  394,  286,  281,  375,  800,
-      251,  252,  253,  279,  194,  194,  194,  194,  194,  194,
-      801,  254,  279,  255,  284,  256,  282,  369,  257,  286,
-
-      288,  289,  289,  289,  369,  379,  373,  375,  289,  289,
-      289,  289,  289,  289,  382,  291,  374,  376,  377,  327,
-      369,  399,  328,  425,  426,  400,  378,  370,  379,  375,
-      432,  289,  289,  289,  289,  289,  289,  442,  473,  473,
-      433,  412,  382,  385,  385,  385,  413,  493,  610,  641,
-      385,  385,  385,  385,  385,  385,  466,  480,  386,  481,
-      502,  467,  494,  563,  560,  503,  473,  482,  564,  565,
-      802,  803,  641,  385,  385,  385,  385,  385,  385,  804,
-      790,  645,  703,  640,  480,  611,  481,  646,  719,  704,
-      563,  805,  414,  443,  705,  706,  564,  415,   45,   45,
-
-       45,  806,  707,  790,  807,   45,   45,   45,   45,   45,
-       45,  640,  709,  758,  789,  808,  719,  759,  710,  809,
-      810,  811,  812,  813,  814,  815,  819,  820,   45,   45,
-       45,   45,   45,   45,  816,  821,  822,  823,  824,  817,
-      825,  789,  826,  827,  828,  829,  830,  831,  832,  834,
-      835,  836,  837,  838,  839,  840,  841,  842,  843,  833,
+       45,   45,   45,   45,   90,   90,   90,   45,  127,  499,
+      111,   45,  128,  175,  102,  129,  130,  114,  174,   45,
+      153,  188,  112,   45,  500,   45,  118,  163,  131,  150,
+      154,  151,  113,  152,  251,  155,  156,  164,  165,  175,
+      169,  252,  184,  166,  177,  112,  795,  167,  188,  103,
+      170,   85,   85,   85,  447,  171,   90,   90,   90,  190,
+      113,   81,   83,   82,   82,   82,   89,  168,   89,  175,
+      184,   90,   90,   90,   83,   81,  187,   84,   84,   84,
+       85,   85,   85,  101,  192,   83,  191,  190,   83,  193,
+
+      101,   83,  184,  190,  215,  178,  216,   83,  221,  218,
+      233,  222,  187,  193,  234,  223,  244,  245,  273,  198,
+      448,   83,  192,  191,   83,  219,  193,  379,  101,  274,
+      199,  190,  101,  239,  247,  261,  101,  248,  249,  262,
+      269,  273,  275,  263,  101,  253,  273,  274,  101,  275,
+      101,  182,  197,  197,  197,  274,  379,  796,  282,  197,
+      197,  197,  197,  197,  197,  275,  285,  288,  286,  276,
+      301,  292,  278,  277,  290,  797,  302,  798,  254,  255,
+      256,  282,  197,  197,  197,  197,  197,  197,  330,  257,
+      288,  258,  282,  259,  285,  286,  260,  290,  292,  293,
+
+      293,  293,  355,  373,  373,  356,  293,  293,  293,  293,
+      293,  293,  377,  384,  379,  295,  381,  382,  387,  404,
+      398,  801,  378,  405,  478,  383,  373,  374,  437,  293,
+      293,  293,  293,  293,  293,  417,  384,  399,  438,  331,
+      418,  478,  332,  391,  430,  431,  387,  390,  390,  390,
+      617,  649,  478,  802,  390,  390,  390,  390,  390,  390,
+      471,  486,  508,  487,  638,  472,  566,  509,  570,  488,
+      571,  572,  767,  639,  649,  803,  768,  390,  390,  390,
+      390,  390,  390,  648,  804,  728,  419,  618,  486,  711,
+      487,  420,   45,   45,   45,  570,  712,  800,  571,   45,
+
+       45,   45,   45,   45,   45,  799,  653,  713,  714,  805,
+      717,  648,  654,  728,  806,  715,  718,  807,  808,  809,
+      800,  810,   45,   45,   45,   45,   45,   45,  811,  812,
+      813,  814,  799,  815,  816,  817,  818,  819,  820,  821,
+      822,  823,  824,  825,  826,  829,  830,  831,  832,  827,
+      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
       844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      854,  855,  856,  857,  859,  858,  860,  861,  862,  863,
-      864,  865,  866,  867,  868,  869,  870,  871,  872,  873,
-      818,  874,  875,  876,  877,  878,  879,  880,  881,  882,
-
-      883,  857,  858,  885,  886,  884,  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,  913,  914,  915,  916,  917,  918,  919,  920,
-      921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
-      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
-      941,  919,  942,  943,  944,  945,  946,  920,  947,  948,
-      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
-      959,  960,  961,  963,  964,  965,  966,  967,  968,  969,
-      970,  971,  972,  973,  974,  975,  976,  978,  979,  980,
-
-      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
-      991,  992,  993,  994,  995,  996,  997,  998,  999, 1001,
-      972, 1002, 1003, 1004, 1005, 1006, 1000, 1007, 1008, 1009,
-     1010, 1011, 1012,  962, 1013, 1014, 1015, 1016,  977, 1017,
-     1019, 1020, 1021, 1022, 1018, 1023, 1024, 1025, 1026, 1027,
-     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
-     1038, 1039, 1040, 1019, 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,
-
-     1077, 1078, 1079, 1080, 1054, 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, 1089, 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, 1181, 1182, 1183, 1184,
-     1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
-     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
-     1205, 1206, 1207, 1208, 1209, 1210,   12,   12,   12,   12,
-       12,   36,   36,   36,   36,   36,   79,  277,   79,   79,
-       79,   98,  372,   98,  470,   98,  100,  100,  100,  100,
-      100,  114,  114,  114,  114,  114,  171,  100,  171,  171,
-      171,  192,  192,  192,  791,  788,  787,  786,  785,  784,
-      783,  782,  781,  780,  779,  778,  777,  776,  775,  774,
-      773,  772,  771,  770,  769,  768,  767,  766,  765,  764,
-
-      763,  762,  761,  760,  757,  756,  755,  754,  753,  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,  725,  724,  723,  722,
-      721,  720,  718,  717,  716,  715,  714,  713,  712,  711,
-      708,  702,  701,  700,  699,  698,  697,  696,  695,  694,
-      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,  644,  643,  642,
-      639,  638,  637,  636,  635,  634,  633,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  609,  608,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  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,
-      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
-      552,  551,  550,  549,  548,  547,  546,  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,  501,
-      500,  499,  498,  497,  496,  495,  492,  491,  490,  489,
-      488,  487,  486,  485,  484,  483,  479,  478,  477,  476,
-      475,  474,  472,  471,  469,  468,  465,  464,  463,  462,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-      451,  450,  449,  448,  447,  446,  445,  444,  441,  440,
-      439,  438,  437,  436,  435,  434,  431,  430,  429,  428,
-
-      427,  424,  423,  422,  421,  420,  419,  418,  417,  416,
-      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
-      401,  398,  397,  396,  395,  392,  391,  390,  389,  388,
-      387,  384,  383,  381,  380,  371,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
-      354,  353,  350,  349,  348,  347,  346,  345,  344,  343,
-      342,  341,  340,  339,  338,  335,  334,  333,  332,  331,
-      330,  329,  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,  296,
-
-      295,  294,  293,  292,  290,  193,  287,  285,  283,  280,
-      278,  276,  269,  268,  267,  265,  264,  263,  262,  261,
-      247,  243,  240,  239,  238,  237,  235,  234,  233,  232,
-      229,  228,  227,  226,  225,  224,  223,  222,  221,  217,
-      214,  211,  210,  209,  208,  205,  204,  203,  200,  199,
-      198,  197,  193,  186,  183,  181,  179,  178,  170,  158,
-      140,  134,  119,  108,  105,  103,   43,   99,   97,   96,
-       87,   43, 1211,   11, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211
+      843,  854,  855,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  865,  866,  867,  868,  870,  869,  871,  872,
+      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+
+      828,  883,  884,  885,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  868,  869,  896,  897,  895,  898,  899,
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
+      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
+      930,  931,  932,  933,  934,  935,  936,  937,  938,  939,
+      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      950,  951,  952,  953,  931,  954,  955,  956,  957,  958,
+      932,  959,  960,  961,  962,  963,  964,  965,  966,  967,
+      968,  969,  970,  971,  972,  973,  975,  976,  977,  978,
+
+      979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
+      989,  991,  992,  993,  994,  995,  996,  997,  998,  999,
+     1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
+     1010, 1011, 1012, 1014,  985, 1015, 1016, 1017, 1018, 1019,
+     1013, 1020, 1021, 1022, 1023, 1024,  974, 1025, 1026, 1027,
+     1028, 1029,  990, 1030, 1032, 1033, 1034, 1035, 1031, 1036,
+     1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
+     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1033, 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, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1068,
+     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, 1103, 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, 1181, 1182, 1183,
+     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
+     1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
+     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
+     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
+     1224,   12,   12,   12,   12,   12,   36,   36,   36,   36,
+       36,   80,  280,   80,   80,   80,   99,  376,   99,  475,
+       99,  101,  101,  101,  101,  101,  116,  116,  116,  116,
+      116,  173,  101,  173,  173,  173,  195,  195,  195,  790,
+      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
+
+      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
+      769,  766,  765,  764,  763,  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,  735,  734,  733,  732,  731,  730,  729,  727,
+      726,  725,  724,  723,  722,  721,  720,  719,  716,  710,
+      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
+      699,  698,  697,  696,  695,  694,  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,  652,  651,  650,  647,  646,
+      645,  644,  643,  642,  641,  640,  637,  636,  635,  634,
+      633,  632,  631,  630,  629,  628,  627,  626,  625,  624,
+      623,  622,  621,  620,  619,  616,  615,  614,  613,  612,
+      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  600,  599,  598,  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,  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,  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,  507,
+      506,  505,  504,  503,  502,  501,  498,  497,  496,  495,
+      494,  493,  492,  491,  490,  489,  485,  484,  483,  482,
+      481,  480,  479,  477,  476,  474,  473,  470,  469,  468,
+      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
+      457,  456,  455,  454,  453,  452,  451,  450,  449,  446,
+
+      445,  444,  443,  442,  441,  440,  439,  436,  435,  434,
+      433,  432,  429,  428,  427,  426,  425,  424,  423,  422,
+      421,  416,  415,  414,  413,  412,  411,  410,  409,  408,
+      407,  406,  403,  402,  401,  400,  397,  396,  395,  394,
+      393,  392,  389,  388,  386,  385,  380,  375,  372,  371,
+      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
+      360,  359,  358,  357,  354,  353,  352,  351,  350,  349,
+      348,  347,  346,  345,  344,  343,  342,  339,  338,  337,
+      336,  335,  334,  333,  329,  328,  327,  326,  325,  324,
+      323,  322,  321,  320,  319,  318,  317,  316,  315,  314,
+
+      313,  312,  311,  310,  309,  308,  307,  306,  305,  304,
+      303,  300,  299,  298,  297,  296,  294,  196,  291,  289,
+      287,  284,  283,  281,  279,  272,  271,  270,  268,  267,
+      266,  265,  264,  250,  246,  243,  242,  241,  240,  238,
+      237,  236,  235,  232,  231,  230,  229,  228,  227,  226,
+      225,  224,  220,  217,  214,  213,  212,  211,  208,  207,
+      206,  203,  202,  201,  200,  196,  189,  186,  185,  183,
+      181,  180,  172,  160,  142,  136,  121,  110,  107,  106,
+      104,   43,  100,   98,   97,   88,   43, 1225,   11, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225
     } ;
 
-static const flex_int16_t yy_chk[1646] =
+static const flex_int16_t yy_chk[1661] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  239,
-        3,    3,    3,   21,    1,    1,    3,  721,    0,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  242,
+        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,  722,    8,
-        8,    8,    1,    8,   56,   27,   28,  239,   26,    1,
+       57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
+        6,    6,    6,    7,    7,    7,    1,    7,  717,    8,
+        8,    8,    1,    8,   57,   27,   28,  242,   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,
+        9,   52,    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,
-      122,   74,   25,   65,   25,   74,    2,   25,   25,   25,
-      122,   65,    2,  126,  126,   20,   50,  723,   53,    2,
+       42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
+      124,   75,   25,   66,   25,   75,    2,   25,   25,   25,
+      124,   66,    2,  128,  128,   20,   51,  718,   54,    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,
@@ -1370,164 +1374,165 @@ static const flex_int16_t yy_chk[1646] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   17,   48,   17,   17,   17,   19,   58,   19,
-       19,   19,   44,   55,   22,   17,   22,   22,   22,   63,
-       19,   54,   60,  133,  553,   60,   90,   22,   60,   48,
-       60,   54,   60,  553,   58,   62,   55,   91,   17,  133,
-       58,   61,   63,   19,   54,   61,   62,   44,   61,   61,
-       22,   45,   90,   63,   69,  724,   62,   45,   69,   54,
-       45,   61,   45,   91,   45,   45,   45,   66,   57,  145,
-      202,   45,   45,  145,   45,   57,  202,   66,   69,   66,
+       15,   15,   17,   48,   17,   17,   17,   19,   56,   19,
+       19,   19,   44,   59,   22,   17,   22,   22,   22,   64,
+       19,   93,   61,   55,   67,   61,  720,   22,   61,   48,
+       61,   56,   61,   55,   67,   96,   67,   63,   17,   59,
+       73,   91,   64,   19,   73,   59,   55,   44,   63,   93,
+       22,   45,   70,   64,   73,  115,   70,   45,   63,   45,
+       45,   55,   45,   96,   45,   45,   45,   91,   58,   69,
+       69,   45,   45,   69,   45,   58,   70,  721,  115,   69,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   57,   68,   68,   71,   57,   68,   70,
-       77,   57,  253,   72,   68,  253,   71,   72,  131,   57,
-      131,   71,   71,   57,   75,   57,   57,   72,   70,   76,
-       70,  725,   70,   77,   75,   75,   80,   80,   80,   76,
-       75,   92,   81,   77,   81,   81,   81,   80,   77,   95,
-       93,   82,   76,   82,   76,   81,   82,   82,   82,   83,
-       94,   83,   83,   83,   84,   84,   84,   76,  100,   92,
-       80,  104,   83,  107,   76,   84,   93,   95,   81,   88,
-       88,   88,   89,   89,   89,  102,   94,  106,  109,  113,
-
-      110,  111,  102,  726,  112,   83,  727,  117,   84,  104,
-      107,  135,  150,  100,  135,  155,  155,  157,  135,  173,
-      157,  157,  113,  106,  117,  159,  109,  110,  174,  111,
-      102,  112,  159,  161,  102,  117,  177,  161,  102,  172,
-      150,  161,  150,  167,  175,  173,  102,  160,  176,  184,
-      102,  174,  102,  102,  116,  116,  116,  728,  298,  177,
-      182,  116,  116,  116,  116,  116,  116,  172,  231,  185,
-      167,  187,  175,  191,  176,  298,  189,  184,  279,  729,
-      160,  160,  160,  182,  116,  116,  116,  116,  116,  116,
-      730,  160,  196,  160,  187,  160,  185,  270,  160,  189,
-
-      191,  194,  194,  194,  273,  281,  278,  279,  194,  194,
-      194,  194,  194,  194,  284,  196,  278,  280,  280,  231,
-      270,  304,  231,  326,  326,  304,  280,  273,  281,  291,
-      332,  194,  194,  194,  194,  194,  194,  342,  375,  386,
-      332,  316,  284,  289,  289,  289,  316,  399,  530,  564,
-      289,  289,  289,  289,  289,  289,  367,  384,  291,  384,
-      408,  367,  399,  480,  482,  408,  375,  386,  481,  482,
-      731,  732,  564,  289,  289,  289,  289,  289,  289,  733,
-      719,  568,  627,  563,  384,  530,  384,  568,  641,  627,
-      480,  735,  316,  342,  628,  628,  481,  316,  385,  385,
-
-      385,  736,  628,  719,  737,  385,  385,  385,  385,  385,
-      385,  563,  630,  685,  718,  738,  641,  685,  630,  739,
-      740,  741,  742,  743,  745,  746,  748,  750,  385,  385,
-      385,  385,  385,  385,  747,  751,  752,  753,  754,  747,
-      755,  718,  756,  757,  758,  759,  760,  761,  762,  763,
-      765,  766,  767,  768,  770,  771,  772,  773,  774,  762,
-      775,  776,  777,  778,  779,  780,  782,  783,  784,  785,
-      786,  787,  788,  789,  791,  790,  792,  793,  794,  796,
-      797,  798,  799,  800,  801,  803,  804,  805,  806,  807,
-      747,  808,  809,  810,  811,  812,  813,  814,  815,  817,
-
-      818,  789,  790,  819,  820,  818,  821,  822,  823,  824,
-      825,  826,  827,  828,  829,  830,  831,  832,  833,  834,
-      835,  836,  837,  839,  840,  841,  842,  843,  844,  846,
-      847,  849,  850,  851,  852,  853,  854,  855,  857,  858,
-      859,  860,  862,  863,  864,  865,  868,  869,  870,  871,
-      872,  873,  874,  875,  876,  877,  878,  879,  880,  882,
-      884,  857,  886,  887,  888,  889,  890,  858,  892,  893,
-      894,  896,  897,  898,  899,  902,  903,  904,  905,  906,
-      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
-      917,  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,  947,
-      919,  951,  952,  953,  954,  955,  946,  956,  957,  958,
-      960,  961,  962,  909,  964,  968,  969,  970,  923,  971,
-      972,  974,  975,  977,  971,  978,  979,  980,  981,  982,
-      984,  985,  986,  987,  988,  989,  990,  991,  992,  994,
-      995,  997,  998,  972,  999, 1000, 1002, 1003, 1004, 1005,
-     1008, 1010, 1011, 1013, 1014, 1016, 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, 1019, 1046, 1047, 1048, 1049, 1050,
-     1051, 1052, 1053, 1054, 1055, 1058, 1061, 1062, 1065, 1066,
-     1067, 1068, 1069, 1070, 1072, 1074, 1076, 1077, 1079, 1080,
-     1081, 1082, 1083, 1084, 1085, 1086, 1088, 1089, 1090, 1092,
-     1093, 1054, 1094, 1095, 1096, 1097, 1099, 1100, 1102, 1103,
-     1104, 1105, 1106, 1107, 1108, 1109, 1111, 1114, 1115, 1117,
-     1118, 1120, 1121, 1122, 1123, 1125, 1126, 1127, 1128, 1129,
-     1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1140, 1141,
-     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1153,
-     1155, 1156, 1157, 1159, 1160, 1161, 1163, 1164, 1165, 1167,
-
-     1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
-     1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1187, 1188,
-     1189, 1190, 1191, 1192, 1196, 1197, 1198, 1200, 1201, 1202,
-     1203, 1204, 1205, 1206, 1208, 1209, 1212, 1212, 1212, 1212,
-     1212, 1213, 1213, 1213, 1213, 1213, 1214, 1220, 1214, 1214,
-     1214, 1215, 1221, 1215, 1222, 1215, 1216, 1216, 1216, 1216,
-     1216, 1217, 1217, 1217, 1217, 1217, 1218, 1223, 1218, 1218,
-     1218, 1219, 1219, 1219,  720,  716,  715,  714,  713,  712,
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  694,  693,  692,  690,
-
-      689,  688,  687,  686,  684,  683,  682,  679,  678,  677,
-      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  660,  659,  658,  657,  656,  655,  654,
-      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
-      643,  642,  640,  638,  637,  636,  635,  634,  633,  632,
-      629,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  611,  609,  608,  607,
-      606,  605,  604,  602,  601,  600,  599,  598,  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,  567,  566,  565,
-      562,  561,  559,  558,  556,  555,  554,  551,  550,  549,
-      548,  547,  546,  545,  543,  542,  541,  540,  539,  538,
-      537,  536,  534,  533,  532,  531,  529,  528,  527,  526,
-      525,  523,  522,  521,  520,  519,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      504,  503,  501,  500,  499,  498,  497,  496,  495,  494,
-      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
-      478,  476,  473,  472,  471,  469,  468,  467,  465,  462,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-
-      451,  450,  449,  448,  447,  446,  445,  443,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  430,  429,
-      428,  427,  426,  425,  424,  423,  422,  421,  420,  419,
-      418,  417,  416,  415,  414,  413,  411,  410,  409,  407,
-      406,  405,  404,  403,  401,  400,  398,  397,  395,  394,
-      393,  392,  390,  389,  388,  387,  382,  381,  379,  378,
-      377,  376,  374,  373,  371,  368,  366,  364,  363,  362,
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  346,  345,  344,  343,  341,  340,
-      339,  338,  337,  336,  335,  333,  331,  330,  329,  328,
-
-      327,  325,  324,  323,  322,  321,  320,  319,  318,  317,
-      315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
-      305,  303,  302,  301,  300,  297,  296,  295,  294,  293,
-      292,  288,  286,  283,  282,  276,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  252,  251,  250,  249,  248,  247,  246,  245,
-      244,  243,  242,  241,  240,  238,  237,  236,  235,  234,
-      233,  232,  230,  229,  228,  227,  226,  225,  224,  223,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  201,
-
-      200,  199,  198,  197,  195,  192,  190,  188,  186,  183,
-      181,  178,  170,  169,  168,  166,  165,  164,  163,  162,
-      158,  156,  154,  153,  152,  151,  149,  148,  147,  146,
-      144,  143,  142,  141,  140,  139,  138,  137,  136,  134,
-      132,  130,  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, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211
+       45,   45,   45,   58,   89,   89,   89,   58,   62,  404,
+       71,   58,   62,   92,  101,   62,   62,   78,   94,   58,
+       72,  109,   77,   58,  404,   58,   58,   76,   62,   71,
+       72,   71,   77,   71,  161,   72,   72,   76,   76,   92,
+       78,  161,  105,   76,   94,   77,  722,   77,  109,  101,
+       78,   81,   81,   81,  346,   78,   90,   90,   90,  111,
+       77,   82,   81,   82,   82,   82,   83,   77,   83,   95,
+      105,   83,   83,   83,   82,   84,  108,   84,   84,   84,
+       85,   85,   85,  103,  113,   81,  112,  111,   84,  114,
+
+      103,   85,  119,  152,  133,   95,  133,   82,  137,  135,
+      147,  137,  108,  169,  147,  137,  157,  157,  174,  119,
+      346,   84,  113,  112,   85,  135,  114,  282,  103,  175,
+      119,  152,  103,  152,  159,  163,  103,  159,  159,  163,
+      169,  177,  176,  163,  103,  162,  174,  178,  103,  179,
+      103,  103,  118,  118,  118,  175,  282,  723,  184,  118,
+      118,  118,  118,  118,  118,  176,  187,  190,  188,  177,
+      205,  194,  179,  178,  192,  724,  205,  725,  162,  162,
+      162,  184,  118,  118,  118,  118,  118,  118,  234,  162,
+      190,  162,  199,  162,  187,  188,  162,  192,  194,  197,
+
+      197,  197,  256,  273,  276,  256,  197,  197,  197,  197,
+      197,  197,  281,  285,  295,  199,  284,  284,  288,  308,
+      302,  729,  281,  308,  379,  284,  273,  276,  336,  197,
+      197,  197,  197,  197,  197,  320,  285,  302,  336,  234,
+      320,  391,  234,  295,  330,  330,  288,  293,  293,  293,
+      536,  571,  379,  730,  293,  293,  293,  293,  293,  293,
+      371,  389,  413,  389,  559,  371,  488,  413,  486,  391,
+      487,  488,  693,  559,  571,  731,  693,  293,  293,  293,
+      293,  293,  293,  570,  732,  649,  320,  536,  389,  634,
+      389,  320,  390,  390,  390,  486,  634,  728,  487,  390,
+
+      390,  390,  390,  390,  390,  727,  575,  635,  635,  733,
+      637,  570,  575,  649,  734,  635,  637,  735,  736,  737,
+      728,  738,  390,  390,  390,  390,  390,  390,  739,  740,
+      741,  742,  727,  744,  745,  746,  747,  748,  749,  750,
+      751,  752,  754,  755,  756,  757,  759,  760,  761,  756,
+      762,  763,  764,  765,  766,  767,  768,  769,  770,  771,
+      772,  774,  775,  776,  777,  779,  780,  781,  782,  783,
+      771,  784,  785,  786,  787,  788,  789,  791,  792,  793,
+      794,  795,  796,  797,  798,  799,  801,  800,  802,  803,
+      804,  806,  807,  808,  809,  810,  811,  813,  814,  815,
+
+      756,  816,  817,  818,  819,  820,  821,  822,  823,  824,
+      825,  827,  828,  799,  800,  829,  830,  828,  831,  832,
+      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      843,  844,  845,  846,  847,  849,  850,  851,  852,  853,
+      854,  856,  857,  859,  860,  861,  862,  863,  864,  865,
+      867,  868,  869,  870,  871,  873,  874,  875,  876,  879,
+      880,  881,  882,  883,  884,  885,  886,  887,  888,  889,
+      890,  891,  893,  895,  868,  897,  898,  899,  900,  901,
+      869,  903,  904,  905,  907,  908,  909,  910,  913,  914,
+      915,  916,  917,  918,  919,  920,  921,  922,  923,  924,
+
+      925,  926,  927,  928,  929,  930,  931,  932,  933,  934,
+      935,  936,  937,  938,  939,  940,  941,  942,  943,  945,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  958,  959,  931,  963,  964,  965,  966,  967,
+      958,  968,  969,  970,  972,  973,  920,  974,  976,  980,
+      981,  982,  935,  983,  984,  985,  987,  988,  983,  990,
+      991,  992,  993,  994,  995,  997,  998,  999, 1000, 1001,
+     1002, 1003, 1004, 1005, 1007, 1008, 1010, 1011,  985, 1012,
+     1013, 1015, 1016, 1017, 1018, 1021, 1023, 1024, 1026, 1027,
+     1029, 1031, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
+
+     1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
+     1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1033,
+     1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
+     1072, 1075, 1076, 1079, 1080, 1081, 1082, 1083, 1084, 1086,
+     1088, 1090, 1091, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+     1100, 1102, 1103, 1104, 1106, 1107, 1068, 1108, 1109, 1110,
+     1111, 1113, 1114, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
+     1123, 1125, 1128, 1129, 1131, 1132, 1134, 1135, 1136, 1137,
+     1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148, 1149,
+     1150, 1151, 1153, 1154, 1155, 1157, 1158, 1159, 1160, 1161,
+
+     1162, 1163, 1164, 1165, 1167, 1169, 1170, 1171, 1173, 1174,
+     1175, 1177, 1178, 1179, 1181, 1182, 1183, 1184, 1185, 1186,
+     1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
+     1197, 1198, 1199, 1201, 1202, 1203, 1204, 1205, 1206, 1210,
+     1211, 1212, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1222,
+     1223, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227,
+     1227, 1228, 1234, 1228, 1228, 1228, 1229, 1235, 1229, 1236,
+     1229, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1231, 1231,
+     1231, 1232, 1237, 1232, 1232, 1232, 1233, 1233, 1233,  716,
+      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
+
+      705,  704,  703,  702,  701,  700,  698,  697,  696,  695,
+      694,  692,  691,  690,  687,  686,  685,  682,  681,  680,
+      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
+      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  648,
+      646,  645,  644,  643,  642,  641,  640,  639,  636,  633,
+      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  616,  615,  614,  613,  612,
+      611,  609,  608,  607,  606,  605,  604,  603,  602,  601,
+      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
+
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  574,  573,  572,  569,  568,
+      567,  565,  564,  562,  561,  560,  557,  556,  555,  554,
+      553,  552,  551,  549,  548,  547,  546,  545,  544,  543,
+      542,  540,  539,  538,  537,  535,  534,  533,  532,  531,
+      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
+      509,  507,  506,  505,  504,  503,  502,  501,  500,  499,
+      498,  497,  496,  495,  494,  493,  492,  491,  490,  484,
+      482,  479,  478,  477,  476,  474,  473,  472,  470,  467,
+
+      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
+      456,  455,  454,  453,  452,  451,  450,  448,  446,  445,
+      444,  443,  442,  441,  440,  439,  438,  437,  435,  434,
+      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  420,  419,  418,  416,  415,  414,  412,
+      411,  410,  409,  408,  406,  405,  403,  402,  400,  399,
+      398,  397,  395,  394,  393,  392,  387,  386,  384,  383,
+      382,  381,  380,  378,  377,  375,  372,  370,  368,  367,
+      366,  365,  364,  363,  362,  361,  360,  359,  358,  357,
+      356,  355,  354,  353,  352,  350,  349,  348,  347,  345,
+
+      344,  343,  342,  341,  340,  339,  337,  335,  334,  333,
+      332,  331,  329,  328,  327,  326,  325,  324,  323,  322,
+      321,  319,  318,  317,  316,  315,  314,  313,  312,  311,
+      310,  309,  307,  306,  305,  304,  301,  300,  299,  298,
+      297,  296,  292,  290,  287,  286,  283,  279,  272,  271,
+      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
+      260,  259,  258,  257,  255,  254,  253,  252,  251,  250,
+      249,  248,  247,  246,  245,  244,  243,  241,  240,  239,
+      238,  237,  236,  235,  233,  232,  231,  230,  229,  228,
+      227,  226,  224,  223,  222,  221,  220,  219,  218,  217,
+
+      216,  215,  214,  213,  212,  211,  210,  209,  208,  207,
+      206,  204,  203,  202,  201,  200,  198,  195,  193,  191,
+      189,  186,  185,  183,  180,  172,  171,  170,  168,  167,
+      166,  165,  164,  160,  158,  156,  155,  154,  153,  151,
+      150,  149,  148,  146,  145,  144,  143,  142,  141,  140,
+      139,  138,  136,  134,  132,  131,  130,  129,  127,  126,
+      125,  123,  122,  121,  120,  116,  110,  107,  106,  104,
+       99,   98,   79,   74,   68,   65,   60,   53,   50,   49,
+       47,   43,   41,   39,   38,   24,   14,   11, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1536,7 +1541,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[152] =
+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,  223,  232,  241,  250,
@@ -1551,10 +1556,10 @@ static const flex_int16_t yy_rule_linenum[152] =
 
      1016, 1025, 1034, 1043, 1052, 1061, 1070, 1079, 1088, 1097,
      1106, 1115, 1124, 1133, 1142, 1152, 1162, 1172, 1182, 1192,
-     1202, 1212, 1222, 1232, 1241, 1250, 1259, 1268, 1277, 1287,
-     1297, 1309, 1320, 1333, 1431, 1436, 1441, 1446, 1447, 1448,
-     1449, 1450, 1451, 1453, 1471, 1484, 1489, 1493, 1495, 1497,
-     1499
+     1202, 1212, 1222, 1232, 1241, 1250, 1259, 1268, 1277, 1286,
+     1296, 1306, 1318, 1329, 1342, 1440, 1445, 1450, 1455, 1456,
+     1457, 1458, 1459, 1460, 1462, 1480, 1493, 1498, 1502, 1504,
+     1506, 1508
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1601,7 +1606,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 1604 "dhcp4_lexer.cc"
+#line 1609 "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
@@ -1627,8 +1632,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 1630 "dhcp4_lexer.cc"
-#line 1631 "dhcp4_lexer.cc"
+#line 1635 "dhcp4_lexer.cc"
+#line 1636 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1950,7 +1955,7 @@ YY_DECL
     }
 
 
-#line 1953 "dhcp4_lexer.cc"
+#line 1958 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1979,13 +1984,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 >= 1212 )
+                               if ( yy_current_state >= 1226 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1211 );
+               while ( yy_current_state != 1225 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2004,13 +2009,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 < 152 )
+                       else if ( yy_act < 153 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 152 )
+                       else if ( yy_act == 153 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 153 )
+                       else if ( yy_act == 154 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3531,6 +3536,18 @@ YY_RULE_SETUP
 case 126:
 YY_RULE_SETUP
 #line 1250 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::CONFIG:
+        return isc::dhcp::Dhcp4Parser::make_CONTROL_AGENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("Control-agent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 1259 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3540,9 +3557,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1259 "dhcp4_lexer.ll"
+#line 1268 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3552,9 +3569,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1268 "dhcp4_lexer.ll"
+#line 1277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3564,9 +3581,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1277 "dhcp4_lexer.ll"
+#line 1286 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3577,9 +3594,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1287 "dhcp4_lexer.ll"
+#line 1296 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3590,9 +3607,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1297 "dhcp4_lexer.ll"
+#line 1306 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3605,9 +3622,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1318 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3619,9 +3636,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1320 "dhcp4_lexer.ll"
+#line 1329 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3633,9 +3650,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1333 "dhcp4_lexer.ll"
+#line 1342 "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.
@@ -3734,65 +3751,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 135:
-/* rule 135 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 1431 "dhcp4_lexer.ll"
+#line 1440 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 136:
-/* rule 136 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 1436 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1441 "dhcp4_lexer.ll"
+#line 1450 "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 138:
+case 139:
 YY_RULE_SETUP
-#line 1446 "dhcp4_lexer.ll"
+#line 1455 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1447 "dhcp4_lexer.ll"
+#line 1456 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1448 "dhcp4_lexer.ll"
+#line 1457 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1449 "dhcp4_lexer.ll"
+#line 1458 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1450 "dhcp4_lexer.ll"
+#line 1459 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1451 "dhcp4_lexer.ll"
+#line 1460 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1453 "dhcp4_lexer.ll"
+#line 1462 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3811,9 +3828,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1471 "dhcp4_lexer.ll"
+#line 1480 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3827,43 +3844,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1484 "dhcp4_lexer.ll"
+#line 1493 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1489 "dhcp4_lexer.ll"
+#line 1498 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1493 "dhcp4_lexer.ll"
+#line 1502 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1504 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1497 "dhcp4_lexer.ll"
+#line 1506 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1499 "dhcp4_lexer.ll"
+#line 1508 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1501 "dhcp4_lexer.ll"
+#line 1510 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -3887,12 +3904,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1524 "dhcp4_lexer.ll"
+#line 1533 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3895 "dhcp4_lexer.cc"
+#line 3912 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4211,7 +4228,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 >= 1212 )
+                       if ( yy_current_state >= 1226 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4244,11 +4261,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 >= 1212 )
+               if ( yy_current_state >= 1226 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1211);
+       yy_is_jam = (yy_current_state == 1225);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4997,7 +5014,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1524 "dhcp4_lexer.ll"
+#line 1533 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 51d88708fdc4379efad6692ff0e311591414da7b..d01c4f88aee1e6f3bfee598b7be5e2e4d53e1715 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -294,29 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 139: // "constant string"
+            case 140: // "constant string"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 156: // value
+      case 157: // value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 160: // map_value
+      case 161: // map_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 198: // socket_type
+      case 199: // socket_type
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 208: // db_type
+      case 209: // db_type
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 285: // hr_mode
+      case 286: // hr_mode
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 417: // ncr_protocol_value
+      case 418: // ncr_protocol_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 425: // replace_client_name_value
+      case 426: // replace_client_name_value
 
-#line 215 "dhcp4_parser.yy" // lalr1.cc:636
+#line 216 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 434 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -630,29 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,115 +674,115 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 225 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 226 "dhcp4_parser.yy" // lalr1.cc:859
+#line 227 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 227 "dhcp4_parser.yy" // lalr1.cc:859
+#line 228 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 228 "dhcp4_parser.yy" // lalr1.cc:859
+#line 229 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 704 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 229 "dhcp4_parser.yy" // lalr1.cc:859
+#line 230 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 230 "dhcp4_parser.yy" // lalr1.cc:859
+#line 231 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 716 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 231 "dhcp4_parser.yy" // lalr1.cc:859
+#line 232 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 722 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 232 "dhcp4_parser.yy" // lalr1.cc:859
+#line 233 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 728 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 233 "dhcp4_parser.yy" // lalr1.cc:859
+#line 234 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 734 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 235 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 740 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "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 746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 244 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 245 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "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 764 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 770 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 249 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 782 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 251 "dhcp4_parser.yy" // lalr1.cc:859
+#line 252 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -791,7 +791,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 32:
-#line 256 "dhcp4_parser.yy" // lalr1.cc:859
+#line 257 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -802,7 +802,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 33:
-#line 261 "dhcp4_parser.yy" // lalr1.cc:859
+#line 262 "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
@@ -812,13 +812,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 818 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 275 "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 > ());
@@ -827,7 +827,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 279 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -837,7 +837,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 285 "dhcp4_parser.yy" // lalr1.cc:859
+#line 286 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -846,7 +846,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
+#line 289 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -854,7 +854,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 296 "dhcp4_parser.yy" // lalr1.cc:859
+#line 297 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -863,7 +863,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:859
+#line 301 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -872,7 +872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 307 "dhcp4_parser.yy" // lalr1.cc:859
+#line 308 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -880,7 +880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 310 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -889,7 +889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:859
+#line 319 "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);
@@ -898,7 +898,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 322 "dhcp4_parser.yy" // lalr1.cc:859
+#line 323 "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);
@@ -907,7 +907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 333 "dhcp4_parser.yy" // lalr1.cc:859
+#line 334 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -918,7 +918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 343 "dhcp4_parser.yy" // lalr1.cc:859
+#line 344 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 348 "dhcp4_parser.yy" // lalr1.cc:859
+#line 349 "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
@@ -938,8 +938,8 @@ namespace isc { namespace dhcp {
 #line 939 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 61:
-#line 367 "dhcp4_parser.yy" // lalr1.cc:859
+  case 62:
+#line 370 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -951,8 +951,8 @@ namespace isc { namespace dhcp {
 #line 952 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 62:
-#line 374 "dhcp4_parser.yy" // lalr1.cc:859
+  case 63:
+#line 377 "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
@@ -963,8 +963,8 @@ namespace isc { namespace dhcp {
 #line 964 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 63:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:859
+  case 64:
+#line 387 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -973,16 +973,16 @@ namespace isc { namespace dhcp {
 #line 974 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 64:
-#line 388 "dhcp4_parser.yy" // lalr1.cc:859
+  case 65:
+#line 391 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 982 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 88:
-#line 421 "dhcp4_parser.yy" // lalr1.cc:859
+  case 89:
+#line 424 "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);
@@ -990,8 +990,8 @@ namespace isc { namespace dhcp {
 #line 991 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 89:
-#line 426 "dhcp4_parser.yy" // lalr1.cc:859
+  case 90:
+#line 429 "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);
@@ -999,8 +999,8 @@ namespace isc { namespace dhcp {
 #line 1000 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 90:
-#line 431 "dhcp4_parser.yy" // lalr1.cc:859
+  case 91:
+#line 434 "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);
@@ -1008,8 +1008,8 @@ namespace isc { namespace dhcp {
 #line 1009 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 91:
-#line 436 "dhcp4_parser.yy" // lalr1.cc:859
+  case 92:
+#line 439 "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);
@@ -1017,8 +1017,8 @@ namespace isc { namespace dhcp {
 #line 1018 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 92:
-#line 441 "dhcp4_parser.yy" // lalr1.cc:859
+  case 93:
+#line 444 "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);
@@ -1026,8 +1026,8 @@ namespace isc { namespace dhcp {
 #line 1027 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 93:
-#line 446 "dhcp4_parser.yy" // lalr1.cc:859
+  case 94:
+#line 449 "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);
@@ -1035,8 +1035,8 @@ namespace isc { namespace dhcp {
 #line 1036 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 94:
-#line 452 "dhcp4_parser.yy" // lalr1.cc:859
+  case 95:
+#line 455 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1046,8 +1046,8 @@ namespace isc { namespace dhcp {
 #line 1047 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 95:
-#line 457 "dhcp4_parser.yy" // lalr1.cc:859
+  case 96:
+#line 460 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1055,8 +1055,8 @@ namespace isc { namespace dhcp {
 #line 1056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 101:
-#line 471 "dhcp4_parser.yy" // lalr1.cc:859
+  case 102:
+#line 474 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1065,16 +1065,16 @@ namespace isc { namespace dhcp {
 #line 1066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 102:
-#line 475 "dhcp4_parser.yy" // lalr1.cc:859
+  case 103:
+#line 478 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1074 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 479 "dhcp4_parser.yy" // lalr1.cc:859
+  case 104:
+#line 482 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1084,8 +1084,8 @@ namespace isc { namespace dhcp {
 #line 1085 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 484 "dhcp4_parser.yy" // lalr1.cc:859
+  case 105:
+#line 487 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1093,16 +1093,16 @@ namespace isc { namespace dhcp {
 #line 1094 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 489 "dhcp4_parser.yy" // lalr1.cc:859
+  case 106:
+#line 492 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
 #line 1102 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 491 "dhcp4_parser.yy" // lalr1.cc:859
+  case 107:
+#line 494 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1110,20 +1110,20 @@ namespace isc { namespace dhcp {
 #line 1111 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 496 "dhcp4_parser.yy" // lalr1.cc:859
+  case 108:
+#line 499 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1117 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 497 "dhcp4_parser.yy" // lalr1.cc:859
+  case 109:
+#line 500 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 500 "dhcp4_parser.yy" // lalr1.cc:859
+  case 110:
+#line 503 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
@@ -1131,8 +1131,8 @@ namespace isc { namespace dhcp {
 #line 1132 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 506 "dhcp4_parser.yy" // lalr1.cc:859
+  case 111:
+#line 509 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1142,8 +1142,8 @@ namespace isc { namespace dhcp {
 #line 1143 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 111:
-#line 511 "dhcp4_parser.yy" // lalr1.cc:859
+  case 112:
+#line 514 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1151,8 +1151,8 @@ namespace isc { namespace dhcp {
 #line 1152 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 112:
-#line 516 "dhcp4_parser.yy" // lalr1.cc:859
+  case 113:
+#line 519 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1162,8 +1162,8 @@ namespace isc { namespace dhcp {
 #line 1163 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 113:
-#line 521 "dhcp4_parser.yy" // lalr1.cc:859
+  case 114:
+#line 524 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1171,16 +1171,16 @@ namespace isc { namespace dhcp {
 #line 1172 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 545 "dhcp4_parser.yy" // lalr1.cc:859
+  case 130:
+#line 548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
 #line 1180 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 547 "dhcp4_parser.yy" // lalr1.cc:859
+  case 131:
+#line 550 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1188,40 +1188,40 @@ namespace isc { namespace dhcp {
 #line 1189 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+  case 132:
+#line 555 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:859
+  case 133:
+#line 556 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1201 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 133:
-#line 554 "dhcp4_parser.yy" // lalr1.cc:859
+  case 134:
+#line 557 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1207 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 134:
-#line 555 "dhcp4_parser.yy" // lalr1.cc:859
+  case 135:
+#line 558 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1213 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 135:
-#line 558 "dhcp4_parser.yy" // lalr1.cc:859
+  case 136:
+#line 561 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1221 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 560 "dhcp4_parser.yy" // lalr1.cc:859
+  case 137:
+#line 563 "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);
@@ -1230,16 +1230,16 @@ namespace isc { namespace dhcp {
 #line 1231 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 566 "dhcp4_parser.yy" // lalr1.cc:859
+  case 138:
+#line 569 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1239 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 568 "dhcp4_parser.yy" // lalr1.cc:859
+  case 139:
+#line 571 "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);
@@ -1248,16 +1248,16 @@ namespace isc { namespace dhcp {
 #line 1249 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 574 "dhcp4_parser.yy" // lalr1.cc:859
+  case 140:
+#line 577 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1257 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 576 "dhcp4_parser.yy" // lalr1.cc:859
+  case 141:
+#line 579 "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);
@@ -1266,8 +1266,8 @@ namespace isc { namespace dhcp {
 #line 1267 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 582 "dhcp4_parser.yy" // lalr1.cc:859
+  case 142:
+#line 585 "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);
@@ -1275,16 +1275,16 @@ namespace isc { namespace dhcp {
 #line 1276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 587 "dhcp4_parser.yy" // lalr1.cc:859
+  case 143:
+#line 590 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 589 "dhcp4_parser.yy" // lalr1.cc:859
+  case 144:
+#line 592 "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);
@@ -1293,8 +1293,8 @@ namespace isc { namespace dhcp {
 #line 1294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 595 "dhcp4_parser.yy" // lalr1.cc:859
+  case 145:
+#line 598 "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);
@@ -1302,8 +1302,8 @@ namespace isc { namespace dhcp {
 #line 1303 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 600 "dhcp4_parser.yy" // lalr1.cc:859
+  case 146:
+#line 603 "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);
@@ -1311,8 +1311,8 @@ namespace isc { namespace dhcp {
 #line 1312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 605 "dhcp4_parser.yy" // lalr1.cc:859
+  case 147:
+#line 608 "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);
@@ -1320,8 +1320,8 @@ namespace isc { namespace dhcp {
 #line 1321 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
+  case 148:
+#line 613 "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);
@@ -1329,16 +1329,16 @@ namespace isc { namespace dhcp {
 #line 1330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 615 "dhcp4_parser.yy" // lalr1.cc:859
+  case 149:
+#line 618 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1338 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 617 "dhcp4_parser.yy" // lalr1.cc:859
+  case 150:
+#line 620 "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);
@@ -1347,16 +1347,16 @@ namespace isc { namespace dhcp {
 #line 1348 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 623 "dhcp4_parser.yy" // lalr1.cc:859
+  case 151:
+#line 626 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 625 "dhcp4_parser.yy" // lalr1.cc:859
+  case 152:
+#line 628 "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);
@@ -1365,8 +1365,8 @@ namespace isc { namespace dhcp {
 #line 1366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 632 "dhcp4_parser.yy" // lalr1.cc:859
+  case 153:
+#line 635 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1376,8 +1376,8 @@ namespace isc { namespace dhcp {
 #line 1377 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 154:
+#line 640 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1385,8 +1385,8 @@ namespace isc { namespace dhcp {
 #line 1386 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 653 "dhcp4_parser.yy" // lalr1.cc:859
+  case 162:
+#line 656 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1394,8 +1394,8 @@ namespace isc { namespace dhcp {
 #line 1395 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 658 "dhcp4_parser.yy" // lalr1.cc:859
+  case 163:
+#line 661 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1403,8 +1403,8 @@ namespace isc { namespace dhcp {
 #line 1404 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 663 "dhcp4_parser.yy" // lalr1.cc:859
+  case 164:
+#line 666 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -1412,8 +1412,8 @@ namespace isc { namespace dhcp {
 #line 1413 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+  case 165:
+#line 671 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -1421,8 +1421,8 @@ namespace isc { namespace dhcp {
 #line 1422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 673 "dhcp4_parser.yy" // lalr1.cc:859
+  case 166:
+#line 676 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1430,8 +1430,8 @@ namespace isc { namespace dhcp {
 #line 1431 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 678 "dhcp4_parser.yy" // lalr1.cc:859
+  case 167:
+#line 681 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1441,8 +1441,8 @@ namespace isc { namespace dhcp {
 #line 1442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 683 "dhcp4_parser.yy" // lalr1.cc:859
+  case 168:
+#line 686 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1450,8 +1450,8 @@ namespace isc { namespace dhcp {
 #line 1451 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 172:
-#line 696 "dhcp4_parser.yy" // lalr1.cc:859
+  case 173:
+#line 699 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1460,16 +1460,16 @@ namespace isc { namespace dhcp {
 #line 1461 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 173:
-#line 700 "dhcp4_parser.yy" // lalr1.cc:859
+  case 174:
+#line 703 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1469 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 704 "dhcp4_parser.yy" // lalr1.cc:859
+  case 175:
+#line 707 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1478,24 +1478,24 @@ namespace isc { namespace dhcp {
 #line 1479 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 708 "dhcp4_parser.yy" // lalr1.cc:859
+  case 176:
+#line 711 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1487 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 721 "dhcp4_parser.yy" // lalr1.cc:859
+  case 182:
+#line 724 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1495 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 723 "dhcp4_parser.yy" // lalr1.cc:859
+  case 183:
+#line 726 "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);
@@ -1504,16 +1504,16 @@ namespace isc { namespace dhcp {
 #line 1505 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 183:
-#line 729 "dhcp4_parser.yy" // lalr1.cc:859
+  case 184:
+#line 732 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1513 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 184:
-#line 731 "dhcp4_parser.yy" // lalr1.cc:859
+  case 185:
+#line 734 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1521,8 +1521,8 @@ namespace isc { namespace dhcp {
 #line 1522 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 737 "dhcp4_parser.yy" // lalr1.cc:859
+  case 186:
+#line 740 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1532,8 +1532,8 @@ namespace isc { namespace dhcp {
 #line 1533 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 742 "dhcp4_parser.yy" // lalr1.cc:859
+  case 187:
+#line 745 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1541,8 +1541,8 @@ namespace isc { namespace dhcp {
 #line 1542 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 759 "dhcp4_parser.yy" // lalr1.cc:859
+  case 196:
+#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("reclaim-timer-wait-time", value);
@@ -1550,8 +1550,8 @@ namespace isc { namespace dhcp {
 #line 1551 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
+  case 197:
+#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("flush-reclaimed-timer-wait-time", value);
@@ -1559,8 +1559,8 @@ namespace isc { namespace dhcp {
 #line 1560 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 769 "dhcp4_parser.yy" // lalr1.cc:859
+  case 198:
+#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("hold-reclaimed-time", value);
@@ -1568,8 +1568,8 @@ namespace isc { namespace dhcp {
 #line 1569 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 774 "dhcp4_parser.yy" // lalr1.cc:859
+  case 199:
+#line 777 "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);
@@ -1577,8 +1577,8 @@ namespace isc { namespace dhcp {
 #line 1578 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 779 "dhcp4_parser.yy" // lalr1.cc:859
+  case 200:
+#line 782 "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);
@@ -1586,8 +1586,8 @@ namespace isc { namespace dhcp {
 #line 1587 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:859
+  case 201:
+#line 787 "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);
@@ -1595,8 +1595,8 @@ namespace isc { namespace dhcp {
 #line 1596 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:859
+  case 202:
+#line 795 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
@@ -1606,8 +1606,8 @@ namespace isc { namespace dhcp {
 #line 1607 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 797 "dhcp4_parser.yy" // lalr1.cc:859
+  case 203:
+#line 800 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1615,8 +1615,8 @@ namespace isc { namespace dhcp {
 #line 1616 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 817 "dhcp4_parser.yy" // lalr1.cc:859
+  case 208:
+#line 820 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1625,8 +1625,8 @@ namespace isc { namespace dhcp {
 #line 1626 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 821 "dhcp4_parser.yy" // lalr1.cc:859
+  case 209:
+#line 824 "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.
@@ -1648,8 +1648,8 @@ namespace isc { namespace dhcp {
 #line 1649 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 840 "dhcp4_parser.yy" // lalr1.cc:859
+  case 210:
+#line 843 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1658,24 +1658,24 @@ namespace isc { namespace dhcp {
 #line 1659 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 844 "dhcp4_parser.yy" // lalr1.cc:859
+  case 211:
+#line 847 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1667 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 876 "dhcp4_parser.yy" // lalr1.cc:859
+  case 234:
+#line 879 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1675 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 878 "dhcp4_parser.yy" // lalr1.cc:859
+  case 235:
+#line 881 "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);
@@ -1684,16 +1684,16 @@ namespace isc { namespace dhcp {
 #line 1685 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 884 "dhcp4_parser.yy" // lalr1.cc:859
+  case 236:
+#line 887 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1693 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 886 "dhcp4_parser.yy" // lalr1.cc:859
+  case 237:
+#line 889 "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);
@@ -1702,16 +1702,16 @@ namespace isc { namespace dhcp {
 #line 1703 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 892 "dhcp4_parser.yy" // lalr1.cc:859
+  case 238:
+#line 895 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1711 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 894 "dhcp4_parser.yy" // lalr1.cc:859
+  case 239:
+#line 897 "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);
@@ -1720,16 +1720,16 @@ namespace isc { namespace dhcp {
 #line 1721 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 239:
-#line 900 "dhcp4_parser.yy" // lalr1.cc:859
+  case 240:
+#line 903 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1729 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 902 "dhcp4_parser.yy" // lalr1.cc:859
+  case 241:
+#line 905 "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);
@@ -1738,16 +1738,16 @@ namespace isc { namespace dhcp {
 #line 1739 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 241:
-#line 908 "dhcp4_parser.yy" // lalr1.cc:859
+  case 242:
+#line 911 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1747 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 910 "dhcp4_parser.yy" // lalr1.cc:859
+  case 243:
+#line 913 "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);
@@ -1756,16 +1756,16 @@ namespace isc { namespace dhcp {
 #line 1757 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 916 "dhcp4_parser.yy" // lalr1.cc:859
+  case 244:
+#line 919 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1765 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 918 "dhcp4_parser.yy" // lalr1.cc:859
+  case 245:
+#line 921 "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);
@@ -1774,16 +1774,16 @@ namespace isc { namespace dhcp {
 #line 1775 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 924 "dhcp4_parser.yy" // lalr1.cc:859
+  case 246:
+#line 927 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
 #line 1783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 926 "dhcp4_parser.yy" // lalr1.cc:859
+  case 247:
+#line 929 "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);
@@ -1792,16 +1792,16 @@ namespace isc { namespace dhcp {
 #line 1793 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 932 "dhcp4_parser.yy" // lalr1.cc:859
+  case 248:
+#line 935 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
 #line 1801 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 934 "dhcp4_parser.yy" // lalr1.cc:859
+  case 249:
+#line 937 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1809,26 +1809,26 @@ namespace isc { namespace dhcp {
 #line 1810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 939 "dhcp4_parser.yy" // lalr1.cc:859
+  case 250:
+#line 942 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 1816 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 940 "dhcp4_parser.yy" // lalr1.cc:859
+  case 251:
+#line 943 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 1822 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 941 "dhcp4_parser.yy" // lalr1.cc:859
+  case 252:
+#line 944 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 1828 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 944 "dhcp4_parser.yy" // lalr1.cc:859
+  case 253:
+#line 947 "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);
@@ -1836,8 +1836,8 @@ namespace isc { namespace dhcp {
 #line 1837 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 949 "dhcp4_parser.yy" // lalr1.cc:859
+  case 254:
+#line 952 "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);
@@ -1845,8 +1845,8 @@ namespace isc { namespace dhcp {
 #line 1846 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 958 "dhcp4_parser.yy" // lalr1.cc:859
+  case 255:
+#line 961 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1856,8 +1856,8 @@ namespace isc { namespace dhcp {
 #line 1857 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 963 "dhcp4_parser.yy" // lalr1.cc:859
+  case 256:
+#line 966 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1865,8 +1865,8 @@ namespace isc { namespace dhcp {
 #line 1866 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 980 "dhcp4_parser.yy" // lalr1.cc:859
+  case 261:
+#line 983 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1875,16 +1875,16 @@ namespace isc { namespace dhcp {
 #line 1876 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 984 "dhcp4_parser.yy" // lalr1.cc:859
+  case 262:
+#line 987 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 991 "dhcp4_parser.yy" // lalr1.cc:859
+  case 263:
+#line 994 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1893,16 +1893,16 @@ namespace isc { namespace dhcp {
 #line 1894 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 263:
-#line 995 "dhcp4_parser.yy" // lalr1.cc:859
+  case 264:
+#line 998 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1902 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1024 "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);
@@ -1910,16 +1910,16 @@ namespace isc { namespace dhcp {
 #line 1911 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1031 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1033 "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);
@@ -1928,16 +1928,16 @@ namespace isc { namespace dhcp {
 #line 1929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1039 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1041 "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);
@@ -1946,16 +1946,16 @@ namespace isc { namespace dhcp {
 #line 1947 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1047 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1955 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 284:
-#line 1046 "dhcp4_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1049 "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);
@@ -1964,16 +1964,16 @@ namespace isc { namespace dhcp {
 #line 1965 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1054 "dhcp4_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1057 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1973 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1056 "dhcp4_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1059 "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);
@@ -1982,8 +1982,8 @@ namespace isc { namespace dhcp {
 #line 1983 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1062 "dhcp4_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1065 "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);
@@ -1991,8 +1991,8 @@ namespace isc { namespace dhcp {
 #line 1992 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1071 "dhcp4_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1074 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -2002,8 +2002,8 @@ namespace isc { namespace dhcp {
 #line 2003 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1079 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2011,8 +2011,8 @@ namespace isc { namespace dhcp {
 #line 2012 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1095 "dhcp4_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1098 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2021,16 +2021,16 @@ namespace isc { namespace dhcp {
 #line 2022 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1099 "dhcp4_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1102 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1109 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2039,24 +2039,24 @@ namespace isc { namespace dhcp {
 #line 2040 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1110 "dhcp4_parser.yy" // lalr1.cc:859
+  case 299:
+#line 1113 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2048 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 310:
-#line 1139 "dhcp4_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1142 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1141 "dhcp4_parser.yy" // lalr1.cc:859
+  case 312:
+#line 1144 "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);
@@ -2065,8 +2065,8 @@ namespace isc { namespace dhcp {
 #line 2066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1151 "dhcp4_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1154 "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);
@@ -2074,8 +2074,8 @@ namespace isc { namespace dhcp {
 #line 2075 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1159 "dhcp4_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
@@ -2085,8 +2085,8 @@ namespace isc { namespace dhcp {
 #line 2086 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1167 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2094,8 +2094,8 @@ namespace isc { namespace dhcp {
 #line 2095 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1179 "dhcp4_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1182 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2104,16 +2104,16 @@ namespace isc { namespace dhcp {
 #line 2105 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1183 "dhcp4_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2113 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1187 "dhcp4_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1190 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2122,24 +2122,24 @@ namespace isc { namespace dhcp {
 #line 2123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1191 "dhcp4_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2139 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1207 "dhcp4_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1210 "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);
@@ -2148,16 +2148,16 @@ namespace isc { namespace dhcp {
 #line 2149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1213 "dhcp4_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1216 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2157 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1218 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2165,8 +2165,8 @@ namespace isc { namespace dhcp {
 #line 2166 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1226 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
@@ -2176,8 +2176,8 @@ namespace isc { namespace dhcp {
 #line 2177 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1228 "dhcp4_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2185,8 +2185,8 @@ namespace isc { namespace dhcp {
 #line 2186 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1244 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2195,16 +2195,16 @@ namespace isc { namespace dhcp {
 #line 2196 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1248 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2204 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1249 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1252 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2213,24 +2213,24 @@ namespace isc { namespace dhcp {
 #line 2214 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1256 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2222 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1284 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2230 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1283 "dhcp4_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1286 "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);
@@ -2239,16 +2239,16 @@ namespace isc { namespace dhcp {
 #line 2240 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1292 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2248 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1291 "dhcp4_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1294 "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);
@@ -2257,16 +2257,16 @@ namespace isc { namespace dhcp {
 #line 2258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
+  case 367:
+#line 1300 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2266 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
+  case 368:
+#line 1302 "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);
@@ -2275,16 +2275,16 @@ namespace isc { namespace dhcp {
 #line 2276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1308 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1307 "dhcp4_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1310 "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);
@@ -2293,16 +2293,16 @@ namespace isc { namespace dhcp {
 #line 2294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1316 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1315 "dhcp4_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1318 "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);
@@ -2311,16 +2311,16 @@ namespace isc { namespace dhcp {
 #line 2312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+  case 373:
+#line 1324 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1323 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1326 "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);
@@ -2329,16 +2329,16 @@ namespace isc { namespace dhcp {
 #line 2330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1332 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2338 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1334 "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);
@@ -2347,16 +2347,16 @@ namespace isc { namespace dhcp {
 #line 2348 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1340 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1342 "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);
@@ -2365,16 +2365,16 @@ namespace isc { namespace dhcp {
 #line 2366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1348 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2374 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1350 "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);
@@ -2383,16 +2383,16 @@ namespace isc { namespace dhcp {
 #line 2384 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1356 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2392 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1358 "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);
@@ -2401,8 +2401,8 @@ namespace isc { namespace dhcp {
 #line 2402 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1364 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
@@ -2412,8 +2412,8 @@ namespace isc { namespace dhcp {
 #line 2413 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1369 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2421,8 +2421,8 @@ namespace isc { namespace dhcp {
 #line 2422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1374 "dhcp4_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1377 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
@@ -2432,8 +2432,8 @@ namespace isc { namespace dhcp {
 #line 2433 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1382 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2441,16 +2441,16 @@ namespace isc { namespace dhcp {
 #line 2442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1387 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1389 "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);
@@ -2459,8 +2459,8 @@ namespace isc { namespace dhcp {
 #line 2460 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1395 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1398 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
@@ -2470,8 +2470,8 @@ namespace isc { namespace dhcp {
 #line 2471 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1400 "dhcp4_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1403 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2479,8 +2479,8 @@ namespace isc { namespace dhcp {
 #line 2480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1409 "dhcp4_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1412 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2489,24 +2489,24 @@ namespace isc { namespace dhcp {
 #line 2490 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1416 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2498 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1439 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2506 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1438 "dhcp4_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1441 "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);
@@ -2515,8 +2515,8 @@ namespace isc { namespace dhcp {
 #line 2516 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1448 "dhcp4_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1451 "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);
@@ -2524,8 +2524,8 @@ namespace isc { namespace dhcp {
 #line 2525 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1458 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -2535,8 +2535,8 @@ namespace isc { namespace dhcp {
 #line 2536 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 410:
-#line 1460 "dhcp4_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1463 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2544,16 +2544,16 @@ namespace isc { namespace dhcp {
 #line 2545 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1473 "dhcp4_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1476 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2553 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1478 "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);
@@ -2562,16 +2562,16 @@ namespace isc { namespace dhcp {
 #line 2563 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1481 "dhcp4_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1484 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2571 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1483 "dhcp4_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1486 "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);
@@ -2580,8 +2580,8 @@ namespace isc { namespace dhcp {
 #line 2581 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1491 "dhcp4_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2591,8 +2591,8 @@ namespace isc { namespace dhcp {
 #line 2592 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1499 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2600,8 +2600,8 @@ namespace isc { namespace dhcp {
 #line 2601 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1501 "dhcp4_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2610,16 +2610,16 @@ namespace isc { namespace dhcp {
 #line 2611 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1505 "dhcp4_parser.yy" // lalr1.cc:859
+  case 423:
+#line 1508 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2619 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1533 "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);
@@ -2627,16 +2627,16 @@ namespace isc { namespace dhcp {
 #line 2628 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1538 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1537 "dhcp4_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1540 "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);
@@ -2645,16 +2645,16 @@ namespace isc { namespace dhcp {
 #line 2646 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1546 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2654 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1545 "dhcp4_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1548 "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);
@@ -2663,8 +2663,8 @@ namespace isc { namespace dhcp {
 #line 2664 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1551 "dhcp4_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1554 "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);
@@ -2672,16 +2672,16 @@ namespace isc { namespace dhcp {
 #line 2673 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1559 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2681 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1561 "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);
@@ -2690,8 +2690,8 @@ namespace isc { namespace dhcp {
 #line 2691 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1564 "dhcp4_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1567 "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);
@@ -2699,8 +2699,8 @@ namespace isc { namespace dhcp {
 #line 2700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1569 "dhcp4_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1572 "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);
@@ -2708,16 +2708,16 @@ namespace isc { namespace dhcp {
 #line 2709 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1574 "dhcp4_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1577 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
 #line 2717 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1576 "dhcp4_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1579 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2725,28 +2725,28 @@ namespace isc { namespace dhcp {
 #line 2726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1582 "dhcp4_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1585 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 2732 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 2738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1589 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
 #line 2746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1588 "dhcp4_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1591 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -2755,8 +2755,8 @@ namespace isc { namespace dhcp {
 #line 2756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1594 "dhcp4_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1597 "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);
@@ -2764,8 +2764,8 @@ namespace isc { namespace dhcp {
 #line 2765 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1599 "dhcp4_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1602 "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);
@@ -2773,8 +2773,8 @@ namespace isc { namespace dhcp {
 #line 2774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1604 "dhcp4_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1607 "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);
@@ -2782,16 +2782,16 @@ namespace isc { namespace dhcp {
 #line 2783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 459:
-#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1612 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 2791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
+  case 461:
+#line 1614 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2799,40 +2799,40 @@ namespace isc { namespace dhcp {
 #line 2800 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1617 "dhcp4_parser.yy" // lalr1.cc:859
+  case 462:
+#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
 #line 2808 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2816 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2824 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 464:
-#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
+  case 465:
+#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2832 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 465:
-#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
+  case 466:
+#line 1632 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -2840,16 +2840,16 @@ namespace isc { namespace dhcp {
 #line 2841 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1635 "dhcp4_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2849 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1640 "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);
@@ -2858,16 +2858,16 @@ namespace isc { namespace dhcp {
 #line 2859 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1645 "dhcp4_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1648 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2867 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1647 "dhcp4_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1650 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2875,16 +2875,16 @@ namespace isc { namespace dhcp {
 #line 2876 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1652 "dhcp4_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1655 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1654 "dhcp4_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1657 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2892,176 +2892,193 @@ namespace isc { namespace dhcp {
 #line 2893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
+  case 473:
+#line 1662 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 2901 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 474:
 #line 1664 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+    ctx.leave();
+}
+#line 2910 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 475:
+#line 1674 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 2904 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2921 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1669 "dhcp4_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1679 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2913 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2930 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1686 "dhcp4_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1696 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 2924 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2941 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1691 "dhcp4_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1701 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2933 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2950 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1713 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 2943 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2960 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1707 "dhcp4_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1717 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2951 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2968 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1722 "dhcp4_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1732 "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);
 }
-#line 2960 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2977 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1737 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2968 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2985 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1729 "dhcp4_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1739 "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);
     ctx.leave();
 }
-#line 2978 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2995 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1735 "dhcp4_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1745 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 2989 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3006 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1750 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2998 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3015 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1749 "dhcp4_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1759 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3008 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3025 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1753 "dhcp4_parser.yy" // lalr1.cc:859
+  case 501:
+#line 1763 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3016 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3033 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1767 "dhcp4_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1777 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3024 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3041 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1769 "dhcp4_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1779 "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);
     ctx.leave();
 }
-#line 3034 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3051 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1775 "dhcp4_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1785 "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 3043 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3060 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1780 "dhcp4_parser.yy" // lalr1.cc:859
+  case 511:
+#line 1790 "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 3052 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3069 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 509:
-#line 1785 "dhcp4_parser.yy" // lalr1.cc:859
+  case 512:
+#line 1795 "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 3061 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3078 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3065 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3082 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3316,97 +3333,98 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp4Parser::yypact_ninf_ = -477;
+  const short int Dhcp4Parser::yypact_ninf_ = -482;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     105,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,    60,    19,    47,    62,    67,    85,   109,   122,
-     128,   134,   144,   156,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,    19,    35,    17,    54,
-     106,    18,   -19,    92,    76,   -18,   -35,   119,  -477,    82,
-      96,   171,   168,   185,  -477,  -477,  -477,  -477,   190,  -477,
-      53,  -477,  -477,  -477,  -477,  -477,  -477,   206,   208,  -477,
-    -477,  -477,   226,   259,   262,   266,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   270,  -477,  -477,  -477,    81,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   276,   130,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,   280,   284,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,   145,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,   146,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   243,   274,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   290,
-    -477,  -477,  -477,   292,  -477,  -477,   289,   301,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,   306,
-    -477,  -477,  -477,  -477,   303,   309,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,   188,  -477,  -477,  -477,   311,
-    -477,  -477,   313,  -477,   314,   315,  -477,  -477,   316,   317,
-     318,  -477,  -477,  -477,   201,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    19,    19,  -477,   174,   319,   321,   322,   323,  -477,
-      17,  -477,   324,   187,   191,   326,   327,   328,   194,   195,
-     196,   197,   334,   335,   336,   337,   338,   339,   340,   207,
-     341,   342,    54,  -477,   344,   345,   209,   106,  -477,    66,
-     346,   348,   351,   352,   353,   354,   355,   220,   219,   358,
-     359,   360,   361,    18,  -477,   362,   363,   -19,  -477,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,  -477,
-      92,   374,   375,   240,   377,   378,   379,   242,  -477,    76,
-     381,   246,  -477,   -18,   382,   383,   -16,  -477,   248,   385,
-     387,   252,   389,   255,   256,   390,   393,   258,   260,   263,
-     394,   395,   119,  -477,  -477,  -477,   397,   396,   399,    19,
-      19,  -477,   400,  -477,  -477,   265,   401,   402,  -477,  -477,
-    -477,  -477,   405,   406,   407,   408,   409,   410,   411,  -477,
-     412,   413,  -477,   416,   150,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   414,   420,  -477,  -477,  -477,   277,
-     278,   285,   421,   286,   288,   293,  -477,  -477,   -21,   298,
-     423,   422,  -477,   299,   427,  -477,   300,   302,   416,   304,
-     305,   307,   308,   310,   312,   320,  -477,   325,   329,  -477,
-     330,   331,   332,  -477,  -477,   333,  -477,  -477,   343,    19,
-    -477,  -477,   347,   349,  -477,   350,  -477,  -477,    15,   380,
-    -477,  -477,  -477,   -72,   356,  -477,    19,    54,   357,  -477,
-    -477,   106,  -477,   148,   148,   433,   435,   445,   -24,    31,
-     447,   112,    12,   119,  -477,  -477,  -477,  -477,  -477,   451,
-    -477,    66,  -477,  -477,  -477,   449,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   450,   384,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   241,  -477,   244,  -477,  -477,   245,  -477,  -477,
-    -477,  -477,   454,   457,   458,   462,   463,  -477,  -477,  -477,
-     247,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,   251,  -477,   467,   471,  -477,  -477,
-     470,   474,  -477,  -477,   472,   476,  -477,  -477,  -477,  -477,
-    -477,  -477,   139,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-     149,  -477,   475,   477,  -477,   479,   480,   481,   483,   486,
-     487,   254,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,   257,  -477,  -477,  -477,   261,   376,   386,  -477,  -477,
-     488,   490,  -477,  -477,   491,   493,  -477,  -477,   492,  -477,
-     494,   357,  -477,  -477,   495,   497,   498,   499,   388,   391,
-     392,   398,   403,   500,   501,   148,  -477,  -477,    18,  -477,
-     433,    76,  -477,   435,   -18,  -477,   445,   -24,  -477,    31,
-    -477,   -35,  -477,   447,   404,   415,   417,   418,   419,   424,
-     112,  -477,   502,   503,    12,  -477,  -477,  -477,   504,   505,
-    -477,   -19,  -477,   449,    92,  -477,   450,   507,  -477,   508,
-    -477,   281,   426,   428,   429,  -477,  -477,  -477,  -477,  -477,
-     430,   431,  -477,   264,  -477,   506,  -477,   509,  -477,  -477,
-    -477,   273,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-     432,   434,  -477,  -477,   436,   275,  -477,   510,  -477,   437,
-     512,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   189,  -477,    68,   512,  -477,  -477,   516,  -477,
-    -477,  -477,   287,  -477,  -477,  -477,  -477,  -477,   517,   438,
-     518,    68,  -477,   511,  -477,   440,  -477,   519,  -477,  -477,
-     205,  -477,   -15,   519,  -477,  -477,   520,   523,   525,   295,
-    -477,  -477,  -477,  -477,  -477,  -477,   526,   439,   442,   443,
-     -15,  -477,   441,  -477,  -477,  -477,  -477,  -477
+      66,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,    99,    19,   102,   119,   168,   184,   185,   205,
+     225,   235,   236,   247,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,    19,   115,    17,    54,
+     177,    18,    26,    93,   128,   -19,   -33,   120,  -482,   204,
+     260,   265,   258,   270,  -482,  -482,  -482,  -482,  -482,   271,
+    -482,    53,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   279,
+     280,  -482,  -482,  -482,   282,   283,   286,   287,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,   289,  -482,  -482,  -482,    97,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,   293,   125,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,   294,   295,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   132,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   134,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,   292,   298,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,   302,  -482,  -482,  -482,   303,  -482,  -482,   301,   307,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,   308,  -482,  -482,  -482,  -482,   305,   311,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,   145,  -482,  -482,
+    -482,   312,  -482,  -482,   314,  -482,   316,   317,  -482,  -482,
+     318,   319,   320,  -482,  -482,  -482,   146,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,    19,    19,  -482,   171,   321,   322,   324,
+     325,   326,  -482,    17,  -482,   327,   172,   189,   329,   330,
+     331,   195,   196,   197,   198,   336,   337,   338,   339,   340,
+     341,   342,   207,   343,   345,    54,  -482,   346,   347,   209,
+     177,  -482,    67,   349,   350,   351,   355,   356,   357,   358,
+     222,   221,   361,   362,   363,   364,    18,  -482,   365,   366,
+      26,  -482,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,  -482,    93,   377,   378,   244,   379,   380,   382,
+     245,  -482,   128,   383,   246,  -482,   -19,   386,   387,   -15,
+    -482,   251,   388,   389,   254,   392,   256,   257,   395,   396,
+     261,   263,   264,   397,   398,   120,  -482,  -482,  -482,   399,
+     401,   402,    19,    19,    19,  -482,   403,  -482,  -482,   272,
+     404,   406,  -482,  -482,  -482,  -482,   400,   409,   410,   411,
+     412,   413,   414,  -482,   415,   416,  -482,   419,   141,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   417,   423,
+    -482,  -482,  -482,   288,   290,   291,   422,   299,   304,   306,
+    -482,  -482,   213,   309,   424,   425,  -482,   315,   426,  -482,
+     323,   332,   419,   333,   334,   335,   344,   348,   352,   353,
+    -482,   354,   359,  -482,   360,   381,   384,  -482,  -482,   385,
+    -482,  -482,   390,    19,  -482,  -482,   391,   393,  -482,   394,
+    -482,  -482,    14,   405,  -482,  -482,  -482,    72,   407,  -482,
+      19,    54,   408,  -482,  -482,  -482,   177,  -482,    11,    11,
+     427,   431,   435,    43,    32,   436,   150,    70,   120,  -482,
+    -482,  -482,  -482,  -482,   441,  -482,    67,  -482,  -482,  -482,
+     440,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   444,
+     420,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,   170,  -482,   173,
+    -482,  -482,   203,  -482,  -482,  -482,  -482,   448,   452,   453,
+     455,   456,  -482,  -482,  -482,   206,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   241,
+    -482,   442,   458,  -482,  -482,   460,   459,  -482,  -482,   461,
+     466,  -482,  -482,  -482,  -482,  -482,  -482,    64,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,    86,  -482,   464,   468,  -482,
+     472,   473,   474,   475,   476,   477,   242,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,   243,  -482,  -482,  -482,
+     249,   418,   421,  -482,  -482,   479,   480,  -482,  -482,   481,
+     483,  -482,  -482,   482,  -482,   478,   408,  -482,  -482,   485,
+     487,   491,   492,   278,   277,   428,   429,   430,   493,   494,
+      11,  -482,  -482,    18,  -482,   427,   128,  -482,   431,   -19,
+    -482,   435,    43,  -482,    32,  -482,   -33,  -482,   436,   432,
+     433,   434,   437,   438,   439,   150,  -482,   498,   499,    70,
+    -482,  -482,  -482,   500,   501,  -482,    26,  -482,   440,    93,
+    -482,   444,   503,  -482,   504,  -482,    27,   443,   445,   446,
+    -482,  -482,  -482,  -482,  -482,   447,   449,  -482,   250,  -482,
+     497,  -482,   502,  -482,  -482,  -482,   253,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,   450,   451,  -482,  -482,   454,
+     259,  -482,   505,  -482,   457,   507,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,   100,  -482,   -11,
+     507,  -482,  -482,   508,  -482,  -482,  -482,   262,  -482,  -482,
+    -482,  -482,  -482,   511,   462,   512,   -11,  -482,   506,  -482,
+     465,  -482,   513,  -482,  -482,   228,  -482,     7,   513,  -482,
+    -482,   514,   515,   518,   269,  -482,  -482,  -482,  -482,  -482,
+    -482,   519,   463,   467,   469,     7,  -482,   471,  -482,  -482,
+    -482,  -482,  -482
   };
 
   const unsigned short int
@@ -3415,466 +3433,469 @@ namespace isc { namespace dhcp {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
       20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     1,    39,    32,    28,    27,    24,
-      25,    26,    31,     3,    29,    30,    52,     5,    63,     7,
-     101,     9,   209,    11,   323,    13,   343,    15,   262,    17,
-     297,    19,   174,    21,   421,    23,    41,    35,     0,     0,
-       0,     0,     0,   345,   264,   299,     0,     0,    43,     0,
-      42,     0,     0,    36,    61,   472,   468,   470,     0,    60,
-       0,    54,    56,    58,    59,    57,    94,     0,     0,   362,
-     110,   112,     0,     0,     0,     0,   201,   254,   289,   152,
-     388,   166,   185,     0,   409,   419,    87,     0,    65,    67,
-      68,    69,    70,    84,    85,    72,    73,    74,    75,    79,
-      80,    71,    77,    78,    86,    76,    81,    82,    83,   103,
-     105,     0,     0,    96,    98,    99,   100,   392,   235,   237,
-     239,   315,   233,   241,   243,     0,     0,   247,   245,   335,
-     384,   232,   213,   214,   215,   227,     0,   211,   218,   229,
-     230,   231,   219,   220,   223,   225,   221,   222,   216,   217,
-     224,   228,   226,   331,   333,   330,   328,     0,   325,   327,
-     329,   364,   366,   382,   370,   372,   376,   374,   380,   378,
-     368,   361,   357,     0,   346,   347,   358,   359,   360,   354,
-     349,   355,   351,   352,   353,   356,   350,   279,   142,     0,
-     283,   281,   286,     0,   275,   276,     0,   265,   266,   268,
-     278,   269,   270,   271,   285,   272,   273,   274,   310,     0,
-     308,   309,   312,   313,     0,   300,   301,   303,   304,   305,
-     306,   307,   181,   183,   178,     0,   176,   179,   180,     0,
-     441,   443,     0,   446,     0,     0,   450,   454,     0,     0,
-       0,   459,   466,   439,     0,   423,   425,   426,   427,   428,
-     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
-      40,     0,     0,    33,     0,     0,     0,     0,     0,    51,
-       0,    53,     0,     0,     0,     0,     0,     0,     0,     0,
+      25,    26,    31,     3,    29,    30,    52,     5,    64,     7,
+     102,     9,   210,    11,   324,    13,   344,    15,   263,    17,
+     298,    19,   175,    21,   422,    23,    41,    35,     0,     0,
+       0,     0,     0,   346,   265,   300,     0,     0,    43,     0,
+      42,     0,     0,    36,    62,   475,   469,   471,   473,     0,
+      61,     0,    54,    56,    58,    59,    60,    57,    95,     0,
+       0,   363,   111,   113,     0,     0,     0,     0,   202,   255,
+     290,   153,   389,   167,   186,     0,   410,   420,    88,     0,
+      66,    68,    69,    70,    71,    85,    86,    73,    74,    75,
+      76,    80,    81,    72,    78,    79,    87,    77,    82,    83,
+      84,   104,   106,     0,     0,    97,    99,   100,   101,   393,
+     236,   238,   240,   316,   234,   242,   244,     0,     0,   248,
+     246,   336,   385,   233,   214,   215,   216,   228,     0,   212,
+     219,   230,   231,   232,   220,   221,   224,   226,   222,   223,
+     217,   218,   225,   229,   227,   332,   334,   331,   329,     0,
+     326,   328,   330,   365,   367,   383,   371,   373,   377,   375,
+     381,   379,   369,   362,   358,     0,   347,   348,   359,   360,
+     361,   355,   350,   356,   352,   353,   354,   357,   351,   280,
+     143,     0,   284,   282,   287,     0,   276,   277,     0,   266,
+     267,   269,   279,   270,   271,   272,   286,   273,   274,   275,
+     311,     0,   309,   310,   313,   314,     0,   301,   302,   304,
+     305,   306,   307,   308,   182,   184,   179,     0,   177,   180,
+     181,     0,   442,   444,     0,   447,     0,     0,   451,   455,
+       0,     0,     0,   460,   467,   440,     0,   424,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,    40,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    51,     0,    53,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    64,     0,     0,     0,     0,   102,   394,
+       0,     0,     0,     0,     0,     0,    65,     0,     0,     0,
+       0,   103,   395,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
+       0,   325,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   345,     0,     0,     0,     0,     0,     0,     0,
+       0,   264,     0,     0,     0,   299,     0,     0,     0,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   423,    44,    37,     0,
+       0,     0,     0,     0,     0,    55,     0,    93,    94,     0,
+       0,     0,    89,    90,    91,    92,     0,     0,     0,     0,
+       0,     0,     0,   409,     0,     0,    67,     0,     0,   110,
+      98,   407,   405,   406,   401,   402,   403,   404,     0,   396,
+     397,   399,   400,     0,     0,     0,     0,     0,     0,     0,
+     253,   254,     0,     0,     0,     0,   213,     0,     0,   327,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   210,     0,     0,     0,   324,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   344,
-       0,     0,     0,     0,     0,     0,     0,     0,   263,     0,
-       0,     0,   298,     0,     0,     0,     0,   175,     0,     0,
+     349,     0,     0,   278,     0,     0,     0,   289,   268,     0,
+     315,   303,     0,     0,   178,   441,     0,     0,   446,     0,
+     449,   450,     0,     0,   457,   458,   459,     0,     0,   425,
+       0,     0,     0,   470,   472,   474,     0,   364,     0,     0,
+     204,   257,   292,     0,     0,   169,     0,     0,     0,    45,
+     105,   108,   109,   107,     0,   394,     0,   237,   239,   241,
+     318,   235,   243,   245,   250,   251,   252,   249,   247,   338,
+       0,   333,    34,   335,   366,   368,   384,   372,   374,   378,
+     376,   382,   380,   370,   281,   144,   285,   283,   288,   312,
+     183,   185,   443,   445,   448,   453,   454,   452,   456,   462,
+     463,   464,   465,   466,   461,   468,    38,     0,   480,     0,
+     477,   479,     0,   130,   136,   138,   140,     0,     0,     0,
+       0,     0,   149,   151,   129,     0,   115,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,     0,
+     208,     0,   205,   206,   261,     0,   258,   259,   296,     0,
+     293,   294,   162,   163,   164,   165,   166,     0,   155,   157,
+     158,   159,   160,   161,   391,     0,   173,     0,   170,   171,
+       0,     0,     0,     0,     0,     0,     0,   188,   190,   191,
+     192,   193,   194,   195,   416,   418,     0,   412,   414,   415,
+       0,    47,     0,   398,   322,     0,   319,   320,   342,     0,
+     339,   340,   387,     0,    63,     0,     0,   476,    96,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   422,    44,    37,     0,     0,     0,     0,
-       0,    55,     0,    92,    93,     0,     0,     0,    88,    89,
-      90,    91,     0,     0,     0,     0,     0,     0,     0,   408,
-       0,     0,    66,     0,     0,   109,    97,   406,   404,   405,
-     400,   401,   402,   403,     0,   395,   396,   398,   399,     0,
-       0,     0,     0,     0,     0,     0,   252,   253,     0,     0,
-       0,     0,   212,     0,     0,   326,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   348,     0,     0,   277,
-       0,     0,     0,   288,   267,     0,   314,   302,     0,     0,
-     177,   440,     0,     0,   445,     0,   448,   449,     0,     0,
-     456,   457,   458,     0,     0,   424,     0,     0,     0,   469,
-     471,     0,   363,     0,     0,   203,   256,   291,     0,     0,
-     168,     0,     0,     0,    45,   104,   107,   108,   106,     0,
-     393,     0,   236,   238,   240,   317,   234,   242,   244,   249,
-     250,   251,   248,   246,   337,     0,   332,    34,   334,   365,
-     367,   383,   371,   373,   377,   375,   381,   379,   369,   280,
-     143,   284,   282,   287,   311,   182,   184,   442,   444,   447,
-     452,   453,   451,   455,   461,   462,   463,   464,   465,   460,
-     467,    38,     0,   477,     0,   474,   476,     0,   129,   135,
-     137,   139,     0,     0,     0,     0,     0,   148,   150,   128,
-       0,   114,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,     0,   207,     0,   204,   205,   260,
-       0,   257,   258,   295,     0,   292,   293,   161,   162,   163,
-     164,   165,     0,   154,   156,   157,   158,   159,   160,   390,
-       0,   172,     0,   169,   170,     0,     0,     0,     0,     0,
-       0,     0,   187,   189,   190,   191,   192,   193,   194,   415,
-     417,     0,   411,   413,   414,     0,    47,     0,   397,   321,
-       0,   318,   319,   341,     0,   338,   339,   386,     0,    62,
-       0,     0,   473,    95,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   111,   113,     0,   202,
-       0,   264,   255,     0,   299,   290,     0,     0,   153,     0,
-     389,     0,   167,     0,     0,     0,     0,     0,     0,     0,
-       0,   186,     0,     0,     0,   410,   420,    49,     0,    48,
-     407,     0,   316,     0,   345,   336,     0,     0,   385,     0,
-     475,     0,     0,     0,     0,   141,   144,   145,   146,   147,
-       0,     0,   115,     0,   206,     0,   259,     0,   294,   155,
-     391,     0,   171,   195,   196,   197,   198,   199,   200,   188,
-       0,     0,   412,    46,     0,     0,   320,     0,   340,     0,
-       0,   131,   132,   133,   134,   130,   136,   138,   140,   149,
-     151,   208,   261,   296,   173,   416,   418,    50,   322,   342,
-     387,   481,     0,   479,     0,     0,   478,   493,     0,   491,
-     489,   485,     0,   483,   487,   488,   486,   480,     0,     0,
-       0,     0,   482,     0,   490,     0,   484,     0,   492,   497,
-       0,   495,     0,     0,   494,   505,     0,     0,     0,     0,
-     499,   501,   502,   503,   504,   496,     0,     0,     0,     0,
-       0,   498,     0,   507,   508,   509,   500,   506
+       0,   112,   114,     0,   203,     0,   265,   256,     0,   300,
+     291,     0,     0,   154,     0,   390,     0,   168,     0,     0,
+       0,     0,     0,     0,     0,     0,   187,     0,     0,     0,
+     411,   421,    49,     0,    48,   408,     0,   317,     0,   346,
+     337,     0,     0,   386,     0,   478,     0,     0,     0,     0,
+     142,   145,   146,   147,   148,     0,     0,   116,     0,   207,
+       0,   260,     0,   295,   156,   392,     0,   172,   196,   197,
+     198,   199,   200,   201,   189,     0,     0,   413,    46,     0,
+       0,   321,     0,   341,     0,     0,   132,   133,   134,   135,
+     131,   137,   139,   141,   150,   152,   209,   262,   297,   174,
+     417,   419,    50,   323,   343,   388,   484,     0,   482,     0,
+       0,   481,   496,     0,   494,   492,   488,     0,   486,   490,
+     491,   489,   483,     0,     0,     0,     0,   485,     0,   493,
+       0,   487,     0,   495,   500,     0,   498,     0,     0,   497,
+     508,     0,     0,     0,     0,   502,   504,   505,   506,   507,
+     499,     0,     0,     0,     0,     0,   501,     0,   510,   511,
+     512,   503,   509
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   -36,  -477,    65,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,    64,  -477,  -477,  -477,   -58,  -477,
-    -477,  -477,   233,  -477,  -477,  -477,  -477,    44,   222,   -60,
-     -44,   -42,  -477,  -477,   -40,  -477,  -477,    45,   218,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,    43,  -137,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,   -63,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -148,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -152,  -477,  -477,  -477,
-    -149,   179,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -154,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -133,  -477,  -477,  -477,  -130,   216,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -476,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -132,
-    -477,  -477,  -477,  -131,  -477,   193,  -477,   -49,  -477,  -477,
-    -477,  -477,  -477,   -47,  -477,  -477,  -477,  -477,  -477,   -51,
-    -477,  -477,  -477,  -126,  -477,  -477,  -477,  -128,  -477,   198,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -160,  -477,  -477,  -477,  -157,   225,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -153,  -477,  -477,  -477,  -142,  -477,
-     224,   -48,  -477,  -305,  -477,  -297,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,    55,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -127,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-      83,   202,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,  -477,
-    -477,  -477,   -76,  -477,  -477,  -477,  -198,  -477,  -477,  -213,
-    -477,  -477,  -477,  -477,  -477,  -477,  -224,  -477,  -477,  -240,
-    -477,  -477,  -477,  -477,  -477
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,   -36,  -482,    16,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,    56,  -482,  -482,  -482,   -58,  -482,
+    -482,  -482,   234,  -482,  -482,  -482,  -482,    37,   214,   -60,
+     -44,   -42,  -482,  -482,   -40,  -482,  -482,    36,   215,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,    38,  -144,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,   -63,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -154,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -159,  -482,  -482,  -482,
+    -156,   174,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -164,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -143,  -482,  -482,  -482,  -139,   210,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -481,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -140,
+    -482,  -482,  -482,  -141,  -482,   187,  -482,   -49,  -482,  -482,
+    -482,  -482,  -482,   -47,  -482,  -482,  -482,  -482,  -482,   -51,
+    -482,  -482,  -482,  -138,  -482,  -482,  -482,  -137,  -482,   188,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -168,  -482,  -482,  -482,  -165,   216,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -166,  -482,  -482,  -482,  -162,  -482,
+     211,   -48,  -482,  -308,  -482,  -300,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,    44,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -150,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+      55,   180,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
+    -482,  -482,  -482,  -482,  -104,  -482,  -482,  -482,  -224,  -482,
+    -482,  -239,  -482,  -482,  -482,  -482,  -482,  -482,  -250,  -482,
+    -482,  -265,  -482,  -482,  -482,  -482,  -482
   };
 
   const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    32,    33,    34,    57,   528,    72,    73,
-      35,    56,    69,    70,   505,   646,   708,   709,   106,    37,
-      58,    80,    81,    82,   285,    39,    59,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   292,   132,   133,    41,
-      60,   134,   314,   135,   315,   508,   136,   116,   296,   117,
-     297,   580,   581,   582,   664,   765,   583,   665,   584,   666,
-     585,   667,   586,   215,   352,   588,   589,   590,   591,   592,
-     673,   593,   674,   118,   305,   612,   613,   614,   615,   616,
-     617,   618,   119,   307,   622,   623,   624,   691,    53,    66,
-     245,   246,   247,   364,   248,   365,   120,   308,   631,   632,
-     633,   634,   635,   636,   637,   638,   121,   302,   596,   597,
-     598,   678,    43,    61,   156,   157,   158,   324,   159,   320,
-     160,   321,   161,   322,   162,   325,   163,   326,   164,   330,
-     165,   329,   522,   166,   167,   122,   303,   600,   601,   602,
-     681,    49,    64,   216,   217,   218,   219,   220,   221,   222,
-     351,   223,   355,   224,   354,   225,   226,   356,   227,   123,
-     304,   604,   605,   606,   684,    51,    65,   234,   235,   236,
-     237,   238,   360,   239,   240,   241,   169,   323,   650,   651,
-     652,   711,    45,    62,   177,   178,   179,   335,   180,   336,
-     170,   331,   654,   655,   656,   714,    47,    63,   193,   194,
-     195,   124,   295,   197,   339,   198,   340,   199,   348,   200,
-     342,   201,   343,   202,   345,   203,   344,   204,   347,   205,
-     346,   206,   341,   172,   332,   658,   717,   125,   306,   620,
-     319,   424,   425,   426,   427,   428,   509,   126,   127,   310,
-     641,   642,   643,   702,   644,   703,   128,   311,    55,    67,
-     264,   265,   266,   267,   369,   268,   370,   269,   270,   372,
-     271,   272,   273,   375,   552,   274,   376,   275,   276,   277,
-     278,   380,   559,   279,   381,    83,   287,    84,   288,    85,
-     286,   564,   565,   566,   660,   782,   783,   784,   792,   793,
-     794,   795,   800,   796,   798,   810,   811,   812,   819,   820,
-     821,   826,   822,   823,   824
+      21,    22,    23,    32,    33,    34,    57,   533,    72,    73,
+      35,    56,    69,    70,   510,   651,   713,   714,   108,    37,
+      58,    81,    82,    83,   287,    39,    59,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   295,   134,   135,    41,
+      60,   136,   317,   137,   318,   513,   138,   118,   299,   119,
+     300,   585,   586,   587,   669,   770,   588,   670,   589,   671,
+     590,   672,   591,   217,   355,   593,   594,   595,   596,   597,
+     678,   598,   679,   120,   308,   617,   618,   619,   620,   621,
+     622,   623,   121,   310,   627,   628,   629,   696,    53,    66,
+     247,   248,   249,   367,   250,   368,   122,   311,   636,   637,
+     638,   639,   640,   641,   642,   643,   123,   305,   601,   602,
+     603,   683,    43,    61,   158,   159,   160,   327,   161,   323,
+     162,   324,   163,   325,   164,   328,   165,   329,   166,   333,
+     167,   332,   527,   168,   169,   124,   306,   605,   606,   607,
+     686,    49,    64,   218,   219,   220,   221,   222,   223,   224,
+     354,   225,   358,   226,   357,   227,   228,   359,   229,   125,
+     307,   609,   610,   611,   689,    51,    65,   236,   237,   238,
+     239,   240,   363,   241,   242,   243,   171,   326,   655,   656,
+     657,   716,    45,    62,   179,   180,   181,   338,   182,   339,
+     172,   334,   659,   660,   661,   719,    47,    63,   195,   196,
+     197,   126,   298,   199,   342,   200,   343,   201,   351,   202,
+     345,   203,   346,   204,   348,   205,   347,   206,   350,   207,
+     349,   208,   344,   174,   335,   663,   722,   127,   309,   625,
+     322,   428,   429,   430,   431,   432,   514,   128,   129,   313,
+     646,   647,   648,   707,   649,   708,   130,   314,    55,    67,
+     266,   267,   268,   269,   372,   270,   373,   271,   272,   375,
+     273,   274,   275,   378,   557,   276,   379,   277,   278,   279,
+     280,   383,   564,   281,   384,    84,   289,    85,   290,    86,
+     291,    87,   288,   569,   570,   571,   665,   787,   788,   789,
+     797,   798,   799,   800,   805,   801,   803,   815,   816,   817,
+     824,   825,   826,   831,   827,   828,   829
   };
 
   const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
-      79,   152,   231,   151,   175,   191,   214,   230,   244,   263,
-     168,   176,   192,   171,   422,   196,   232,   153,   233,   154,
-      68,   155,   423,   619,    25,   137,    26,    74,    27,    98,
-     550,   208,   228,   209,   210,   229,    88,    89,   137,   173,
-     174,   554,   555,   556,   557,   519,   520,   521,   242,   243,
-     607,   608,   609,   610,    36,   611,   290,    92,    93,    94,
-      24,   291,   138,   139,   140,    86,    98,   242,   243,    38,
-     558,    87,    88,    89,    40,   141,    90,    91,   142,   143,
-     144,   145,   146,   147,   312,    89,   181,   182,   280,   313,
-     148,   149,    42,    92,    93,    94,    95,    96,   150,   281,
-     207,    97,    98,   148,    78,   815,   639,   640,   816,   817,
-     818,    89,   181,   182,    98,   208,    44,   208,   129,   130,
-      78,    78,   131,    99,   100,   208,   551,   209,   210,    46,
-     211,   212,   213,   317,    75,    48,   101,   417,   318,   102,
-      98,    50,   687,    76,    77,   688,   103,   104,   333,   337,
-     105,    52,   689,   334,   338,   690,    78,    78,    28,    29,
-      30,    31,   183,    54,   506,   507,   184,   185,   186,   187,
-     188,   189,   568,   190,    71,   282,   283,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   787,   284,   788,
-     789,   366,   785,    78,   289,   786,   367,   208,   625,   626,
-     627,   628,   629,   630,   382,    78,   422,    78,   813,   383,
-     293,   814,   294,   740,   423,    78,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     298,    78,    79,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,   312,   384,   385,   661,   317,   659,
-     675,   349,   662,   663,   675,   676,   419,   700,    78,   677,
-     704,   418,   701,   299,   382,   705,   300,   333,   420,   706,
-     301,   421,   771,   152,   309,   151,   366,   350,   337,   175,
-     316,   774,   168,   778,   327,   171,   176,    78,   328,   153,
-     801,   154,   191,   155,   353,   802,   357,   358,   830,   192,
-     231,   214,   196,   831,   359,   230,   761,   762,   763,   764,
-     361,   362,   363,   386,   232,   368,   233,   371,   373,   374,
-     377,   378,   379,   387,   263,   388,   389,   390,   392,   393,
-     395,   396,   397,   394,   398,   399,   400,   401,   402,   403,
-     404,   405,   406,   407,   408,   410,   411,   409,   413,   414,
-     429,   415,   430,   489,   490,   431,   432,   433,   434,   435,
-     436,   437,   438,   439,   440,   441,   443,   444,   446,   447,
-     448,   449,   450,   451,   452,   453,   454,   455,   457,   458,
-     459,   460,   461,   462,   463,   465,   468,   469,   466,   472,
-     471,   473,   474,   475,   478,   476,   477,   479,   483,   484,
-     480,   486,   481,   487,   492,   482,   488,   491,   493,   494,
-     495,   496,   497,   498,   499,   500,   512,   513,   501,   502,
-     503,   504,   510,   511,   514,   516,   515,   517,   524,   525,
-     587,   587,   518,   546,    26,   579,   579,   523,   526,   529,
-     595,   530,   599,   532,   533,   263,   534,   535,   419,   536,
-     561,   537,   603,   418,   621,   647,   649,   653,   668,   538,
-     420,   669,   670,   421,   539,   657,   671,   672,   540,   541,
-     542,   543,   544,   679,   680,   563,   682,   683,   685,   686,
-     693,   692,   545,   694,   695,   696,   547,   697,   548,   549,
-     698,   699,   553,   713,   712,   560,   716,   715,   719,   721,
-     718,   722,   723,   724,   730,   731,   750,   751,   754,   527,
-     753,   759,   531,   760,   772,   707,   807,   773,   779,   781,
-     799,   803,   805,   391,   827,   710,   809,   828,   725,   829,
-     832,   562,   727,   726,   412,   416,   567,   594,   732,   739,
-     728,   742,   741,   729,   743,   470,   749,   734,   733,   442,
-     735,   736,   464,   756,   755,   744,   737,   745,   746,   747,
-     738,   467,   445,   758,   748,   766,   648,   767,   768,   769,
-     770,   775,   757,   776,   456,   777,   780,   752,   804,   808,
-     837,   833,   834,   835,   485,   720,   645,   797,   806,   825,
-     836,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      80,   154,   233,   153,   177,   193,   216,   232,   246,   265,
+     170,   178,   194,   173,   426,   198,   234,   155,   235,   156,
+      68,   157,   427,   624,    25,   139,    26,    74,    27,   555,
+     210,   230,   211,   212,   231,   573,    90,    91,   210,   139,
+     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+     244,   245,   766,   767,   768,   769,   293,    94,    95,    96,
+     210,   294,   140,   141,   142,    88,   100,   692,   244,   245,
+     693,    89,    90,    91,   100,   143,    92,    93,   144,   145,
+     146,   147,   148,   149,   175,   176,    91,   183,   184,   694,
+     150,   151,   695,    94,    95,    96,    97,    98,   152,    24,
+     315,    99,   100,   790,   150,   316,   791,    79,   792,    36,
+     793,   794,    91,   183,   184,   100,   210,   612,   613,   614,
+     615,    79,   616,   101,   102,   556,    38,   820,   320,    79,
+     821,   822,   823,   321,    75,   336,   103,   340,   421,   104,
+     337,   100,   341,    76,    77,    78,   105,   106,   369,   385,
+     107,    79,   209,   370,   386,   511,   512,    79,    79,    28,
+      29,    30,    31,   185,   644,   645,    79,   186,   187,   188,
+     189,   190,   191,   315,   192,    40,   666,   210,   664,   211,
+     212,   667,   213,   214,   215,   559,   560,   561,   562,   131,
+     132,    42,    44,   133,    79,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,   320,    79,   426,   680,
+     282,   668,    46,   745,   681,   563,   427,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   818,    48,    79,   819,    80,   630,   631,   632,   633,
+     634,   635,    50,    52,   680,   705,   709,   387,   388,   682,
+     706,   710,   385,   336,    54,    71,   369,   711,   776,   423,
+      79,   779,   340,   283,   422,   806,   285,   783,    79,   284,
+     807,   424,   835,   286,   425,   292,   154,   836,   153,   524,
+     525,   526,   177,   296,   297,   170,   301,   302,   173,   178,
+     303,   304,   155,   312,   156,   193,   157,   319,   330,   331,
+     352,   353,   194,   233,   216,   198,   356,   360,   232,   361,
+     362,   389,   364,   365,   366,   397,   371,   234,   374,   235,
+     376,   377,   380,   381,   382,   390,   391,   265,   392,   393,
+     394,   396,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,   412,   414,   413,   415,
+     417,   418,   419,   433,   434,   435,   493,   494,   495,   436,
+     437,   438,   439,   440,   441,   442,   443,   444,   445,   447,
+     448,   450,   451,   452,   453,   454,   455,   456,   457,   458,
+     459,   461,   462,   464,   465,   463,   466,   469,   467,   470,
+     472,   473,   476,   477,   475,   478,   479,   480,   481,   482,
+     483,   487,   488,   490,   484,   500,   485,   486,   491,   492,
+     496,   498,   497,   499,   501,   502,   503,   504,   505,   730,
+     731,   506,   507,   508,   509,   515,   516,   520,   517,   529,
+     518,   519,   530,    26,   600,   592,   592,   551,   604,   521,
+     584,   584,   608,   626,   522,   652,   523,   654,   684,   528,
+     265,   658,   673,   423,   566,   531,   674,   675,   422,   676,
+     677,   685,   688,   534,   532,   424,   687,   690,   425,   691,
+     697,   698,   535,   537,   538,   539,   699,   700,   701,   702,
+     703,   704,   724,   718,   540,   717,   721,   720,   541,   726,
+     723,   727,   542,   543,   544,   728,   729,   735,   736,   545,
+     546,   662,   755,   756,   759,   777,   758,   764,   536,   765,
+     778,   812,   804,   784,   786,   808,   810,   558,   832,   833,
+     814,   547,   834,   837,   548,   549,   568,   395,   567,   416,
+     550,   552,   572,   553,   554,   420,   737,   599,   744,   747,
+     746,   754,   739,   474,   738,   740,   446,   565,   741,   468,
+     761,   760,   742,   743,   471,   763,   449,   762,   712,   757,
+     653,   715,   725,   650,   460,   489,   802,   811,   830,   732,
+     841,   734,   733,   748,   749,   750,     0,     0,   751,   752,
+     753,     0,     0,   771,     0,   772,   773,   774,     0,   775,
+     780,   781,     0,     0,   782,     0,     0,   785,     0,     0,
+       0,     0,     0,   809,     0,   813,   838,     0,   839,     0,
+     840,   842,     0,     0,     0,     0,     0,   592,     0,     0,
+       0,     0,   584,   154,     0,   153,   233,     0,   216,     0,
+       0,   232,   170,     0,     0,   173,     0,     0,   246,   155,
+     234,   156,   235,   157,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,   193,     0,     0,     0,   178,     0,     0,   194,     0,
+       0,   198,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   587,     0,     0,     0,     0,   579,   152,     0,
-     151,   231,     0,   214,     0,     0,   230,   168,     0,     0,
-     171,     0,     0,   244,   153,   232,   154,   233,   155,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   175,     0,     0,   191,     0,     0,     0,
-     176,     0,     0,   192,     0,     0,   196,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   791,     0,     0,     0,     0,   790,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   791,     0,
-       0,     0,     0,   790
+       0,     0,     0,     0,     0,     0,   796,     0,     0,     0,
+       0,   795,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   796,     0,     0,     0,     0,   795
   };
 
   const short int
   Dhcp4Parser::yycheck_[] =
   {
       58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
-      61,    62,    63,    61,   319,    63,    65,    61,    65,    61,
-      56,    61,   319,   499,     5,     7,     7,    10,     9,    48,
-      15,    49,    50,    51,    52,    53,    18,    19,     7,    58,
-      59,   113,   114,   115,   116,    66,    67,    68,    83,    84,
-      74,    75,    76,    77,     7,    79,     3,    39,    40,    41,
-       0,     8,    44,    45,    46,    11,    48,    83,    84,     7,
-     142,    17,    18,    19,     7,    57,    22,    23,    60,    61,
-      62,    63,    64,    65,     3,    19,    20,    21,     6,     8,
-      72,    73,     7,    39,    40,    41,    42,    43,    80,     3,
-      24,    47,    48,    72,   139,   120,    94,    95,   123,   124,
-     125,    19,    20,    21,    48,    49,     7,    49,    12,    13,
-     139,   139,    16,    69,    70,    49,   111,    51,    52,     7,
-      54,    55,    56,     3,   117,     7,    82,    71,     8,    85,
-      48,     7,     3,   126,   127,     6,    92,    93,     3,     3,
-      96,     7,     3,     8,     8,     6,   139,   139,   139,   140,
-     141,   142,    70,     7,    14,    15,    74,    75,    76,    77,
-      78,    79,    24,    81,   139,     4,     8,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,   119,     3,   121,
-     122,     3,     3,   139,     4,     6,     8,    49,    86,    87,
-      88,    89,    90,    91,     3,   139,   511,   139,     3,     8,
-       4,     6,     4,   689,   511,   139,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-       4,   139,   290,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,     3,   281,   282,     3,     3,     8,
-       3,     8,     8,     8,     3,     8,   319,     3,   139,     8,
-       3,   319,     8,     4,     3,     8,     4,     3,   319,     8,
-       4,   319,     8,   333,     4,   333,     3,     3,     3,   337,
-       4,     8,   333,     8,     4,   333,   337,   139,     4,   333,
-       3,   333,   350,   333,     4,     8,     4,     8,     3,   350,
-     363,   359,   350,     8,     3,   363,    25,    26,    27,    28,
-       4,     8,     3,   139,   363,     4,   363,     4,     4,     4,
-       4,     4,     4,     4,   382,     4,     4,     4,     4,   142,
-       4,     4,     4,   142,   140,   140,   140,   140,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   140,     4,     4,
-       4,   142,     4,   389,   390,     4,     4,     4,     4,     4,
-     140,   142,     4,     4,     4,     4,     4,     4,     4,     4,
+      61,    62,    63,    61,   322,    63,    65,    61,    65,    61,
+      56,    61,   322,   504,     5,     7,     7,    10,     9,    15,
+      49,    50,    51,    52,    53,    24,    18,    19,    49,     7,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      83,    84,    25,    26,    27,    28,     3,    39,    40,    41,
+      49,     8,    44,    45,    46,    11,    48,     3,    83,    84,
+       6,    17,    18,    19,    48,    57,    22,    23,    60,    61,
+      62,    63,    64,    65,    58,    59,    19,    20,    21,     3,
+      72,    73,     6,    39,    40,    41,    42,    43,    80,     0,
+       3,    47,    48,     3,    72,     8,     6,   140,   119,     7,
+     121,   122,    19,    20,    21,    48,    49,    74,    75,    76,
+      77,   140,    79,    69,    70,   111,     7,   120,     3,   140,
+     123,   124,   125,     8,   117,     3,    82,     3,    71,    85,
+       8,    48,     8,   126,   127,   128,    92,    93,     3,     3,
+      96,   140,    24,     8,     8,    14,    15,   140,   140,   140,
+     141,   142,   143,    70,    94,    95,   140,    74,    75,    76,
+      77,    78,    79,     3,    81,     7,     3,    49,     8,    51,
+      52,     8,    54,    55,    56,   113,   114,   115,   116,    12,
+      13,     7,     7,    16,   140,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,     3,   140,   516,     3,
+       6,     8,     7,   694,     8,   143,   516,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,     3,     7,   140,     6,   293,    86,    87,    88,    89,
+      90,    91,     7,     7,     3,     3,     3,   283,   284,     8,
+       8,     8,     3,     3,     7,   140,     3,     8,     8,   322,
+     140,     8,     3,     3,   322,     3,     8,     8,   140,     4,
+       8,   322,     3,     3,   322,     4,   336,     8,   336,    66,
+      67,    68,   340,     4,     4,   336,     4,     4,   336,   340,
+       4,     4,   336,     4,   336,   353,   336,     4,     4,     4,
+       8,     3,   353,   366,   362,   353,     4,     4,   366,     8,
+       3,   140,     4,     8,     3,   143,     4,   366,     4,   366,
+       4,     4,     4,     4,     4,     4,     4,   385,     4,     4,
+       4,     4,   143,     4,     4,     4,   141,   141,   141,   141,
+       4,     4,     4,     4,     4,     4,     4,     4,   141,     4,
+       4,     4,   143,     4,     4,     4,   392,   393,   394,     4,
+       4,     4,     4,   141,   143,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     140,     4,     4,     4,   142,     4,     4,     4,   142,     4,
-     142,     4,   140,     4,     4,   140,   140,     4,     4,     4,
-     142,     4,   142,     7,   139,   142,     7,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,   139,   139,     7,     7,
-       7,     5,     8,     3,   139,   139,     5,   139,     5,     7,
-     493,   494,   139,   469,     7,   493,   494,   139,   139,   139,
-       7,   139,     7,   139,   139,   503,   139,   139,   511,   139,
-     486,   139,     7,   511,     7,     4,     7,     7,     4,   139,
-     511,     4,     4,   511,   139,    81,     4,     4,   139,   139,
-     139,   139,   139,     6,     3,   118,     6,     3,     6,     3,
-       3,     6,   139,     4,     4,     4,   139,     4,   139,   139,
-       4,     4,   112,     3,     6,   139,     3,     6,     4,     4,
-       8,     4,     4,     4,     4,     4,     4,     4,     3,   444,
-       6,     4,   448,     5,     8,   139,     5,     8,     8,     7,
-       4,     4,     4,   290,     4,   139,     7,     4,   140,     4,
-       4,   487,   140,   142,   312,   317,   491,   494,   675,   687,
-     142,   693,   691,   140,   140,   366,   700,   680,   678,   333,
-     681,   683,   359,   713,   711,   140,   684,   140,   140,   140,
-     686,   363,   337,   716,   140,   139,   511,   139,   139,   139,
-     139,   139,   714,   139,   350,   139,   139,   704,   140,   139,
-     139,   142,   140,   140,   382,   661,   503,   785,   801,   813,
-     830,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   675,    -1,    -1,    -1,    -1,   675,   678,    -1,
-     678,   684,    -1,   681,    -1,    -1,   684,   678,    -1,    -1,
-     678,    -1,    -1,   691,   678,   684,   678,   684,   678,    -1,
+       4,     4,     4,     4,     4,   141,     4,     4,   143,   143,
+       4,     4,     4,     4,   143,   141,     4,   141,   141,     4,
+       4,     4,     4,     4,   143,     5,   143,   143,     7,     7,
+       7,     7,   140,     7,     5,     5,     5,     5,     5,   141,
+     143,     7,     7,     7,     5,     8,     3,     5,   140,     5,
+     140,   140,     7,     7,     7,   498,   499,   473,     7,   140,
+     498,   499,     7,     7,   140,     4,   140,     7,     6,   140,
+     508,     7,     4,   516,   490,   140,     4,     4,   516,     4,
+       4,     3,     3,   140,   448,   516,     6,     6,   516,     3,
+       6,     3,   140,   140,   140,   140,     4,     4,     4,     4,
+       4,     4,     4,     3,   140,     6,     3,     6,   140,     4,
+       8,     4,   140,   140,   140,     4,     4,     4,     4,   140,
+     140,    81,     4,     4,     3,     8,     6,     4,   452,     5,
+       8,     5,     4,     8,     7,     4,     4,   112,     4,     4,
+       7,   140,     4,     4,   140,   140,   118,   293,   491,   315,
+     140,   140,   496,   140,   140,   320,   680,   499,   692,   698,
+     696,   705,   685,   369,   683,   686,   336,   140,   688,   362,
+     718,   716,   689,   691,   366,   721,   340,   719,   140,   709,
+     516,   140,   666,   508,   353,   385,   790,   806,   818,   141,
+     835,   141,   143,   141,   141,   141,    -1,    -1,   141,   141,
+     141,    -1,    -1,   140,    -1,   140,   140,   140,    -1,   140,
+     140,   140,    -1,    -1,   140,    -1,    -1,   140,    -1,    -1,
+      -1,    -1,    -1,   141,    -1,   140,   143,    -1,   141,    -1,
+     141,   140,    -1,    -1,    -1,    -1,    -1,   680,    -1,    -1,
+      -1,    -1,   680,   683,    -1,   683,   689,    -1,   686,    -1,
+      -1,   689,   683,    -1,    -1,   683,    -1,    -1,   696,   683,
+     689,   683,   689,   683,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   716,    -1,
+      -1,   719,    -1,    -1,    -1,   716,    -1,    -1,   719,    -1,
+      -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   711,    -1,    -1,   714,    -1,    -1,    -1,
-     711,    -1,    -1,   714,    -1,    -1,   714,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   784,    -1,    -1,    -1,    -1,   784,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   801,    -1,
-      -1,    -1,    -1,   801
+      -1,    -1,    -1,    -1,    -1,    -1,   789,    -1,    -1,    -1,
+      -1,   789,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   806,    -1,    -1,    -1,    -1,   806
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,     0,     5,     7,     9,   139,   140,
-     141,   142,   156,   157,   158,   163,     7,   172,     7,   178,
-       7,   192,     7,   265,     7,   335,     7,   349,     7,   294,
-       7,   318,     7,   241,     7,   401,   164,   159,   173,   179,
-     193,   266,   336,   350,   295,   319,   242,   402,   156,   165,
-     166,   139,   161,   162,    10,   117,   126,   127,   139,   171,
-     174,   175,   176,   428,   430,   432,    11,    17,    18,    19,
-      22,    23,    39,    40,    41,    42,    43,    47,    48,    69,
-      70,    82,    85,    92,    93,    96,   171,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   200,   202,   226,   235,
-     249,   259,   288,   312,   354,   380,   390,   391,   399,    12,
-      13,    16,   190,   191,   194,   196,   199,     7,    44,    45,
-      46,    57,    60,    61,    62,    63,    64,    65,    72,    73,
-      80,   171,   182,   183,   184,   187,   267,   268,   269,   271,
-     273,   275,   277,   279,   281,   283,   286,   287,   312,   329,
-     343,   354,   376,    58,    59,   171,   312,   337,   338,   339,
-     341,    20,    21,    70,    74,    75,    76,    77,    78,    79,
-      81,   171,   312,   351,   352,   353,   354,   356,   358,   360,
-     362,   364,   366,   368,   370,   372,   374,    24,    49,    51,
-      52,    54,    55,    56,   171,   216,   296,   297,   298,   299,
-     300,   301,   302,   304,   306,   308,   309,   311,    50,    53,
-     171,   216,   300,   306,   320,   321,   322,   323,   324,   326,
-     327,   328,    83,    84,   171,   243,   244,   245,   247,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   171,   403,   404,   405,   406,   408,   410,
-     411,   413,   414,   415,   418,   420,   421,   422,   423,   426,
-       6,     3,     4,     8,     3,   177,   433,   429,   431,     4,
-       3,     8,   189,     4,     4,   355,   201,   203,     4,     4,
-       4,     4,   260,   289,   313,   227,   381,   236,   250,     4,
-     392,   400,     3,     8,   195,   197,     4,     3,     8,   383,
-     272,   274,   276,   330,   270,   278,   280,     4,     4,   284,
-     282,   344,   377,     3,     8,   340,   342,     3,     8,   357,
-     359,   375,   363,   365,   369,   367,   373,   371,   361,     8,
-       3,   303,   217,     4,   307,   305,   310,     4,     8,     3,
-     325,     4,     8,     3,   246,   248,     3,     8,     4,   407,
-     409,     4,   412,     4,     4,   416,   419,     4,     4,     4,
-     424,   427,     3,     8,   156,   156,   139,     4,     4,     4,
-       4,   175,     4,   142,   142,     4,     4,     4,   140,   140,
-     140,   140,     4,     4,     4,     4,     4,     4,     4,   140,
-       4,     4,   181,     4,     4,   142,   191,    71,   171,   216,
-     312,   354,   356,   358,   384,   385,   386,   387,   388,     4,
-       4,     4,     4,     4,     4,     4,   140,   142,     4,     4,
-       4,     4,   268,     4,     4,   338,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   353,     4,     4,   140,
-       4,     4,     4,   142,   298,     4,   142,   322,     4,     4,
-     244,   142,     4,     4,   140,     4,   140,   140,     4,     4,
-     142,   142,   142,     4,     4,   404,     4,     7,     7,   156,
-     156,     7,   139,     7,     7,     5,     5,     5,     5,     5,
-       5,     7,     7,     7,     5,   167,    14,    15,   198,   389,
-       8,     3,   139,   139,   139,     5,   139,   139,   139,    66,
-      67,    68,   285,   139,     5,     7,   139,   158,   160,   139,
-     139,   167,   139,   139,   139,   139,   139,   139,   139,   139,
-     139,   139,   139,   139,   139,   139,   156,   139,   139,   139,
-      15,   111,   417,   112,   113,   114,   115,   116,   142,   425,
-     139,   156,   180,   118,   434,   435,   436,   190,    24,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,   171,
-     204,   205,   206,   209,   211,   213,   215,   216,   218,   219,
-     220,   221,   222,   224,   204,     7,   261,   262,   263,     7,
-     290,   291,   292,     7,   314,   315,   316,    74,    75,    76,
-      77,    79,   228,   229,   230,   231,   232,   233,   234,   281,
-     382,     7,   237,   238,   239,    86,    87,    88,    89,    90,
-      91,   251,   252,   253,   254,   255,   256,   257,   258,    94,
-      95,   393,   394,   395,   397,   403,   168,     4,   386,     7,
-     331,   332,   333,     7,   345,   346,   347,    81,   378,     8,
-     437,     3,     8,     8,   207,   210,   212,   214,     4,     4,
-       4,     4,     4,   223,   225,     3,     8,     8,   264,     6,
-       3,   293,     6,     3,   317,     6,     3,     3,     6,     3,
-       6,   240,     6,     3,     4,     4,     4,     4,     4,     4,
-       3,     8,   396,   398,     3,     8,     8,   139,   169,   170,
-     139,   334,     6,     3,   348,     6,     3,   379,     8,     4,
-     435,     4,     4,     4,     4,   140,   142,   140,   142,   140,
-       4,     4,   205,   267,   263,   296,   292,   320,   316,   229,
-     281,   243,   239,   140,   140,   140,   140,   140,   140,   252,
-       4,     4,   394,     6,     3,   337,   333,   351,   347,     4,
-       5,    25,    26,    27,    28,   208,   139,   139,   139,   139,
-     139,     8,     8,     8,     8,   139,   139,   139,     8,     8,
-     139,     7,   438,   439,   440,     3,     6,   119,   121,   122,
-     171,   216,   441,   442,   443,   444,   446,   439,   447,     4,
-     445,     3,     8,     4,   140,     4,   442,     5,   139,     7,
-     448,   449,   450,     3,     6,   120,   123,   124,   125,   451,
-     452,   453,   455,   456,   457,   449,   454,     4,     4,     4,
-       3,     8,     4,   142,   140,   140,   452,   139
+       0,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,     0,     5,     7,     9,   140,   141,
+     142,   143,   157,   158,   159,   164,     7,   173,     7,   179,
+       7,   193,     7,   266,     7,   336,     7,   350,     7,   295,
+       7,   319,     7,   242,     7,   402,   165,   160,   174,   180,
+     194,   267,   337,   351,   296,   320,   243,   403,   157,   166,
+     167,   140,   162,   163,    10,   117,   126,   127,   128,   140,
+     172,   175,   176,   177,   429,   431,   433,   435,    11,    17,
+      18,    19,    22,    23,    39,    40,    41,    42,    43,    47,
+      48,    69,    70,    82,    85,    92,    93,    96,   172,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   201,   203,
+     227,   236,   250,   260,   289,   313,   355,   381,   391,   392,
+     400,    12,    13,    16,   191,   192,   195,   197,   200,     7,
+      44,    45,    46,    57,    60,    61,    62,    63,    64,    65,
+      72,    73,    80,   172,   183,   184,   185,   188,   268,   269,
+     270,   272,   274,   276,   278,   280,   282,   284,   287,   288,
+     313,   330,   344,   355,   377,    58,    59,   172,   313,   338,
+     339,   340,   342,    20,    21,    70,    74,    75,    76,    77,
+      78,    79,    81,   172,   313,   352,   353,   354,   355,   357,
+     359,   361,   363,   365,   367,   369,   371,   373,   375,    24,
+      49,    51,    52,    54,    55,    56,   172,   217,   297,   298,
+     299,   300,   301,   302,   303,   305,   307,   309,   310,   312,
+      50,    53,   172,   217,   301,   307,   321,   322,   323,   324,
+     325,   327,   328,   329,    83,    84,   172,   244,   245,   246,
+     248,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   172,   404,   405,   406,   407,
+     409,   411,   412,   414,   415,   416,   419,   421,   422,   423,
+     424,   427,     6,     3,     4,     8,     3,   178,   436,   430,
+     432,   434,     4,     3,     8,   190,     4,     4,   356,   202,
+     204,     4,     4,     4,     4,   261,   290,   314,   228,   382,
+     237,   251,     4,   393,   401,     3,     8,   196,   198,     4,
+       3,     8,   384,   273,   275,   277,   331,   271,   279,   281,
+       4,     4,   285,   283,   345,   378,     3,     8,   341,   343,
+       3,     8,   358,   360,   376,   364,   366,   370,   368,   374,
+     372,   362,     8,     3,   304,   218,     4,   308,   306,   311,
+       4,     8,     3,   326,     4,     8,     3,   247,   249,     3,
+       8,     4,   408,   410,     4,   413,     4,     4,   417,   420,
+       4,     4,     4,   425,   428,     3,     8,   157,   157,   140,
+       4,     4,     4,     4,     4,   176,     4,   143,   143,     4,
+       4,     4,   141,   141,   141,   141,     4,     4,     4,     4,
+       4,     4,     4,   141,     4,     4,   182,     4,     4,   143,
+     192,    71,   172,   217,   313,   355,   357,   359,   385,   386,
+     387,   388,   389,     4,     4,     4,     4,     4,     4,     4,
+     141,   143,     4,     4,     4,     4,   269,     4,     4,   339,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     354,     4,     4,   141,     4,     4,     4,   143,   299,     4,
+     143,   323,     4,     4,   245,   143,     4,     4,   141,     4,
+     141,   141,     4,     4,   143,   143,   143,     4,     4,   405,
+       4,     7,     7,   157,   157,   157,     7,   140,     7,     7,
+       5,     5,     5,     5,     5,     5,     7,     7,     7,     5,
+     168,    14,    15,   199,   390,     8,     3,   140,   140,   140,
+       5,   140,   140,   140,    66,    67,    68,   286,   140,     5,
+       7,   140,   159,   161,   140,   140,   168,   140,   140,   140,
+     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
+     140,   157,   140,   140,   140,    15,   111,   418,   112,   113,
+     114,   115,   116,   143,   426,   140,   157,   181,   118,   437,
+     438,   439,   191,    24,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,   172,   205,   206,   207,   210,   212,
+     214,   216,   217,   219,   220,   221,   222,   223,   225,   205,
+       7,   262,   263,   264,     7,   291,   292,   293,     7,   315,
+     316,   317,    74,    75,    76,    77,    79,   229,   230,   231,
+     232,   233,   234,   235,   282,   383,     7,   238,   239,   240,
+      86,    87,    88,    89,    90,    91,   252,   253,   254,   255,
+     256,   257,   258,   259,    94,    95,   394,   395,   396,   398,
+     404,   169,     4,   387,     7,   332,   333,   334,     7,   346,
+     347,   348,    81,   379,     8,   440,     3,     8,     8,   208,
+     211,   213,   215,     4,     4,     4,     4,     4,   224,   226,
+       3,     8,     8,   265,     6,     3,   294,     6,     3,   318,
+       6,     3,     3,     6,     3,     6,   241,     6,     3,     4,
+       4,     4,     4,     4,     4,     3,     8,   397,   399,     3,
+       8,     8,   140,   170,   171,   140,   335,     6,     3,   349,
+       6,     3,   380,     8,     4,   438,     4,     4,     4,     4,
+     141,   143,   141,   143,   141,     4,     4,   206,   268,   264,
+     297,   293,   321,   317,   230,   282,   244,   240,   141,   141,
+     141,   141,   141,   141,   253,     4,     4,   395,     6,     3,
+     338,   334,   352,   348,     4,     5,    25,    26,    27,    28,
+     209,   140,   140,   140,   140,   140,     8,     8,     8,     8,
+     140,   140,   140,     8,     8,   140,     7,   441,   442,   443,
+       3,     6,   119,   121,   122,   172,   217,   444,   445,   446,
+     447,   449,   442,   450,     4,   448,     3,     8,     4,   141,
+       4,   445,     5,   140,     7,   451,   452,   453,     3,     6,
+     120,   123,   124,   125,   454,   455,   456,   458,   459,   460,
+     452,   457,     4,     4,     4,     3,     8,     4,   143,   141,
+     141,   455,   140
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   143,   145,   144,   146,   144,   147,   144,   148,   144,
-     149,   144,   150,   144,   151,   144,   152,   144,   153,   144,
-     154,   144,   155,   144,   156,   156,   156,   156,   156,   156,
-     156,   157,   159,   158,   160,   161,   161,   162,   162,   164,
-     163,   165,   165,   166,   166,   168,   167,   169,   169,   170,
-     170,   171,   173,   172,   174,   174,   175,   175,   175,   175,
-     175,   177,   176,   179,   178,   180,   180,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   182,   183,
-     184,   185,   186,   187,   189,   188,   190,   190,   191,   191,
-     191,   193,   192,   195,   194,   197,   196,   198,   198,   199,
-     201,   200,   203,   202,   204,   204,   205,   205,   205,   205,
-     205,   205,   205,   205,   205,   205,   205,   205,   205,   207,
-     206,   208,   208,   208,   208,   210,   209,   212,   211,   214,
-     213,   215,   217,   216,   218,   219,   220,   221,   223,   222,
-     225,   224,   227,   226,   228,   228,   229,   229,   229,   229,
-     229,   230,   231,   232,   233,   234,   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,
-     268,   268,   268,   270,   269,   272,   271,   274,   273,   276,
-     275,   278,   277,   280,   279,   282,   281,   284,   283,   285,
-     285,   285,   286,   287,   289,   288,   290,   290,   291,   291,
-     293,   292,   295,   294,   296,   296,   297,   297,   298,   298,
-     298,   298,   298,   298,   298,   298,   299,   300,   301,   303,
-     302,   305,   304,   307,   306,   308,   310,   309,   311,   313,
-     312,   314,   314,   315,   315,   317,   316,   319,   318,   320,
-     320,   321,   321,   322,   322,   322,   322,   322,   322,   323,
-     325,   324,   326,   327,   328,   330,   329,   331,   331,   332,
-     332,   334,   333,   336,   335,   337,   337,   338,   338,   338,
-     338,   340,   339,   342,   341,   344,   343,   345,   345,   346,
-     346,   348,   347,   350,   349,   351,   351,   352,   352,   353,
-     353,   353,   353,   353,   353,   353,   353,   353,   353,   353,
-     353,   353,   355,   354,   357,   356,   359,   358,   361,   360,
-     363,   362,   365,   364,   367,   366,   369,   368,   371,   370,
-     373,   372,   375,   374,   377,   376,   379,   378,   381,   380,
-     382,   382,   383,   281,   384,   384,   385,   385,   386,   386,
-     386,   386,   386,   386,   386,   387,   389,   388,   390,   392,
-     391,   393,   393,   394,   394,   396,   395,   398,   397,   400,
-     399,   402,   401,   403,   403,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
-     405,   407,   406,   409,   408,   410,   412,   411,   413,   414,
-     416,   415,   417,   417,   419,   418,   420,   421,   422,   424,
-     423,   425,   425,   425,   425,   425,   427,   426,   429,   428,
-     431,   430,   433,   432,   434,   434,   435,   437,   436,   438,
-     438,   440,   439,   441,   441,   442,   442,   442,   442,   442,
-     443,   445,   444,   447,   446,   448,   448,   450,   449,   451,
-     451,   452,   452,   452,   452,   454,   453,   455,   456,   457
+       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,   157,   157,   157,   157,   157,
+     157,   158,   160,   159,   161,   162,   162,   163,   163,   165,
+     164,   166,   166,   167,   167,   169,   168,   170,   170,   171,
+     171,   172,   174,   173,   175,   175,   176,   176,   176,   176,
+     176,   176,   178,   177,   180,   179,   181,   181,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   182,   183,
+     184,   185,   186,   187,   188,   190,   189,   191,   191,   192,
+     192,   192,   194,   193,   196,   195,   198,   197,   199,   199,
+     200,   202,   201,   204,   203,   205,   205,   206,   206,   206,
+     206,   206,   206,   206,   206,   206,   206,   206,   206,   206,
+     208,   207,   209,   209,   209,   209,   211,   210,   213,   212,
+     215,   214,   216,   218,   217,   219,   220,   221,   222,   224,
+     223,   226,   225,   228,   227,   229,   229,   230,   230,   230,
+     230,   230,   231,   232,   233,   234,   235,   237,   236,   238,
+     238,   239,   239,   241,   240,   243,   242,   244,   244,   244,
+     245,   245,   247,   246,   249,   248,   251,   250,   252,   252,
+     253,   253,   253,   253,   253,   253,   254,   255,   256,   257,
+     258,   259,   261,   260,   262,   262,   263,   263,   265,   264,
+     267,   266,   268,   268,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   271,   270,   273,   272,   275,   274,
+     277,   276,   279,   278,   281,   280,   283,   282,   285,   284,
+     286,   286,   286,   287,   288,   290,   289,   291,   291,   292,
+     292,   294,   293,   296,   295,   297,   297,   298,   298,   299,
+     299,   299,   299,   299,   299,   299,   299,   300,   301,   302,
+     304,   303,   306,   305,   308,   307,   309,   311,   310,   312,
+     314,   313,   315,   315,   316,   316,   318,   317,   320,   319,
+     321,   321,   322,   322,   323,   323,   323,   323,   323,   323,
+     324,   326,   325,   327,   328,   329,   331,   330,   332,   332,
+     333,   333,   335,   334,   337,   336,   338,   338,   339,   339,
+     339,   339,   341,   340,   343,   342,   345,   344,   346,   346,
+     347,   347,   349,   348,   351,   350,   352,   352,   353,   353,
+     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
+     354,   354,   354,   356,   355,   358,   357,   360,   359,   362,
+     361,   364,   363,   366,   365,   368,   367,   370,   369,   372,
+     371,   374,   373,   376,   375,   378,   377,   380,   379,   382,
+     381,   383,   383,   384,   282,   385,   385,   386,   386,   387,
+     387,   387,   387,   387,   387,   387,   388,   390,   389,   391,
+     393,   392,   394,   394,   395,   395,   397,   396,   399,   398,
+     401,   400,   403,   402,   404,   404,   405,   405,   405,   405,
+     405,   405,   405,   405,   405,   405,   405,   405,   405,   405,
+     405,   406,   408,   407,   410,   409,   411,   413,   412,   414,
+     415,   417,   416,   418,   418,   420,   419,   421,   422,   423,
+     425,   424,   426,   426,   426,   426,   426,   428,   427,   430,
+     429,   432,   431,   434,   433,   436,   435,   437,   437,   438,
+     440,   439,   441,   441,   443,   442,   444,   444,   445,   445,
+     445,   445,   445,   446,   448,   447,   450,   449,   451,   451,
+     453,   452,   454,   454,   455,   455,   455,   455,   457,   456,
+     458,   459,   460
   };
 
   const unsigned char
@@ -3886,51 +3907,52 @@ namespace isc { namespace dhcp {
        1,     1,     0,     4,     1,     0,     1,     3,     5,     0,
        4,     0,     1,     1,     3,     0,     4,     0,     1,     1,
        3,     2,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     0,     6,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     0,     6,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
-       3,     3,     3,     3,     0,     6,     1,     3,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     1,     1,     3,
-       0,     6,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     3,     0,     4,     3,     3,     3,     3,     0,     4,
-       0,     4,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     6,     0,     1,
-       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
-       1,     0,     4,     0,     4,     0,     6,     1,     3,     1,
-       1,     1,     1,     1,     1,     3,     3,     3,     3,     3,
-       3,     0,     6,     0,     1,     1,     3,     0,     4,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       3,     3,     3,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     1,     1,
+       3,     0,     6,     0,     6,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     1,
-       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     3,     1,     0,
-       4,     0,     4,     0,     4,     1,     0,     4,     3,     0,
-       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
-       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     1,     1,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
+       0,     4,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     3,     0,     4,     3,     3,     3,     3,     0,
+       4,     0,     4,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
+       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     0,     4,     0,     6,
-       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       6,     1,     3,     1,     1,     0,     4,     0,     4,     0,
-       6,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     3,     3,     0,     6,     0,     1,     1,
+       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
+       0,     4,     0,     4,     0,     4,     1,     0,     4,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     1,     1,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     6,     0,     4,     0,
+       6,     1,     3,     0,     4,     0,     1,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
+       0,     6,     1,     3,     1,     1,     0,     4,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
-       0,     4,     1,     1,     0,     4,     3,     3,     3,     0,
-       4,     1,     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,     1,     1,     1,     1,     0,     4,     3,     3,     3
+       1,     3,     0,     4,     0,     4,     3,     0,     4,     3,
+       3,     0,     4,     1,     1,     0,     4,     3,     3,     3,
+       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     6,     1,     3,     1,
+       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     3,     0,     4,     0,     6,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     1,     0,     4,
+       3,     3,     3
   };
 
 
@@ -3976,27 +3998,28 @@ namespace isc { namespace dhcp {
   "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
   "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
   "\"debuglevel\"", "\"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",
-  "$@19", "interfaces_list", "$@20", "dhcp_socket_type", "$@21",
-  "socket_type", "re_detect", "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",
+  "\"maxver\"", "\"Dhcp6\"", "\"DhcpDdns\"", "\"Control-agent\"",
+  "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", "$@19", "interfaces_list",
+  "$@20", "dhcp_socket_type", "$@21", "socket_type", "re_detect",
+  "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",
   "host_reservation_identifiers", "$@31",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "duid_id", "hw_address_id", "circuit_id", "client_id", "flex_id",
@@ -4049,12 +4072,12 @@ namespace isc { namespace dhcp {
   "always_include_fqdn", "override_no_update", "override_client_update",
   "replace_client_name", "$@94", "replace_client_name_value",
   "generated_prefix", "$@95", "dhcp6_json_object", "$@96",
-  "dhcpddns_json_object", "$@97", "logging_object", "$@98",
-  "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_list", "output_params", "output", "$@104", "flush",
+  "dhcpddns_json_object", "$@97", "control_agent_json_object", "$@98",
+  "logging_object", "$@99", "logging_params", "logging_param", "loggers",
+  "$@100", "loggers_entries", "logger_entry", "$@101", "logger_params",
+  "logger_param", "debuglevel", "severity", "$@102", "output_options_list",
+  "$@103", "output_options_list_content", "output_entry", "$@104",
+  "output_params_list", "output_params", "output", "$@105", "flush",
   "maxsize", "maxver", YY_NULLPTR
   };
 
@@ -4062,57 +4085,58 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::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,   242,   243,   244,   245,   246,   247,
-     248,   251,   256,   256,   267,   270,   271,   274,   278,   285,
-     285,   292,   293,   296,   300,   307,   307,   314,   315,   318,
-     322,   333,   343,   343,   355,   356,   360,   361,   362,   363,
-     364,   367,   367,   384,   384,   392,   393,   398,   399,   400,
-     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   421,   426,
-     431,   436,   441,   446,   452,   452,   462,   463,   466,   467,
-     468,   471,   471,   479,   479,   489,   489,   496,   497,   500,
-     506,   506,   516,   516,   526,   527,   530,   531,   532,   533,
-     534,   535,   536,   537,   538,   539,   540,   541,   542,   545,
-     545,   552,   553,   554,   555,   558,   558,   566,   566,   574,
-     574,   582,   587,   587,   595,   600,   605,   610,   615,   615,
-     623,   623,   632,   632,   642,   643,   646,   647,   648,   649,
-     650,   653,   658,   663,   668,   673,   678,   678,   688,   689,
-     692,   693,   696,   696,   704,   704,   712,   713,   714,   717,
-     718,   721,   721,   729,   729,   737,   737,   747,   748,   751,
-     752,   753,   754,   755,   756,   759,   764,   769,   774,   779,
-     784,   792,   792,   805,   806,   809,   810,   817,   817,   840,
-     840,   849,   850,   854,   855,   856,   857,   858,   859,   860,
-     861,   862,   863,   864,   865,   866,   867,   868,   869,   870,
-     871,   872,   873,   876,   876,   884,   884,   892,   892,   900,
-     900,   908,   908,   916,   916,   924,   924,   932,   932,   939,
-     940,   941,   944,   949,   958,   958,   970,   971,   974,   975,
-     980,   980,   991,   991,  1001,  1002,  1005,  1006,  1009,  1010,
-    1011,  1012,  1013,  1014,  1015,  1016,  1019,  1021,  1026,  1028,
-    1028,  1036,  1036,  1044,  1044,  1052,  1054,  1054,  1062,  1071,
-    1071,  1083,  1084,  1089,  1090,  1095,  1095,  1106,  1106,  1117,
-    1118,  1123,  1124,  1129,  1130,  1131,  1132,  1133,  1134,  1137,
-    1139,  1139,  1147,  1149,  1151,  1159,  1159,  1171,  1172,  1175,
-    1176,  1179,  1179,  1187,  1187,  1195,  1196,  1199,  1200,  1201,
-    1202,  1205,  1205,  1213,  1213,  1223,  1223,  1233,  1234,  1237,
-    1238,  1241,  1241,  1249,  1249,  1257,  1258,  1261,  1262,  1266,
-    1267,  1268,  1269,  1270,  1271,  1272,  1273,  1274,  1275,  1276,
-    1277,  1278,  1281,  1281,  1289,  1289,  1297,  1297,  1305,  1305,
-    1313,  1313,  1321,  1321,  1329,  1329,  1337,  1337,  1345,  1345,
-    1353,  1353,  1361,  1361,  1374,  1374,  1384,  1384,  1395,  1395,
-    1405,  1406,  1409,  1409,  1417,  1418,  1421,  1422,  1425,  1426,
-    1427,  1428,  1429,  1430,  1431,  1434,  1436,  1436,  1448,  1455,
-    1455,  1465,  1466,  1469,  1470,  1473,  1473,  1481,  1481,  1491,
-    1491,  1501,  1501,  1509,  1510,  1513,  1514,  1515,  1516,  1517,
-    1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,
-    1530,  1535,  1535,  1543,  1543,  1551,  1556,  1556,  1564,  1569,
-    1574,  1574,  1582,  1583,  1586,  1586,  1594,  1599,  1604,  1609,
-    1609,  1617,  1620,  1623,  1626,  1629,  1635,  1635,  1645,  1645,
-    1652,  1652,  1664,  1664,  1677,  1678,  1682,  1686,  1686,  1698,
-    1699,  1703,  1703,  1711,  1712,  1715,  1716,  1717,  1718,  1719,
-    1722,  1727,  1727,  1735,  1735,  1745,  1746,  1749,  1749,  1757,
-    1758,  1761,  1762,  1763,  1764,  1767,  1767,  1775,  1780,  1785
+       0,   225,   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,   357,   358,   362,   363,   364,   365,
+     366,   367,   370,   370,   387,   387,   395,   396,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,   415,   416,   417,   418,   419,   420,   421,   424,
+     429,   434,   439,   444,   449,   455,   455,   465,   466,   469,
+     470,   471,   474,   474,   482,   482,   492,   492,   499,   500,
+     503,   509,   509,   519,   519,   529,   530,   533,   534,   535,
+     536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
+     548,   548,   555,   556,   557,   558,   561,   561,   569,   569,
+     577,   577,   585,   590,   590,   598,   603,   608,   613,   618,
+     618,   626,   626,   635,   635,   645,   646,   649,   650,   651,
+     652,   653,   656,   661,   666,   671,   676,   681,   681,   691,
+     692,   695,   696,   699,   699,   707,   707,   715,   716,   717,
+     720,   721,   724,   724,   732,   732,   740,   740,   750,   751,
+     754,   755,   756,   757,   758,   759,   762,   767,   772,   777,
+     782,   787,   795,   795,   808,   809,   812,   813,   820,   820,
+     843,   843,   852,   853,   857,   858,   859,   860,   861,   862,
+     863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
+     873,   874,   875,   876,   879,   879,   887,   887,   895,   895,
+     903,   903,   911,   911,   919,   919,   927,   927,   935,   935,
+     942,   943,   944,   947,   952,   961,   961,   973,   974,   977,
+     978,   983,   983,   994,   994,  1004,  1005,  1008,  1009,  1012,
+    1013,  1014,  1015,  1016,  1017,  1018,  1019,  1022,  1024,  1029,
+    1031,  1031,  1039,  1039,  1047,  1047,  1055,  1057,  1057,  1065,
+    1074,  1074,  1086,  1087,  1092,  1093,  1098,  1098,  1109,  1109,
+    1120,  1121,  1126,  1127,  1132,  1133,  1134,  1135,  1136,  1137,
+    1140,  1142,  1142,  1150,  1152,  1154,  1162,  1162,  1174,  1175,
+    1178,  1179,  1182,  1182,  1190,  1190,  1198,  1199,  1202,  1203,
+    1204,  1205,  1208,  1208,  1216,  1216,  1226,  1226,  1236,  1237,
+    1240,  1241,  1244,  1244,  1252,  1252,  1260,  1261,  1264,  1265,
+    1269,  1270,  1271,  1272,  1273,  1274,  1275,  1276,  1277,  1278,
+    1279,  1280,  1281,  1284,  1284,  1292,  1292,  1300,  1300,  1308,
+    1308,  1316,  1316,  1324,  1324,  1332,  1332,  1340,  1340,  1348,
+    1348,  1356,  1356,  1364,  1364,  1377,  1377,  1387,  1387,  1398,
+    1398,  1408,  1409,  1412,  1412,  1420,  1421,  1424,  1425,  1428,
+    1429,  1430,  1431,  1432,  1433,  1434,  1437,  1439,  1439,  1451,
+    1458,  1458,  1468,  1469,  1472,  1473,  1476,  1476,  1484,  1484,
+    1494,  1494,  1504,  1504,  1512,  1513,  1516,  1517,  1518,  1519,
+    1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,  1528,  1529,
+    1530,  1533,  1538,  1538,  1546,  1546,  1554,  1559,  1559,  1567,
+    1572,  1577,  1577,  1585,  1586,  1589,  1589,  1597,  1602,  1607,
+    1612,  1612,  1620,  1623,  1626,  1629,  1632,  1638,  1638,  1648,
+    1648,  1655,  1655,  1662,  1662,  1674,  1674,  1687,  1688,  1692,
+    1696,  1696,  1708,  1709,  1713,  1713,  1721,  1722,  1725,  1726,
+    1727,  1728,  1729,  1732,  1737,  1737,  1745,  1745,  1755,  1756,
+    1759,  1759,  1767,  1768,  1771,  1772,  1773,  1774,  1777,  1777,
+    1785,  1790,  1795
   };
 
   // Print the state stack on the debug stream.
@@ -4147,8 +4171,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4151 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1790 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4175 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1800 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 7385e789920b8c4898617e3633c4c7ff26b034fc..fe98075f98ecb22b1f6d04bc7886582b96691f22 100644 (file)
@@ -472,21 +472,22 @@ namespace isc { namespace dhcp {
         TOKEN_MAXVER = 380,
         TOKEN_DHCP6 = 381,
         TOKEN_DHCPDDNS = 382,
-        TOKEN_TOPLEVEL_JSON = 383,
-        TOKEN_TOPLEVEL_DHCP4 = 384,
-        TOKEN_SUB_DHCP4 = 385,
-        TOKEN_SUB_INTERFACES4 = 386,
-        TOKEN_SUB_SUBNET4 = 387,
-        TOKEN_SUB_POOL4 = 388,
-        TOKEN_SUB_RESERVATION = 389,
-        TOKEN_SUB_OPTION_DEF = 390,
-        TOKEN_SUB_OPTION_DATA = 391,
-        TOKEN_SUB_HOOKS_LIBRARY = 392,
-        TOKEN_SUB_DHCP_DDNS = 393,
-        TOKEN_STRING = 394,
-        TOKEN_INTEGER = 395,
-        TOKEN_FLOAT = 396,
-        TOKEN_BOOLEAN = 397
+        TOKEN_CONTROL_AGENT = 383,
+        TOKEN_TOPLEVEL_JSON = 384,
+        TOKEN_TOPLEVEL_DHCP4 = 385,
+        TOKEN_SUB_DHCP4 = 386,
+        TOKEN_SUB_INTERFACES4 = 387,
+        TOKEN_SUB_SUBNET4 = 388,
+        TOKEN_SUB_POOL4 = 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
       };
     };
 
@@ -1105,6 +1106,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_DHCPDDNS (const location_type& l);
 
+    static inline
+    symbol_type
+    make_CONTROL_AGENT (const location_type& l);
+
     static inline
     symbol_type
     make_TOPLEVEL_JSON (const location_type& l);
@@ -1370,12 +1375,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 743,     ///< Last index in yytable_.
-      yynnts_ = 315,  ///< Number of nonterminal symbols.
+      yylast_ = 748,     ///< Last index in yytable_.
+      yynnts_ = 317,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 143  ///< Number of tokens.
+      yyntokens_ = 144  ///< Number of tokens.
     };
 
 
@@ -1431,9 +1436,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,   136,   137,   138,   139,   140,   141,   142
+     135,   136,   137,   138,   139,   140,   141,   142,   143
     };
-    const unsigned int user_token_number_max_ = 397;
+    const unsigned int user_token_number_max_ = 398;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1466,29 +1471,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1509,29 +1514,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1611,29 +1616,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1660,29 +1665,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 156: // value
-      case 160: // map_value
-      case 198: // socket_type
-      case 208: // db_type
-      case 285: // hr_mode
-      case 417: // ncr_protocol_value
-      case 425: // replace_client_name_value
+      case 157: // value
+      case 161: // map_value
+      case 199: // socket_type
+      case 209: // db_type
+      case 286: // hr_mode
+      case 418: // ncr_protocol_value
+      case 426: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1755,7 +1760,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
+     395,   396,   397,   398
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2516,6 +2521,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_DHCPDDNS, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONTROL_AGENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l)
   {
@@ -2609,7 +2620,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2613 "dhcp4_parser.h" // lalr1.cc:377
+#line 2624 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 0f237d835a85d29822faaa776691e45eb2161f9a..6450e950ef6bbcf9839ff08fb17a1c2ec7fcaa9e 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061111
+// Generated 201707141116
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 54bfe36b5d6204008221ffb6d3b27713f4a5124f..c0ae0c2d332873b8dc4a76171214a8878c8829cc 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061111
+// Generated 201707141116
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 96d90f8a37bd38e13b2abb78d9863cc6ddf47dc8..735f58584c7eacc9259e9c7cec8886decbd5f3a1 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061111
+// Generated 201707141116
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index dc3e99042abca7ce5f7c653286e0738c5cd81c6e..fd0090518979c5c488a534353750d153e507995b 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 158
-#define YY_END_OF_BUFFER 159
+#define YY_NUM_RULES 159
+#define YY_END_OF_BUFFER 160
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,96 +700,97 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1232] =
+static const flex_int16_t yy_accept[1246] =
     {   0,
-      151,  151,    0,    0,    0,    0,    0,    0,    0,    0,
-      159,  157,   10,   11,  157,    1,  151,  148,  151,  151,
-      157,  150,  149,  157,  157,  157,  157,  157,  144,  145,
-      157,  157,  157,  146,  147,    5,    5,    5,  157,  157,
-      157,   10,   11,    0,    0,  140,    0,    0,    0,    0,
+      152,  152,    0,    0,    0,    0,    0,    0,    0,    0,
+      160,  158,   10,   11,  158,    1,  152,  149,  152,  152,
+      158,  151,  150,  158,  158,  158,  158,  158,  145,  146,
+      158,  158,  158,  147,  148,    5,    5,    5,  158,  158,
+      158,   10,   11,    0,    0,  141,    0,    0,    0,    0,
         0,    0,    0,    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,  151,  151,
-        0,  150,  151,    3,    2,    6,    0,  151,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  141,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  152,
+      152,    0,  151,  152,    3,    2,    6,    0,  152,    0,
+        0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
+      142,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  144,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  143,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,  120,    0,    0,  121,    0,    0,    0,    0,    0,
-        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
+        0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
+        0,    0,    0,    0,  120,    0,    0,  121,    0,    0,
+        0,    0,    0,    0,    0,    0,  143,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   78,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  156,  154,    0,  153,  152,    0,    0,
-        0,    0,    0,    0,  119,    0,    0,   27,    0,   26,
-        0,    0,   84,    0,    0,    0,    0,    0,    0,   46,
+        0,    0,    0,    0,    0,    0,  157,  155,    0,  154,
+      153,    0,    0,    0,    0,    0,    0,    0,  119,    0,
+        0,   27,    0,   26,    0,    0,   84,    0,    0,    0,
 
+        0,    0,    0,   46,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   82,    0,    0,
+        0,   82,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  155,  152,    0,    0,    0,    0,    0,
-        0,    0,   28,    0,    0,   30,    0,    0,    0,    0,
-        0,   85,    0,    0,    0,    0,   65,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  156,  153,    0,
+        0,    0,    0,    0,    0,    0,    0,   28,    0,    0,
+       30,    0,    0,    0,    0,    0,   85,    0,    0,    0,
 
-        0,    0,    0,  104,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   49,    0,    0,    0,    0,    0,
+        0,   65,    0,    0,    0,    0,    0,    0,  104,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   64,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   73,    0,   50,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
-      124,   42,    0,   47,    0,    0,    0,    0,    0,  138,
-       35,    0,   32,    0,   31,    0,    0,    0,  112,    0,
+       64,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   73,    0,   50,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  100,  124,   42,    0,   47,    0,
+        0,    0,    0,    0,    0,  138,   35,    0,   32,    0,
+       31,    0,    0,    0,  112,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   93,    0,    0,    0,
-        0,    0,    0,    0,  123,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  113,    0,    0,    0,    0,    0,    0,    0,
-        0,  108,    0,    0,    0,    0,    7,   33,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   93,    0,    0,    0,    0,    0,    0,    0,
+      123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   44,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   66,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
+        0,    0,    0,    0,    0,    0,    0,  108,    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,
-       95,    0,    0,    0,    0,    0,   92,    0,    0,    0,
-        0,    0,    0,    0,    0,   68,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   95,    0,    0,
+        0,    0,    0,   92,    0,    0,    0,    0,    0,    0,
+        0,    0,   68,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   75,    0,    0,    0,    0,    0,   89,
+       75,    0,    0,    0,    0,    0,    0,   89,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+        0,    0,    0,    0,    0,    0,    0,  107,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  117,   90,    0,    0,    0,   94,
-       43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  117,   90,    0,    0,    0,   94,   43,    0,
 
-       51,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   61,    0,    0,    0,  139,    0,    0,
+        0,   61,    0,    0,    0,    0,  139,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   81,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  106,    0,    0,    0,    0,    0,   54,    0,
+       81,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  106,    0,    0,    0,    0,    0,   54,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   48,   67,    0,    0,    0,  103,    0,    0,
-        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
+        0,   48,   67,    0,    0,    0,  103,    0,    0,    0,
+       41,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,   97,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,  137,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,   76,    0,    0,    0,
@@ -797,47 +798,47 @@ static const flex_int16_t yy_accept[1232] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,   38,
         0,    0,    0,    0,    0,    0,    0,   16,    0,  118,
        14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  109,   96,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  109,   96,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      105,  122,    0,   37,    0,  114,    0,    0,    0,    0,
 
-        0,    0,   20,    0,    0,   62,    0,    0,    0,    0,
-      116,   45,    0,   69,    0,    0,    0,    0,    0,    0,
+        0,  105,  122,    0,   37,    0,  114,    0,    0,    0,
+        0,    0,    0,   20,    0,    0,   62,    0,    0,    0,
+        0,  116,   45,    0,   69,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   86,    0,    0,    0,
-       63,   83,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   58,    0,    0,    0,   17,   15,  136,  135,
-        0,    0,    0,    0,   29,    0,   99,    0,    0,    0,
-        0,    0,    0,  133,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,   77,    0,  102,    0,   52,    0,
-        0,    0,   19,    0,    0,    0,    0,    0,   79,   59,
-        0,  110,    0,    0,    0,  101,    0,   74,    0,    0,
-        0,    0,    0,    0,    0,    0,   72,    0,  125,    0,
+        0,    0,    0,  111,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   86,    0,
+        0,    0,   63,   83,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   58,    0,    0,    0,   17,   15,
+      136,  135,    0,    0,    0,    0,    0,   29,    0,   99,
+
+        0,    0,    0,    0,    0,    0,  133,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   77,    0,  102,
+        0,   52,    0,    0,    0,   19,    0,    0,    0,    0,
+        0,   79,   59,    0,  110,    0,    0,    0,  101,    0,
+       74,    0,  140,    0,    0,    0,    0,    0,    0,    0,
+       72,    0,  125,    0,    0,    0,    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,   55,  134,    0,   12,    0,    0,    0,    0,    0,
+        0,    0,   40,    0,   39,   18,    0,    0,   91,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   57,    0,
+        0,   53,    0,   70,    0,    0,    0,    0,    0,  115,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   98,    0,   55,  134,    0,
-       12,    0,    0,    0,    0,    0,    0,    0,   40,    0,
-       39,   18,    0,    0,   91,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   57,    0,    0,   53,    0,   70,
-
-        0,    0,    0,    0,    0,  115,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
-        0,    0,    0,    0,    0,   25,    0,    0,    0,    0,
-      131,    0,    0,    0,    0,    0,    0,    0,   80,    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,  130,    0,   22,   56,    0,    0,
-        0,    0,   21,    0,   71,    0,    0,  129,    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,   34,    0,    0,    0,    0,    0,   25,
+        0,    0,    0,    0,  131,    0,    0,    0,    0,    0,
+        0,    0,   80,    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,  130,    0,
+       22,   56,    0,    0,    0,    0,   21,    0,   71,    0,
+        0,  129,    0,    0,    0,    0,   24,    0,    0,    0,
 
-        0,    0,    0,    0,   23,    0,   87,    0,    0,    0,
-        0,    0,  127,  132,   60,    0,    0,    0,  126,    0,
-        0,    0,    0,    0,    0,    0,   88,    0,    0,  128,
-        0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
+       87,    0,    0,    0,    0,    0,  127,  132,   60,    0,
+        0,    0,  126,    0,    0,    0,    0,    0,    0,    0,
+       88,    0,    0,  128,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -884,492 +885,495 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1244] =
+static const flex_int16_t yy_base[1258] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1594, 1595,   32, 1590,  141,    0,  201, 1595,  206,   88,
-       11,  213, 1595, 1572,  114,   25,    2,    6, 1595, 1595,
-       73,   11,   17, 1595, 1595, 1595,  104, 1578, 1533,    0,
-     1570,  107, 1585,  217,  241, 1595,  185, 1536, 1556,   93,
-       58,  190,   91,  211,  200,   14,  267,  213,  175,  269,
-       64,  220, 1537,  187,   75, 1536,  274,  188,  238,  270,
-      292, 1519,  195,  279,  318,  301, 1538,    0,  330,  357,
-      345,  369,  373, 1595,    0, 1595,  295,  360,  223,  226,
-      278,  336,  338,  313, 1595, 1535, 1574, 1595,  277, 1595,
-
-      384,  314, 1533, 1572,  363,  337,  393, 1527,  359,  368,
-      366,  372,  378, 1570,    0,  435,  368, 1514, 1522,  300,
-     1518, 1507, 1508,  364, 1524, 1507, 1516,  369,  200,  372,
-     1510,  380, 1498, 1554,  395, 1501, 1552, 1494, 1517, 1514,
-     1514, 1508,  370, 1501, 1494, 1499, 1493, 1504, 1489, 1488,
-     1502,  346, 1538, 1487,  404, 1499, 1502, 1486,  441,  406,
-     1498, 1499, 1497, 1479, 1484, 1480, 1472, 1489, 1481,    0,
-      377,  385,  421,  410,  435,  428, 1480, 1595,    0,  433,
-     1475, 1595,  439,  438, 1595, 1527, 1482,  430, 1525,  445,
-     1524,  445, 1523, 1595,  490, 1522,  453, 1483, 1478, 1477,
-
-      431, 1518, 1512, 1478, 1457, 1465, 1471, 1459, 1473, 1469,
-     1470, 1470, 1465, 1457, 1459, 1443, 1447, 1460, 1460, 1452,
-     1442, 1445, 1459, 1595, 1445, 1453, 1456, 1437, 1436, 1486,
-     1435, 1445, 1483,  478, 1444, 1432, 1443, 1479, 1483, 1436,
-        9, 1426, 1442, 1423, 1425, 1421, 1427, 1418, 1417, 1430,
-     1423, 1425, 1429, 1428, 1422,   80, 1429, 1424, 1416, 1422,
-     1422, 1403, 1419, 1412, 1419, 1407, 1400, 1414, 1413, 1416,
-     1398, 1406,  474, 1595, 1595,  482, 1595, 1595, 1393,    0,
-      452,  493,  485, 1450, 1595, 1403,  485, 1595, 1448, 1595,
-     1442,  533, 1595,  453, 1384, 1394, 1444, 1401,  480, 1595,
-
-     1399, 1441, 1396, 1393, 1394,  508, 1398, 1436, 1386, 1381,
-     1378, 1374, 1376, 1425, 1384, 1373, 1422, 1370,  539, 1383,
-     1383, 1366, 1367, 1380, 1367, 1377, 1372, 1379, 1374, 1359,
-      465, 1368, 1371, 1366, 1362, 1410,  363, 1595, 1357, 1356,
-     1349, 1351, 1355, 1344, 1351, 1356,  521, 1401, 1356,  480,
-     1353, 1357, 1355, 1344, 1344, 1356, 1338, 1330, 1331, 1352,
-     1334, 1346, 1345, 1331, 1343, 1342, 1341, 1382, 1381, 1380,
-     1324,  554, 1337, 1595, 1595, 1336,    0,  508, 1376, 1375,
-     1333, 1373, 1595, 1321, 1371, 1595,  531,  588,  510, 1370,
-     1312, 1595, 1328, 1327, 1314, 1313, 1595, 1315, 1312, 1324,
-
-     1320, 1308, 1310, 1595, 1316, 1301, 1303, 1314, 1312, 1307,
-      556, 1314, 1296, 1345, 1595, 1294, 1310, 1342, 1346, 1304,
-     1298, 1300, 1301, 1303, 1335, 1288, 1283, 1282, 1284, 1277,
-     1292, 1270, 1277, 1282, 1330, 1595, 1277, 1273, 1276, 1283,
-     1268, 1278, 1281, 1270, 1269, 1264, 1595, 1319, 1595, 1263,
-     1262, 1255, 1272, 1309, 1256, 1261, 1270, 1264, 1268,  558,
-     1303, 1267, 1247, 1250, 1249, 1257, 1245, 1301, 1243, 1595,
-     1595, 1595, 1248, 1595, 1258, 1292, 1254,    0, 1295, 1595,
-     1595, 1243, 1595, 1249, 1595,  535,  538,  562, 1595, 1287,
-     1234, 1233, 1240, 1233, 1245, 1244, 1228, 1243, 1273, 1240,
-
-     1276, 1222, 1224, 1236, 1236, 1235, 1595, 1220, 1217, 1231,
-     1223, 1229, 1220, 1228, 1595, 1213, 1224, 1228, 1210, 1224,
-     1222, 1205, 1199, 1204, 1201, 1216, 1217, 1214, 1255, 1212,
-     1595, 1198, 1200, 1246, 1245,  546, 1208, 1191, 1192, 1197,
-     1188, 1595, 1202, 1188,  580, 1180, 1201, 1198, 1190, 1233,
-     1187, 1231, 1595, 1179, 1177, 1191, 1194, 1226, 1225, 1172,
-     1223, 1595,  568, 1185, 1174, 1176, 1595, 1595, 1168, 1223,
-      552,  528, 1176, 1181, 1215, 1214, 1213, 1167, 1157, 1210,
-     1172, 1162, 1207, 1170, 1152, 1160, 1162, 1166, 1201, 1205,
-     1162, 1161, 1162, 1155, 1144, 1157, 1160, 1155, 1150, 1155,
-
-     1152, 1151, 1154, 1149, 1190, 1189, 1133, 1129, 1137, 1185,
-     1595, 1184, 1133, 1125, 1140, 1127, 1595, 1127, 1136, 1135,
-     1135, 1119, 1174, 1117, 1130, 1595, 1122, 1114, 1123, 1116,
-     1127, 1104, 1108, 1159, 1106, 1104, 1115, 1155, 1102,  533,
-      546, 1096,  537, 1595, 1157, 1115, 1104, 1108, 1153, 1595,
-     1147,  561, 1100, 1101, 1092, 1095, 1091, 1108, 1103, 1091,
-     1102, 1086, 1088, 1140, 1086, 1100, 1081, 1131, 1086, 1595,
-     1094, 1092, 1083, 1092, 1088, 1129, 1071, 1071, 1084, 1083,
-     1068, 1123, 1065, 1066, 1595, 1595, 1080, 1077, 1080, 1595,
-     1595, 1079, 1064,  572, 1063, 1061, 1108, 1057, 1111, 1110,
-
-     1595, 1055, 1067, 1065, 1106, 1054, 1054, 1046, 1102, 1055,
-     1043, 1037, 1045, 1047, 1056, 1049, 1041, 1041,  559, 1040,
-     1091, 1052,   56, 1595,  115,  188,  211, 1595,  565,  582,
-      269,  318,  477,  473,  493,  512,  553,  556,  608,  615,
-      564, 1595,  578,  563,  579,  570,  583,  583,  628,  596,
-      580,  581, 1595,  599,  582,  584,  640,  585, 1595,  604,
-      584,  602,  641,  601,  591,  609,  593,  608,  600,  596,
-      614,  599, 1595, 1595,  607,  652,  607, 1595,  615,  610,
-      661, 1595,  612,  617,  611,  613,  625,  619,  617,  670,
-      616,  672,  673,  619, 1595,  625,  623,  622,  636,  637,
-
-      653,  658,  632,  627,  634,  639,  646,  687,  688,  637,
-      641, 1595,  636,  654,  651,  689,  640,  659,  660,  646,
-      654,  663,  643,  664,  704,  705, 1595,  660,  707,  710,
-      672,  675,  658,  659,  666,  717,  666,  681,  720,  672,
-      676,  674,  672,  725,  726,  678,  728,  724,  684, 1595,
-      689,  682,  691,  685,  680,  690,  686, 1595,  681, 1595,
-     1595,  682,  698,  699,  700,  682,  687,  726,  717,  689,
-      692,  707,  699,  703, 1595, 1595,  714,  712,  698,  699,
-      757,  712,  717,  704,  715,  707,  713,  709,  727,  728,
-     1595, 1595,  726, 1595,  729, 1595,  714,  733,  723,  773,
-
-      729,  771, 1595,  728,  778, 1595,  779,  728,  735,  777,
-     1595, 1595,  737, 1595,  728,  728,  731,  745,  732,  743,
-      790,  749,  787,  793,  794,  795,  796,  757,  741,  753,
-      772,  801,  761,  803,  752,  748,  764,  769,  757,  809,
-      768, 1595,  770,  769,  771,  764,  773,  774,  771,  761,
-      763,  820,  769,  822,  767,  824, 1595,  762,  777,  827,
-     1595, 1595,  778,  788,  773,  789,  775,  835,  836,  782,
-      838,  797, 1595,  789,  791,  842, 1595, 1595, 1595, 1595,
-      795,  846,  797,  829, 1595,  807, 1595,  794,  793,  796,
-      796,  797,  855, 1595,  800,  857,  812,  803,  818,  818,
-
-      821,  821,  818,  823, 1595,  815, 1595,  825, 1595,  826,
-      827,  824, 1595,  816,  822,  821,  833,  833, 1595, 1595,
-      872, 1595,  837,  822,  828, 1595,  843, 1595,  840,  859,
-      879,  885,  829,  887,  888,  843, 1595,  890, 1595,  830,
-      887,  852,  848,  890,  840,  845,  898,  856,  900,  901,
-      864,  853,  904,  848,  865,  850,  865,  849,  906,  907,
-      872,  868,  915,  887,  874, 1595,  918, 1595, 1595,  867,
-     1595,  920,  868,  917,  862,  867,  926,  876, 1595,  882,
-     1595, 1595,  873,  888, 1595,  926,  894,  887,  888,  897,
-      884,  886,  896,  889, 1595,  940,  887, 1595,  891, 1595,
-
-      894,  890,  889,  947,  902, 1595,  944,  906,  909,  952,
-      895,  897,  905,  895,  911,  905,  921,  960,  956, 1595,
-      921,  958,  922,  913,  920, 1595,  917,  922,  969,  914,
-     1595,  918,  930,  931,  974,  918,  919,  927, 1595,  938,
-      928,  927,  930,  942,  933,  942,  944, 1595,  986,  946,
-      988,  989, 1595,  985,  945,  950,  931,  994,  953,  996,
-      955,  956,  999,  958, 1595,  963, 1595, 1595,  945,  951,
-     1004,  965, 1595,  951, 1595,  951,  953, 1595,  958,  953,
-      965,  961, 1595,  964,  968,  959, 1011,  960,  976,  969,
-      964,  979,  970,  977,  964,  979, 1026,  985, 1028,  973,
-
-      989,  980,  994,  990, 1595, 1034, 1595, 1035, 1036,  993,
-      992,  993, 1595, 1595, 1595, 1040,  984, 1000, 1595, 1038,
-      989,  988,  990, 1001, 1048,  999, 1595, 1008, 1051, 1595,
-     1595, 1057, 1062, 1067, 1072, 1077, 1082, 1087, 1090, 1064,
-     1069, 1071, 1084
+     1607, 1608,   32, 1603,  141,    0,  201, 1608,  206,   88,
+       11,  213, 1608, 1585,  114,   25,    2,    6, 1608, 1608,
+       73,   11,   17, 1608, 1608, 1608,  104, 1591, 1546,    0,
+     1583,  107, 1598,  217,  241, 1608,  185, 1542, 1548, 1568,
+       93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
+      269,   64,  231, 1549,  187,   75, 1548,  274,  188,  290,
+      276,  295, 1531,  195,  296,  324,  305, 1550,    0,  334,
+      349,  364,  374,  379, 1608,    0, 1608,  267,  295,  290,
+      322,  282,  329,  352,  332, 1608, 1547, 1586, 1608,  360,
+
+     1608,  385,  345, 1534, 1544, 1583,  358,  220,  249, 1538,
+      363,  370,  367,  373,  289, 1581,    0,  436,  370, 1525,
+     1533,  359, 1529, 1518, 1519,  364, 1535, 1518, 1527,  374,
+      200,  369, 1521,  383, 1509, 1565,  321, 1512, 1563, 1505,
+     1528, 1525, 1525, 1519,  368, 1512, 1505, 1510, 1504, 1515,
+     1500, 1499, 1513,  362, 1549, 1498,  382, 1510, 1513, 1497,
+      410,  409, 1509, 1510, 1508, 1490, 1495, 1491, 1483, 1500,
+     1492,    0,  413,  424,  438,  430,  439,  448, 1491, 1608,
+        0,  455, 1482, 1485, 1608,  443,  382, 1608, 1537, 1492,
+      453, 1535,  462, 1534,  441, 1533, 1608,  497, 1532,  470,
+
+     1493, 1488, 1487,  432, 1528, 1522, 1488, 1467, 1475, 1481,
+     1469, 1483, 1479, 1480, 1480, 1475, 1467, 1469, 1453, 1457,
+     1470, 1470, 1462, 1452, 1455, 1469, 1608, 1455, 1463, 1466,
+     1447, 1446, 1496, 1445, 1455, 1493,  486, 1454, 1442, 1453,
+     1489, 1493, 1446,    9, 1436, 1452, 1433, 1435, 1431, 1437,
+     1428, 1427, 1440, 1433, 1435, 1439, 1438, 1432,   80, 1439,
+     1434, 1426, 1432, 1432, 1413, 1429, 1422, 1429, 1417, 1410,
+     1424, 1423, 1426, 1408, 1416,  468, 1608, 1608,  477, 1608,
+     1608, 1403,    0,  449, 1405,  491,  478, 1459, 1608, 1412,
+      467, 1608, 1457, 1608, 1451,  538, 1608,  465, 1393, 1403,
+
+     1453, 1410,  486, 1608, 1408, 1450, 1405, 1402, 1403,  516,
+     1407, 1445, 1395, 1390, 1387, 1383, 1385, 1434, 1393, 1382,
+     1431, 1379,  518, 1392, 1392, 1375, 1376, 1389, 1376, 1386,
+     1381, 1388, 1383, 1368,  448, 1377, 1380, 1375, 1371, 1419,
+      490, 1608, 1366, 1365, 1358, 1360, 1364, 1353, 1360, 1365,
+      526, 1410, 1365,  486, 1362, 1366, 1364, 1353, 1353, 1365,
+     1347, 1339, 1340, 1361, 1343, 1355, 1354, 1340, 1352, 1351,
+     1350, 1391, 1390, 1389, 1333,  529, 1346, 1608, 1608, 1345,
+        0,  503, 1333, 1384, 1383, 1341, 1381, 1608, 1329, 1379,
+     1608,  536,  582,  516, 1378, 1320, 1608, 1336, 1335, 1322,
+
+     1321, 1608, 1323, 1320, 1332, 1328, 1316, 1318, 1608, 1324,
+     1309, 1311, 1322, 1320, 1315,  561, 1322, 1304, 1353, 1608,
+     1302, 1318, 1350, 1354, 1312, 1306, 1308, 1309, 1311, 1343,
+     1296, 1291, 1290, 1292, 1285, 1300, 1278, 1285, 1290, 1338,
+     1608, 1285, 1281, 1284, 1291, 1276, 1286, 1289, 1278, 1277,
+     1272, 1608, 1327, 1608, 1271, 1270, 1263, 1280, 1317, 1264,
+     1269, 1278, 1272, 1276,  563, 1311, 1275, 1255, 1258, 1257,
+     1265, 1253, 1309, 1251, 1608, 1608, 1608, 1256, 1608, 1266,
+     1300, 1262,    0, 1303, 1253, 1608, 1608, 1250, 1608, 1256,
+     1608,  542,  538,  570, 1608, 1294, 1241, 1240, 1247, 1240,
+
+     1252, 1251, 1235, 1250, 1280, 1247, 1283, 1229, 1231, 1243,
+     1243, 1242, 1608, 1227, 1224, 1238, 1230, 1236, 1227, 1235,
+     1608, 1220, 1231, 1235, 1217, 1231, 1229, 1212, 1206, 1211,
+     1208, 1223, 1224, 1221, 1262, 1219, 1608, 1205, 1207, 1253,
+     1252,  549, 1215, 1198, 1199, 1204, 1195, 1608, 1209, 1195,
+      603, 1187, 1208, 1205, 1197, 1240, 1194, 1238, 1608, 1186,
+     1184, 1198, 1201, 1233, 1232, 1179, 1230, 1608,  573, 1192,
+     1181, 1183, 1608, 1608, 1226, 1174, 1229,  555,  569, 1182,
+     1187, 1221, 1220, 1219, 1173, 1163, 1216, 1178, 1168, 1213,
+     1176, 1158, 1166, 1168, 1172, 1207, 1211, 1168, 1167, 1168,
+
+     1161, 1150, 1163, 1166, 1161, 1156, 1161, 1158, 1157, 1160,
+     1155, 1196, 1195, 1139, 1135, 1143, 1191, 1608, 1190, 1139,
+     1131, 1146, 1133, 1608, 1133, 1142, 1141, 1141, 1125, 1180,
+     1123, 1136, 1608, 1128, 1120, 1129, 1122, 1133, 1110, 1114,
+     1165, 1112, 1110, 1121, 1161, 1108,  518,  560, 1102,  553,
+     1608, 1163, 1121, 1110, 1114, 1121, 1158, 1608, 1152,  577,
+     1105, 1106, 1097, 1100, 1096, 1113, 1108, 1096, 1107, 1091,
+     1093, 1145, 1091, 1105, 1086, 1136, 1091, 1608, 1099, 1097,
+     1088, 1097, 1093, 1134, 1076, 1076, 1089, 1088, 1073, 1128,
+     1070, 1071, 1608, 1608, 1085, 1082, 1085, 1608, 1608, 1084,
+
+     1069,  576, 1068, 1066, 1113, 1062, 1116, 1115, 1608, 1060,
+     1072, 1070, 1111, 1059, 1059, 1051, 1107, 1060, 1048, 1042,
+     1050,    3,   78,   74,  182,  202,  554,  205,  365,  371,
+      422, 1608,  525,  493,  508,  508, 1608,  583,  577,  545,
+      577,  570,  565,  574,  570,  579,  574,  625,  631,  580,
+     1608,  593,  578,  595,  585,  597,  591,  636,  604,  588,
+      589, 1608,  608,  591,  593,  649,  594, 1608,  613,  593,
+      611,  650,  610,  600,  618,  602,  617,  609,  605,  623,
+      608, 1608, 1608,  616,  661,  616, 1608,  624,  619,  670,
+     1608,  621,  626,  620,  622,  634,  628,  626,  679,  625,
+
+      681,  682,  628, 1608,  634,  632,  631,  645,  646,  647,
+      663,  668,  642,  637,  644,  649,  656,  697,  698,  647,
+      651, 1608,  646,  664,  661,  699,  651,  669,  670,  656,
+      664,  673,  653,  674,  714,  715, 1608,  670,  717,  720,
+      682,  685,  668,  669,  676,  727,  676,  691,  730,  682,
+      686,  684,  682,  735,  736,  688,  738,  734,  694, 1608,
+      699,  692,  701,  695,  690,  700,  696, 1608,  691, 1608,
+     1608,  692,  708,  709,  710,  692,  697,  704,  737,  728,
+      700,  703,  718,  710,  715, 1608, 1608,  725,  723,  709,
+      710,  768,  723,  728,  715,  726,  718,  724,  720,  738,
+
+      739, 1608, 1608,  737, 1608,  740, 1608,  725,  744,  734,
+      784,  740,  782, 1608,  739,  789, 1608,  790,  739,  746,
+      788, 1608, 1608,  748, 1608,  739,  739,  742,  756,  743,
+      754,  801,  760,  798,  804,  805,  806,  807,  768,  752,
+      764,  754,  784,  813,  773,  815,  764,  760,  776,  781,
+      769,  821,  780, 1608,  782,  781,  783,  776,  785,  786,
+      783,  773,  775,  832,  781,  834,  779,  836, 1608,  774,
+      789,  839, 1608, 1608,  790,  800,  785,  801,  787,  847,
+      848,  794,  850,  809, 1608,  801,  803,  855, 1608, 1608,
+     1608, 1608,  807,  858,  809,  860,  842, 1608,  820, 1608,
+
+      807,  806,  809,  809,  810,  868, 1608,  813,  870,  825,
+      816,  831,  831,  834,  834,  831,  836, 1608,  828, 1608,
+      838, 1608,  839,  840,  837, 1608,  829,  835,  834,  846,
+      846, 1608, 1608,  885, 1608,  850,  835,  841, 1608,  856,
+     1608,  853, 1608,  872,  892,  898,  842,  900,  901,  856,
+     1608,  903, 1608,  843,  900,  865,  861,  903,  853,  858,
+      911,  869,  913,  914,  877,  866,  917,  861,  878,  863,
+      878,  862,  919,  920,  885,  881,  928,  900,  887, 1608,
+      931, 1608, 1608,  880, 1608,  933,  881,  930,  875,  880,
+      939,  889, 1608,  895, 1608, 1608,  886,  901, 1608,  939,
+
+      907,  900,  901,  910,  897,  899,  909,  902, 1608,  953,
+      900, 1608,  904, 1608,  907,  903,  902,  960,  915, 1608,
+      957,  919,  922,  965,  908,  910,  918,  908,  924,  918,
+      934,  973,  969, 1608,  934,  971,  935,  926,  933, 1608,
+      930,  935,  982,  927, 1608,  931,  943,  944,  987,  931,
+      932,  940, 1608,  951,  941,  940,  943,  955,  946,  955,
+      957, 1608,  999,  959, 1001, 1002, 1608,  998,  958,  963,
+      944, 1007,  966, 1009,  968,  969, 1012,  971, 1608,  976,
+     1608, 1608,  958,  964, 1017,  978, 1608,  964, 1608,  964,
+      966, 1608,  971,  966,  978,  974, 1608,  977,  981,  972,
+
+     1024,  973,  989,  982,  977,  992,  983,  990,  977,  992,
+     1039,  998, 1041,  986, 1002,  993, 1007, 1003, 1608, 1047,
+     1608, 1048, 1049, 1006, 1005, 1006, 1608, 1608, 1608, 1053,
+      997, 1013, 1608, 1051, 1002, 1001, 1003, 1014, 1061, 1012,
+     1608, 1021, 1064, 1608, 1608, 1070, 1075, 1080, 1085, 1090,
+     1095, 1100, 1103, 1077, 1082, 1084, 1097
     } ;
 
-static const flex_int16_t yy_def[1244] =
+static const flex_int16_t yy_def[1258] =
     {   0,
-     1232, 1232, 1233, 1233, 1232, 1232, 1232, 1232, 1232, 1232,
-     1231, 1231, 1231, 1231, 1231, 1234, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1235,
-     1231, 1231, 1231, 1236,   15, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1237,   45,   45,   45,
+     1246, 1246, 1247, 1247, 1246, 1246, 1246, 1246, 1246, 1246,
+     1245, 1245, 1245, 1245, 1245, 1248, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1249,
+     1245, 1245, 1245, 1250,   15, 1245,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1251,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1234, 1231, 1231,
-     1231, 1231, 1231, 1231, 1238, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1235, 1231, 1236, 1231,
+       45,   45,   45,   45,   45,   45,   45,   45, 1248, 1245,
+     1245, 1245, 1245, 1245, 1245, 1252, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1249, 1245, 1250,
 
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1239,   45, 1237,   45,   45,   45,   45,
+     1245, 1245,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1253,   45, 1251,   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,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1238,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1240,   45,
-       45, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
-       45,   45, 1239, 1231, 1237,   45,   45,   45,   45,   45,
+       45, 1252, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1254,   45,   45,   45, 1245,   45,   45, 1245,   45,   45,
+       45,   45,   45,   45,   45, 1253, 1245, 1251,   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, 1231,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1245,   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, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1241,
-       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
-       45, 1237, 1231,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45,   45,   45, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1255,   45,   45,   45,   45,   45, 1245,   45,
+       45, 1245,   45, 1245,   45, 1251, 1245,   45,   45,   45,
 
+       45,   45,   45, 1245,   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, 1231,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1245,   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, 1231, 1231, 1231, 1242,   45,   45,   45,
-       45,   45, 1231,   45,   45, 1231,   45, 1237,   45,   45,
-       45, 1231,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1245, 1245, 1245,
+     1256,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
+     1245,   45, 1251,   45,   45,   45, 1245,   45,   45,   45,
 
-       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45, 1245,   45,   45,   45,   45,   45,   45, 1245,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1245,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-     1231, 1231,   45, 1231,   45,   45, 1231, 1243,   45, 1231,
-     1231,   45, 1231,   45, 1231,   45,   45,   45, 1231,   45,
+     1245,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1245,   45, 1245,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1245, 1245, 1245,   45, 1245,   45,
+       45, 1245, 1257,   45,   45, 1245, 1245,   45, 1245,   45,
+     1245,   45,   45,   45, 1245,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45, 1231, 1231,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1245,   45,   45,   45,   45,   45,   45,   45,
+     1245,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1245,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
+       45,   45, 1245, 1245,   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,
-     1231,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
+       45,   45,   45, 1245,   45,   45,   45,   45,   45,   45,
+       45,   45, 1245,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45,   45,   45, 1231,
+     1245,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231, 1231,   45,   45,   45, 1231,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1245, 1245,   45,   45,   45, 1245, 1245,   45,
 
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45, 1231,   45,   45,
+       45, 1245,   45,   45,   45,   45, 1245,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45, 1231,   45,
+     1245,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1245,   45,   45,   45,   45,   45, 1245,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231, 1231,   45,   45,   45, 1231,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45,   45,   45,   45,
+       45, 1245, 1245,   45,   45,   45, 1245,   45,   45,   45,
+     1245,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
+       45,   45,   45, 1245,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
+       45, 1245,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1245,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-       45,   45,   45,   45,   45,   45,   45, 1231,   45, 1231,
-     1231,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231, 1231,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1245,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45, 1245,
+     1245,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1245, 1245,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1231, 1231,   45, 1231,   45, 1231,   45,   45,   45,   45,
 
-       45,   45, 1231,   45,   45, 1231,   45,   45,   45,   45,
-     1231, 1231,   45, 1231,   45,   45,   45,   45,   45,   45,
+       45, 1245, 1245,   45, 1245,   45, 1245,   45,   45,   45,
+       45,   45,   45, 1245,   45,   45, 1245,   45,   45,   45,
+       45, 1245, 1245,   45, 1245,   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, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45,   45,
-     1231, 1231,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1231,   45,   45,   45, 1231, 1231, 1231, 1231,
-       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
-       45,   45,   45, 1231,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45, 1231,   45, 1231,   45, 1231,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45, 1231, 1231,
-       45, 1231,   45,   45,   45, 1231,   45, 1231,   45,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45, 1231,   45,
+       45,   45,   45, 1245,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+       45,   45, 1245, 1245,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1245,   45,   45,   45, 1245, 1245,
+     1245, 1245,   45,   45,   45,   45,   45, 1245,   45, 1245,
+
+       45,   45,   45,   45,   45,   45, 1245,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1245,   45, 1245,
+       45, 1245,   45,   45,   45, 1245,   45,   45,   45,   45,
+       45, 1245, 1245,   45, 1245,   45,   45,   45, 1245,   45,
+     1245,   45, 1245,   45,   45,   45,   45,   45,   45,   45,
+     1245,   45, 1245,   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, 1245,
+       45, 1245, 1245,   45, 1245,   45,   45,   45,   45,   45,
+       45,   45, 1245,   45, 1245, 1245,   45,   45, 1245,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+       45, 1245,   45, 1245,   45,   45,   45,   45,   45, 1245,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1231,   45, 1231, 1231,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
-     1231, 1231,   45,   45, 1231,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45,   45, 1231,   45, 1231,
-
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1231,
-       45,   45,   45,   45,   45, 1231,   45,   45,   45,   45,
-     1231,   45,   45,   45,   45,   45,   45,   45, 1231,   45,
-       45,   45,   45,   45,   45,   45,   45, 1231,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1231,   45, 1231, 1231,   45,   45,
-       45,   45, 1231,   45, 1231,   45,   45, 1231,   45,   45,
-       45,   45, 1231,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1245,   45,   45,   45,   45,   45, 1245,
+       45,   45,   45,   45, 1245,   45,   45,   45,   45,   45,
+       45,   45, 1245,   45,   45,   45,   45,   45,   45,   45,
+       45, 1245,   45,   45,   45,   45, 1245,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+     1245, 1245,   45,   45,   45,   45, 1245,   45, 1245,   45,
+       45, 1245,   45,   45,   45,   45, 1245,   45,   45,   45,
 
-       45,   45,   45,   45, 1231,   45, 1231,   45,   45,   45,
-       45,   45, 1231, 1231, 1231,   45,   45,   45, 1231,   45,
-       45,   45,   45,   45,   45,   45, 1231,   45,   45, 1231,
-        0, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1245,   45,
+     1245,   45,   45,   45,   45,   45, 1245, 1245, 1245,   45,
+       45,   45, 1245,   45,   45,   45,   45,   45,   45,   45,
+     1245,   45,   45, 1245,    0, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245
     } ;
 
-static const flex_int16_t yy_nxt[1667] =
+static const flex_int16_t yy_nxt[1680] =
     {   0,
-     1231,   13,   14,   13, 1231,   15,   16, 1231,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   84,  340,
-       37,   14,   37,   85,   25,   26,   38, 1231, 1231,   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, 1231,   13,
-       14,   13,   33,   40,  113,   90,   91,  341,   89,   34,
-       35,   13,   14,   13,   93,   15,   16,   94,   17,   18,
+     1245,   13,   14,   13, 1245,   15,   16, 1245,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  344,
+       37,   14,   37,   86,   25,   26,   38, 1245, 1245,   27,
+       37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
+      115,   30,   13,   14,   13,   90,   91,   25,   31,   92,
+       13,   14,   13,   13,   14,   13,   32,   40,  796,   13,
+       14,   13,   33,   40,  115,   91,   92,  345,   90,   34,
+       35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
-       13,  106,   39,   89,   25,   26,   13,   14,   13,   27,
+       13,  108,   39,   90,   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,
-      128,  135,   87,  797,   87,  798,   32,   88,   88,   88,
-      129,  136,   33,  137,  356,   81,  105,  357,  109,   34,
+       39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
+       42,   30,   82,  107,   41,  111,   93,   25,   31,  108,
+      130,  137,   88,  797,   88,  798,   32,   89,   89,   89,
+      131,  138,   33,  139,  360,   82,  107,  361,  111,   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,
-       53,   45,   45,   45,   45,   54,   55,   45,   56,   45,
-       45,   57,   45,   45,   58,   45,   59,   60,   61,   62,
-       63,   64,   65,   51,   66,   67,   68,   69,   70,   71,
-
-       72,   73,   74,   75,   76,   77,   56,   45,   45,   45,
-       45,   45,   79,  102,   80,   80,   80,   79,  107,   82,
-       82,   82,  100,  112,   79,   81,   82,   82,   82,  119,
-       81,  143,  120,  110,  121,  144,  122,   81,  158,  102,
-      105,  102,  159,  111,  132,  214,  112,  108,   81,  133,
-      799,  171,  134,   81,  172,  145,  110,  101,  215,  800,
-       81,   45,  109,  105,   45,   45,   45,  117,   45,   45,
-       45,  111,  115,  118,  130,   45,   45,  171,   45,   45,
-      172,  146,  100,  147,   45,  109,   45,   45,   45,   45,
+       45,   47,   45,   48,   49,   50,   51,   45,   52,   53,
+       54,   45,   45,   45,   45,   55,   56,   45,   57,   45,
+       45,   58,   45,   45,   59,   45,   60,   61,   62,   63,
+       64,   65,   66,   52,   67,   68,   69,   70,   71,   72,
+
+       73,   74,   75,   76,   77,   78,   57,   45,   45,   45,
+       45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
+       83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
+       82,  145,  122,  112,  123,  146,  124,   82,  160,  103,
+      799,  103,  161,  113,  134,  217,  114,  110,   82,  135,
+      187,  107,  136,   82,  188,  147,  112,  102,  218,  800,
+       82,   45,  803,   45,   45,   45,   45,  119,   45,   45,
+       45,  113,  117,  120,  107,   45,   45,  187,   45,   45,
+       89,   89,   89,  189,   45,  132,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   88,   88,
-       88,   45,  123,  173,  803,   45,  124,  101,  148,  125,
-      126,  139,  140,   45,  112,  141,  160,   45,  149,   45,
-      116,  142,  127,  150,  151,  152,  161,  162,  153,  154,
-      110,  173,  163,   83,   83,   83,  200,  112,  173,  155,
-      111,  180,  156,   87,   81,   87,  201,  167,   88,   88,
-       88,  804,  168,  110,  171,  164,  172,  184,   79,  165,
-       80,   80,   80,   88,   88,   88,  176,   81,  111,  180,
-       79,   81,   82,   82,   82,  166,   83,   83,   83,   99,
-      174,  183,  175,   81,  184,  188,   99,   81,  185,  189,
-
-      224,  190,  192,  191,   81,  180,  243,  244,  205,  206,
-      273,  437,  211,  274,  212,  233,   81,  183,  207,  216,
-       81,  438,  196,  188,   99,  192,  189,  186,   99,  190,
-      191,  213,   99,  197,  219,  217,  234,  220,  273,  274,
-       99,  221,  225,  273,   99,  275,   99,  179,  195,  195,
-      195,  253,  275,  281,  287,  195,  195,  195,  195,  195,
-      195,  247,  261,  274,  248,  249,  262,  284,  275,  289,
-      263,  276,  283,  281,  291,  278,  281,  287,  195,  195,
-      195,  195,  195,  195,  254,  255,  256,  298,  331,  277,
-      378,  378,  289,  299,  284,  257,  294,  258,  374,  259,
-
-      283,  291,  260,  292,  292,  292,  374,  379,  380,  382,
-      292,  292,  292,  292,  292,  292,  381,  385,  401,  378,
-      389,  374,  402,  394,  430,  431,  447,  451,  805,  375,
-      806,  452,  382,  292,  292,  292,  292,  292,  292,  332,
-      395,  479,  333,  479,  415,  385,  388,  388,  388,  416,
-      807,  617,  652,  388,  388,  388,  388,  388,  388,  474,
-      486,  507,  487,  553,  475,  571,  508,  568,  554,  479,
-      572,  488,  573,  644,  808,  652,  388,  388,  388,  388,
-      388,  388,  448,  645,  717,  626,  651,  486,  618,  487,
-      627,  718,  571,  722,  730,  417,  801,  719,  572,  723,
-
-      418,   45,   45,   45,  720,  792,  802,  809,   45,   45,
-       45,   45,   45,   45,  651,  767,  810,  793,  811,  768,
-      812,  813,  730,  801,  814,  815,  816,  628,  817,  802,
-      818,   45,   45,   45,   45,   45,   45,  819,  820,  821,
-      822,  823,  824,  825,  826,  827,  830,  831,  832,  833,
-      828,  834,  835,  836,  837,  838,  839,  840,  841,  842,
-      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      843,  854,  855,  856,  857,  858,  859,  860,  861,  862,
-      863,  864,  865,  866,  867,  868,  870,  869,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
-
-      883,  829,  884,  885,  886,  887,  888,  889,  890,  891,
-      892,  893,  894,  868,  869,  896,  898,  895,  899,  900,
-      901,  902,  903,  904,  905,  906,  907,  908,  909,  910,
-      911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
-      921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
-      931,  932,  933,  934,  935,  936,  937,  897,  938,  939,
-      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
-      950,  951,  952,  931,  953,  954,  955,  956,  957,  932,
-      958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
-      968,  969,  970,  971,  972,  973,  974,  975,  977,  978,
+       45,   45,   45,   45,   45,   45,   45,   45,   89,   89,
+       89,   45,  125,  195,  111,   45,  126,  175,  173,  127,
+      128,  141,  142,   45,  150,  143,  227,   45,  114,   45,
+      118,  144,  129,  148,  151,  149,  195,  111,  154,  152,
+      153,  155,  156,  162,  173,  175,  112,   84,   84,   84,
+      174,  114,  157,  163,  164,  158,  113,  173,   82,  165,
+       80,  169,   81,   81,   81,  101,  170,  175,  228,  112,
+      804,  166,   88,   82,   88,  167,  174,   89,   89,   89,
+      174,   82,  182,  176,  113,   80,  186,   83,   83,   83,
+      100,  168,   84,   84,   84,  178,   82,  100,   82,  191,
+
+      102,  192,  193,   82,  194,  203,  177,  182,  208,  209,
+      182,  288,  186,  236,  805,  204,  219,  214,  210,  215,
+      256,   82,  246,  247,  199,  100,   82,  191,  192,  100,
+      193,  194,  220,  100,  237,  200,  216,  222,  288,  250,
+      223,  100,  251,  252,  224,  100,  276,  100,  181,  198,
+      198,  198,  277,  257,  258,  259,  198,  198,  198,  198,
+      198,  198,  278,  276,  260,  264,  261,  277,  262,  265,
+      295,  263,  278,  266,  276,  284,  287,  291,  277,  198,
+      198,  198,  198,  198,  198,  278,  293,  382,  302,  806,
+      284,  279,  378,  280,  303,  281,  335,  295,  284,  390,
+
+      291,  378,  387,  382,  287,  384,  385,  435,  436,  293,
+      296,  296,  296,  298,  386,  378,  382,  296,  296,  296,
+      296,  296,  296,  420,  379,  387,  406,  390,  421,  399,
+      407,  452,  394,  456,  479,  807,  484,  457,  442,  480,
+      296,  296,  296,  296,  296,  296,  400,  336,  443,  484,
+      337,  393,  393,  393,  624,  808,  809,  810,  393,  393,
+      393,  393,  393,  393,  484,  492,  513,  493,  559,  725,
+      579,  514,  578,  560,  422,  574,  726,  494,  651,  423,
+      580,  393,  393,  393,  393,  393,  393,  453,  652,  659,
+      813,  625,  492,  660,  493,   45,   45,   45,  579,  578,
+
+      801,  812,   45,   45,   45,   45,   45,   45,  633,  730,
+      739,  727,  802,  634,  811,  731,  660,  659,  728,  776,
+      814,  815,  816,  777,  812,   45,   45,   45,   45,   45,
+       45,  817,  818,  819,  820,  821,  822,  823,  739,  824,
+      825,  811,  826,  827,  828,  829,  830,  831,  832,  833,
+      635,  834,  835,  836,  837,  840,  841,  842,  843,  838,
+      844,  845,  846,  847,  848,  849,  850,  851,  852,  854,
+      855,  856,  857,  858,  859,  860,  861,  862,  863,  853,
+      864,  865,  866,  867,  868,  869,  870,  871,  872,  873,
+      874,  875,  876,  877,  878,  879,  881,  880,  882,  883,
+
+      884,  885,  886,  887,  888,  889,  890,  891,  892,  893,
+      839,  894,  895,  896,  897,  898,  899,  900,  901,  902,
+      903,  904,  905,  879,  880,  907,  909,  906,  910,  911,
+      912,  913,  914,  915,  916,  917,  918,  919,  920,  921,
+      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
+      932,  933,  934,  935,  936,  937,  938,  939,  940,  941,
+      942,  943,  944,  945,  946,  947,  948,  908,  949,  950,
+      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
+      961,  962,  963,  964,  943,  965,  966,  967,  968,  969,
+      944,  970,  971,  972,  973,  974,  975,  976,  977,  978,
 
       979,  980,  981,  982,  983,  984,  985,  986,  987,  989,
       990,  991,  992,  993,  994,  995,  996,  997,  998,  999,
-     1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
-     1010, 1011, 1013,  984, 1014, 1015, 1016, 1017, 1018, 1012,
-     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,  976, 1027,
-      988, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
-     1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
-     1047, 1048, 1049, 1050, 1051, 1052, 1030, 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, 1087, 1088, 1089, 1090, 1064, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105,
-     1101, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1096,
-     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, 1181, 1182, 1183,
-     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
-     1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
-     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
-     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
-     1224, 1225, 1226, 1227, 1228, 1229, 1230,   12,   12,   12,
-       12,   12,   36,   36,   36,   36,   36,   78,  280,   78,
-       78,   78,   97,  377,   97,  478,   97,   99,   99,   99,
-       99,   99,  114,  114,  114,  114,  114,  170,   99,  170,
-      170,  170,  193,  193,  193,  796,  795,  794,  791,  790,
-
-      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
-      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
-      769,  766,  765,  764,  763,  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,  735,  734,  733,  732,  731,  729,  728,  727,
-      726,  725,  724,  721,  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,  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,  650,  649,
-      648,  647,  646,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  625,  624,
-      623,  622,  621,  620,  619,  616,  615,  614,  613,  612,
-      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
-      601,  600,  599,  598,  597,  596,  595,  594,  593,  592,
-      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
-      581,  580,  579,  578,  577,  576,  575,  574,  570,  569,
-
-      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
-      558,  557,  556,  555,  552,  551,  550,  549,  548,  547,
-      546,  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,  506,  505,
-      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
-      494,  493,  492,  491,  490,  489,  485,  484,  483,  482,
-      481,  480,  477,  476,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
-
-      457,  456,  455,  454,  453,  450,  449,  446,  445,  444,
-      443,  442,  441,  440,  439,  436,  435,  434,  433,  432,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  414,  413,  412,  411,  410,  409,  408,  407,  406,
-      405,  404,  403,  400,  399,  398,  397,  396,  393,  392,
-      391,  390,  387,  386,  384,  383,  376,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  358,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  346,  345,  344,  343,  342,  339,  338,  337,
-      336,  335,  334,  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,  297,  296,  295,  293,  194,  290,
-      288,  286,  285,  282,  279,  272,  271,  270,  269,  268,
-      267,  266,  265,  264,  252,  251,  250,  246,  245,  242,
-      241,  240,  239,  238,  237,  236,  235,  232,  231,  230,
-      229,  228,  227,  226,  223,  222,  218,  210,  209,  208,
-      204,  203,  202,  199,  198,  194,  187,  182,  181,  178,
-      177,  169,  157,  138,  131,  104,  103,   43,   98,   96,
-       95,   86,   43, 1231,   11, 1231, 1231, 1231, 1231, 1231,
-
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231
+     1000, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+     1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+     1021, 1022, 1023, 1024, 1026,  997, 1027, 1028, 1029, 1030,
+     1031, 1025, 1032, 1033, 1034, 1035, 1036, 1037, 1038,  988,
+     1039, 1040, 1001, 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, 1044,
+     1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
+
+     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, 1078, 1105,
+     1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1116,
+     1117, 1118, 1119, 1115, 1120, 1121, 1122, 1123, 1124, 1125,
+     1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
+     1136, 1137, 1110, 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, 1181, 1182, 1183, 1184,
+     1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
+     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
+     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+     1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224,
+     1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
+     1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
+       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
+       79,  283,   79,   79,   79,   98,  381,   98,  483,   98,
+      100,  100,  100,  100,  100,  116,  116,  116,  116,  116,
+
+      172,  100,  172,  172,  172,  196,  196,  196,  795,  794,
+      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
+      783,  782,  781,  780,  779,  778,  775,  774,  773,  772,
+      771,  770,  769,  768,  767,  766,  765,  764,  763,  762,
+      761,  760,  759,  758,  757,  756,  755,  754,  753,  752,
+      751,  750,  749,  748,  747,  746,  745,  744,  743,  742,
+      741,  740,  738,  737,  736,  735,  734,  733,  732,  729,
+      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,  696,  695,
+
+      694,  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,  658,  657,  656,  655,  654,  653,
+      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
+      640,  639,  638,  637,  636,  632,  631,  630,  629,  628,
+      627,  626,  623,  622,  621,  620,  619,  618,  617,  616,
+      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
+      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+
+      585,  584,  583,  582,  581,  577,  576,  575,  574,  573,
+      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
+      562,  561,  558,  557,  556,  555,  554,  553,  552,  551,
+      550,  549,  548,  547,  546,  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,  512,  511,  510,  509,
+      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
+      498,  497,  496,  495,  491,  490,  489,  488,  487,  486,
+      485,  482,  481,  478,  477,  476,  475,  474,  473,  472,
+
+      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
+      461,  460,  459,  458,  455,  454,  451,  450,  449,  448,
+      447,  446,  445,  444,  441,  440,  439,  438,  437,  434,
+      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  408,  405,  404,  403,  402,  401,  398,  397,  396,
+      395,  392,  391,  389,  388,  383,  380,  377,  376,  375,
+      374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
+      364,  363,  362,  359,  358,  357,  356,  355,  354,  353,
+      352,  351,  350,  349,  348,  347,  346,  343,  342,  341,
+
+      340,  339,  338,  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,  301,  300,  299,  297,  197,  294,
+      292,  290,  289,  286,  285,  282,  275,  274,  273,  272,
+      271,  270,  269,  268,  267,  255,  254,  253,  249,  248,
+      245,  244,  243,  242,  241,  240,  239,  238,  235,  234,
+      233,  232,  231,  230,  229,  226,  225,  221,  213,  212,
+      211,  207,  206,  205,  202,  201,  197,  190,  185,  184,
+      183,  180,  179,  171,  159,  140,  133,  106,  105,  104,
+
+       43,   99,   97,   96,   87,   43, 1245,   11, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245
     } ;
 
-static const flex_int16_t yy_chk[1667] =
+static const flex_int16_t yy_chk[1680] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  241,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  244,
         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,    0,    8,
-        8,    8,    1,    8,   56,   27,   28,  241,   26,    1,
+       57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
+        6,    6,    6,    7,    7,    7,    1,    7,  722,    8,
+        8,    8,    1,    8,   57,   27,   28,  244,   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,
+        9,   52,    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,  723,   25,  725,    2,   25,   25,   25,
-       61,   65,    2,   65,  256,   20,   50,  256,   53,    2,
+       42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
+       62,   66,   25,  723,   25,  724,    2,   25,   25,   25,
+       62,   66,    2,   66,  259,   20,   51,  259,   54,    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,
@@ -1378,166 +1382,167 @@ static const flex_int16_t yy_chk[1667] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   17,   47,   17,   17,   17,   19,   52,   19,
-       19,   19,   44,   55,   22,   17,   22,   22,   22,   59,
-       19,   68,   59,   54,   59,   68,   59,   22,   73,   47,
-       62,   58,   73,   54,   64,  129,   55,   52,   17,   64,
-      726,   89,   64,   19,   90,   68,   54,   44,  129,  727,
-       22,   45,   69,   62,   45,   45,   45,   58,   45,   45,
-       45,   54,   57,   58,   62,   45,   45,   89,   45,   57,
-       90,   69,   99,   69,   45,   69,   45,   45,   45,   45,
+       15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
+       19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
+       19,   69,   60,   55,   60,   69,   60,   22,   74,   47,
+      725,   59,   74,   55,   65,  131,   56,   53,   17,   65,
+      108,   63,   65,   19,  109,   69,   55,   44,  131,  726,
+       22,   45,  728,   45,   45,   45,   45,   59,   45,   45,
+       45,   55,   58,   59,   63,   45,   45,  108,   45,   58,
+       88,   88,   88,  109,   45,   63,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   57,   87,   87,
-       87,   57,   60,   91,  731,   57,   60,   99,   70,   60,
-       60,   67,   67,   57,   76,   67,   74,   57,   70,   57,
-       57,   67,   60,   70,   70,   71,   74,   74,   71,   71,
-       75,   91,   74,   79,   79,   79,  120,   76,   94,   71,
-       75,  102,   71,   81,   79,   81,  120,   76,   81,   81,
-       81,  732,   76,   75,   92,   75,   93,  106,   80,   75,
-       80,   80,   80,   88,   88,   88,   94,   79,   75,  102,
-       82,   80,   82,   82,   82,   75,   83,   83,   83,  101,
-       92,  105,   93,   82,  106,  109,  101,   83,  107,  110,
-
-      135,  111,  113,  112,   80,  117,  152,  152,  124,  124,
-      171,  337,  128,  172,  128,  143,   82,  105,  124,  130,
-       83,  337,  117,  109,  101,  113,  110,  107,  101,  111,
-      112,  128,  101,  117,  132,  130,  143,  132,  171,  172,
-      101,  132,  135,  174,  101,  173,  101,  101,  116,  116,
-      116,  159,  176,  180,  188,  116,  116,  116,  116,  116,
-      116,  155,  160,  175,  155,  155,  160,  184,  173,  190,
-      160,  174,  183,  197,  192,  176,  180,  188,  116,  116,
-      116,  116,  116,  116,  159,  159,  159,  201,  234,  175,
-      281,  294,  190,  201,  184,  159,  197,  159,  273,  159,
-
-      183,  192,  159,  195,  195,  195,  276,  282,  282,  283,
-      195,  195,  195,  195,  195,  195,  282,  287,  306,  281,
-      294,  273,  306,  299,  331,  331,  347,  350,  733,  276,
-      734,  350,  283,  195,  195,  195,  195,  195,  195,  234,
-      299,  378,  234,  389,  319,  287,  292,  292,  292,  319,
-      735,  536,  572,  292,  292,  292,  292,  292,  292,  372,
-      387,  411,  387,  460,  372,  486,  411,  488,  460,  378,
-      487,  389,  488,  563,  736,  572,  292,  292,  292,  292,
-      292,  292,  347,  563,  640,  545,  571,  387,  536,  387,
-      545,  640,  486,  643,  652,  319,  729,  641,  487,  643,
-
-      319,  388,  388,  388,  641,  719,  730,  737,  388,  388,
-      388,  388,  388,  388,  571,  694,  738,  719,  739,  694,
-      740,  741,  652,  729,  743,  744,  745,  545,  746,  730,
-      747,  388,  388,  388,  388,  388,  388,  748,  749,  750,
-      751,  752,  754,  755,  756,  757,  758,  760,  761,  762,
-      757,  763,  764,  765,  766,  767,  768,  769,  770,  771,
-      772,  775,  776,  777,  779,  780,  781,  783,  784,  785,
-      771,  786,  787,  788,  789,  790,  791,  792,  793,  794,
-      796,  797,  798,  799,  800,  801,  803,  802,  804,  805,
-      806,  807,  808,  809,  810,  811,  813,  814,  815,  816,
-
-      817,  757,  818,  819,  820,  821,  822,  823,  824,  825,
-      826,  828,  829,  801,  802,  830,  831,  829,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
-      844,  845,  846,  847,  848,  849,  851,  852,  853,  854,
-      855,  856,  857,  859,  862,  863,  864,  865,  866,  867,
-      868,  869,  870,  871,  872,  873,  874,  830,  877,  878,
-      879,  880,  881,  882,  883,  884,  885,  886,  887,  888,
-      889,  890,  893,  868,  895,  897,  898,  899,  900,  869,
-      901,  902,  904,  905,  907,  908,  909,  910,  913,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+       45,   45,   45,   45,   45,   45,   45,   58,   89,   89,
+       89,   58,   61,  115,   70,   58,   61,   92,   90,   61,
+       61,   68,   68,   58,   71,   68,  137,   58,   77,   58,
+       58,   68,   61,   70,   71,   70,  115,   70,   72,   71,
+       71,   72,   72,   75,   90,   92,   76,   80,   80,   80,
+       91,   77,   72,   75,   75,   72,   76,   93,   80,   75,
+       81,   77,   81,   81,   81,  100,   77,   95,  137,   76,
+      729,   76,   82,   81,   82,   76,   91,   82,   82,   82,
+       94,   80,  103,   93,   76,   83,  107,   83,   83,   83,
+      102,   76,   84,   84,   84,   95,   81,  102,   83,  111,
+
+      100,  112,  113,   84,  114,  122,   94,  119,  126,  126,
+      103,  187,  107,  145,  730,  122,  132,  130,  126,  130,
+      161,   83,  154,  154,  119,  102,   84,  111,  112,  102,
+      113,  114,  132,  102,  145,  119,  130,  134,  187,  157,
+      134,  102,  157,  157,  134,  102,  173,  102,  102,  118,
+      118,  118,  174,  161,  161,  161,  118,  118,  118,  118,
+      118,  118,  175,  176,  161,  162,  161,  177,  161,  162,
+      195,  161,  178,  162,  173,  182,  186,  191,  174,  118,
+      118,  118,  118,  118,  118,  175,  193,  284,  204,  731,
+      200,  176,  276,  177,  204,  178,  237,  195,  182,  291,
+
+      191,  279,  287,  298,  186,  286,  286,  335,  335,  193,
+      198,  198,  198,  200,  286,  276,  284,  198,  198,  198,
+      198,  198,  198,  323,  279,  287,  310,  291,  323,  303,
+      310,  351,  298,  354,  376,  733,  382,  354,  341,  376,
+      198,  198,  198,  198,  198,  198,  303,  237,  341,  394,
+      237,  296,  296,  296,  542,  734,  735,  736,  296,  296,
+      296,  296,  296,  296,  382,  392,  416,  392,  465,  647,
+      493,  416,  492,  465,  323,  494,  647,  394,  569,  323,
+      494,  296,  296,  296,  296,  296,  296,  351,  569,  578,
+      740,  542,  392,  579,  392,  393,  393,  393,  493,  492,
+
+      727,  739,  393,  393,  393,  393,  393,  393,  551,  650,
+      660,  648,  727,  551,  738,  650,  579,  578,  648,  702,
+      741,  742,  743,  702,  739,  393,  393,  393,  393,  393,
+      393,  744,  745,  746,  747,  748,  749,  750,  660,  752,
+      753,  738,  754,  755,  756,  757,  758,  759,  760,  761,
+      551,  763,  764,  765,  766,  767,  769,  770,  771,  766,
+      772,  773,  774,  775,  776,  777,  778,  779,  780,  781,
+      784,  785,  786,  788,  789,  790,  792,  793,  794,  780,
+      795,  796,  797,  798,  799,  800,  801,  802,  803,  805,
+      806,  807,  808,  809,  810,  811,  813,  812,  814,  815,
+
+      816,  817,  818,  819,  820,  821,  823,  824,  825,  826,
+      766,  827,  828,  829,  830,  831,  832,  833,  834,  835,
+      836,  838,  839,  811,  812,  840,  841,  839,  842,  843,
+      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  856,  857,  858,  859,  861,  862,  863,  864,
+      865,  866,  867,  869,  872,  873,  874,  875,  876,  877,
+      878,  879,  880,  881,  882,  883,  884,  840,  885,  888,
+      889,  890,  891,  892,  893,  894,  895,  896,  897,  898,
+      899,  900,  901,  904,  879,  906,  908,  909,  910,  911,
+      880,  912,  913,  915,  916,  918,  919,  920,  921,  924,
 
       926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
-      936,  937,  938,  939,  940,  941,  943,  944,  945,  946,
-      947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
-      958,  959,  960,  931,  963,  964,  965,  966,  967,  959,
-      968,  969,  970,  971,  972,  974,  975,  976,  923,  981,
-      934,  982,  983,  984,  986,  988,  989,  990,  991,  992,
-      993,  995,  996,  997,  998,  999, 1000, 1001, 1002, 1003,
-     1004, 1006, 1008, 1010, 1011, 1012,  984, 1014, 1015, 1016,
-     1017, 1018, 1021, 1023, 1024, 1025, 1027, 1029, 1030, 1031,
-     1032, 1033, 1034, 1035, 1036, 1038, 1040, 1041, 1042, 1043,
-
-     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1030, 1059, 1060, 1061, 1062,
-     1063, 1064, 1065, 1067, 1070, 1072, 1073, 1074, 1075, 1076,
-     1072, 1077, 1078, 1080, 1083, 1084, 1086, 1087, 1088, 1089,
-     1090, 1091, 1092, 1093, 1094, 1096, 1097, 1099, 1101, 1064,
-     1102, 1103, 1104, 1105, 1107, 1108, 1109, 1110, 1111, 1112,
-     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1122, 1123,
-     1124, 1125, 1127, 1128, 1129, 1130, 1132, 1133, 1134, 1135,
-     1136, 1137, 1138, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
-     1147, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, 1158,
-
-     1159, 1160, 1161, 1162, 1163, 1164, 1166, 1169, 1170, 1171,
-     1172, 1174, 1176, 1177, 1179, 1180, 1181, 1182, 1184, 1185,
-     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
-     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1206,
-     1208, 1209, 1210, 1211, 1212, 1216, 1217, 1218, 1220, 1221,
-     1222, 1223, 1224, 1225, 1226, 1228, 1229, 1232, 1232, 1232,
-     1232, 1232, 1233, 1233, 1233, 1233, 1233, 1234, 1240, 1234,
-     1234, 1234, 1235, 1241, 1235, 1242, 1235, 1236, 1236, 1236,
-     1236, 1236, 1237, 1237, 1237, 1237, 1237, 1238, 1243, 1238,
-     1238, 1238, 1239, 1239, 1239,  722,  721,  720,  718,  717,
-
-      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
-      706,  705,  704,  703,  702,  700,  699,  698,  697,  696,
-      695,  693,  692,  689,  688,  687,  684,  683,  682,  681,
-      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  651,  649,  648,
-      647,  646,  645,  642,  639,  638,  637,  636,  635,  634,
-      633,  632,  631,  630,  629,  628,  627,  625,  624,  623,
-      622,  621,  620,  619,  618,  616,  615,  614,  613,  612,
-      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
-
-      600,  599,  598,  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,  570,  569,
-      566,  565,  564,  561,  560,  559,  558,  557,  556,  555,
-      554,  552,  551,  550,  549,  548,  547,  546,  544,  543,
-      541,  540,  539,  538,  537,  535,  534,  533,  532,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
-      519,  518,  517,  516,  514,  513,  512,  511,  510,  509,
-      508,  506,  505,  504,  503,  502,  501,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  484,  482,
-
-      479,  477,  476,  475,  473,  469,  468,  467,  466,  465,
-      464,  463,  462,  461,  459,  458,  457,  456,  455,  454,
-      453,  452,  451,  450,  448,  446,  445,  444,  443,  442,
-      441,  440,  439,  438,  437,  435,  434,  433,  432,  431,
-      430,  429,  428,  427,  426,  425,  424,  423,  422,  421,
-      420,  419,  418,  417,  416,  414,  413,  412,  410,  409,
-      408,  407,  406,  405,  403,  402,  401,  400,  399,  398,
-      396,  395,  394,  393,  391,  390,  385,  384,  382,  381,
-      380,  379,  376,  373,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
-
-      355,  354,  353,  352,  351,  349,  348,  346,  345,  344,
-      343,  342,  341,  340,  339,  336,  335,  334,  333,  332,
-      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
-      320,  318,  317,  316,  315,  314,  313,  312,  311,  310,
-      309,  308,  307,  305,  304,  303,  302,  301,  298,  297,
-      296,  295,  291,  289,  286,  284,  279,  272,  271,  270,
-      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
-      259,  258,  257,  255,  254,  253,  252,  251,  250,  249,
-      248,  247,  246,  245,  244,  243,  242,  240,  239,  238,
-      237,  236,  235,  233,  232,  231,  230,  229,  228,  227,
-
-      226,  225,  223,  222,  221,  220,  219,  218,  217,  216,
-      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
-      205,  204,  203,  202,  200,  199,  198,  196,  193,  191,
-      189,  187,  186,  181,  177,  169,  168,  167,  166,  165,
-      164,  163,  162,  161,  158,  157,  156,  154,  153,  151,
-      150,  149,  148,  147,  146,  145,  144,  142,  141,  140,
-      139,  138,  137,  136,  134,  133,  131,  127,  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, 1231, 1231, 1231, 1231, 1231, 1231,
-
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
-     1231, 1231, 1231, 1231, 1231, 1231
+      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
+      946,  947,  948,  949,  950,  951,  952,  953,  955,  956,
+      957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
+      967,  968,  970,  971,  972,  943,  975,  976,  977,  978,
+      979,  971,  980,  981,  982,  983,  984,  986,  987,  934,
+      988,  993,  946,  994,  995,  996,  997,  999, 1001, 1002,
+     1003, 1004, 1005, 1006, 1008, 1009, 1010, 1011, 1012, 1013,
+     1014, 1015, 1016, 1017, 1019, 1021, 1023, 1024, 1025,  997,
+     1027, 1028, 1029, 1030, 1031, 1034, 1036, 1037, 1038, 1040,
+
+     1042, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1052, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1044, 1073,
+     1074, 1075, 1076, 1077, 1078, 1079, 1081, 1084, 1086, 1087,
+     1088, 1089, 1090, 1086, 1091, 1092, 1094, 1097, 1098, 1100,
+     1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1110, 1111,
+     1113, 1115, 1078, 1116, 1117, 1118, 1119, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
+     1135, 1136, 1137, 1138, 1139, 1141, 1142, 1143, 1144, 1146,
+     1147, 1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157,
+
+     1158, 1159, 1160, 1161, 1163, 1164, 1165, 1166, 1168, 1169,
+     1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1180,
+     1183, 1184, 1185, 1186, 1188, 1190, 1191, 1193, 1194, 1195,
+     1196, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206,
+     1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+     1217, 1218, 1220, 1222, 1223, 1224, 1225, 1226, 1230, 1231,
+     1232, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243,
+     1246, 1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 1247,
+     1248, 1254, 1248, 1248, 1248, 1249, 1255, 1249, 1256, 1249,
+     1250, 1250, 1250, 1250, 1250, 1251, 1251, 1251, 1251, 1251,
+
+     1252, 1257, 1252, 1252, 1252, 1253, 1253, 1253,  721,  720,
+      719,  718,  717,  716,  715,  714,  713,  712,  711,  710,
+      708,  707,  706,  705,  704,  703,  701,  700,  697,  696,
+      695,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+      683,  682,  681,  680,  679,  677,  676,  675,  674,  673,
+      672,  671,  670,  669,  668,  667,  666,  665,  664,  663,
+      662,  661,  659,  657,  656,  655,  654,  653,  652,  649,
+      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
+      636,  635,  634,  632,  631,  630,  629,  628,  627,  626,
+      625,  623,  622,  621,  620,  619,  617,  616,  615,  614,
+
+      613,  612,  611,  610,  609,  608,  607,  606,  605,  604,
+      603,  602,  601,  600,  599,  598,  597,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  580,  577,  576,  575,  572,  571,  570,
+      567,  566,  565,  564,  563,  562,  561,  560,  558,  557,
+      556,  555,  554,  553,  552,  550,  549,  547,  546,  545,
+      544,  543,  541,  540,  539,  538,  536,  535,  534,  533,
+      532,  531,  530,  529,  528,  527,  526,  525,  524,  523,
+      522,  520,  519,  518,  517,  516,  515,  514,  512,  511,
+      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
+
+      500,  499,  498,  497,  496,  490,  488,  485,  484,  482,
+      481,  480,  478,  474,  473,  472,  471,  470,  469,  468,
+      467,  466,  464,  463,  462,  461,  460,  459,  458,  457,
+      456,  455,  453,  451,  450,  449,  448,  447,  446,  445,
+      444,  443,  442,  440,  439,  438,  437,  436,  435,  434,
+      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  419,  418,  417,  415,  414,  413,  412,
+      411,  410,  408,  407,  406,  405,  404,  403,  401,  400,
+      399,  398,  396,  395,  390,  389,  387,  386,  385,  384,
+      383,  380,  377,  375,  374,  373,  372,  371,  370,  369,
+
+      368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
+      358,  357,  356,  355,  353,  352,  350,  349,  348,  347,
+      346,  345,  344,  343,  340,  339,  338,  337,  336,  334,
+      333,  332,  331,  330,  329,  328,  327,  326,  325,  324,
+      322,  321,  320,  319,  318,  317,  316,  315,  314,  313,
+      312,  311,  309,  308,  307,  306,  305,  302,  301,  300,
+      299,  295,  293,  290,  288,  285,  282,  275,  274,  273,
+      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
+      262,  261,  260,  258,  257,  256,  255,  254,  253,  252,
+      251,  250,  249,  248,  247,  246,  245,  243,  242,  241,
+
+      240,  239,  238,  236,  235,  234,  233,  232,  231,  230,
+      229,  228,  226,  225,  224,  223,  222,  221,  220,  219,
+      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
+      208,  207,  206,  205,  203,  202,  201,  199,  196,  194,
+      192,  190,  189,  184,  183,  179,  171,  170,  169,  168,
+      167,  166,  165,  164,  163,  160,  159,  158,  156,  155,
+      153,  152,  151,  150,  149,  148,  147,  146,  144,  143,
+      142,  141,  140,  139,  138,  136,  135,  133,  129,  128,
+      127,  125,  124,  123,  121,  120,  116,  110,  106,  105,
+      104,   98,   97,   78,   73,   67,   64,   50,   49,   48,
+
+       43,   41,   39,   38,   24,   14,   11, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1546,7 +1551,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[158] =
+static const flex_int16_t yy_rule_linenum[159] =
     {   0,
       135,  137,  139,  144,  145,  150,  151,  152,  164,  167,
       172,  179,  188,  197,  206,  215,  224,  233,  242,  251,
@@ -1563,8 +1568,8 @@ static const flex_int16_t yy_rule_linenum[158] =
      1119, 1128, 1137, 1146, 1155, 1165, 1174, 1183, 1192, 1201,
      1210, 1219, 1228, 1237, 1246, 1255, 1264, 1273, 1282, 1291,
      1300, 1309, 1318, 1327, 1336, 1345, 1354, 1363, 1372, 1381,
-     1479, 1484, 1489, 1494, 1495, 1496, 1497, 1498, 1499, 1501,
-     1519, 1532, 1537, 1541, 1543, 1545, 1547
+     1391, 1489, 1494, 1499, 1504, 1505, 1506, 1507, 1508, 1509,
+     1511, 1529, 1542, 1547, 1551, 1553, 1555, 1557
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1611,7 +1616,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 1614 "dhcp6_lexer.cc"
+#line 1619 "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
@@ -1637,8 +1642,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 1640 "dhcp6_lexer.cc"
-#line 1641 "dhcp6_lexer.cc"
+#line 1645 "dhcp6_lexer.cc"
+#line 1646 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1962,7 +1967,7 @@ YY_DECL
     }
 
 
-#line 1965 "dhcp6_lexer.cc"
+#line 1970 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1991,13 +1996,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 >= 1232 )
+                               if ( yy_current_state >= 1246 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1231 );
+               while ( yy_current_state != 1245 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2016,13 +2021,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 < 158 )
+                       else if ( yy_act < 159 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 158 )
+                       else if ( yy_act == 159 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 159 )
+                       else if ( yy_act == 160 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3713,6 +3718,18 @@ YY_RULE_SETUP
 case 140:
 YY_RULE_SETUP
 #line 1381 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::CONFIG:
+        return isc::dhcp::Dhcp6Parser::make_CONTROL_AGENT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("Control-agent", driver.loc_);
+    }
+}
+       YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 1391 "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.
@@ -3811,65 +3828,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 141:
-/* rule 141 can match eol */
+case 142:
+/* rule 142 can match eol */
 YY_RULE_SETUP
-#line 1479 "dhcp6_lexer.ll"
+#line 1489 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 142:
-/* rule 142 can match eol */
+case 143:
+/* rule 143 can match eol */
 YY_RULE_SETUP
-#line 1484 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1489 "dhcp6_lexer.ll"
+#line 1499 "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 144:
+case 145:
 YY_RULE_SETUP
-#line 1494 "dhcp6_lexer.ll"
+#line 1504 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1495 "dhcp6_lexer.ll"
+#line 1505 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1506 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1497 "dhcp6_lexer.ll"
+#line 1507 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1498 "dhcp6_lexer.ll"
+#line 1508 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1499 "dhcp6_lexer.ll"
+#line 1509 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1501 "dhcp6_lexer.ll"
+#line 1511 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -3888,9 +3905,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1519 "dhcp6_lexer.ll"
+#line 1529 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -3904,43 +3921,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1542 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1537 "dhcp6_lexer.ll"
+#line 1547 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1541 "dhcp6_lexer.ll"
+#line 1551 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1543 "dhcp6_lexer.ll"
+#line 1553 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1545 "dhcp6_lexer.ll"
+#line 1555 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1547 "dhcp6_lexer.ll"
+#line 1557 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1549 "dhcp6_lexer.ll"
+#line 1559 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3964,12 +3981,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1572 "dhcp6_lexer.ll"
+#line 1582 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3972 "dhcp6_lexer.cc"
+#line 3989 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4288,7 +4305,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 >= 1232 )
+                       if ( yy_current_state >= 1246 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4321,11 +4338,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 >= 1232 )
+               if ( yy_current_state >= 1246 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1231);
+       yy_is_jam = (yy_current_state == 1245);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5074,7 +5091,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1572 "dhcp6_lexer.ll"
+#line 1582 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index c24f86f3b63e026fe8549195375ada7fb09ee833..eb6205f2b2012362328df08232485225dd5d1276 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -294,29 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 147: // "constant string"
+            case 148: // "constant string"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 165: // value
+      case 166: // value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 169: // map_value
+      case 170: // map_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 213: // db_type
+      case 214: // db_type
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 289: // hr_mode
+      case 290: // hr_mode
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 409: // duid_type
+      case 410: // duid_type
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 442: // ncr_protocol_value
+      case 443: // ncr_protocol_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 450: // replace_client_name_value
+      case 451: // replace_client_name_value
 
-#line 223 "dhcp6_parser.yy" // lalr1.cc:636
+#line 224 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
@@ -630,29 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,121 +674,121 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 232 "dhcp6_parser.yy" // lalr1.cc:859
+#line 233 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 233 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 236 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 236 "dhcp6_parser.yy" // lalr1.cc:859
+#line 237 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 237 "dhcp6_parser.yy" // lalr1.cc:859
+#line 238 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 238 "dhcp6_parser.yy" // lalr1.cc:859
+#line 239 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 239 "dhcp6_parser.yy" // lalr1.cc:859
+#line 240 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 240 "dhcp6_parser.yy" // lalr1.cc:859
+#line 241 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 241 "dhcp6_parser.yy" // lalr1.cc:859
+#line 242 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 242 "dhcp6_parser.yy" // lalr1.cc:859
+#line 243 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 244 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 251 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "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 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 252 "dhcp6_parser.yy" // lalr1.cc:859
+#line 253 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 253 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 254 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "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 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 255 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 258 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -797,7 +797,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 266 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -808,7 +808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 35:
-#line 270 "dhcp6_parser.yy" // lalr1.cc:859
+#line 271 "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
@@ -818,13 +818,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:859
+#line 277 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:859
+#line 284 "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 > ());
@@ -833,7 +833,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 287 "dhcp6_parser.yy" // lalr1.cc:859
+#line 288 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -843,7 +843,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 294 "dhcp6_parser.yy" // lalr1.cc:859
+#line 295 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -852,7 +852,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 297 "dhcp6_parser.yy" // lalr1.cc:859
+#line 298 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -860,7 +860,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:859
+#line 306 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -869,7 +869,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:859
+#line 310 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -878,7 +878,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:859
+#line 317 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -886,7 +886,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 318 "dhcp6_parser.yy" // lalr1.cc:859
+#line 319 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -895,7 +895,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 327 "dhcp6_parser.yy" // lalr1.cc:859
+#line 328 "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);
@@ -904,7 +904,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 331 "dhcp6_parser.yy" // lalr1.cc:859
+#line 332 "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);
@@ -913,7 +913,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 342 "dhcp6_parser.yy" // lalr1.cc:859
+#line 343 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -924,7 +924,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 352 "dhcp6_parser.yy" // lalr1.cc:859
+#line 353 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -935,7 +935,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 357 "dhcp6_parser.yy" // lalr1.cc:859
+#line 358 "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
@@ -944,8 +944,8 @@ namespace isc { namespace dhcp {
 #line 945 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 63:
-#line 376 "dhcp6_parser.yy" // lalr1.cc:859
+  case 64:
+#line 378 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -957,8 +957,8 @@ namespace isc { namespace dhcp {
 #line 958 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 64:
-#line 383 "dhcp6_parser.yy" // lalr1.cc:859
+  case 65:
+#line 385 "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
@@ -969,8 +969,8 @@ namespace isc { namespace dhcp {
 #line 970 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 65:
-#line 393 "dhcp6_parser.yy" // lalr1.cc:859
+  case 66:
+#line 395 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -979,16 +979,16 @@ namespace isc { namespace dhcp {
 #line 980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 66:
-#line 397 "dhcp6_parser.yy" // lalr1.cc:859
+  case 67:
+#line 399 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 988 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 91:
-#line 431 "dhcp6_parser.yy" // lalr1.cc:859
+  case 92:
+#line 433 "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);
@@ -996,8 +996,8 @@ namespace isc { namespace dhcp {
 #line 997 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 92:
-#line 436 "dhcp6_parser.yy" // lalr1.cc:859
+  case 93:
+#line 438 "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);
@@ -1005,8 +1005,8 @@ namespace isc { namespace dhcp {
 #line 1006 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 93:
-#line 441 "dhcp6_parser.yy" // lalr1.cc:859
+  case 94:
+#line 443 "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);
@@ -1014,8 +1014,8 @@ namespace isc { namespace dhcp {
 #line 1015 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 94:
-#line 446 "dhcp6_parser.yy" // lalr1.cc:859
+  case 95:
+#line 448 "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);
@@ -1023,8 +1023,8 @@ namespace isc { namespace dhcp {
 #line 1024 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 95:
-#line 451 "dhcp6_parser.yy" // lalr1.cc:859
+  case 96:
+#line 453 "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);
@@ -1032,8 +1032,8 @@ namespace isc { namespace dhcp {
 #line 1033 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 96:
-#line 456 "dhcp6_parser.yy" // lalr1.cc:859
+  case 97:
+#line 458 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1043,8 +1043,8 @@ namespace isc { namespace dhcp {
 #line 1044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 97:
-#line 461 "dhcp6_parser.yy" // lalr1.cc:859
+  case 98:
+#line 463 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1052,8 +1052,8 @@ namespace isc { namespace dhcp {
 #line 1053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 98:
-#line 466 "dhcp6_parser.yy" // lalr1.cc:859
+  case 99:
+#line 468 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1062,16 +1062,16 @@ namespace isc { namespace dhcp {
 #line 1063 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 99:
-#line 470 "dhcp6_parser.yy" // lalr1.cc:859
+  case 100:
+#line 472 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1071 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 482 "dhcp6_parser.yy" // lalr1.cc:859
+  case 105:
+#line 484 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1081,8 +1081,8 @@ namespace isc { namespace dhcp {
 #line 1082 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 487 "dhcp6_parser.yy" // lalr1.cc:859
+  case 106:
+#line 489 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1090,8 +1090,8 @@ namespace isc { namespace dhcp {
 #line 1091 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:859
+  case 107:
+#line 494 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
@@ -1099,8 +1099,8 @@ namespace isc { namespace dhcp {
 #line 1100 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 498 "dhcp6_parser.yy" // lalr1.cc:859
+  case 108:
+#line 500 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1110,8 +1110,8 @@ namespace isc { namespace dhcp {
 #line 1111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 503 "dhcp6_parser.yy" // lalr1.cc:859
+  case 109:
+#line 505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1119,8 +1119,8 @@ namespace isc { namespace dhcp {
 #line 1120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 508 "dhcp6_parser.yy" // lalr1.cc:859
+  case 110:
+#line 510 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1130,8 +1130,8 @@ namespace isc { namespace dhcp {
 #line 1131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 513 "dhcp6_parser.yy" // lalr1.cc:859
+  case 111:
+#line 515 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1139,16 +1139,16 @@ namespace isc { namespace dhcp {
 #line 1140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 127:
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
 #line 1148 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 539 "dhcp6_parser.yy" // lalr1.cc:859
+  case 128:
+#line 541 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1156,40 +1156,40 @@ namespace isc { namespace dhcp {
 #line 1157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 544 "dhcp6_parser.yy" // lalr1.cc:859
+  case 129:
+#line 546 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1163 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 545 "dhcp6_parser.yy" // lalr1.cc:859
+  case 130:
+#line 547 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1169 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+  case 131:
+#line 548 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 547 "dhcp6_parser.yy" // lalr1.cc:859
+  case 132:
+#line 549 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1181 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 550 "dhcp6_parser.yy" // lalr1.cc:859
+  case 133:
+#line 552 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 133:
-#line 552 "dhcp6_parser.yy" // lalr1.cc:859
+  case 134:
+#line 554 "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);
@@ -1198,16 +1198,16 @@ namespace isc { namespace dhcp {
 #line 1199 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 134:
-#line 558 "dhcp6_parser.yy" // lalr1.cc:859
+  case 135:
+#line 560 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1207 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 135:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:859
+  case 136:
+#line 562 "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);
@@ -1216,16 +1216,16 @@ namespace isc { namespace dhcp {
 #line 1217 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 566 "dhcp6_parser.yy" // lalr1.cc:859
+  case 137:
+#line 568 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1225 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 568 "dhcp6_parser.yy" // lalr1.cc:859
+  case 138:
+#line 570 "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);
@@ -1234,8 +1234,8 @@ namespace isc { namespace dhcp {
 #line 1235 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:859
+  case 139:
+#line 576 "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);
@@ -1243,16 +1243,16 @@ namespace isc { namespace dhcp {
 #line 1244 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:859
+  case 140:
+#line 581 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 581 "dhcp6_parser.yy" // lalr1.cc:859
+  case 141:
+#line 583 "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);
@@ -1261,8 +1261,8 @@ namespace isc { namespace dhcp {
 #line 1262 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 587 "dhcp6_parser.yy" // lalr1.cc:859
+  case 142:
+#line 589 "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);
@@ -1270,8 +1270,8 @@ namespace isc { namespace dhcp {
 #line 1271 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 592 "dhcp6_parser.yy" // lalr1.cc:859
+  case 143:
+#line 594 "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);
@@ -1279,8 +1279,8 @@ namespace isc { namespace dhcp {
 #line 1280 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 597 "dhcp6_parser.yy" // lalr1.cc:859
+  case 144:
+#line 599 "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);
@@ -1288,8 +1288,8 @@ namespace isc { namespace dhcp {
 #line 1289 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 602 "dhcp6_parser.yy" // lalr1.cc:859
+  case 145:
+#line 604 "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);
@@ -1297,16 +1297,16 @@ namespace isc { namespace dhcp {
 #line 1298 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 607 "dhcp6_parser.yy" // lalr1.cc:859
+  case 146:
+#line 609 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 609 "dhcp6_parser.yy" // lalr1.cc:859
+  case 147:
+#line 611 "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);
@@ -1315,16 +1315,16 @@ namespace isc { namespace dhcp {
 #line 1316 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 615 "dhcp6_parser.yy" // lalr1.cc:859
+  case 148:
+#line 617 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1324 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 617 "dhcp6_parser.yy" // lalr1.cc:859
+  case 149:
+#line 619 "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);
@@ -1333,8 +1333,8 @@ namespace isc { namespace dhcp {
 #line 1334 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 624 "dhcp6_parser.yy" // lalr1.cc:859
+  case 150:
+#line 626 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
@@ -1344,8 +1344,8 @@ namespace isc { namespace dhcp {
 #line 1345 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+  case 151:
+#line 631 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1353,8 +1353,8 @@ namespace isc { namespace dhcp {
 #line 1354 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 642 "dhcp6_parser.yy" // lalr1.cc:859
+  case 156:
+#line 644 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1362,8 +1362,8 @@ namespace isc { namespace dhcp {
 #line 1363 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 157:
+#line 649 "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);
@@ -1371,8 +1371,8 @@ namespace isc { namespace dhcp {
 #line 1372 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 158:
+#line 654 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1382,8 +1382,8 @@ namespace isc { namespace dhcp {
 #line 1383 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 657 "dhcp6_parser.yy" // lalr1.cc:859
+  case 159:
+#line 659 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1391,8 +1391,8 @@ namespace isc { namespace dhcp {
 #line 1392 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 671 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 673 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1400,8 +1400,8 @@ namespace isc { namespace dhcp {
 #line 1401 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 676 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 678 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -1409,8 +1409,8 @@ namespace isc { namespace dhcp {
 #line 1410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 683 "dhcp6_parser.yy" // lalr1.cc:859
+  case 167:
+#line 685 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
@@ -1420,8 +1420,8 @@ namespace isc { namespace dhcp {
 #line 1421 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 688 "dhcp6_parser.yy" // lalr1.cc:859
+  case 168:
+#line 690 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1429,8 +1429,8 @@ namespace isc { namespace dhcp {
 #line 1430 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 693 "dhcp6_parser.yy" // lalr1.cc:859
+  case 169:
+#line 695 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1440,8 +1440,8 @@ namespace isc { namespace dhcp {
 #line 1441 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 698 "dhcp6_parser.yy" // lalr1.cc:859
+  case 170:
+#line 700 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1449,8 +1449,8 @@ namespace isc { namespace dhcp {
 #line 1450 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 711 "dhcp6_parser.yy" // lalr1.cc:859
+  case 175:
+#line 713 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1459,16 +1459,16 @@ namespace isc { namespace dhcp {
 #line 1460 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 715 "dhcp6_parser.yy" // lalr1.cc:859
+  case 176:
+#line 717 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1468 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 719 "dhcp6_parser.yy" // lalr1.cc:859
+  case 177:
+#line 721 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1477,24 +1477,24 @@ namespace isc { namespace dhcp {
 #line 1478 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 178:
+#line 725 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 183:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:859
+  case 184:
+#line 738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1494 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 184:
-#line 738 "dhcp6_parser.yy" // lalr1.cc:859
+  case 185:
+#line 740 "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);
@@ -1503,16 +1503,16 @@ namespace isc { namespace dhcp {
 #line 1504 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 744 "dhcp6_parser.yy" // lalr1.cc:859
+  case 186:
+#line 746 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 746 "dhcp6_parser.yy" // lalr1.cc:859
+  case 187:
+#line 748 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1520,8 +1520,8 @@ namespace isc { namespace dhcp {
 #line 1521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 752 "dhcp6_parser.yy" // lalr1.cc:859
+  case 188:
+#line 754 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1531,8 +1531,8 @@ namespace isc { namespace dhcp {
 #line 1532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:859
+  case 189:
+#line 759 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1540,8 +1540,8 @@ namespace isc { namespace dhcp {
 #line 1541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 774 "dhcp6_parser.yy" // lalr1.cc:859
+  case 198:
+#line 776 "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);
@@ -1549,8 +1549,8 @@ namespace isc { namespace dhcp {
 #line 1550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 779 "dhcp6_parser.yy" // lalr1.cc:859
+  case 199:
+#line 781 "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);
@@ -1558,8 +1558,8 @@ namespace isc { namespace dhcp {
 #line 1559 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 784 "dhcp6_parser.yy" // lalr1.cc:859
+  case 200:
+#line 786 "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);
@@ -1567,8 +1567,8 @@ namespace isc { namespace dhcp {
 #line 1568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 789 "dhcp6_parser.yy" // lalr1.cc:859
+  case 201:
+#line 791 "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);
@@ -1576,8 +1576,8 @@ namespace isc { namespace dhcp {
 #line 1577 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 794 "dhcp6_parser.yy" // lalr1.cc:859
+  case 202:
+#line 796 "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);
@@ -1585,8 +1585,8 @@ namespace isc { namespace dhcp {
 #line 1586 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 799 "dhcp6_parser.yy" // lalr1.cc:859
+  case 203:
+#line 801 "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);
@@ -1594,8 +1594,8 @@ namespace isc { namespace dhcp {
 #line 1595 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 204:
+#line 809 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
@@ -1605,8 +1605,8 @@ namespace isc { namespace dhcp {
 #line 1606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 812 "dhcp6_parser.yy" // lalr1.cc:859
+  case 205:
+#line 814 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1614,8 +1614,8 @@ namespace isc { namespace dhcp {
 #line 1615 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 832 "dhcp6_parser.yy" // lalr1.cc:859
+  case 210:
+#line 834 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1624,8 +1624,8 @@ namespace isc { namespace dhcp {
 #line 1625 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 836 "dhcp6_parser.yy" // lalr1.cc:859
+  case 211:
+#line 838 "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.
@@ -1647,8 +1647,8 @@ namespace isc { namespace dhcp {
 #line 1648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+  case 212:
+#line 857 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1657,24 +1657,24 @@ namespace isc { namespace dhcp {
 #line 1658 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 213:
+#line 861 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1666 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 232:
-#line 888 "dhcp6_parser.yy" // lalr1.cc:859
+  case 233:
+#line 890 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1674 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:859
+  case 234:
+#line 892 "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);
@@ -1683,16 +1683,16 @@ namespace isc { namespace dhcp {
 #line 1684 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 896 "dhcp6_parser.yy" // lalr1.cc:859
+  case 235:
+#line 898 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 898 "dhcp6_parser.yy" // lalr1.cc:859
+  case 236:
+#line 900 "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);
@@ -1701,16 +1701,16 @@ namespace isc { namespace dhcp {
 #line 1702 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 904 "dhcp6_parser.yy" // lalr1.cc:859
+  case 237:
+#line 906 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 906 "dhcp6_parser.yy" // lalr1.cc:859
+  case 238:
+#line 908 "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);
@@ -1719,16 +1719,16 @@ namespace isc { namespace dhcp {
 #line 1720 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 912 "dhcp6_parser.yy" // lalr1.cc:859
+  case 239:
+#line 914 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
 #line 1728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 239:
-#line 914 "dhcp6_parser.yy" // lalr1.cc:859
+  case 240:
+#line 916 "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);
@@ -1737,16 +1737,16 @@ namespace isc { namespace dhcp {
 #line 1738 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 920 "dhcp6_parser.yy" // lalr1.cc:859
+  case 241:
+#line 922 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
 #line 1746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 241:
-#line 922 "dhcp6_parser.yy" // lalr1.cc:859
+  case 242:
+#line 924 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1754,26 +1754,26 @@ namespace isc { namespace dhcp {
 #line 1755 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 927 "dhcp6_parser.yy" // lalr1.cc:859
+  case 243:
+#line 929 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 1761 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 928 "dhcp6_parser.yy" // lalr1.cc:859
+  case 244:
+#line 930 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 1767 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 929 "dhcp6_parser.yy" // lalr1.cc:859
+  case 245:
+#line 931 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 1773 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 932 "dhcp6_parser.yy" // lalr1.cc:859
+  case 246:
+#line 934 "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);
@@ -1781,8 +1781,8 @@ namespace isc { namespace dhcp {
 #line 1782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 937 "dhcp6_parser.yy" // lalr1.cc:859
+  case 247:
+#line 939 "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);
@@ -1790,8 +1790,8 @@ namespace isc { namespace dhcp {
 #line 1791 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 946 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 948 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1801,8 +1801,8 @@ namespace isc { namespace dhcp {
 #line 1802 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 951 "dhcp6_parser.yy" // lalr1.cc:859
+  case 249:
+#line 953 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1810,8 +1810,8 @@ namespace isc { namespace dhcp {
 #line 1811 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 968 "dhcp6_parser.yy" // lalr1.cc:859
+  case 254:
+#line 970 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1820,16 +1820,16 @@ namespace isc { namespace dhcp {
 #line 1821 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 972 "dhcp6_parser.yy" // lalr1.cc:859
+  case 255:
+#line 974 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1829 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 979 "dhcp6_parser.yy" // lalr1.cc:859
+  case 256:
+#line 981 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1838,16 +1838,16 @@ namespace isc { namespace dhcp {
 #line 1839 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 983 "dhcp6_parser.yy" // lalr1.cc:859
+  case 257:
+#line 985 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1847 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1009 "dhcp6_parser.yy" // lalr1.cc:859
+  case 271:
+#line 1011 "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);
@@ -1855,16 +1855,16 @@ namespace isc { namespace dhcp {
 #line 1856 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
+  case 273:
+#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1864 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1020 "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);
@@ -1873,16 +1873,16 @@ namespace isc { namespace dhcp {
 #line 1874 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1882 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1028 "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);
@@ -1891,16 +1891,16 @@ namespace isc { namespace dhcp {
 #line 1892 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1036 "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);
@@ -1909,16 +1909,16 @@ namespace isc { namespace dhcp {
 #line 1910 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1042 "dhcp6_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1044 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1918 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1044 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1046 "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);
@@ -1927,8 +1927,8 @@ namespace isc { namespace dhcp {
 #line 1928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1050 "dhcp6_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1052 "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);
@@ -1936,8 +1936,8 @@ namespace isc { namespace dhcp {
 #line 1937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1059 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -1947,8 +1947,8 @@ namespace isc { namespace dhcp {
 #line 1948 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1064 "dhcp6_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1066 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1956,8 +1956,8 @@ namespace isc { namespace dhcp {
 #line 1957 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1083 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1085 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1966,16 +1966,16 @@ namespace isc { namespace dhcp {
 #line 1967 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1087 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1089 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1975 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1096 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1984,24 +1984,24 @@ namespace isc { namespace dhcp {
 #line 1985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1100 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1127 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2001 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1131 "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);
@@ -2010,8 +2010,8 @@ namespace isc { namespace dhcp {
 #line 2011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
+  case 308:
+#line 1141 "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);
@@ -2019,8 +2019,8 @@ namespace isc { namespace dhcp {
 #line 2020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1149 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
@@ -2030,8 +2030,8 @@ namespace isc { namespace dhcp {
 #line 2031 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2039,8 +2039,8 @@ namespace isc { namespace dhcp {
 #line 2040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1169 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2049,16 +2049,16 @@ namespace isc { namespace dhcp {
 #line 2050 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1173 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1175 "dhcp6_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1177 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2067,24 +2067,24 @@ namespace isc { namespace dhcp {
 #line 2068 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1179 "dhcp6_parser.yy" // lalr1.cc:859
+  case 318:
+#line 1181 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2076 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2084 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1197 "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);
@@ -2093,16 +2093,16 @@ namespace isc { namespace dhcp {
 #line 2094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2102 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2110,8 +2110,8 @@ namespace isc { namespace dhcp {
 #line 2111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1211 "dhcp6_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1213 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
@@ -2121,8 +2121,8 @@ namespace isc { namespace dhcp {
 #line 2122 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1216 "dhcp6_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1218 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2130,8 +2130,8 @@ namespace isc { namespace dhcp {
 #line 2131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1233 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2140,16 +2140,16 @@ namespace isc { namespace dhcp {
 #line 2141 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1239 "dhcp6_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1241 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2158,24 +2158,24 @@ namespace isc { namespace dhcp {
 #line 2159 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1245 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2167 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1261 "dhcp6_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1263 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1263 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1265 "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);
@@ -2184,8 +2184,8 @@ namespace isc { namespace dhcp {
 #line 2185 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1269 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1271 "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);
@@ -2193,16 +2193,16 @@ namespace isc { namespace dhcp {
 #line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1276 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2202 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1276 "dhcp6_parser.yy" // lalr1.cc:859
+  case 353:
+#line 1278 "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);
@@ -2211,8 +2211,8 @@ namespace isc { namespace dhcp {
 #line 2212 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 354:
+#line 1284 "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);
@@ -2220,8 +2220,8 @@ namespace isc { namespace dhcp {
 #line 2221 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 354:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+  case 355:
+#line 1289 "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);
@@ -2229,8 +2229,8 @@ namespace isc { namespace dhcp {
 #line 2230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1297 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
@@ -2240,8 +2240,8 @@ namespace isc { namespace dhcp {
 #line 2241 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1302 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2249,8 +2249,8 @@ namespace isc { namespace dhcp {
 #line 2250 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1313 "dhcp6_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1315 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2259,16 +2259,16 @@ namespace isc { namespace dhcp {
 #line 2260 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1319 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1321 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1323 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2277,16 +2277,16 @@ namespace isc { namespace dhcp {
 #line 2278 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1325 "dhcp6_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2286 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1349 "dhcp6_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
@@ -2296,8 +2296,8 @@ namespace isc { namespace dhcp {
 #line 2297 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1356 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2305,8 +2305,8 @@ namespace isc { namespace dhcp {
 #line 2306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1359 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1361 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
@@ -2316,8 +2316,8 @@ namespace isc { namespace dhcp {
 #line 2317 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1366 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2325,16 +2325,16 @@ namespace isc { namespace dhcp {
 #line 2326 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2334 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1373 "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);
@@ -2343,16 +2343,16 @@ namespace isc { namespace dhcp {
 #line 2344 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2352 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1381 "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);
@@ -2361,16 +2361,16 @@ namespace isc { namespace dhcp {
 #line 2362 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2370 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1389 "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);
@@ -2379,16 +2379,16 @@ namespace isc { namespace dhcp {
 #line 2380 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1395 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1395 "dhcp6_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1397 "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);
@@ -2397,8 +2397,8 @@ namespace isc { namespace dhcp {
 #line 2398 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1401 "dhcp6_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1403 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
@@ -2408,8 +2408,8 @@ namespace isc { namespace dhcp {
 #line 2409 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1406 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2417,8 +2417,8 @@ namespace isc { namespace dhcp {
 #line 2418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1416 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
@@ -2428,8 +2428,8 @@ namespace isc { namespace dhcp {
 #line 2429 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1419 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1421 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2437,16 +2437,16 @@ namespace isc { namespace dhcp {
 #line 2438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1424 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1428 "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);
@@ -2455,8 +2455,8 @@ namespace isc { namespace dhcp {
 #line 2456 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1435 "dhcp6_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1437 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
@@ -2466,8 +2466,8 @@ namespace isc { namespace dhcp {
 #line 2467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1440 "dhcp6_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1442 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2475,8 +2475,8 @@ namespace isc { namespace dhcp {
 #line 2476 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1449 "dhcp6_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1451 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2485,24 +2485,24 @@ namespace isc { namespace dhcp {
 #line 2486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1453 "dhcp6_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1455 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2494 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1473 "dhcp6_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1475 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2502 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1475 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1477 "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);
@@ -2511,8 +2511,8 @@ namespace isc { namespace dhcp {
 #line 2512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1484 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1486 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
@@ -2522,8 +2522,8 @@ namespace isc { namespace dhcp {
 #line 2523 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1489 "dhcp6_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1491 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2531,16 +2531,16 @@ namespace isc { namespace dhcp {
 #line 2532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1507 "dhcp6_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
 #line 2540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1511 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2548,26 +2548,26 @@ namespace isc { namespace dhcp {
 #line 2549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 2555 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1515 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1517 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 2561 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 429:
+#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
 #line 2567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
+  case 430:
+#line 1521 "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);
@@ -2575,16 +2575,16 @@ namespace isc { namespace dhcp {
 #line 2576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
+  case 431:
+#line 1526 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2584 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1526 "dhcp6_parser.yy" // lalr1.cc:859
+  case 432:
+#line 1528 "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);
@@ -2593,8 +2593,8 @@ namespace isc { namespace dhcp {
 #line 2594 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1532 "dhcp6_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1534 "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);
@@ -2602,8 +2602,8 @@ namespace isc { namespace dhcp {
 #line 2603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1539 "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);
@@ -2611,8 +2611,8 @@ namespace isc { namespace dhcp {
 #line 2612 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1544 "dhcp6_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1546 "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);
@@ -2620,8 +2620,8 @@ namespace isc { namespace dhcp {
 #line 2621 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -2631,8 +2631,8 @@ namespace isc { namespace dhcp {
 #line 2632 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1556 "dhcp6_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1558 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2640,16 +2640,16 @@ namespace isc { namespace dhcp {
 #line 2641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2649 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1573 "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);
@@ -2658,16 +2658,16 @@ namespace isc { namespace dhcp {
 #line 2659 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1577 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1581 "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);
@@ -2676,8 +2676,8 @@ namespace isc { namespace dhcp {
 #line 2677 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2687,8 +2687,8 @@ namespace isc { namespace dhcp {
 #line 2688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1592 "dhcp6_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1594 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2696,8 +2696,8 @@ namespace isc { namespace dhcp {
 #line 2697 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1597 "dhcp6_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1599 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2706,16 +2706,16 @@ namespace isc { namespace dhcp {
 #line 2707 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1601 "dhcp6_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1603 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 2715 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1628 "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);
@@ -2723,16 +2723,16 @@ namespace isc { namespace dhcp {
 #line 2724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2732 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1635 "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);
@@ -2741,16 +2741,16 @@ namespace isc { namespace dhcp {
 #line 2742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1639 "dhcp6_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1641 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2750 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1641 "dhcp6_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1643 "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);
@@ -2759,8 +2759,8 @@ namespace isc { namespace dhcp {
 #line 2760 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1649 "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);
@@ -2768,16 +2768,16 @@ namespace isc { namespace dhcp {
 #line 2769 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1654 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2777 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1654 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1656 "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);
@@ -2786,8 +2786,8 @@ namespace isc { namespace dhcp {
 #line 2787 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1660 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1662 "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);
@@ -2795,8 +2795,8 @@ namespace isc { namespace dhcp {
 #line 2796 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1665 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1667 "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);
@@ -2804,16 +2804,16 @@ namespace isc { namespace dhcp {
 #line 2805 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
 #line 2813 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1674 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2821,28 +2821,28 @@ namespace isc { namespace dhcp {
 #line 2822 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1678 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1680 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 2828 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1679 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1681 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 2834 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1682 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1684 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
 #line 2842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1684 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1686 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -2851,8 +2851,8 @@ namespace isc { namespace dhcp {
 #line 2852 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1690 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1692 "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);
@@ -2860,8 +2860,8 @@ namespace isc { namespace dhcp {
 #line 2861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1695 "dhcp6_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1697 "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);
@@ -2869,8 +2869,8 @@ namespace isc { namespace dhcp {
 #line 2870 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1700 "dhcp6_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1702 "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);
@@ -2878,16 +2878,16 @@ namespace isc { namespace dhcp {
 #line 2879 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 2887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1709 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2895,40 +2895,40 @@ namespace isc { namespace dhcp {
 #line 2896 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1713 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1715 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
 #line 2904 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2912 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1719 "dhcp6_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1721 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2920 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1722 "dhcp6_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1724 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 2928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1727 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -2936,16 +2936,16 @@ namespace isc { namespace dhcp {
 #line 2937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2945 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1735 "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);
@@ -2954,16 +2954,16 @@ namespace isc { namespace dhcp {
 #line 2955 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1741 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2963 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1745 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2971,16 +2971,16 @@ namespace isc { namespace dhcp {
 #line 2972 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 496:
-#line 1748 "dhcp6_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1752 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2988,176 +2988,193 @@ namespace isc { namespace dhcp {
 #line 2989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1760 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 2997 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 500:
+#line 1759 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+    ctx.leave();
+}
+#line 3006 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 501:
+#line 1770 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3000 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3017 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 499:
-#line 1765 "dhcp6_parser.yy" // lalr1.cc:859
+  case 502:
+#line 1775 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3026 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1782 "dhcp6_parser.yy" // lalr1.cc:859
+  case 506:
+#line 1792 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3020 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3037 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1787 "dhcp6_parser.yy" // lalr1.cc:859
+  case 507:
+#line 1797 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3046 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1799 "dhcp6_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1809 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3039 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3056 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1803 "dhcp6_parser.yy" // lalr1.cc:859
+  case 511:
+#line 1813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3047 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3064 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 516:
-#line 1818 "dhcp6_parser.yy" // lalr1.cc:859
+  case 519:
+#line 1828 "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);
 }
-#line 3056 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3073 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 517:
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
+  case 520:
+#line 1833 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3064 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3081 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 518:
-#line 1825 "dhcp6_parser.yy" // lalr1.cc:859
+  case 521:
+#line 1835 "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);
     ctx.leave();
 }
-#line 3074 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3091 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 519:
-#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
+  case 522:
+#line 1841 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3102 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
+  case 523:
+#line 1846 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3094 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 523:
-#line 1845 "dhcp6_parser.yy" // lalr1.cc:859
+  case 526:
+#line 1855 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3104 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3121 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 524:
-#line 1849 "dhcp6_parser.yy" // lalr1.cc:859
+  case 527:
+#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3129 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1863 "dhcp6_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1873 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3120 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3137 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1865 "dhcp6_parser.yy" // lalr1.cc:859
+  case 535:
+#line 1875 "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);
     ctx.leave();
 }
-#line 3130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3147 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1871 "dhcp6_parser.yy" // lalr1.cc:859
+  case 536:
+#line 1881 "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 3139 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3156 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1876 "dhcp6_parser.yy" // lalr1.cc:859
+  case 537:
+#line 1886 "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 3148 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3165 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
+  case 538:
+#line 1891 "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 3157 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3174 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3178 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3412,102 +3429,103 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -498;
+  const short int Dhcp6Parser::yypact_ninf_ = -503;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-      56,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,    39,    20,    41,    84,   115,   117,   123,
-     138,   196,   198,   224,   246,   257,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-      20,   119,    18,    27,   151,    19,    -1,    33,    85,    28,
-      59,   -36,   104,  -498,   264,   277,   282,   279,   289,  -498,
-    -498,  -498,  -498,   299,  -498,   101,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   301,   302,   309,   316,   317,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   318,
-    -498,  -498,  -498,   169,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   319,   170,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   320,   321,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   173,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   176,  -498,  -498,
-    -498,  -498,   322,  -498,   323,   324,  -498,  -498,  -498,   179,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,   285,   326,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   327,  -498,  -498,
-    -498,   328,  -498,  -498,   325,   331,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   332,  -498,  -498,
-    -498,  -498,   329,   335,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,   218,  -498,  -498,  -498,   336,  -498,  -498,
-     337,  -498,   338,   339,  -498,  -498,   340,   341,   342,  -498,
-    -498,  -498,   219,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    20,
-      20,  -498,   188,   343,   344,   345,   346,  -498,    18,  -498,
-     347,   348,   349,   191,   206,   207,   209,   210,   352,   355,
-     356,   357,   358,   359,   360,   361,   362,   363,   221,   364,
-     366,    27,  -498,   367,   222,   151,  -498,    43,   369,   370,
-     371,   372,   373,   233,   228,   375,   376,   378,   379,    19,
-    -498,   380,   381,    -1,  -498,   382,   243,   383,   244,   245,
-      33,  -498,   384,   385,   386,   390,   391,   392,   393,  -498,
-      85,   394,   395,   255,   396,   397,   398,   256,  -498,    28,
-     400,   258,  -498,    59,   401,   403,   -26,  -498,   261,   408,
-     409,   266,   411,   268,   269,   414,   415,   270,   271,   273,
-     418,   420,   104,  -498,  -498,  -498,   421,   419,   422,    20,
-      20,  -498,   423,   424,   425,  -498,  -498,  -498,  -498,  -498,
-     428,   429,   430,   431,   432,   435,   436,   439,   438,   440,
-    -498,   441,   443,  -498,   447,  -498,  -498,  -498,  -498,  -498,
-    -498,   445,   451,  -498,  -498,  -498,   450,   452,   280,   281,
-     311,  -498,  -498,    92,   312,   456,   455,  -498,   330,   457,
-    -498,   333,  -498,   334,  -498,  -498,  -498,   447,   447,   447,
-     350,   351,   353,   354,  -498,   365,   368,  -498,   374,   377,
-     387,  -498,  -498,   388,  -498,  -498,   389,    20,  -498,  -498,
-     399,   402,  -498,   404,  -498,  -498,    71,   406,  -498,  -498,
-    -498,    -7,   405,  -498,    20,    27,   407,  -498,  -498,   151,
-     111,   111,   458,   459,   460,   -44,    20,   208,    36,   461,
-     -53,    24,   124,   104,  -498,  -498,   442,  -498,    43,   462,
-     464,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   465,
-     410,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,   220,  -498,   230,  -498,
-    -498,   231,  -498,  -498,  -498,  -498,   469,   470,   471,   472,
-     474,  -498,  -498,  -498,   232,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   238,  -498,
-     473,   479,  -498,  -498,   477,   481,  -498,  -498,   480,   482,
-    -498,  -498,  -498,   102,  -498,  -498,  -498,   484,  -498,  -498,
-    -498,   125,  -498,  -498,  -498,  -498,   272,  -498,   485,   489,
-    -498,   490,   491,   492,   495,   498,   499,   239,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,   501,   502,   503,
-    -498,  -498,   240,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,   241,  -498,  -498,  -498,   242,   412,   413,  -498,  -498,
-     487,   505,  -498,  -498,   504,   506,  -498,  -498,   507,   508,
-    -498,  -498,   509,  -498,   510,   407,  -498,  -498,   512,   514,
-     515,   516,   315,   416,   417,   426,   427,   518,   519,   111,
-    -498,  -498,    19,  -498,   458,    28,  -498,   459,    59,  -498,
-     460,   -44,  -498,  -498,   208,  -498,    36,  -498,   -36,  -498,
-     461,   433,   434,   437,   444,   446,   448,   -53,  -498,   522,
-     523,   449,   453,   454,    24,  -498,   524,   525,   124,  -498,
-    -498,  -498,   527,   528,  -498,    -1,  -498,   462,    33,  -498,
-     464,    85,  -498,   465,   526,  -498,   483,  -498,   254,   463,
-     466,   467,  -498,  -498,  -498,  -498,  -498,   468,   475,  -498,
-     249,  -498,   529,  -498,   530,  -498,  -498,  -498,  -498,   251,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   217,   476,
-    -498,  -498,  -498,  -498,   478,   486,  -498,  -498,   488,   252,
-    -498,   253,  -498,   531,  -498,   497,   533,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,   291,  -498,    57,   533,  -498,  -498,
-     537,  -498,  -498,  -498,   259,  -498,  -498,  -498,  -498,  -498,
-     538,   494,   539,    57,  -498,   540,  -498,   500,  -498,   541,
-    -498,  -498,   298,  -498,    17,   541,  -498,  -498,   543,   546,
-     549,   260,  -498,  -498,  -498,  -498,  -498,  -498,   550,   511,
-     517,   520,    17,  -498,   513,  -498,  -498,  -498,  -498,  -498
+      60,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,    29,    19,    30,    34,    79,    98,   100,
+     102,   108,   121,   128,   146,   157,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+      19,    18,    17,    31,   162,    23,    47,    37,    70,    32,
+      -8,   -42,   137,  -503,   202,   181,   210,   217,   231,  -503,
+    -503,  -503,  -503,  -503,   286,  -503,    35,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,   300,   305,   312,   318,
+     319,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,   320,  -503,  -503,  -503,   123,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   321,
+     124,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+     322,   323,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,   170,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   174,
+    -503,  -503,  -503,  -503,   324,  -503,   325,   326,  -503,  -503,
+    -503,   178,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,   228,   264,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   327,
+    -503,  -503,  -503,   328,  -503,  -503,   329,   331,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   332,
+    -503,  -503,  -503,  -503,   330,   336,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,   180,  -503,  -503,  -503,   337,
+    -503,  -503,   338,  -503,   339,   340,  -503,  -503,   341,   342,
+     343,  -503,  -503,  -503,   207,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,    19,    19,  -503,   187,   344,   345,   346,   347,   348,
+    -503,    17,  -503,   349,   350,   351,   191,   211,   212,   213,
+     214,   352,   353,   354,   355,   360,   361,   362,   363,   364,
+     365,   221,   367,   368,    31,  -503,   369,   226,   162,  -503,
+      65,   370,   371,   372,   374,   375,   233,   229,   377,   379,
+     380,   381,    23,  -503,   382,   383,    47,  -503,   384,   240,
+     386,   242,   243,    37,  -503,   389,   390,   391,   392,   393,
+     394,   395,  -503,    70,   396,   397,   256,   398,   399,   400,
+     258,  -503,    32,   402,   259,  -503,    -8,   403,   404,   111,
+    -503,   260,   408,   412,   268,   414,   271,   272,   415,   418,
+     273,   274,   275,   419,   423,   137,  -503,  -503,  -503,   424,
+     422,   425,    19,    19,    19,  -503,   426,   427,   428,  -503,
+    -503,  -503,  -503,  -503,   431,   432,   433,   434,   435,   436,
+     437,   440,   439,   442,  -503,   443,   444,  -503,   447,  -503,
+    -503,  -503,  -503,  -503,  -503,   445,   452,  -503,  -503,  -503,
+     453,   454,   282,   309,   314,  -503,  -503,    -4,   315,   455,
+     457,  -503,   333,   459,  -503,   334,  -503,   335,  -503,  -503,
+    -503,   447,   447,   447,   356,   357,   358,   359,  -503,   366,
+     373,  -503,   376,   378,   385,  -503,  -503,   387,  -503,  -503,
+     388,    19,  -503,  -503,   401,   405,  -503,   406,  -503,  -503,
+     203,   409,  -503,  -503,  -503,    -3,   407,  -503,    19,    31,
+     306,  -503,  -503,  -503,   162,   133,   133,   460,   461,   462,
+     -38,    19,    62,    42,   463,   135,    28,   195,   137,  -503,
+    -503,   467,  -503,    65,   465,   466,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,   469,   410,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,   208,  -503,   209,  -503,  -503,   223,  -503,  -503,  -503,
+    -503,   470,   473,   474,   475,   476,  -503,  -503,  -503,   224,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,   225,  -503,   478,   482,  -503,  -503,   480,
+     484,  -503,  -503,   485,   487,  -503,  -503,  -503,   110,  -503,
+    -503,  -503,   488,  -503,  -503,  -503,   188,  -503,  -503,  -503,
+    -503,   232,  -503,   489,   490,  -503,   492,   493,   494,   495,
+     496,   497,   251,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,   498,   499,   504,  -503,  -503,   252,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,   253,  -503,  -503,  -503,
+     254,   411,   413,  -503,  -503,   505,   507,  -503,  -503,   506,
+     510,  -503,  -503,   509,   513,  -503,  -503,   511,  -503,   514,
+     306,  -503,  -503,   516,   518,   519,   521,   416,   417,   420,
+     421,   429,   523,   525,   133,  -503,  -503,    23,  -503,   460,
+      32,  -503,   461,    -8,  -503,   462,   -38,  -503,  -503,    62,
+    -503,    42,  -503,   -42,  -503,   463,   430,   438,   441,   446,
+     448,   449,   135,  -503,   526,   527,   450,   451,   456,    28,
+    -503,   528,   530,   195,  -503,  -503,  -503,   531,   535,  -503,
+      47,  -503,   465,    37,  -503,   466,    70,  -503,   469,   536,
+    -503,   483,  -503,   257,   458,   464,   468,  -503,  -503,  -503,
+    -503,  -503,   471,   472,  -503,   255,  -503,   533,  -503,   534,
+    -503,  -503,  -503,  -503,   261,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,   215,   477,  -503,  -503,  -503,  -503,   479,
+     481,  -503,  -503,   486,   262,  -503,   263,  -503,   537,  -503,
+     491,   532,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   283,
+    -503,    61,   532,  -503,  -503,   539,  -503,  -503,  -503,   270,
+    -503,  -503,  -503,  -503,  -503,   540,   500,   542,    61,  -503,
+     512,  -503,   502,  -503,   541,  -503,  -503,   294,  -503,   -80,
+     541,  -503,  -503,   543,   546,   547,   280,  -503,  -503,  -503,
+    -503,  -503,  -503,   548,   501,   517,   520,   -80,  -503,   515,
+    -503,  -503,  -503,  -503,  -503
   };
 
   const unsigned short int
@@ -3517,492 +3535,496 @@ namespace isc { namespace dhcp {
       20,    22,    24,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     1,    41,    34,    30,
       29,    26,    27,    28,    33,     3,    31,    32,    54,     5,
-      65,     7,    98,     9,   211,    11,   316,    13,   336,    15,
-     363,    17,   255,    19,   290,    21,   176,    23,   447,    25,
-      43,    37,     0,     0,     0,     0,     0,     0,   365,   257,
-     292,     0,     0,    45,     0,    44,     0,     0,    38,    63,
-     498,   494,   496,     0,    62,     0,    56,    58,    60,    61,
-      59,    96,   107,   109,     0,     0,     0,     0,     0,   203,
-     247,   282,   149,   166,   157,   396,   168,   187,   413,     0,
-     435,   445,    90,     0,    67,    69,    70,    71,    72,    73,
-      75,    76,    77,    78,    80,    79,    84,    85,    74,    82,
-      83,    81,    86,    87,    88,    89,   104,     0,     0,   100,
-     102,   103,   400,   308,   328,   232,   234,   236,     0,     0,
-     240,   238,   355,   392,   231,   215,   216,   217,   218,     0,
-     213,   222,   223,   224,   227,   229,   225,   226,   219,   220,
-     221,   228,   230,   324,   326,   323,   321,     0,   318,   320,
-     322,   348,     0,   351,     0,     0,   347,   343,   346,     0,
-     338,   340,   341,   344,   345,   342,   390,   378,   380,   382,
-     384,   386,   388,   377,   376,     0,   366,   367,   371,   372,
-     369,   373,   374,   375,   370,   272,   139,     0,   276,   274,
-     279,     0,   268,   269,     0,   258,   259,   261,   271,   262,
-     263,   264,   278,   265,   266,   267,   303,     0,   301,   302,
-     305,   306,     0,   293,   294,   296,   297,   298,   299,   300,
-     183,   185,   180,     0,   178,   181,   182,     0,   467,   469,
-       0,   472,     0,     0,   476,   480,     0,     0,     0,   485,
-     492,   465,     0,   449,   451,   452,   453,   454,   455,   456,
-     457,   458,   459,   460,   461,   462,   463,   464,    42,     0,
-       0,    35,     0,     0,     0,     0,     0,    53,     0,    55,
+      66,     7,    99,     9,   212,    11,   317,    13,   337,    15,
+     364,    17,   256,    19,   291,    21,   177,    23,   448,    25,
+      43,    37,     0,     0,     0,     0,     0,     0,   366,   258,
+     293,     0,     0,    45,     0,    44,     0,     0,    38,    64,
+     501,   495,   497,   499,     0,    63,     0,    56,    58,    60,
+      61,    62,    59,    97,   108,   110,     0,     0,     0,     0,
+       0,   204,   248,   283,   150,   167,   158,   397,   169,   188,
+     414,     0,   436,   446,    91,     0,    68,    70,    71,    72,
+      73,    74,    76,    77,    78,    79,    81,    80,    85,    86,
+      75,    83,    84,    82,    87,    88,    89,    90,   105,     0,
+       0,   101,   103,   104,   401,   309,   329,   233,   235,   237,
+       0,     0,   241,   239,   356,   393,   232,   216,   217,   218,
+     219,     0,   214,   223,   224,   225,   228,   230,   226,   227,
+     220,   221,   222,   229,   231,   325,   327,   324,   322,     0,
+     319,   321,   323,   349,     0,   352,     0,     0,   348,   344,
+     347,     0,   339,   341,   342,   345,   346,   343,   391,   379,
+     381,   383,   385,   387,   389,   378,   377,     0,   367,   368,
+     372,   373,   370,   374,   375,   376,   371,   273,   140,     0,
+     277,   275,   280,     0,   269,   270,     0,   259,   260,   262,
+     272,   263,   264,   265,   279,   266,   267,   268,   304,     0,
+     302,   303,   306,   307,     0,   294,   295,   297,   298,   299,
+     300,   301,   184,   186,   181,     0,   179,   182,   183,     0,
+     468,   470,     0,   473,     0,     0,   477,   481,     0,     0,
+       0,   486,   493,   466,     0,   450,   452,   453,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+      42,     0,     0,    35,     0,     0,     0,     0,     0,     0,
+      53,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    66,     0,     0,     0,    99,   402,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,     0,     0,     0,   317,     0,     0,     0,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,     0,   364,
-       0,     0,     0,     0,     0,     0,     0,     0,   256,     0,
-       0,     0,   291,     0,     0,     0,     0,   177,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   448,    46,    39,     0,     0,     0,     0,
-       0,    57,     0,     0,     0,    91,    92,    93,    94,    95,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     434,     0,     0,    68,     0,   106,   101,   411,   409,   410,
-     408,     0,   403,   404,   406,   407,     0,     0,     0,     0,
-       0,   245,   246,     0,     0,     0,     0,   214,     0,     0,
-     319,     0,   350,     0,   353,   354,   339,     0,     0,     0,
-       0,     0,     0,     0,   368,     0,     0,   270,     0,     0,
-       0,   281,   260,     0,   307,   295,     0,     0,   179,   466,
-       0,     0,   471,     0,   474,   475,     0,     0,   482,   483,
-     484,     0,     0,   450,     0,     0,     0,   495,   497,     0,
-       0,     0,   205,   249,   284,     0,    43,     0,     0,   170,
-       0,     0,     0,     0,    47,   105,     0,   401,     0,   310,
-     330,   233,   235,   237,   242,   243,   244,   241,   239,   357,
-       0,   325,    36,   327,   349,   352,   391,   379,   381,   383,
-     385,   387,   389,   273,   140,   277,   275,   280,   304,   184,
-     186,   468,   470,   473,   478,   479,   477,   481,   487,   488,
-     489,   490,   491,   486,   493,    40,     0,   503,     0,   500,
-     502,     0,   126,   132,   134,   136,     0,     0,     0,     0,
-       0,   145,   147,   125,     0,   111,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,     0,   209,
-       0,   206,   207,   253,     0,   250,   251,   288,     0,   285,
-     286,   155,   156,     0,   151,   153,   154,     0,   164,   165,
-     161,     0,   159,   162,   163,   398,     0,   174,     0,   171,
-     172,     0,     0,     0,     0,     0,     0,     0,   189,   191,
-     192,   193,   194,   195,   196,   424,   430,     0,     0,     0,
-     423,   422,     0,   415,   417,   420,   418,   419,   421,   441,
-     443,     0,   437,   439,   440,     0,    49,     0,   405,   314,
-       0,   311,   312,   334,     0,   331,   332,   361,     0,   358,
-     359,   394,     0,    64,     0,     0,   499,    97,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     108,   110,     0,   204,     0,   257,   248,     0,   292,   283,
-       0,     0,   150,   167,     0,   158,     0,   397,     0,   169,
-       0,     0,     0,     0,     0,     0,     0,     0,   188,     0,
-       0,     0,     0,     0,     0,   414,     0,     0,     0,   436,
-     446,    51,     0,    50,   412,     0,   309,     0,     0,   329,
-       0,   365,   356,     0,     0,   393,     0,   501,     0,     0,
-       0,     0,   138,   141,   142,   143,   144,     0,     0,   112,
-       0,   208,     0,   252,     0,   287,   152,   160,   399,     0,
-     173,   197,   198,   199,   200,   201,   202,   190,     0,     0,
-     429,   432,   433,   416,     0,     0,   438,    48,     0,     0,
-     313,     0,   333,     0,   360,     0,     0,   128,   129,   130,
-     131,   127,   133,   135,   137,   146,   148,   210,   254,   289,
-     175,   426,   427,   428,   425,   431,   442,   444,    52,   315,
-     335,   362,   395,   507,     0,   505,     0,     0,   504,   519,
-       0,   517,   515,   511,     0,   509,   513,   514,   512,   506,
-       0,     0,     0,     0,   508,     0,   516,     0,   510,     0,
-     518,   523,     0,   521,     0,     0,   520,   531,     0,     0,
-       0,     0,   525,   527,   528,   529,   530,   522,     0,     0,
-       0,     0,     0,   524,     0,   533,   534,   535,   526,   532
+       0,     0,     0,     0,     0,    67,     0,     0,     0,   100,
+     403,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   213,     0,     0,     0,   318,     0,     0,
+       0,     0,     0,     0,   338,     0,     0,     0,     0,     0,
+       0,     0,   365,     0,     0,     0,     0,     0,     0,     0,
+       0,   257,     0,     0,     0,   292,     0,     0,     0,     0,
+     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   449,    46,    39,     0,
+       0,     0,     0,     0,     0,    57,     0,     0,     0,    92,
+      93,    94,    95,    96,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   435,     0,     0,    69,     0,   107,
+     102,   412,   410,   411,   409,     0,   404,   405,   407,   408,
+       0,     0,     0,     0,     0,   246,   247,     0,     0,     0,
+       0,   215,     0,     0,   320,     0,   351,     0,   354,   355,
+     340,     0,     0,     0,     0,     0,     0,     0,   369,     0,
+       0,   271,     0,     0,     0,   282,   261,     0,   308,   296,
+       0,     0,   180,   467,     0,     0,   472,     0,   475,   476,
+       0,     0,   483,   484,   485,     0,     0,   451,     0,     0,
+       0,   496,   498,   500,     0,     0,     0,   206,   250,   285,
+       0,    43,     0,     0,   171,     0,     0,     0,     0,    47,
+     106,     0,   402,     0,   311,   331,   234,   236,   238,   243,
+     244,   245,   242,   240,   358,     0,   326,    36,   328,   350,
+     353,   392,   380,   382,   384,   386,   388,   390,   274,   141,
+     278,   276,   281,   305,   185,   187,   469,   471,   474,   479,
+     480,   478,   482,   488,   489,   490,   491,   492,   487,   494,
+      40,     0,   506,     0,   503,   505,     0,   127,   133,   135,
+     137,     0,     0,     0,     0,     0,   146,   148,   126,     0,
+     112,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,     0,   210,     0,   207,   208,   254,     0,
+     251,   252,   289,     0,   286,   287,   156,   157,     0,   152,
+     154,   155,     0,   165,   166,   162,     0,   160,   163,   164,
+     399,     0,   175,     0,   172,   173,     0,     0,     0,     0,
+       0,     0,     0,   190,   192,   193,   194,   195,   196,   197,
+     425,   431,     0,     0,     0,   424,   423,     0,   416,   418,
+     421,   419,   420,   422,   442,   444,     0,   438,   440,   441,
+       0,    49,     0,   406,   315,     0,   312,   313,   335,     0,
+     332,   333,   362,     0,   359,   360,   395,     0,    65,     0,
+       0,   502,    98,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   109,   111,     0,   205,     0,
+     258,   249,     0,   293,   284,     0,     0,   151,   168,     0,
+     159,     0,   398,     0,   170,     0,     0,     0,     0,     0,
+       0,     0,     0,   189,     0,     0,     0,     0,     0,     0,
+     415,     0,     0,     0,   437,   447,    51,     0,    50,   413,
+       0,   310,     0,     0,   330,     0,   366,   357,     0,     0,
+     394,     0,   504,     0,     0,     0,     0,   139,   142,   143,
+     144,   145,     0,     0,   113,     0,   209,     0,   253,     0,
+     288,   153,   161,   400,     0,   174,   198,   199,   200,   201,
+     202,   203,   191,     0,     0,   430,   433,   434,   417,     0,
+       0,   439,    48,     0,     0,   314,     0,   334,     0,   361,
+       0,     0,   129,   130,   131,   132,   128,   134,   136,   138,
+     147,   149,   211,   255,   290,   176,   427,   428,   429,   426,
+     432,   443,   445,    52,   316,   336,   363,   396,   510,     0,
+     508,     0,     0,   507,   522,     0,   520,   518,   514,     0,
+     512,   516,   517,   515,   509,     0,     0,     0,     0,   511,
+       0,   519,     0,   513,     0,   521,   526,     0,   524,     0,
+       0,   523,   534,     0,     0,     0,     0,   528,   530,   531,
+     532,   533,   525,     0,     0,     0,     0,     0,   527,     0,
+     536,   537,   538,   529,   535
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,    10,  -498,    95,  -498,  -498,  -498,
-    -498,  -498,  -498,    49,  -498,  -140,  -498,  -498,  -498,   -62,
-    -498,  -498,  -498,   263,  -498,  -498,  -498,  -498,    61,   236,
-     -63,   -50,   -49,   -43,  -498,  -498,  -498,  -498,  -498,    63,
-     247,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    62,  -141,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -58,  -498,  -497,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -147,  -484,  -498,  -498,  -498,  -498,  -146,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -153,  -498,
-    -498,  -498,  -149,   194,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -156,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -131,  -498,  -498,  -498,  -128,   248,  -498,  -498,
-    -498,  -498,  -498,  -498,  -487,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -130,  -498,  -498,  -498,  -127,
-    -498,   211,  -498,   -59,  -498,  -498,  -498,  -498,  -498,   -57,
-    -498,  -498,  -498,  -498,  -498,   -48,  -498,  -498,  -498,  -126,
-    -498,  -498,  -498,  -129,  -498,   213,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -164,  -498,  -498,  -498,
-    -157,   250,  -498,  -498,   -66,  -498,  -498,  -498,  -498,  -498,
-    -161,  -498,  -498,  -498,  -158,   262,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -162,  -498,  -498,
-    -498,  -152,  -498,   235,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    80,  -498,
-    -498,  -498,  -498,  -498,  -498,  -134,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -135,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,    91,   214,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-    -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   -80,
-    -498,  -498,  -498,  -230,  -498,  -498,  -245,  -498,  -498,  -498,
-    -498,  -498,  -498,  -256,  -498,  -498,  -271,  -498,  -498,  -498,
-    -498,  -498
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,    11,  -503,   103,  -503,  -503,  -503,
+    -503,  -503,  -503,    46,  -503,  -150,  -503,  -503,  -503,   -62,
+    -503,  -503,  -503,   265,  -503,  -503,  -503,  -503,    59,   236,
+     -63,   -50,   -49,   -43,  -503,  -503,  -503,  -503,  -503,    58,
+     235,  -503,  -503,  -503,  -503,  -503,  -503,  -503,    64,  -140,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+     -58,  -503,  -502,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -149,  -489,  -503,  -503,  -503,  -503,  -148,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -152,  -503,
+    -503,  -503,  -147,   196,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -158,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -132,  -503,  -503,  -503,  -127,   239,  -503,  -503,
+    -503,  -503,  -503,  -503,  -492,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -130,  -503,  -503,  -503,  -126,
+    -503,   216,  -503,   -59,  -503,  -503,  -503,  -503,  -503,   -57,
+    -503,  -503,  -503,  -503,  -503,   -48,  -503,  -503,  -503,  -129,
+    -503,  -503,  -503,  -128,  -503,   218,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -169,  -503,  -503,  -503,
+    -161,   245,  -503,  -503,   -66,  -503,  -503,  -503,  -503,  -503,
+    -163,  -503,  -503,  -503,  -160,   248,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -162,  -503,  -503,
+    -503,  -154,  -503,   241,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,    80,  -503,
+    -503,  -503,  -503,  -503,  -503,  -131,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -136,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,    91,   219,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
+    -503,   -79,  -503,  -503,  -503,  -232,  -503,  -503,  -245,  -503,
+    -503,  -503,  -503,  -503,  -503,  -255,  -503,  -503,  -270,  -503,
+    -503,  -503,  -503,  -503
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    73,    35,    36,    61,   533,    77,
-      78,    37,    60,    74,    75,   515,   666,   742,   743,   112,
-      39,    62,    85,    86,    87,   293,    41,    63,   113,   114,
-     115,   116,   117,   118,   119,   120,   300,    43,    64,   138,
-     139,   140,   323,   141,   121,   301,   122,   302,   584,   585,
-     586,   688,   811,   587,   689,   588,   690,   589,   691,   590,
-     223,   362,   592,   593,   594,   595,   596,   697,   597,   698,
-     123,   311,   613,   614,   615,   616,   124,   313,   621,   622,
-     623,   624,   125,   312,   126,   315,   628,   629,   630,   718,
-      57,    71,   253,   254,   255,   374,   256,   375,   127,   316,
-     637,   638,   639,   640,   641,   642,   643,   644,   128,   308,
-     600,   601,   602,   702,    45,    65,   159,   160,   161,   330,
-     162,   331,   163,   332,   164,   336,   165,   335,   527,   166,
-     167,   129,   309,   604,   605,   606,   705,    53,    69,   224,
-     225,   226,   227,   228,   229,   230,   361,   231,   365,   232,
-     364,   233,   234,   366,   235,   130,   310,   608,   609,   610,
-     708,    55,    70,   242,   243,   244,   245,   246,   370,   247,
-     248,   249,   169,   328,   670,   671,   672,   745,    47,    66,
-     177,   178,   179,   341,   180,   342,   170,   329,   674,   675,
-     676,   748,    49,    67,   189,   190,   191,   345,   192,   193,
-     347,   194,   195,   171,   337,   678,   679,   680,   751,    51,
-      68,   205,   206,   207,   208,   353,   209,   354,   210,   355,
-     211,   356,   212,   357,   213,   358,   214,   352,   172,   338,
-     682,   754,   131,   314,   626,   327,   431,   432,   433,   434,
-     435,   516,   132,   317,   652,   653,   654,   729,   824,   655,
-     656,   730,   657,   658,   133,   134,   319,   661,   662,   663,
-     736,   664,   737,   135,   320,    59,    72,   272,   273,   274,
-     275,   379,   276,   380,   277,   278,   382,   279,   280,   281,
-     385,   556,   282,   386,   283,   284,   285,   286,   390,   563,
-     287,   391,    88,   295,    89,   296,    90,   294,   568,   569,
-     570,   684,   834,   835,   836,   844,   845,   846,   847,   852,
-     848,   850,   862,   863,   864,   871,   872,   873,   878,   874,
-     875,   876
+      22,    23,    24,    25,    73,    35,    36,    61,   538,    77,
+      78,    37,    60,    74,    75,   520,   671,   747,   748,   114,
+      39,    62,    86,    87,    88,   295,    41,    63,   115,   116,
+     117,   118,   119,   120,   121,   122,   303,    43,    64,   140,
+     141,   142,   326,   143,   123,   304,   124,   305,   589,   590,
+     591,   693,   816,   592,   694,   593,   695,   594,   696,   595,
+     225,   365,   597,   598,   599,   600,   601,   702,   602,   703,
+     125,   314,   618,   619,   620,   621,   126,   316,   626,   627,
+     628,   629,   127,   315,   128,   318,   633,   634,   635,   723,
+      57,    71,   255,   256,   257,   377,   258,   378,   129,   319,
+     642,   643,   644,   645,   646,   647,   648,   649,   130,   311,
+     605,   606,   607,   707,    45,    65,   161,   162,   163,   333,
+     164,   334,   165,   335,   166,   339,   167,   338,   532,   168,
+     169,   131,   312,   609,   610,   611,   710,    53,    69,   226,
+     227,   228,   229,   230,   231,   232,   364,   233,   368,   234,
+     367,   235,   236,   369,   237,   132,   313,   613,   614,   615,
+     713,    55,    70,   244,   245,   246,   247,   248,   373,   249,
+     250,   251,   171,   331,   675,   676,   677,   750,    47,    66,
+     179,   180,   181,   344,   182,   345,   172,   332,   679,   680,
+     681,   753,    49,    67,   191,   192,   193,   348,   194,   195,
+     350,   196,   197,   173,   340,   683,   684,   685,   756,    51,
+      68,   207,   208,   209,   210,   356,   211,   357,   212,   358,
+     213,   359,   214,   360,   215,   361,   216,   355,   174,   341,
+     687,   759,   133,   317,   631,   330,   435,   436,   437,   438,
+     439,   521,   134,   320,   657,   658,   659,   734,   829,   660,
+     661,   735,   662,   663,   135,   136,   322,   666,   667,   668,
+     741,   669,   742,   137,   323,    59,    72,   274,   275,   276,
+     277,   382,   278,   383,   279,   280,   385,   281,   282,   283,
+     388,   561,   284,   389,   285,   286,   287,   288,   393,   568,
+     289,   394,    89,   297,    90,   298,    91,   299,    92,   296,
+     573,   574,   575,   689,   839,   840,   841,   849,   850,   851,
+     852,   857,   853,   855,   867,   868,   869,   876,   877,   878,
+     883,   879,   880,   881
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      84,   188,   155,   154,   175,   186,   203,   222,   238,   252,
-     271,   240,   239,   241,   651,   156,   157,   168,   176,   187,
-     204,   625,   158,   620,    34,    27,   142,    28,    79,    29,
-     611,   631,   632,   633,   634,   635,   636,   101,    91,    26,
-     645,    92,    93,   142,   215,   250,   251,   173,    38,   577,
-      94,    95,    96,    97,   174,   250,   251,   101,    94,    95,
-      96,    97,    98,    99,   100,   101,   143,   216,   144,   217,
-     218,   101,   219,   220,   221,   145,   146,   147,   148,   149,
-     150,   101,   216,   181,   182,   183,   184,   185,   174,   151,
-     152,    40,   102,   103,   104,   105,   216,   153,   216,   236,
-     217,   218,   237,   612,   298,   711,   151,   106,   712,   299,
-     107,    83,   427,   558,   559,   560,   561,   108,   646,   647,
-     648,   649,    42,   101,    44,   109,   110,   572,   714,   111,
-      46,   715,   573,   574,   575,   576,   577,   578,   579,   580,
-     581,   582,    80,   562,   867,    48,    83,   868,   869,   870,
-     216,    81,    82,   196,   524,   525,   526,   197,   198,   199,
-     200,   201,   202,   136,   137,    83,    83,    30,    31,    32,
-      33,    83,   321,   325,    83,    83,   339,   322,   326,   343,
-      83,   340,   350,   839,   344,   840,   841,   351,   554,   555,
-      83,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    50,    83,    52,    83,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   376,   392,   321,   659,   660,   377,   393,   683,   778,
-     620,    54,    83,   685,   325,   699,    84,   651,   686,   687,
-     700,   699,   727,   734,   738,   392,   701,   728,   735,   739,
-     740,    83,   339,    56,   376,   343,   350,   817,    83,   820,
-     829,   830,   853,   882,    58,   428,    76,   854,   883,   429,
-     288,   807,   808,   809,   810,   716,   155,   154,   717,   430,
-     289,   175,   611,   618,   188,   619,   290,   291,   186,   156,
-     157,   168,   292,   359,   837,   176,   158,   838,   203,   394,
-     395,   865,   187,   297,   866,   303,   304,   222,   821,   822,
-     823,   238,   204,   305,   240,   239,   241,   536,   537,   538,
-     306,   307,   318,   324,   333,   334,   346,   348,   349,   360,
-     271,   363,   367,   368,   369,   396,   371,   372,   373,   405,
-     378,   381,   383,   384,   387,   388,   389,   397,   398,   399,
-     400,   402,   403,   404,   406,   407,   410,   408,   409,   411,
-     412,   413,   414,   415,   416,   417,   418,   419,   421,   420,
-     422,   424,   425,   436,   437,   438,   439,   440,   442,   443,
-     444,   441,   445,   446,   448,   449,   451,   453,   457,   458,
-     459,   452,   454,   455,   460,   461,   462,   463,   465,   466,
-     468,   469,   470,   467,   473,   476,   471,   477,   474,   497,
-     498,   479,   480,   481,   482,   483,   484,   485,   486,   487,
-     488,   489,   491,   490,   492,   494,   495,   521,   522,   496,
-     499,   500,   501,   502,   503,   504,   505,   506,   583,   583,
-     507,   508,   591,   591,   509,   510,   667,   511,   512,   650,
-     513,   271,   514,   517,   518,   519,   428,   520,   523,   528,
-     429,   529,   530,   762,    28,   599,   603,   607,   627,   669,
-     430,   673,   677,   692,   693,   694,   695,   531,   696,   703,
-     534,   535,   704,   706,   707,   710,   709,   550,   806,   681,
-     713,   719,   720,   746,   721,   722,   723,   539,   540,   724,
-     541,   542,   725,   726,   565,   731,   732,   733,   747,   750,
-     749,   753,   543,   752,   756,   544,   758,   755,   759,   760,
-     761,   545,   767,   768,   546,   557,   788,   789,   794,   795,
-     805,   798,   567,   797,   547,   548,   549,   818,   819,   831,
-     833,   851,   855,   857,   532,   859,   551,   879,   861,   552,
-     880,   553,   564,   881,   884,   617,   566,   423,   769,   741,
-     744,   401,   571,   598,   776,   764,   763,   780,   777,   779,
-     478,   787,   426,   771,   770,   766,   765,   773,   772,   774,
-     472,   781,   782,   800,   775,   783,   475,   447,   799,   802,
-     801,   804,   784,   450,   785,   464,   786,   790,   668,   803,
-     793,   791,   792,   796,   665,   757,   493,   849,   858,   877,
-     812,   888,   456,   813,   814,   815,     0,     0,     0,     0,
-       0,     0,   816,   825,     0,   826,     0,     0,     0,     0,
-       0,     0,     0,   827,     0,   828,     0,   583,     0,   155,
-     154,   591,   856,   222,   832,     0,   238,   860,     0,   240,
-     239,   241,   156,   157,   168,     0,   252,     0,     0,   158,
-     889,   885,     0,     0,     0,   886,     0,     0,   887,     0,
-       0,     0,   650,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   188,   175,     0,     0,   186,     0,     0,   203,
-       0,     0,     0,     0,     0,     0,     0,   176,     0,     0,
-     187,     0,     0,   204,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      85,   190,   157,   156,   177,   188,   205,   224,   240,   254,
+     273,   242,   241,   243,   656,   158,   159,   170,   178,   189,
+     206,   630,   160,   625,    27,    34,    28,    79,    29,    26,
+     144,   218,   238,   219,   220,   239,   616,    38,   301,   252,
+     253,    40,    93,   302,   650,    94,    95,   872,   217,   144,
+     873,   874,   875,   582,    96,    97,    98,    99,   529,   530,
+     531,   103,    96,    97,    98,    99,   100,   101,   102,   103,
+     145,   218,   146,   219,   220,   103,   221,   222,   223,   147,
+     148,   149,   150,   151,   152,   103,    42,   183,   184,   185,
+     186,   187,   176,   153,   154,   175,   104,   105,   106,   107,
+     218,   155,   176,   103,   218,    44,    84,    46,   103,    48,
+     617,   108,   153,   716,   109,    50,   717,   563,   564,   565,
+     566,   110,   651,   652,   653,   654,   324,   328,    52,   111,
+     112,   325,   329,   113,   431,    54,   616,   623,   198,   624,
+      84,    80,   199,   200,   201,   202,   203,   204,   567,   577,
+      81,    82,    83,    56,   578,   579,   580,   581,   582,   583,
+     584,   585,   586,   587,    58,    84,    76,    30,    31,    32,
+      33,    84,   218,   342,   138,   139,    84,   346,   343,    84,
+      84,   353,   347,   379,   291,    84,   354,   844,   380,   845,
+     846,   719,   252,   253,   720,    84,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,   290,    84,
+     395,   324,   690,    84,   292,   396,   688,   691,    84,   636,
+     637,   638,   639,   640,   641,   293,   328,   704,   704,   783,
+     625,   692,   705,   706,   294,   721,   362,   656,   722,    85,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   732,   739,   743,   395,   342,   733,
+     740,   744,   745,   822,   379,   346,   353,   363,   432,   825,
+     834,   835,   433,   858,   812,   813,   814,   815,   859,   157,
+     156,    84,   434,   887,   177,    84,   842,   190,   888,   843,
+     300,   188,   158,   159,   170,   664,   665,   870,   178,   160,
+     871,   205,   397,   398,   306,   189,   826,   827,   828,   307,
+     224,   541,   542,   543,   240,   206,   308,   242,   241,   243,
+     559,   560,   309,   310,   321,   327,   336,   337,   349,   351,
+     352,   366,   370,   273,   372,   399,   374,   371,   375,   376,
+     409,   381,   384,   386,   387,   390,   391,   392,   400,   401,
+     402,   403,   404,   406,   407,   408,   414,   415,   416,   417,
+     410,   411,   412,   413,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   428,   440,   441,   442,   429,   443,   444,
+     446,   447,   445,   448,   449,   450,   452,   453,   455,   456,
+     457,   458,   459,   461,   462,   463,   464,   465,   466,   467,
+     469,   470,   472,   473,   474,   471,   477,   480,   481,   475,
+     478,   483,   484,   501,   502,   503,   485,   486,   487,   490,
+     488,   489,   491,   495,   492,   493,   494,   496,   498,   499,
+     526,   572,   500,   504,   505,   506,   507,   508,   509,   510,
+     511,   512,   513,   588,   588,   514,   515,   596,   596,   516,
+     517,   518,   519,   522,   655,   523,   273,   527,   524,   525,
+     534,   432,   528,   533,   535,   433,    28,   604,   608,   612,
+     632,   672,   674,   678,   697,   434,   682,   698,   699,   700,
+     701,   536,   539,   540,   708,   709,   711,   712,   811,   686,
+     715,   714,   555,   725,   718,   724,   726,   727,   728,   729,
+     730,   731,   736,   737,   544,   545,   546,   547,   738,   570,
+     752,   751,   754,   755,   548,   757,   758,   864,   761,   760,
+     763,   549,   764,   765,   550,   766,   551,   772,   562,   773,
+     793,   794,   799,   552,   800,   553,   554,   802,   803,   838,
+     810,   823,   824,   856,   860,   836,   862,   884,   866,   556,
+     885,   886,   889,   557,   558,   569,   537,   622,   571,   746,
+     427,   749,   576,   430,   774,   767,   405,   781,   768,   769,
+     603,   782,   770,   785,   792,   482,   784,   776,   771,   786,
+     775,   451,   778,   805,   777,   779,   780,   787,   476,   804,
+     788,   454,   807,   806,   479,   789,   809,   790,   791,   795,
+     796,   460,   808,   673,   468,   797,   817,   801,   798,   670,
+     854,   762,   818,   863,   497,   882,   819,   893,     0,   820,
+     821,     0,     0,     0,     0,   830,     0,   831,     0,   832,
+       0,     0,     0,     0,   833,     0,     0,     0,     0,   837,
+       0,     0,   588,     0,   157,   156,   596,     0,   224,   861,
+     865,   240,   890,     0,   242,   241,   243,   158,   159,   170,
+       0,   254,     0,   894,   160,     0,   891,     0,     0,   892,
+       0,     0,     0,     0,     0,     0,     0,   655,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   190,   177,     0,
+       0,   188,     0,     0,   205,     0,     0,     0,     0,     0,
+       0,     0,   178,     0,     0,   189,     0,     0,   206,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   842,     0,     0,     0,   843,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   842,     0,     0,     0,   843
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   847,
+       0,     0,     0,   848,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   847,     0,     0,     0,
+     848
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
       62,    67,    65,    65,    66,    67,    68,    69,    70,    71,
-      72,    70,    70,    70,   511,    65,    65,    65,    66,    67,
-      68,   508,    65,   507,    14,     5,     7,     7,    10,     9,
-      74,    84,    85,    86,    87,    88,    89,    38,    11,     0,
-      16,    14,    15,     7,    16,    81,    82,    48,     7,    25,
-      31,    32,    33,    34,    55,    81,    82,    38,    31,    32,
-      33,    34,    35,    36,    37,    38,    47,    39,    49,    41,
-      42,    38,    44,    45,    46,    56,    57,    58,    59,    60,
-      61,    38,    39,    50,    51,    52,    53,    54,    55,    70,
-      71,     7,    65,    66,    67,    68,    39,    78,    39,    40,
-      41,    42,    43,   147,     3,     3,    70,    80,     6,     8,
-      83,   147,    69,   120,   121,   122,   123,    90,    94,    95,
-      96,    97,     7,    38,     7,    98,    99,    16,     3,   102,
-       7,     6,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,   124,   150,   127,     7,   147,   130,   131,   132,
-      39,   133,   134,    68,    62,    63,    64,    72,    73,    74,
-      75,    76,    77,    12,    13,   147,   147,   147,   148,   149,
-     150,   147,     3,     3,   147,   147,     3,     8,     8,     3,
-     147,     8,     3,   126,     8,   128,   129,     8,   117,   118,
-     147,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,     7,   147,     7,   147,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,     3,     3,     3,   100,   101,     8,     8,     8,   716,
-     714,     7,   147,     3,     3,     3,   298,   734,     8,     8,
-       8,     3,     3,     3,     3,     3,     8,     8,     8,     8,
-       8,   147,     3,     7,     3,     3,     3,     8,   147,     8,
-       8,     8,     3,     3,     7,   327,   147,     8,     8,   327,
-       6,    17,    18,    19,    20,     3,   339,   339,     6,   327,
-       3,   343,    74,    75,   350,    77,     4,     8,   350,   339,
-     339,   339,     3,     8,     3,   343,   339,     6,   360,   289,
-     290,     3,   350,     4,     6,     4,     4,   369,    91,    92,
-      93,   373,   360,     4,   373,   373,   373,   457,   458,   459,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
-     392,     4,     4,     8,     3,   147,     4,     8,     3,   148,
+      72,    70,    70,    70,   516,    65,    65,    65,    66,    67,
+      68,   513,    65,   512,     5,    14,     7,    10,     9,     0,
+       7,    39,    40,    41,    42,    43,    74,     7,     3,    81,
+      82,     7,    11,     8,    16,    14,    15,   127,    16,     7,
+     130,   131,   132,    25,    31,    32,    33,    34,    62,    63,
+      64,    38,    31,    32,    33,    34,    35,    36,    37,    38,
+      47,    39,    49,    41,    42,    38,    44,    45,    46,    56,
+      57,    58,    59,    60,    61,    38,     7,    50,    51,    52,
+      53,    54,    55,    70,    71,    48,    65,    66,    67,    68,
+      39,    78,    55,    38,    39,     7,   148,     7,    38,     7,
+     148,    80,    70,     3,    83,     7,     6,   120,   121,   122,
+     123,    90,    94,    95,    96,    97,     3,     3,     7,    98,
+      99,     8,     8,   102,    69,     7,    74,    75,    68,    77,
+     148,   124,    72,    73,    74,    75,    76,    77,   151,    16,
+     133,   134,   135,     7,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,     7,   148,   148,   148,   149,   150,
+     151,   148,    39,     3,    12,    13,   148,     3,     8,   148,
+     148,     3,     8,     3,     3,   148,     8,   126,     8,   128,
+     129,     3,    81,    82,     6,   148,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,     6,   148,
+       3,     3,     3,   148,     4,     8,     8,     8,   148,    84,
+      85,    86,    87,    88,    89,     8,     3,     3,     3,   721,
+     719,     8,     8,     8,     3,     3,     8,   739,     6,   301,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,     3,     3,     3,     3,     3,     8,
+       8,     8,     8,     8,     3,     3,     3,     3,   330,     8,
+       8,     8,   330,     3,    17,    18,    19,    20,     8,   342,
+     342,   148,   330,     3,   346,   148,     3,   353,     8,     6,
+       4,   353,   342,   342,   342,   100,   101,     3,   346,   342,
+       6,   363,   291,   292,     4,   353,    91,    92,    93,     4,
+     372,   461,   462,   463,   376,   363,     4,   376,   376,   376,
+     117,   118,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   395,     3,   148,     4,     8,     8,     3,
+     149,     4,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   148,   148,     4,   148,   148,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   148,
-       4,     4,   150,     4,     4,     4,     4,     4,   150,     4,
-       4,   148,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   148,   148,   148,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,   148,     4,     4,   150,     4,   150,   399,
-     400,   150,     4,     4,   148,     4,   148,   148,     4,     4,
-     150,   150,     4,   150,     4,     4,     7,   147,   147,     7,
-       7,     7,     7,     5,     5,     5,     5,     5,   500,   501,
-       5,     5,   500,   501,     5,     7,     4,     7,     7,   511,
-       7,   513,     5,     8,     3,     5,   518,     5,   147,   147,
-     518,     5,     7,   148,     7,     7,     7,     7,     7,     7,
-     518,     7,     7,     4,     4,     4,     4,   147,     4,     6,
-     147,   147,     3,     6,     3,     3,     6,   477,     5,    79,
-       6,     6,     3,     6,     4,     4,     4,   147,   147,     4,
-     147,   147,     4,     4,   494,     4,     4,     4,     3,     3,
-       6,     3,   147,     6,     4,   147,     4,     8,     4,     4,
-       4,   147,     4,     4,   147,   119,     4,     4,     4,     4,
-       4,     3,   125,     6,   147,   147,   147,     8,     8,     8,
-       7,     4,     4,     4,   449,     5,   147,     4,     7,   147,
-       4,   147,   147,     4,     4,   506,   495,   321,   699,   147,
-     147,   298,   499,   501,   711,   148,   150,   720,   714,   718,
-     376,   727,   325,   704,   702,   148,   150,   707,   705,   708,
-     369,   148,   148,   747,   710,   148,   373,   339,   745,   750,
-     748,   753,   148,   343,   148,   360,   148,   148,   518,   751,
-     734,   148,   148,   738,   513,   685,   392,   837,   853,   865,
-     147,   882,   350,   147,   147,   147,    -1,    -1,    -1,    -1,
-      -1,    -1,   147,   147,    -1,   147,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   147,    -1,   147,    -1,   699,    -1,   702,
-     702,   699,   148,   705,   147,    -1,   708,   147,    -1,   708,
-     708,   708,   702,   702,   702,    -1,   718,    -1,    -1,   702,
-     147,   150,    -1,    -1,    -1,   148,    -1,    -1,   148,    -1,
-      -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   748,   745,    -1,    -1,   748,    -1,    -1,   751,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,    -1,
-     748,    -1,    -1,   751,    -1,    -1,    -1,    -1,    -1,    -1,
+     149,   149,   149,   149,     4,     4,     4,     4,     4,     4,
+     149,     4,     4,     4,     4,     4,     4,   151,     4,     4,
+     151,     4,   149,     4,     4,     4,     4,     4,     4,   149,
+       4,   149,   149,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   149,     4,     4,     4,   151,
+     151,   151,     4,   402,   403,   404,     4,   149,     4,     4,
+     149,   149,     4,     4,   151,   151,   151,     4,     4,     7,
+     148,   125,     7,     7,     7,     7,     5,     5,     5,     5,
+       5,     5,     5,   505,   506,     5,     7,   505,   506,     7,
+       7,     7,     5,     8,   516,     3,   518,   148,     5,     5,
+       5,   523,   148,   148,     7,   523,     7,     7,     7,     7,
+       7,     4,     7,     7,     4,   523,     7,     4,     4,     4,
+       4,   148,   148,   148,     6,     3,     6,     3,     5,    79,
+       3,     6,   481,     3,     6,     6,     4,     4,     4,     4,
+       4,     4,     4,     4,   148,   148,   148,   148,     4,   498,
+       3,     6,     6,     3,   148,     6,     3,     5,     4,     8,
+       4,   148,     4,     4,   148,     4,   148,     4,   119,     4,
+       4,     4,     4,   148,     4,   148,   148,     6,     3,     7,
+       4,     8,     8,     4,     4,     8,     4,     4,     7,   148,
+       4,     4,     4,   148,   148,   148,   453,   511,   499,   148,
+     324,   148,   504,   328,   704,   149,   301,   716,   151,   149,
+     506,   719,   151,   725,   732,   379,   723,   709,   149,   149,
+     707,   342,   712,   752,   710,   713,   715,   149,   372,   750,
+     149,   346,   755,   753,   376,   149,   758,   149,   149,   149,
+     149,   353,   756,   523,   363,   149,   148,   743,   739,   518,
+     842,   690,   148,   858,   395,   870,   148,   887,    -1,   148,
+     148,    -1,    -1,    -1,    -1,   148,    -1,   148,    -1,   148,
+      -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,   148,
+      -1,    -1,   704,    -1,   707,   707,   704,    -1,   710,   149,
+     148,   713,   151,    -1,   713,   713,   713,   707,   707,   707,
+      -1,   723,    -1,   148,   707,    -1,   149,    -1,    -1,   149,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   739,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   753,   750,    -1,
+      -1,   753,    -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   750,    -1,    -1,   753,    -1,    -1,   756,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   836,    -1,    -1,    -1,   836,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   853,    -1,    -1,    -1,   853
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   841,
+      -1,    -1,    -1,   841,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   858,    -1,    -1,    -1,
+     858
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,     0,     5,     7,     9,
-     147,   148,   149,   150,   165,   166,   167,   172,     7,   181,
-       7,   187,     7,   198,     7,   275,     7,   339,     7,   353,
-       7,   370,     7,   298,     7,   322,     7,   251,     7,   426,
-     173,   168,   182,   188,   199,   276,   340,   354,   371,   299,
-     323,   252,   427,   165,   174,   175,   147,   170,   171,    10,
-     124,   133,   134,   147,   180,   183,   184,   185,   453,   455,
-     457,    11,    14,    15,    31,    32,    33,    34,    35,    36,
-      37,    38,    65,    66,    67,    68,    80,    83,    90,    98,
-      99,   102,   180,   189,   190,   191,   192,   193,   194,   195,
-     196,   205,   207,   231,   237,   243,   245,   259,   269,   292,
-     316,   393,   403,   415,   416,   424,    12,    13,   200,   201,
-     202,   204,     7,    47,    49,    56,    57,    58,    59,    60,
-      61,    70,    71,    78,   180,   191,   192,   193,   194,   277,
-     278,   279,   281,   283,   285,   287,   290,   291,   316,   333,
-     347,   364,   389,    48,    55,   180,   316,   341,   342,   343,
-     345,    50,    51,    52,    53,    54,   180,   316,   345,   355,
-     356,   357,   359,   360,   362,   363,    68,    72,    73,    74,
-      75,    76,    77,   180,   316,   372,   373,   374,   375,   377,
-     379,   381,   383,   385,   387,    16,    39,    41,    42,    44,
-      45,    46,   180,   221,   300,   301,   302,   303,   304,   305,
-     306,   308,   310,   312,   313,   315,    40,    43,   180,   221,
-     304,   310,   324,   325,   326,   327,   328,   330,   331,   332,
-      81,    82,   180,   253,   254,   255,   257,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   180,   428,   429,   430,   431,   433,   435,   436,   438,
-     439,   440,   443,   445,   446,   447,   448,   451,     6,     3,
-       4,     8,     3,   186,   458,   454,   456,     4,     3,     8,
-     197,   206,   208,     4,     4,     4,     4,     4,   270,   293,
-     317,   232,   244,   238,   394,   246,   260,   404,     4,   417,
-     425,     3,     8,   203,     4,     3,     8,   396,   334,   348,
-     280,   282,   284,     4,     4,   288,   286,   365,   390,     3,
-       8,   344,   346,     3,     8,   358,     4,   361,     4,     4,
-       3,     8,   388,   376,   378,   380,   382,   384,   386,     8,
-       3,   307,   222,     4,   311,   309,   314,     4,     8,     3,
-     329,     4,     8,     3,   256,   258,     3,     8,     4,   432,
-     434,     4,   437,     4,     4,   441,   444,     4,     4,     4,
-     449,   452,     3,     8,   165,   165,   147,     4,     4,     4,
-       4,   184,     4,     4,     4,   148,   148,   148,   148,   148,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     148,     4,     4,   190,     4,   150,   201,    69,   180,   221,
-     316,   397,   398,   399,   400,   401,     4,     4,     4,     4,
-       4,   148,   150,     4,     4,     4,     4,   278,     4,     4,
-     342,     4,   148,     4,   148,   148,   356,     4,     4,     4,
-       4,     4,     4,     4,   374,     4,     4,   148,     4,     4,
-       4,   150,   302,     4,   150,   326,     4,     4,   254,   150,
-       4,     4,   148,     4,   148,   148,     4,     4,   150,   150,
-     150,     4,     4,   429,     4,     7,     7,   165,   165,     7,
-       7,     7,     5,     5,     5,     5,     5,     5,     5,     5,
-       7,     7,     7,     7,     5,   176,   402,     8,     3,     5,
-       5,   147,   147,   147,    62,    63,    64,   289,   147,     5,
-       7,   147,   167,   169,   147,   147,   176,   176,   176,   147,
-     147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
-     165,   147,   147,   147,   117,   118,   442,   119,   120,   121,
-     122,   123,   150,   450,   147,   165,   189,   125,   459,   460,
-     461,   200,    16,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,   180,   209,   210,   211,   214,   216,   218,
-     220,   221,   223,   224,   225,   226,   227,   229,   209,     7,
-     271,   272,   273,     7,   294,   295,   296,     7,   318,   319,
-     320,    74,   147,   233,   234,   235,   236,   174,    75,    77,
-     235,   239,   240,   241,   242,   285,   395,     7,   247,   248,
-     249,    84,    85,    86,    87,    88,    89,   261,   262,   263,
-     264,   265,   266,   267,   268,    16,    94,    95,    96,    97,
-     180,   223,   405,   406,   407,   410,   411,   413,   414,   100,
-     101,   418,   419,   420,   422,   428,   177,     4,   399,     7,
-     335,   336,   337,     7,   349,   350,   351,     7,   366,   367,
-     368,    79,   391,     8,   462,     3,     8,     8,   212,   215,
-     217,   219,     4,     4,     4,     4,     4,   228,   230,     3,
-       8,     8,   274,     6,     3,   297,     6,     3,   321,     6,
-       3,     3,     6,     6,     3,     6,     3,     6,   250,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,   408,
-     412,     4,     4,     4,     3,     8,   421,   423,     3,     8,
-       8,   147,   178,   179,   147,   338,     6,     3,   352,     6,
-       3,   369,     6,     3,   392,     8,     4,   460,     4,     4,
-       4,     4,   148,   150,   148,   150,   148,     4,     4,   210,
-     277,   273,   300,   296,   324,   320,   234,   240,   285,   253,
-     249,   148,   148,   148,   148,   148,   148,   262,     4,     4,
-     148,   148,   148,   406,     4,     4,   419,     6,     3,   341,
-     337,   355,   351,   372,   368,     4,     5,    17,    18,    19,
-      20,   213,   147,   147,   147,   147,   147,     8,     8,     8,
-       8,    91,    92,    93,   409,   147,   147,   147,   147,     8,
-       8,     8,   147,     7,   463,   464,   465,     3,     6,   126,
-     128,   129,   180,   221,   466,   467,   468,   469,   471,   464,
-     472,     4,   470,     3,     8,     4,   148,     4,   467,     5,
-     147,     7,   473,   474,   475,     3,     6,   127,   130,   131,
-     132,   476,   477,   478,   480,   481,   482,   474,   479,     4,
-       4,     4,     3,     8,     4,   150,   148,   148,   477,   147
+       0,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,     0,     5,     7,     9,
+     148,   149,   150,   151,   166,   167,   168,   173,     7,   182,
+       7,   188,     7,   199,     7,   276,     7,   340,     7,   354,
+       7,   371,     7,   299,     7,   323,     7,   252,     7,   427,
+     174,   169,   183,   189,   200,   277,   341,   355,   372,   300,
+     324,   253,   428,   166,   175,   176,   148,   171,   172,    10,
+     124,   133,   134,   135,   148,   181,   184,   185,   186,   454,
+     456,   458,   460,    11,    14,    15,    31,    32,    33,    34,
+      35,    36,    37,    38,    65,    66,    67,    68,    80,    83,
+      90,    98,    99,   102,   181,   190,   191,   192,   193,   194,
+     195,   196,   197,   206,   208,   232,   238,   244,   246,   260,
+     270,   293,   317,   394,   404,   416,   417,   425,    12,    13,
+     201,   202,   203,   205,     7,    47,    49,    56,    57,    58,
+      59,    60,    61,    70,    71,    78,   181,   192,   193,   194,
+     195,   278,   279,   280,   282,   284,   286,   288,   291,   292,
+     317,   334,   348,   365,   390,    48,    55,   181,   317,   342,
+     343,   344,   346,    50,    51,    52,    53,    54,   181,   317,
+     346,   356,   357,   358,   360,   361,   363,   364,    68,    72,
+      73,    74,    75,    76,    77,   181,   317,   373,   374,   375,
+     376,   378,   380,   382,   384,   386,   388,    16,    39,    41,
+      42,    44,    45,    46,   181,   222,   301,   302,   303,   304,
+     305,   306,   307,   309,   311,   313,   314,   316,    40,    43,
+     181,   222,   305,   311,   325,   326,   327,   328,   329,   331,
+     332,   333,    81,    82,   181,   254,   255,   256,   258,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   181,   429,   430,   431,   432,   434,   436,
+     437,   439,   440,   441,   444,   446,   447,   448,   449,   452,
+       6,     3,     4,     8,     3,   187,   461,   455,   457,   459,
+       4,     3,     8,   198,   207,   209,     4,     4,     4,     4,
+       4,   271,   294,   318,   233,   245,   239,   395,   247,   261,
+     405,     4,   418,   426,     3,     8,   204,     4,     3,     8,
+     397,   335,   349,   281,   283,   285,     4,     4,   289,   287,
+     366,   391,     3,     8,   345,   347,     3,     8,   359,     4,
+     362,     4,     4,     3,     8,   389,   377,   379,   381,   383,
+     385,   387,     8,     3,   308,   223,     4,   312,   310,   315,
+       4,     8,     3,   330,     4,     8,     3,   257,   259,     3,
+       8,     4,   433,   435,     4,   438,     4,     4,   442,   445,
+       4,     4,     4,   450,   453,     3,     8,   166,   166,   148,
+       4,     4,     4,     4,     4,   185,     4,     4,     4,   149,
+     149,   149,   149,   149,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   149,     4,     4,   191,     4,   151,
+     202,    69,   181,   222,   317,   398,   399,   400,   401,   402,
+       4,     4,     4,     4,     4,   149,   151,     4,     4,     4,
+       4,   279,     4,     4,   343,     4,   149,     4,   149,   149,
+     357,     4,     4,     4,     4,     4,     4,     4,   375,     4,
+       4,   149,     4,     4,     4,   151,   303,     4,   151,   327,
+       4,     4,   255,   151,     4,     4,   149,     4,   149,   149,
+       4,     4,   151,   151,   151,     4,     4,   430,     4,     7,
+       7,   166,   166,   166,     7,     7,     7,     5,     5,     5,
+       5,     5,     5,     5,     5,     7,     7,     7,     7,     5,
+     177,   403,     8,     3,     5,     5,   148,   148,   148,    62,
+      63,    64,   290,   148,     5,     7,   148,   168,   170,   148,
+     148,   177,   177,   177,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   166,   148,   148,   148,   117,
+     118,   443,   119,   120,   121,   122,   123,   151,   451,   148,
+     166,   190,   125,   462,   463,   464,   201,    16,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,   181,   210,
+     211,   212,   215,   217,   219,   221,   222,   224,   225,   226,
+     227,   228,   230,   210,     7,   272,   273,   274,     7,   295,
+     296,   297,     7,   319,   320,   321,    74,   148,   234,   235,
+     236,   237,   175,    75,    77,   236,   240,   241,   242,   243,
+     286,   396,     7,   248,   249,   250,    84,    85,    86,    87,
+      88,    89,   262,   263,   264,   265,   266,   267,   268,   269,
+      16,    94,    95,    96,    97,   181,   224,   406,   407,   408,
+     411,   412,   414,   415,   100,   101,   419,   420,   421,   423,
+     429,   178,     4,   400,     7,   336,   337,   338,     7,   350,
+     351,   352,     7,   367,   368,   369,    79,   392,     8,   465,
+       3,     8,     8,   213,   216,   218,   220,     4,     4,     4,
+       4,     4,   229,   231,     3,     8,     8,   275,     6,     3,
+     298,     6,     3,   322,     6,     3,     3,     6,     6,     3,
+       6,     3,     6,   251,     6,     3,     4,     4,     4,     4,
+       4,     4,     3,     8,   409,   413,     4,     4,     4,     3,
+       8,   422,   424,     3,     8,     8,   148,   179,   180,   148,
+     339,     6,     3,   353,     6,     3,   370,     6,     3,   393,
+       8,     4,   463,     4,     4,     4,     4,   149,   151,   149,
+     151,   149,     4,     4,   211,   278,   274,   301,   297,   325,
+     321,   235,   241,   286,   254,   250,   149,   149,   149,   149,
+     149,   149,   263,     4,     4,   149,   149,   149,   407,     4,
+       4,   420,     6,     3,   342,   338,   356,   352,   373,   369,
+       4,     5,    17,    18,    19,    20,   214,   148,   148,   148,
+     148,   148,     8,     8,     8,     8,    91,    92,    93,   410,
+     148,   148,   148,   148,     8,     8,     8,   148,     7,   466,
+     467,   468,     3,     6,   126,   128,   129,   181,   222,   469,
+     470,   471,   472,   474,   467,   475,     4,   473,     3,     8,
+       4,   149,     4,   470,     5,   148,     7,   476,   477,   478,
+       3,     6,   127,   130,   131,   132,   479,   480,   481,   483,
+     484,   485,   477,   482,     4,     4,     4,     3,     8,     4,
+     151,   149,   149,   480,   148
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   151,   153,   152,   154,   152,   155,   152,   156,   152,
-     157,   152,   158,   152,   159,   152,   160,   152,   161,   152,
-     162,   152,   163,   152,   164,   152,   165,   165,   165,   165,
-     165,   165,   165,   166,   168,   167,   169,   170,   170,   171,
-     171,   173,   172,   174,   174,   175,   175,   177,   176,   178,
-     178,   179,   179,   180,   182,   181,   183,   183,   184,   184,
-     184,   184,   184,   186,   185,   188,   187,   189,   189,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   191,   192,   193,   194,   195,   197,   196,   199,   198,
-     200,   200,   201,   201,   203,   202,   204,   206,   205,   208,
-     207,   209,   209,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,   210,   210,   212,   211,   213,   213,
-     213,   213,   215,   214,   217,   216,   219,   218,   220,   222,
-     221,   223,   224,   225,   226,   228,   227,   230,   229,   232,
-     231,   233,   233,   234,   234,   235,   236,   238,   237,   239,
-     239,   240,   240,   240,   241,   242,   244,   243,   246,   245,
-     247,   247,   248,   248,   250,   249,   252,   251,   253,   253,
-     253,   254,   254,   256,   255,   258,   257,   260,   259,   261,
-     261,   262,   262,   262,   262,   262,   262,   263,   264,   265,
-     266,   267,   268,   270,   269,   271,   271,   272,   272,   274,
-     273,   276,   275,   277,   277,   278,   278,   278,   278,   278,
-     278,   278,   278,   278,   278,   278,   278,   278,   278,   278,
-     278,   278,   280,   279,   282,   281,   284,   283,   286,   285,
-     288,   287,   289,   289,   289,   290,   291,   293,   292,   294,
-     294,   295,   295,   297,   296,   299,   298,   300,   300,   301,
-     301,   302,   302,   302,   302,   302,   302,   302,   302,   303,
-     304,   305,   307,   306,   309,   308,   311,   310,   312,   314,
-     313,   315,   317,   316,   318,   318,   319,   319,   321,   320,
-     323,   322,   324,   324,   325,   325,   326,   326,   326,   326,
-     326,   326,   327,   329,   328,   330,   331,   332,   334,   333,
-     335,   335,   336,   336,   338,   337,   340,   339,   341,   341,
-     342,   342,   342,   342,   344,   343,   346,   345,   348,   347,
-     349,   349,   350,   350,   352,   351,   354,   353,   355,   355,
-     356,   356,   356,   356,   356,   356,   356,   356,   358,   357,
-     359,   361,   360,   362,   363,   365,   364,   366,   366,   367,
-     367,   369,   368,   371,   370,   372,   372,   373,   373,   374,
-     374,   374,   374,   374,   374,   374,   374,   374,   376,   375,
-     378,   377,   380,   379,   382,   381,   384,   383,   386,   385,
-     388,   387,   390,   389,   392,   391,   394,   393,   395,   395,
-     396,   285,   397,   397,   398,   398,   399,   399,   399,   399,
-     400,   402,   401,   404,   403,   405,   405,   406,   406,   406,
-     406,   406,   406,   406,   408,   407,   409,   409,   409,   410,
-     412,   411,   413,   414,   415,   417,   416,   418,   418,   419,
-     419,   421,   420,   423,   422,   425,   424,   427,   426,   428,
-     428,   429,   429,   429,   429,   429,   429,   429,   429,   429,
-     429,   429,   429,   429,   429,   429,   430,   432,   431,   434,
-     433,   435,   437,   436,   438,   439,   441,   440,   442,   442,
-     444,   443,   445,   446,   447,   449,   448,   450,   450,   450,
-     450,   450,   452,   451,   454,   453,   456,   455,   458,   457,
-     459,   459,   460,   462,   461,   463,   463,   465,   464,   466,
-     466,   467,   467,   467,   467,   467,   468,   470,   469,   472,
-     471,   473,   473,   475,   474,   476,   476,   477,   477,   477,
-     477,   479,   478,   480,   481,   482
+       0,   152,   154,   153,   155,   153,   156,   153,   157,   153,
+     158,   153,   159,   153,   160,   153,   161,   153,   162,   153,
+     163,   153,   164,   153,   165,   153,   166,   166,   166,   166,
+     166,   166,   166,   167,   169,   168,   170,   171,   171,   172,
+     172,   174,   173,   175,   175,   176,   176,   178,   177,   179,
+     179,   180,   180,   181,   183,   182,   184,   184,   185,   185,
+     185,   185,   185,   185,   187,   186,   189,   188,   190,   190,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   192,   193,   194,   195,   196,   198,   197,   200,
+     199,   201,   201,   202,   202,   204,   203,   205,   207,   206,
+     209,   208,   210,   210,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   213,   212,   214,
+     214,   214,   214,   216,   215,   218,   217,   220,   219,   221,
+     223,   222,   224,   225,   226,   227,   229,   228,   231,   230,
+     233,   232,   234,   234,   235,   235,   236,   237,   239,   238,
+     240,   240,   241,   241,   241,   242,   243,   245,   244,   247,
+     246,   248,   248,   249,   249,   251,   250,   253,   252,   254,
+     254,   254,   255,   255,   257,   256,   259,   258,   261,   260,
+     262,   262,   263,   263,   263,   263,   263,   263,   264,   265,
+     266,   267,   268,   269,   271,   270,   272,   272,   273,   273,
+     275,   274,   277,   276,   278,   278,   279,   279,   279,   279,
+     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
+     279,   279,   279,   281,   280,   283,   282,   285,   284,   287,
+     286,   289,   288,   290,   290,   290,   291,   292,   294,   293,
+     295,   295,   296,   296,   298,   297,   300,   299,   301,   301,
+     302,   302,   303,   303,   303,   303,   303,   303,   303,   303,
+     304,   305,   306,   308,   307,   310,   309,   312,   311,   313,
+     315,   314,   316,   318,   317,   319,   319,   320,   320,   322,
+     321,   324,   323,   325,   325,   326,   326,   327,   327,   327,
+     327,   327,   327,   328,   330,   329,   331,   332,   333,   335,
+     334,   336,   336,   337,   337,   339,   338,   341,   340,   342,
+     342,   343,   343,   343,   343,   345,   344,   347,   346,   349,
+     348,   350,   350,   351,   351,   353,   352,   355,   354,   356,
+     356,   357,   357,   357,   357,   357,   357,   357,   357,   359,
+     358,   360,   362,   361,   363,   364,   366,   365,   367,   367,
+     368,   368,   370,   369,   372,   371,   373,   373,   374,   374,
+     375,   375,   375,   375,   375,   375,   375,   375,   375,   377,
+     376,   379,   378,   381,   380,   383,   382,   385,   384,   387,
+     386,   389,   388,   391,   390,   393,   392,   395,   394,   396,
+     396,   397,   286,   398,   398,   399,   399,   400,   400,   400,
+     400,   401,   403,   402,   405,   404,   406,   406,   407,   407,
+     407,   407,   407,   407,   407,   409,   408,   410,   410,   410,
+     411,   413,   412,   414,   415,   416,   418,   417,   419,   419,
+     420,   420,   422,   421,   424,   423,   426,   425,   428,   427,
+     429,   429,   430,   430,   430,   430,   430,   430,   430,   430,
+     430,   430,   430,   430,   430,   430,   430,   431,   433,   432,
+     435,   434,   436,   438,   437,   439,   440,   442,   441,   443,
+     443,   445,   444,   446,   447,   448,   450,   449,   451,   451,
+     451,   451,   451,   453,   452,   455,   454,   457,   456,   459,
+     458,   461,   460,   462,   462,   463,   465,   464,   466,   466,
+     468,   467,   469,   469,   470,   470,   470,   470,   470,   471,
+     473,   472,   475,   474,   476,   476,   478,   477,   479,   479,
+     480,   480,   480,   480,   482,   481,   483,   484,   485
   };
 
   const unsigned char
@@ -4014,54 +4036,54 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     0,     4,     1,     0,     1,     3,
        5,     0,     4,     0,     1,     1,     3,     0,     4,     0,
        1,     1,     3,     2,     0,     4,     1,     3,     1,     1,
-       1,     1,     1,     0,     6,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     0,     6,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     3,     3,     3,     3,     0,     6,     0,     4,
-       1,     3,     1,     1,     0,     4,     3,     0,     6,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     3,     0,
-       4,     3,     3,     3,     3,     0,     4,     0,     4,     0,
-       6,     1,     3,     1,     1,     1,     1,     0,     6,     1,
-       3,     1,     1,     1,     1,     1,     0,     6,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     0,     4,     0,     4,     0,     6,     1,
-       3,     1,     1,     1,     1,     1,     1,     3,     3,     3,
-       3,     3,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     3,     3,     3,     3,     3,     0,     6,     0,
+       4,     1,     3,     1,     1,     0,     4,     3,     0,     6,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     3,
+       0,     4,     3,     3,     3,     3,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     1,     1,     1,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     0,     6,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     1,     1,     1,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     1,     0,     4,     0,     4,     0,     4,     1,     0,
-       4,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     1,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     4,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     0,     4,     0,     6,     1,     3,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     1,     3,
-       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
-       1,     0,     4,     0,     4,     0,     6,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
-       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
-       0,     4,     3,     3,     3,     0,     4,     1,     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,     1,     1,     1,
-       1,     0,     4,     3,     3,     3
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     1,     1,     1,     3,     3,     0,     6,
+       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     0,     4,     0,     4,     0,     4,     1,
+       0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     0,     4,     1,     1,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     3,     0,     4,     3,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     4,     0,     6,     1,
+       3,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
+       3,     0,     4,     3,     3,     3,     0,     6,     1,     3,
+       1,     1,     0,     4,     0,     4,     0,     6,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     0,     4,
+       0,     4,     3,     0,     4,     3,     3,     0,     4,     1,
+       1,     0,     4,     3,     3,     3,     0,     4,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     6,     1,     3,     1,     0,     6,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     3,
+       0,     4,     0,     6,     1,     3,     0,     4,     1,     3,
+       1,     1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -4109,14 +4131,14 @@ namespace isc { namespace dhcp {
   "\"when-not-present\"", "\"Logging\"", "\"loggers\"",
   "\"output_options\"", "\"output\"", "\"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",
+  "\"Control-agent\"", "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",
@@ -4186,12 +4208,12 @@ namespace isc { namespace dhcp {
   "always_include_fqdn", "override_no_update", "override_client_update",
   "replace_client_name", "$@97", "replace_client_name_value",
   "generated_prefix", "$@98", "dhcp4_json_object", "$@99",
-  "dhcpddns_json_object", "$@100", "logging_object", "$@101",
-  "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_list", "output_params", "output", "$@107", "flush",
+  "dhcpddns_json_object", "$@100", "control_agent_json_object", "$@101",
+  "logging_object", "$@102", "logging_params", "logging_param", "loggers",
+  "$@103", "loggers_entries", "logger_entry", "$@104", "logger_params",
+  "logger_param", "debuglevel", "severity", "$@105", "output_options_list",
+  "$@106", "output_options_list_content", "output_entry", "$@107",
+  "output_params_list", "output_params", "output", "$@108", "flush",
   "maxsize", "maxver", YY_NULLPTR
   };
 
@@ -4199,60 +4221,60 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   232,   232,   232,   233,   233,   234,   234,   235,   235,
-     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
-     241,   241,   242,   242,   243,   243,   251,   252,   253,   254,
-     255,   256,   257,   260,   265,   265,   276,   279,   280,   283,
-     287,   294,   294,   301,   302,   305,   309,   316,   316,   323,
-     324,   327,   331,   342,   352,   352,   364,   365,   369,   370,
-     371,   372,   373,   376,   376,   393,   393,   401,   402,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
-     428,   431,   436,   441,   446,   451,   456,   456,   466,   466,
-     474,   475,   478,   479,   482,   482,   492,   498,   498,   508,
-     508,   518,   519,   522,   523,   524,   525,   526,   527,   528,
-     529,   530,   531,   532,   533,   534,   537,   537,   544,   545,
-     546,   547,   550,   550,   558,   558,   566,   566,   574,   579,
-     579,   587,   592,   597,   602,   607,   607,   615,   615,   624,
-     624,   634,   635,   638,   639,   642,   647,   652,   652,   662,
-     663,   666,   667,   668,   671,   676,   683,   683,   693,   693,
-     703,   704,   707,   708,   711,   711,   719,   719,   727,   728,
-     729,   732,   733,   736,   736,   744,   744,   752,   752,   762,
-     763,   766,   767,   768,   769,   770,   771,   774,   779,   784,
-     789,   794,   799,   807,   807,   820,   821,   824,   825,   832,
-     832,   855,   855,   864,   865,   869,   870,   871,   872,   873,
-     874,   875,   876,   877,   878,   879,   880,   881,   882,   883,
-     884,   885,   888,   888,   896,   896,   904,   904,   912,   912,
-     920,   920,   927,   928,   929,   932,   937,   946,   946,   958,
-     959,   962,   963,   968,   968,   979,   979,   989,   990,   993,
-     994,   997,   998,   999,  1000,  1001,  1002,  1003,  1004,  1007,
-    1009,  1014,  1016,  1016,  1024,  1024,  1032,  1032,  1040,  1042,
-    1042,  1050,  1059,  1059,  1071,  1072,  1077,  1078,  1083,  1083,
-    1094,  1094,  1105,  1106,  1111,  1112,  1117,  1118,  1119,  1120,
-    1121,  1122,  1125,  1127,  1127,  1135,  1137,  1139,  1147,  1147,
-    1159,  1160,  1163,  1164,  1167,  1167,  1175,  1175,  1183,  1184,
-    1187,  1188,  1189,  1190,  1193,  1193,  1201,  1201,  1211,  1211,
-    1223,  1224,  1227,  1228,  1231,  1231,  1239,  1239,  1247,  1248,
-    1251,  1252,  1253,  1254,  1255,  1256,  1257,  1258,  1261,  1261,
-    1269,  1274,  1274,  1282,  1287,  1295,  1295,  1305,  1306,  1309,
-    1310,  1313,  1313,  1321,  1321,  1329,  1330,  1333,  1334,  1338,
-    1339,  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1349,  1349,
-    1359,  1359,  1369,  1369,  1377,  1377,  1385,  1385,  1393,  1393,
-    1401,  1401,  1414,  1414,  1424,  1424,  1435,  1435,  1445,  1446,
-    1449,  1449,  1457,  1458,  1461,  1462,  1465,  1466,  1467,  1468,
-    1471,  1473,  1473,  1484,  1484,  1494,  1495,  1498,  1499,  1500,
-    1501,  1502,  1503,  1504,  1507,  1507,  1514,  1515,  1516,  1519,
-    1524,  1524,  1532,  1537,  1544,  1551,  1551,  1561,  1562,  1565,
-    1566,  1569,  1569,  1577,  1577,  1587,  1587,  1597,  1597,  1605,
-    1606,  1609,  1610,  1611,  1612,  1613,  1614,  1615,  1616,  1617,
-    1618,  1619,  1620,  1621,  1622,  1623,  1626,  1631,  1631,  1639,
-    1639,  1647,  1652,  1652,  1660,  1665,  1670,  1670,  1678,  1679,
-    1682,  1682,  1690,  1695,  1700,  1705,  1705,  1713,  1716,  1719,
-    1722,  1725,  1731,  1731,  1741,  1741,  1748,  1748,  1760,  1760,
-    1773,  1774,  1778,  1782,  1782,  1794,  1795,  1799,  1799,  1807,
-    1808,  1811,  1812,  1813,  1814,  1815,  1818,  1823,  1823,  1831,
-    1831,  1841,  1842,  1845,  1845,  1853,  1854,  1857,  1858,  1859,
-    1860,  1863,  1863,  1871,  1876,  1881
+       0,   233,   233,   233,   234,   234,   235,   235,   236,   236,
+     237,   237,   238,   238,   239,   239,   240,   240,   241,   241,
+     242,   242,   243,   243,   244,   244,   252,   253,   254,   255,
+     256,   257,   258,   261,   266,   266,   277,   280,   281,   284,
+     288,   295,   295,   302,   303,   306,   310,   317,   317,   324,
+     325,   328,   332,   343,   353,   353,   365,   366,   370,   371,
+     372,   373,   374,   375,   378,   378,   395,   395,   403,   404,
+     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
+     419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+     429,   430,   433,   438,   443,   448,   453,   458,   458,   468,
+     468,   476,   477,   480,   481,   484,   484,   494,   500,   500,
+     510,   510,   520,   521,   524,   525,   526,   527,   528,   529,
+     530,   531,   532,   533,   534,   535,   536,   539,   539,   546,
+     547,   548,   549,   552,   552,   560,   560,   568,   568,   576,
+     581,   581,   589,   594,   599,   604,   609,   609,   617,   617,
+     626,   626,   636,   637,   640,   641,   644,   649,   654,   654,
+     664,   665,   668,   669,   670,   673,   678,   685,   685,   695,
+     695,   705,   706,   709,   710,   713,   713,   721,   721,   729,
+     730,   731,   734,   735,   738,   738,   746,   746,   754,   754,
+     764,   765,   768,   769,   770,   771,   772,   773,   776,   781,
+     786,   791,   796,   801,   809,   809,   822,   823,   826,   827,
+     834,   834,   857,   857,   866,   867,   871,   872,   873,   874,
+     875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
+     885,   886,   887,   890,   890,   898,   898,   906,   906,   914,
+     914,   922,   922,   929,   930,   931,   934,   939,   948,   948,
+     960,   961,   964,   965,   970,   970,   981,   981,   991,   992,
+     995,   996,   999,  1000,  1001,  1002,  1003,  1004,  1005,  1006,
+    1009,  1011,  1016,  1018,  1018,  1026,  1026,  1034,  1034,  1042,
+    1044,  1044,  1052,  1061,  1061,  1073,  1074,  1079,  1080,  1085,
+    1085,  1096,  1096,  1107,  1108,  1113,  1114,  1119,  1120,  1121,
+    1122,  1123,  1124,  1127,  1129,  1129,  1137,  1139,  1141,  1149,
+    1149,  1161,  1162,  1165,  1166,  1169,  1169,  1177,  1177,  1185,
+    1186,  1189,  1190,  1191,  1192,  1195,  1195,  1203,  1203,  1213,
+    1213,  1225,  1226,  1229,  1230,  1233,  1233,  1241,  1241,  1249,
+    1250,  1253,  1254,  1255,  1256,  1257,  1258,  1259,  1260,  1263,
+    1263,  1271,  1276,  1276,  1284,  1289,  1297,  1297,  1307,  1308,
+    1311,  1312,  1315,  1315,  1323,  1323,  1331,  1332,  1335,  1336,
+    1340,  1341,  1342,  1343,  1344,  1345,  1346,  1347,  1348,  1351,
+    1351,  1361,  1361,  1371,  1371,  1379,  1379,  1387,  1387,  1395,
+    1395,  1403,  1403,  1416,  1416,  1426,  1426,  1437,  1437,  1447,
+    1448,  1451,  1451,  1459,  1460,  1463,  1464,  1467,  1468,  1469,
+    1470,  1473,  1475,  1475,  1486,  1486,  1496,  1497,  1500,  1501,
+    1502,  1503,  1504,  1505,  1506,  1509,  1509,  1516,  1517,  1518,
+    1521,  1526,  1526,  1534,  1539,  1546,  1553,  1553,  1563,  1564,
+    1567,  1568,  1571,  1571,  1579,  1579,  1589,  1589,  1599,  1599,
+    1607,  1608,  1611,  1612,  1613,  1614,  1615,  1616,  1617,  1618,
+    1619,  1620,  1621,  1622,  1623,  1624,  1625,  1628,  1633,  1633,
+    1641,  1641,  1649,  1654,  1654,  1662,  1667,  1672,  1672,  1680,
+    1681,  1684,  1684,  1692,  1697,  1702,  1707,  1707,  1715,  1718,
+    1721,  1724,  1727,  1733,  1733,  1743,  1743,  1750,  1750,  1757,
+    1757,  1770,  1770,  1783,  1784,  1788,  1792,  1792,  1804,  1805,
+    1809,  1809,  1817,  1818,  1821,  1822,  1823,  1824,  1825,  1828,
+    1833,  1833,  1841,  1841,  1851,  1852,  1855,  1855,  1863,  1864,
+    1867,  1868,  1869,  1870,  1873,  1873,  1881,  1886,  1891
   };
 
   // Print the state stack on the debug stream.
@@ -4287,8 +4309,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4291 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1886 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4313 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1896 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index 085dd1cc9599f18590da18e343f9082fc10f3608..3694fa931844fd009f647805517e32b9bc45be65 100644 (file)
@@ -479,22 +479,23 @@ namespace isc { namespace dhcp {
         TOKEN_MAXVER = 387,
         TOKEN_DHCP4 = 388,
         TOKEN_DHCPDDNS = 389,
-        TOKEN_TOPLEVEL_JSON = 390,
-        TOKEN_TOPLEVEL_DHCP6 = 391,
-        TOKEN_SUB_DHCP6 = 392,
-        TOKEN_SUB_INTERFACES6 = 393,
-        TOKEN_SUB_SUBNET6 = 394,
-        TOKEN_SUB_POOL6 = 395,
-        TOKEN_SUB_PD_POOL = 396,
-        TOKEN_SUB_RESERVATION = 397,
-        TOKEN_SUB_OPTION_DEF = 398,
-        TOKEN_SUB_OPTION_DATA = 399,
-        TOKEN_SUB_HOOKS_LIBRARY = 400,
-        TOKEN_SUB_DHCP_DDNS = 401,
-        TOKEN_STRING = 402,
-        TOKEN_INTEGER = 403,
-        TOKEN_FLOAT = 404,
-        TOKEN_BOOLEAN = 405
+        TOKEN_CONTROL_AGENT = 390,
+        TOKEN_TOPLEVEL_JSON = 391,
+        TOKEN_TOPLEVEL_DHCP6 = 392,
+        TOKEN_SUB_DHCP6 = 393,
+        TOKEN_SUB_INTERFACES6 = 394,
+        TOKEN_SUB_SUBNET6 = 395,
+        TOKEN_SUB_POOL6 = 396,
+        TOKEN_SUB_PD_POOL = 397,
+        TOKEN_SUB_RESERVATION = 398,
+        TOKEN_SUB_OPTION_DEF = 399,
+        TOKEN_SUB_OPTION_DATA = 400,
+        TOKEN_SUB_HOOKS_LIBRARY = 401,
+        TOKEN_SUB_DHCP_DDNS = 402,
+        TOKEN_STRING = 403,
+        TOKEN_INTEGER = 404,
+        TOKEN_FLOAT = 405,
+        TOKEN_BOOLEAN = 406
       };
     };
 
@@ -1141,6 +1142,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_DHCPDDNS (const location_type& l);
 
+    static inline
+    symbol_type
+    make_CONTROL_AGENT (const location_type& l);
+
     static inline
     symbol_type
     make_TOPLEVEL_JSON (const location_type& l);
@@ -1410,12 +1415,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 795,     ///< Last index in yytable_.
-      yynnts_ = 332,  ///< Number of nonterminal symbols.
+      yylast_ = 800,     ///< Last index in yytable_.
+      yynnts_ = 334,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 151  ///< Number of tokens.
+      yyntokens_ = 152  ///< Number of tokens.
     };
 
 
@@ -1472,9 +1477,9 @@ namespace isc { namespace dhcp {
      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,   144,
-     145,   146,   147,   148,   149,   150
+     145,   146,   147,   148,   149,   150,   151
     };
-    const unsigned int user_token_number_max_ = 405;
+    const unsigned int user_token_number_max_ = 406;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1507,29 +1512,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1550,29 +1555,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1652,29 +1657,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1701,29 +1706,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 165: // value
-      case 169: // map_value
-      case 213: // db_type
-      case 289: // hr_mode
-      case 409: // duid_type
-      case 442: // ncr_protocol_value
-      case 450: // replace_client_name_value
+      case 166: // value
+      case 170: // map_value
+      case 214: // db_type
+      case 290: // hr_mode
+      case 410: // duid_type
+      case 443: // ncr_protocol_value
+      case 451: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 150: // "boolean"
+      case 151: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 149: // "floating point"
+      case 150: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 148: // "integer"
+      case 149: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 147: // "constant string"
+      case 148: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1797,7 +1802,7 @@ namespace isc { namespace dhcp {
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405
+     405,   406
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2600,6 +2605,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_DHCPDDNS, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTROL_AGENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_TOPLEVEL_JSON (const location_type& l)
   {
@@ -2699,7 +2710,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2703 "dhcp6_parser.h" // lalr1.cc:377
+#line 2714 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 5f8f15d370f42dee5e13dbd581f16c1423d3cff1..989c34d989da499f04de4f07dacd959274fa49a9 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061112
+// Generated 201707141117
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 33b298ad704307096e4c8210c618f73e3fbcdacc..790934bc9a1db1b50499c7bc1dcf68a570d0eb2d 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061112
+// Generated 201707141117
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index f153a3ee2db499fdb15826881833e1db66ac7298..91b7cd13eb0684bb6cee15ad93233b214cac39d5 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201707061112
+// Generated 201707141117
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++