]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
generated parsers
authorRazvan Becheriu <razvan@isc.org>
Fri, 22 Mar 2019 13:48:13 +0000 (15:48 +0200)
committerRazvan Becheriu <razvan@isc.org>
Fri, 22 Mar 2019 13:48:13 +0000 (15:48 +0200)
12 files changed:
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 39d9efb5418540d3456a390a17d109e8d0e72ea5..6c8c87747cf7153c5ac2d551e6d9671884bc80b2 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 178
-#define YY_END_OF_BUFFER 179
+#define YY_NUM_RULES 180
+#define YY_END_OF_BUFFER 181
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1507] =
+static const flex_int16_t yy_accept[1532] =
     {   0,
-      171,  171,    0,    0,    0,    0,    0,    0,    0,    0,
-      179,  177,   10,   11,  177,    1,  171,  168,  171,  171,
-      177,  170,  169,  177,  177,  177,  177,  177,  164,  165,
-      177,  177,  177,  166,  167,    5,    5,    5,  177,  177,
-      177,   10,   11,    0,    0,  160,    0,    0,    0,    0,
+      173,  173,    0,    0,    0,    0,    0,    0,    0,    0,
+      181,  179,   10,   11,  179,    1,  173,  170,  173,  173,
+      179,  172,  171,  179,  179,  179,  179,  179,  166,  167,
+      179,  179,  179,  168,  169,    5,    5,    5,  179,  179,
+      179,   10,   11,    0,    0,  162,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,
-      171,  171,    0,  170,  171,    3,    2,    6,    0,  171,
+      173,  173,    0,  172,  173,    3,    2,    6,    0,  173,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
 
-        0,  161,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  163,    0,    0,    0,
+        0,  163,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  165,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -724,150 +724,153 @@ static const flex_int16_t yy_accept[1507] =
         0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  162,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  164,    0,    0,    0,    0,    0,
         0,    0,    0,    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,    0,    0,    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,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  176,  174,    0,  173,  172,    0,    0,
+        0,    0,    0,  178,  176,    0,  175,  174,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  140,    0,
-      139,    0,    0,   73,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   34,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  142,    0,
+      141,    0,    0,   75,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   70,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   17,    0,    0,    0,
+        0,    0,    0,   72,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   17,    0,    0,
         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,  175,  172,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  141,    0,
-        0,  143,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   74,    0,    0,    0,    0,    0,    0,   59,    0,
-        0,    0,    0,    0,   94,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   37,    0,    0,    0,    0,
+        0,    0,    0,   18,    0,    0,    0,    0,  177,  174,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   58,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   62,    0,   38,
+      143,    0,    0,  145,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   76,    0,    0,    0,    0,    0,    0,
+        0,   61,    0,    0,    0,    0,    0,   96,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   60,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       64,    0,   38,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   91,   30,    0,
-        0,   35,    0,    0,    0,    0,    0,    0,    0,    0,
-       12,  148,    0,  145,    0,  144,    0,    0,    0,  104,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   93,   30,    0,    0,   35,    0,    0,    0,    0,
+        0,    0,    0,    0,   12,  150,    0,  147,    0,  146,
+        0,    0,    0,  106,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   84,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   86,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   32,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   61,
-
-        0,    0,    0,    0,    0,    0,    0,    0,  105,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    7,    0,    0,  146,    0,    0,    0,    0,    0,
+        0,   32,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   63,    0,    0,    0,    0,    0,
+        0,    0,    0,  107,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  102,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
+      148,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   72,    0,    0,    0,
+        0,    0,    0,   74,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   86,    0,    0,    0,    0,
-        0,    0,    0,    0,   82,    0,    0,    0,    0,    0,
+        0,    0,   88,    0,    0,    0,    0,    0,    0,    0,
 
+        0,   84,    0,    0,    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,    0,    0,    0,    0,    0,
-       65,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   79,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
+        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   66,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   98,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  110,   80,    0,
-        0,    0,    0,   85,   31,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   39,    0,    0,    0,
+        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  112,   82,    0,    0,
+        0,    0,   87,   31,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,   39,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,    0,    0,  149,    0,    0,    0,    0,    0,
+        0,    0,   56,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  151,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   69,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   99,    0,    0,    0,
-        0,    0,   42,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   71,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  101,    0,    0,
+        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   36,    0,    0,    0,   29,    0,    0,    0,    0,
 
+        0,    0,   36,    0,    0,    0,   29,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   87,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   89,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   96,    0,    0,    0,
-        0,    0,    0,    0,    0,  123,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  125,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    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,   23,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  128,    0,    0,
-
-      126,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  153,    0,    0,    0,    0,
-        0,    0,    0,   97,    0,    0,    0,    0,    0,    0,
-      101,   83,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   95,   22,    0,
-      106,    0,    0,    0,    0,    0,    0,    0,    0,  132,
-        0,    0,    0,    0,   56,    0,    0,    0,    0,    0,
-      109,   33,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
-        0,   77,   78,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,   60,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
+        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  157,    0,
-       57,   71,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   50,    0,    0,    0,    0,    0,    0,    0,  129,
-        0,  127,    0,  121,  120,    0,   46,    0,   21,    0,
-        0,    0,    0,    0,  142,    0,    0,    0,   90,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  118,    0,
+      130,    0,    0,    0,  128,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  155,
+        0,    0,    0,    0,    0,    0,    0,   99,    0,    0,
+        0,    0,    0,    0,    0,  103,   85,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   97,   22,    0,  108,    0,    0,    0,    0,
+        0,    0,    0,    0,  134,    0,    0,    0,    0,   58,
+        0,    0,    0,    0,    0,  111,   33,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-      107,   15,    0,   40,    0,    0,    0,    0,    0,  131,
-        0,    0,    0,    0,    0,    0,   51,    0,    0,  102,
-        0,    0,    0,    0,   93,    0,    0,    0,    0,    0,
-        0,   63,    0,  151,    0,  150,    0,  156,    0,    0,
+        0,    0,    0,   55,    0,    0,    0,   79,   80,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   62,
+        0,    0,    0,    0,    0,    0,    0,   43,    0,    0,
+        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  159,    0,   59,   73,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   52,    0,
+        0,    0,    0,    0,    0,    0,  131,    0,    0,  129,
+        0,  123,  122,    0,   48,    0,   21,    0,    0,    0,
+        0,    0,  144,    0,    0,    0,   92,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  109,   15,
+        0,   40,    0,    0,    0,    0,    0,  133,    0,    0,
+        0,    0,    0,    0,   53,    0,    0,  104,    0,    0,
+        0,    0,   95,    0,    0,    0,    0,    0,    0,    0,
+       65,    0,  153,    0,  152,    0,  158,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   14,
-        0,    0,   45,    0,    0,    0,    0,  159,    0,   88,
-       27,    0,    0,   47,  119,    0,    0,    0,  154,  124,
+        0,    0,    0,    0,    0,    0,    0,    0,   14,    0,
 
+        0,    0,   47,    0,    0,    0,    0,  161,    0,   90,
+       27,    0,    0,   49,  121,    0,    0,    0,  156,  126,
         0,    0,    0,    0,    0,    0,    0,    0,   25,    0,
-        0,   24,    0,  130,    0,    0,    0,    0,    0,   81,
+        0,   24,    0,  132,    0,    0,    0,    0,    0,   83,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   51,    0,    0,    0,    0,   41,
+        0,    0,    0,    0,    0,    0,    0,  110,    0,    0,
+        0,   26,    0,  157,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   46,    0,    0,   20,    0,
+      160,   57,    0,  154,  149,    0,   28,    0,    0,   16,
+
+        0,    0,  138,    0,    0,    0,    0,    0,    0,  118,
+        0,   94,    0,    0,    0,    0,    0,    0,    0,    0,
+       70,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  139,   13,    0,    0,    0,    0,    0,  127,    0,
+        0,    0,    0,    0,    0,    0,    0,  124,    0,    0,
+        0,    0,    0,  117,    0,   19,    0,  135,    0,    0,
+        0,    0,   44,    0,   78,    0,    0,    0,  116,    0,
+        0,   50,    0,    0,   45,  137,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   49,    0,    0,    0,    0,   41,    0,
-        0,    0,    0,    0,    0,    0,  108,    0,    0,    0,
-       26,    0,  155,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   44,    0,    0,   20,  158,   55,
-        0,  152,  147,    0,   28,    0,    0,   16,    0,    0,
-      136,    0,    0,    0,    0,    0,    0,  116,    0,   92,
-        0,    0,    0,    0,    0,    0,    0,    0,   68,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,  137,   13,
-        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
-        0,    0,    0,  122,    0,    0,    0,    0,    0,  115,
-        0,   19,    0,  133,    0,    0,    0,    0,    0,   76,
-        0,    0,    0,  114,    0,    0,   48,    0,    0,   43,
-      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,  134,    0,   89,    0,
-        0,    0,    0,    0,    0,  112,  117,   52,    0,    0,
-        0,    0,  111,    0,    0,  138,    0,    0,    0,    0,
 
-        0,   75,    0,    0,  113,    0
+        0,  136,    0,   91,    0,    0,    0,    0,    0,    0,
+      114,  119,   54,    0,    0,    0,    0,  113,    0,    0,
+      140,    0,    0,    0,    0,    0,   77,    0,    0,  115,
+        0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -914,357 +917,363 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1519] =
+static const flex_int16_t yy_base[1544] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     1907, 1908,   34, 1903,  145,    0,  207, 1908,  214,  221,
-       13,  228, 1908, 1883,  118,   25,    2,    6, 1908, 1908,
-       73,   11,   17, 1908, 1908, 1908,  104, 1891, 1844,    0,
-     1881,  108, 1898,   24,  262, 1908, 1840,   67, 1839, 1845,
-       84,   75, 1837,   88,  226,   91,   89,  290,  196, 1836,
-      206,  285,  206,  210,  219,   60,  223, 1845,  247,  290,
-      315,  303,  231, 1828,  297,  321,  343,  324, 1847,    0,
-      380,  387,  401,  408,  424, 1908,    0, 1908,  429,  438,
-      216,  249,  220,  315,  335,  266, 1908, 1844, 1885, 1908,
-
-      342, 1908,  421, 1872,  312, 1830, 1840,  400,   10, 1835,
-      361,  323,  370,  387,  359, 1880,    0,  474,  392, 1822,
-     1819, 1823, 1825, 1818, 1826,  412, 1822, 1811, 1812,   78,
-     1828, 1811, 1820, 1820,   95, 1811,  400, 1812, 1810,  405,
-     1858, 1862, 1802, 1855, 1795, 1818, 1815, 1815, 1809,  310,
-     1802, 1795, 1800, 1794,  436, 1805, 1798, 1789, 1788, 1802,
-      186, 1788,  413, 1804, 1781,  470,  286,  400, 1802, 1799,
-     1800, 1798, 1833, 1832,  445, 1778, 1780,  448, 1772, 1789,
-     1781,    0,  447,  447,  458,  471,  462,  483, 1780, 1908,
-        0, 1825,  490, 1770, 1773,  476,  482, 1781,  488, 1826,
-
-      499, 1825,  496, 1824, 1908,  542, 1823,  507, 1782, 1774,
-     1761, 1777, 1776, 1773, 1772, 1763,  486, 1814, 1808, 1772,
-     1751, 1759, 1754, 1768, 1764, 1752, 1764, 1764, 1755, 1739,
-     1743, 1756, 1758, 1755, 1747, 1737, 1755, 1908, 1750, 1753,
-     1734, 1733, 1785, 1732, 1742, 1745,  483, 1741, 1729, 1740,
-     1778, 1723, 1781, 1716, 1731,  533, 1721, 1737, 1718, 1717,
-     1723, 1714, 1713, 1720, 1770, 1726, 1725, 1719,  482, 1726,
-     1721, 1713, 1703, 1718, 1717, 1712, 1716, 1697, 1713, 1699,
-     1705, 1712, 1700, 1697, 1696,  537, 1691, 1705, 1748, 1707,
-      366, 1698,  525, 1908, 1908,  527, 1908, 1908, 1685,    0,
-
-      241,  530, 1687,  546,  534, 1743, 1694,  511, 1908, 1741,
-     1908, 1735,  587, 1908,  537, 1675, 1684, 1732, 1676, 1675,
-     1681, 1733, 1688, 1683, 1686,  516, 1908, 1684, 1728, 1681,
-     1678,  565, 1684, 1724, 1718, 1671, 1666, 1663, 1714, 1671,
-     1660, 1676, 1710, 1656,  610, 1670, 1655, 1668, 1655, 1665,
-     1660, 1667, 1662, 1658,  327, 1656, 1659, 1654, 1650, 1700,
-      522, 1694, 1908, 1693, 1643, 1642, 1641, 1634, 1636, 1640,
-     1629, 1642,  575, 1689, 1642, 1639, 1908, 1642, 1631, 1631,
-     1643,  536, 1618, 1619, 1640,  568, 1622, 1673, 1618, 1632,
-     1631, 1617, 1629, 1628, 1627, 1626, 1625, 1624,  550, 1667,
-
-     1666, 1908, 1608, 1607,  613, 1620, 1908, 1908, 1619,    0,
-     1608, 1600,  561, 1605, 1658, 1657, 1613, 1655, 1908, 1601,
-     1653, 1908,  594,  661,  581, 1652, 1594, 1605, 1598, 1600,
-     1588, 1908, 1593, 1599, 1602, 1601, 1588, 1587, 1908, 1589,
-     1586,  578, 1584, 1586, 1908, 1594, 1591, 1576, 1589, 1584,
-      635, 1591, 1579, 1572, 1623, 1908, 1570, 1586, 1620, 1581,
-     1578, 1579, 1581, 1615, 1566, 1561, 1560, 1611, 1555, 1570,
-     1548, 1555, 1560, 1610, 1908, 1555, 1551, 1549, 1558, 1552,
-     1559, 1543, 1543, 1553, 1556, 1545, 1540, 1908, 1597, 1908,
-     1539, 1550, 1535, 1540, 1549, 1543, 1537, 1546, 1588, 1582,
-
-     1544, 1527, 1527, 1522, 1542, 1517, 1523, 1522, 1530, 1534,
-     1517, 1575, 1515, 1516, 1515, 1527, 1516, 1908, 1908, 1516,
-     1514, 1908, 1525, 1561, 1521,    0, 1505, 1522, 1562, 1510,
-     1908, 1908, 1507, 1908, 1513, 1908,  563,  585,  638, 1908,
-     1510, 1509, 1516, 1496, 1549, 1494, 1547, 1492, 1491, 1498,
-     1491, 1503, 1502, 1502, 1484, 1489, 1530, 1497, 1489, 1534,
-     1478, 1494, 1493, 1908, 1478, 1475, 1533, 1488, 1480, 1486,
-     1477, 1485, 1470, 1486, 1468, 1482,  447, 1464, 1458, 1463,
-     1478, 1475, 1476, 1473, 1516, 1471, 1908, 1457, 1459, 1468,
-     1466, 1505, 1504, 1455,   16, 1464, 1447, 1448, 1445, 1908,
-
-     1459, 1438, 1457, 1449, 1494, 1446, 1453, 1491, 1908, 1436,
-     1450, 1434, 1448, 1451, 1432, 1484, 1483, 1482, 1427, 1480,
-     1479, 1908,  581, 1441, 1440, 1437, 1437, 1435, 1418, 1423,
-     1425, 1908, 1431, 1421, 1908, 1468, 1414, 1471,  592,  558,
-     1412, 1410, 1417, 1408, 1461,  602, 1465,  582, 1459, 1458,
-     1457, 1409, 1399, 1454, 1405, 1413, 1414, 1450, 1411, 1405,
-     1392, 1400, 1445, 1449, 1404, 1403, 1908, 1404, 1397, 1386,
-     1399, 1402, 1397, 1398, 1395, 1394, 1390, 1396, 1391, 1434,
-     1433, 1381, 1371,  594, 1430, 1908, 1429, 1376, 1368, 1369,
-     1420, 1381, 1368, 1379, 1908, 1367, 1376, 1375, 1375, 1417,
-
-     1358, 1367, 1372, 1349, 1353, 1406, 1368, 1350, 1360, 1402,
-     1401, 1400, 1345, 1398,  172,  598,  607,  213,  275,  599,
-     1908,  370,  361,  383,  525,  582,  594,  582,  603,  609,
-      602,  616,  621,  664, 1908,  660,  637,  630,  635,  632,
-      633,  636,  634,  643, 1908,  633,  648,  630,  635,  633,
-      652,  649,  639,  638,  637,  648,  644,  700,  663,  653,
-      669,  659, 1908,  669,  669,  662,  673,  671,  716,  658,
-      660,  675,  662,  722,  679,  665,  668, 1908, 1908,  678,
-      683,  688,  676, 1908, 1908,  690,  677,  671,  676,  694,
-      681,  731,  682,  734,  683,  741, 1908,  686,  690,  685,
-
-      745,  698,  688,  689,  685,  698,  709,  693,  711,  706,
-      707,  709,  702,  704,  705,  705,  707,  722,  763,  720,
-      725,  702, 1908,  714,  715,  729,  719,  766,  724,  714,
-      729,  730,  717,  731, 1908,  750,  758,  727,  722,  777,
-      778,  741,  745,  786,  734,  729,  741,  736,  737,  733,
-      742,  737,  795,  752,  753,  744, 1908,  746,  757,  742,
-      759,  753,  801,  767,  751,  752, 1908,  768,  771,  754,
-      813,  756, 1908,  773,  776,  756,  774,  814,  772,  768,
-      763,  781,  780,  781,  767,  782,  774,  781,  771,  789,
-      774, 1908,  782,  788,  835, 1908,  784,  789,  833,  784,
-
-      796,  790,  795,  793,  791,  793,  803,  848,  792,  792,
-      851,  795,  807, 1908,  795,  803,  801,  798,  799,  808,
-      820,  804,  809,  819,  820,  825,  866,  823,  839,  844,
-      826,  824,  820,  815,  875,  818, 1908,  818,  838,  827,
-      832,  839,  882,  883,  830, 1908,  880,  827,  830,  829,
-      849,  846,  851,  852,  838,  846,  855,  837,  852,  859,
-      901, 1908,  902,  903,  854,  864,  866,  855,  851,  858,
-      867,  912,  859,  857,  859,  876,  917,  867,  866,  872,
-      870,  868,  923,  924,  920, 1908,  882,  875,  866,  885,
-      873,  883,  880,  885,  881,  894,  894, 1908,  878,  879,
-
-     1908,  880,  940,  879,  898,  899,  944,  945,  898,  884,
-      905,  904,  888,  893,  911, 1908,  901,  934,  925,  957,
-      897,  919,  916, 1908,  903,  905,  922,  920,  912,  916,
-     1908, 1908,  926,  926,  964,  911,  966,  913,  973,  916,
-      927,  919,  925,  922,  940,  941,  942, 1908, 1908,  941,
-     1908,  927,  928,  947,  937,  930,  942,  986,  950, 1908,
-      942,  994,  935,  996, 1908,  997,  939,  945,  952,  996,
-     1908, 1908,  944,  946,  960,  965,  948, 1007,  964,  965,
-      966, 1006,  958,  963, 1014,  962, 1016, 1908,  963, 1018,
-     1019, 1908, 1908,  959, 1021,  980, 1023,  965,  977,  982,
-
-      968,  998, 1029, 1908,  986,  979,  988, 1033,  980,  995,
-      982,  978,  994,  999,  986,  982, 1042,  995, 1000, 1908,
-     1001,  994, 1003, 1004, 1001,  991,  994,  994,  999, 1054,
-     1055,  999, 1058, 1054,  995, 1010, 1003, 1063, 1908, 1017,
-     1908, 1908, 1022, 1014, 1024, 1010, 1011, 1072, 1016, 1026,
-     1075, 1908, 1023, 1024, 1026, 1028, 1081, 1022, 1025, 1908,
-     1044, 1908, 1028, 1908, 1908, 1042, 1908, 1036, 1908, 1088,
-     1037, 1090, 1091, 1071, 1908, 1093, 1050, 1091, 1908, 1039,
-     1047, 1041, 1040, 1043, 1043, 1044, 1051, 1041, 1908, 1063,
-     1049, 1050, 1065, 1065, 1068, 1068, 1065, 1109, 1072, 1064,
-
-     1908, 1908, 1074, 1908, 1071, 1076, 1077, 1074, 1118, 1908,
-     1067, 1068, 1068, 1074, 1073, 1084, 1908, 1125, 1072, 1908,
-     1073, 1073, 1075, 1081, 1908, 1083, 1137, 1086, 1089, 1140,
-     1101, 1908, 1098, 1908, 1095, 1908, 1118, 1908, 1145, 1087,
-     1147, 1148, 1105, 1091, 1151, 1152, 1105, 1095, 1100, 1156,
-     1157, 1153, 1116, 1112, 1156, 1104, 1109, 1107, 1166, 1122,
-     1168, 1126, 1170, 1132, 1121, 1115, 1131, 1131, 1177, 1119,
-     1136, 1135, 1119, 1177, 1178, 1125, 1180, 1143, 1144, 1908,
-     1144, 1131, 1908, 1142, 1191, 1149, 1162, 1908, 1146, 1908,
-     1908, 1137, 1196, 1908, 1908, 1143, 1141, 1155, 1908, 1908,
-
-     1145, 1196, 1139, 1144, 1204, 1152, 1162, 1163, 1908, 1208,
-     1161, 1908, 1210, 1908, 1153, 1168, 1156, 1171, 1175, 1908,
-     1211, 1177, 1170, 1179, 1161, 1169, 1223, 1183, 1182, 1227,
-     1228, 1229, 1178, 1908, 1231, 1232, 1181, 1234, 1908, 1182,
-     1182, 1237, 1181, 1180, 1240, 1193, 1908, 1237, 1188, 1185,
-     1908, 1199, 1908, 1202, 1247, 1200, 1249, 1208, 1191, 1193,
-     1190, 1206, 1207, 1216, 1908, 1206, 1258, 1908, 1908, 1908,
-     1254, 1908, 1908, 1216, 1908, 1256, 1211, 1908, 1209, 1216,
-     1908, 1213, 1218, 1216, 1268, 1269, 1212, 1908, 1227, 1908,
-     1228, 1218, 1230, 1275, 1217, 1225, 1226, 1239, 1908, 1238,
-
-     1223, 1227, 1283, 1242, 1233, 1242, 1244, 1248, 1908, 1908,
-     1289, 1232, 1291, 1249, 1293, 1908, 1289, 1251, 1252, 1239,
-     1234, 1299, 1256, 1908, 1257, 1258, 1303, 1260, 1263, 1908,
-     1306, 1908, 1267, 1908, 1249, 1309, 1310, 1253, 1270, 1908,
-     1256, 1256, 1258, 1908, 1263, 1273, 1908, 1259, 1271, 1908,
-     1908, 1276, 1270, 1274, 1265, 1319, 1266, 1274, 1283, 1276,
-     1271, 1286, 1277, 1284, 1271, 1286, 1291, 1336, 1293, 1338,
-     1281, 1297, 1288, 1302, 1298, 1291, 1908, 1345, 1908, 1346,
-     1347, 1302, 1301, 1302, 1292, 1908, 1908, 1908, 1352, 1294,
-     1310, 1355, 1908, 1351, 1300, 1908, 1299, 1301, 1312, 1361,
-
-     1310, 1908, 1319, 1364, 1908, 1908, 1370, 1375, 1380, 1385,
-     1390, 1395, 1400, 1403, 1377, 1382, 1384, 1397
+     1932, 1933,   34, 1928,  145,    0,  207, 1933,  214,  221,
+       13,  228, 1933, 1908,  118,   25,    2,    6, 1933, 1933,
+       73,   11,   17, 1933, 1933, 1933,  104, 1916, 1869,    0,
+     1906,  108, 1923,   24,  262, 1933, 1865,   67, 1864, 1870,
+       84,   75, 1862,   88,  226,   91,   89,  290,  196, 1861,
+      206,  285,  206,  210,  219,   60,  223, 1870,  247,  290,
+      315,  303,  231, 1853,  297,  321,  343,  324, 1872,    0,
+      380,  387,  401,  408,  424, 1933,    0, 1933,  429,  438,
+      216,  249,  220,  315,  335,  266, 1933, 1869, 1910, 1933,
+
+      342, 1933,  421, 1897,  312, 1855, 1865,  400,   10, 1860,
+      361,  323,  370,  387,  359, 1905,    0,  474,  392, 1847,
+     1844, 1848, 1850, 1843, 1851,  412, 1847, 1836, 1837,   78,
+     1853, 1836, 1845, 1845,   95, 1836,  400, 1837, 1835,  405,
+     1883, 1887, 1827, 1880, 1820, 1843, 1840, 1840, 1834,  310,
+     1827, 1820, 1825, 1819,  436, 1830, 1823, 1814, 1813, 1827,
+      186, 1813,  413, 1829, 1806,  470,  286,  400, 1827, 1824,
+     1825, 1823, 1858, 1857,  445, 1803, 1805,  448, 1797, 1814,
+     1806,    0,  447,  447,  458,  471,  462,  483, 1805, 1933,
+        0, 1850,  490, 1795, 1798,  476,  482, 1806,  488, 1851,
+
+      499, 1850,  496, 1849, 1933,  542, 1848,  507, 1807, 1799,
+     1786, 1802, 1801, 1798, 1797, 1788,  486, 1839, 1833, 1797,
+     1776, 1784, 1779, 1793, 1789, 1777, 1789, 1789, 1780, 1764,
+     1768, 1781, 1783, 1780, 1772, 1762, 1780, 1933, 1775, 1778,
+     1759, 1758, 1810, 1757, 1767, 1770,  531, 1766, 1754, 1765,
+     1803, 1748, 1806, 1741, 1756,  533, 1746, 1762, 1743, 1742,
+     1748, 1739, 1738, 1745, 1795, 1751, 1750, 1744,  486, 1751,
+     1746, 1738, 1728, 1743, 1742, 1737, 1741,  322, 1739, 1725,
+     1731, 1738, 1726, 1723, 1722,  541, 1717, 1731, 1774, 1733,
+      366, 1724,  512, 1933, 1933,  521, 1933, 1933, 1711,    0,
+
+      241,  513, 1713,  546,  534, 1769, 1720,  538, 1933, 1767,
+     1933, 1761,  588, 1933,  537, 1701, 1710, 1758, 1702, 1701,
+     1707, 1759, 1714, 1709, 1712, 1707,  533, 1933, 1709, 1753,
+     1706, 1703,  564, 1709, 1749, 1743, 1696, 1691, 1688, 1739,
+     1696, 1685, 1701, 1735, 1681,  611, 1695, 1680, 1693, 1680,
+     1690, 1685, 1692, 1687, 1683,  432, 1681, 1684, 1679, 1675,
+     1725,  525, 1719, 1933, 1718, 1668, 1667, 1666, 1659, 1661,
+     1665, 1654, 1667,  568, 1714, 1667, 1664, 1933, 1667, 1656,
+     1656, 1668,  560, 1643, 1644, 1665,  570, 1647, 1698, 1643,
+     1657, 1660, 1655, 1641, 1653, 1652, 1651, 1650, 1649, 1648,
+
+      526, 1691, 1690, 1933, 1632, 1631,  615, 1644, 1933, 1933,
+     1643,    0, 1632, 1624,  561, 1629, 1682, 1681, 1637, 1679,
+     1933, 1625, 1677, 1933,  595,  662,  564, 1676, 1618, 1629,
+     1622, 1624, 1612, 1933, 1617, 1623, 1626, 1609, 1624, 1611,
+     1610, 1933, 1612, 1609,  569, 1607, 1609, 1933, 1617, 1614,
+     1599, 1612, 1607,  634, 1614, 1602, 1595, 1646, 1933, 1593,
+     1609, 1643, 1604, 1601, 1602, 1604, 1638, 1589, 1584, 1583,
+     1634, 1578, 1593, 1571, 1578, 1583, 1633, 1933, 1578, 1574,
+     1572, 1581, 1575, 1582, 1566, 1566, 1576, 1579, 1568, 1563,
+     1933, 1620, 1933, 1562, 1573, 1558, 1563, 1572, 1566, 1560,
+
+     1569, 1611, 1605, 1567, 1550, 1550, 1545, 1565, 1540, 1546,
+     1551, 1544, 1552, 1556, 1539, 1597, 1537, 1538, 1537, 1549,
+     1538, 1933, 1933, 1538, 1536, 1933, 1547, 1583, 1543,    0,
+     1527, 1544, 1584, 1532, 1933, 1933, 1529, 1933, 1535, 1933,
+      597,  606,  636, 1933, 1532, 1531, 1538, 1518, 1571, 1516,
+     1569, 1514, 1513, 1512, 1519, 1512, 1524, 1523, 1523, 1505,
+     1510, 1551, 1518, 1510, 1555, 1499, 1515, 1514, 1933, 1499,
+     1496, 1554, 1509, 1501, 1507, 1498, 1506, 1491, 1507, 1489,
+     1503,  560, 1485, 1479, 1484, 1499, 1496, 1497, 1494, 1537,
+     1492, 1933, 1478, 1480, 1489, 1487, 1526, 1525, 1476,   16,
+
+     1485, 1468, 1469, 1466, 1933, 1480, 1459, 1478, 1470, 1515,
+     1467, 1474, 1512, 1933, 1457, 1471, 1455, 1469, 1472, 1453,
+     1505, 1504, 1503, 1502, 1447, 1500, 1499, 1933,  593, 1461,
+     1460, 1457, 1457, 1455, 1438, 1443, 1445, 1933, 1451, 1441,
+     1933, 1488, 1434, 1491,  606,  617, 1432, 1430, 1437, 1428,
+     1481,  598, 1485,  600, 1479, 1439, 1477, 1476, 1428, 1418,
+     1473, 1424, 1432, 1433, 1469, 1430, 1424, 1411, 1419, 1464,
+     1468, 1423, 1422, 1933, 1423, 1416, 1405, 1418, 1421, 1416,
+     1417, 1414, 1413, 1409, 1415, 1410, 1453, 1452, 1400, 1390,
+      593, 1449, 1933, 1448, 1395, 1387, 1388, 1439, 1400, 1387,
+
+     1398, 1933, 1386, 1395, 1394, 1394, 1436, 1377, 1386, 1391,
+     1368, 1372, 1425, 1387, 1369,  166,  272,  323,  379,  346,
+      422,  448,  597,  529,  607,  517,  596,  600, 1933,  656,
+      613,  614,  605,  623,  625,  616,  623,  629,  621,  641,
+      646,  687, 1933,  683,  659,  646,  651,  648,  649,  646,
+      644,  653, 1933,  643,  658,  640,  647,  646,  650,  669,
+      666,  656,  654,  653,  664,  660,  716,  674,  664,  680,
+      670, 1933,  680,  680,  673,  684,  682,  727,  669,  671,
+      686,  673,  733,  690,  676,  679, 1933, 1933,  689,  694,
+      699,  687, 1933, 1933,  701,  688,  682,  687,  705,  692,
+
+      742,  693,  745,  694,  752, 1933,  697,  701,  696,  756,
+      709,  699,  700,  696,  709,  720,  704,  722,  717,  718,
+      720,  713,  715,  716,  717,  717,  719,  734,  775,  732,
+      737,  714, 1933,  726,  727,  741,  731,  778,  736,  726,
+      741,  742,  729,  743, 1933,  762,  770,  739,  734,  789,
+      790,  753,  757,  798,  746,  741,  753,  760,  749,  750,
+      746,  755,  750,  808,  765,  766,  757, 1933,  759,  770,
+      756,  772,  767,  814,  780,  764,  765, 1933,  781,  784,
+      767,  826,  769, 1933,  786,  789,  769,  787,  827,  785,
+      781,  776,  794,  793,  794,  780,  795,  787,  794,  784,
+
+      802,  787, 1933,  795,  801,  848, 1933,  797,  802,  846,
+      797,  809,  803,  808,  806,  804,  806,  816,  861,  805,
+      810,  806,  865,  809,  821, 1933,  809,  817,  815,  812,
+      813,  822,  834,  818,  823,  833,  834,  839,  880,  837,
+      853,  859,  840,  838,  834,  829,  889,  832, 1933,  832,
+      852,  841,  830,  847,  854,  897,  898,  845, 1933,  895,
+      842,  845,  844,  864,  861,  866,  867,  853,  861,  871,
+      852,  867,  874,  916, 1933,  917,  918,  869,  879,  881,
+      870,  866,  873,  882,  927,  874,  872,  874,  891,  932,
+      882,  881,  887,  885,  883,  938,  939,  935, 1933,  897,
+
+      890,  881,  900,  888,  898,  895,  900,  896,  909,  909,
+     1933,  893,  895,  895, 1933,  896,  956,  895,  914,  915,
+      960,  961,  915,  900,  921,  920,  904,  909,  927, 1933,
+      917,  950,  941,  973,  913,  935,  932, 1933,  919,  921,
+      938,  936,  981,  929,  933, 1933, 1933,  943,  943,  981,
+      928,  983,  930,  990,  933,  944,  936,  943,  939,  957,
+      958,  959, 1933, 1933,  959, 1933,  944,  945,  964,  954,
+      947,  959, 1003,  967, 1933,  959, 1011,  952, 1013, 1933,
+     1014,  956,  962,  969, 1013, 1933, 1933,  961,  963,  977,
+      982,  965, 1024,  981,  982,  983, 1023,  975,  980, 1031,
+
+      984,  980, 1034, 1933,  981, 1036, 1037, 1933, 1933,  977,
+     1039,  998, 1041,  983,  995, 1000,  986, 1016, 1047, 1933,
+     1004,  997, 1006, 1051,  998, 1013, 1000, 1933,  996, 1012,
+     1017, 1004, 1000, 1060, 1013, 1018, 1933, 1019, 1012, 1021,
+     1022, 1019, 1009, 1012, 1012, 1017, 1072, 1073, 1017, 1076,
+     1072, 1013, 1028, 1021, 1082, 1933, 1035, 1933, 1933, 1040,
+     1032, 1042, 1028, 1029, 1090, 1034, 1044, 1093, 1933, 1041,
+     1042, 1044, 1046, 1099, 1040, 1043, 1933, 1044, 1063, 1933,
+     1047, 1933, 1933, 1061, 1933, 1055, 1933, 1107, 1056, 1109,
+     1110, 1090, 1933, 1112, 1069, 1110, 1933, 1058, 1066, 1060,
+
+     1059, 1062, 1062, 1063, 1070, 1060, 1933, 1082, 1068, 1069,
+     1084, 1084, 1087, 1087, 1084, 1128, 1091, 1083, 1933, 1933,
+     1093, 1933, 1090, 1095, 1096, 1093, 1137, 1933, 1086, 1087,
+     1087, 1093, 1092, 1103, 1933, 1144, 1091, 1933, 1092, 1092,
+     1094, 1100, 1933, 1102, 1156, 1098, 1106, 1109, 1160, 1121,
+     1933, 1118, 1933, 1115, 1933, 1138, 1933, 1165, 1107, 1167,
+     1168, 1125, 1111, 1171, 1172, 1125, 1115, 1120, 1176, 1177,
+     1173, 1136, 1132, 1176, 1124, 1129, 1127, 1186, 1142, 1188,
+     1146, 1190, 1152, 1141, 1135, 1151, 1151, 1197, 1139, 1156,
+     1155, 1139, 1197, 1198, 1145, 1200, 1163, 1164, 1933, 1164,
+
+     1165, 1152, 1933, 1163, 1212, 1170, 1183, 1933, 1167, 1933,
+     1933, 1158, 1217, 1933, 1933, 1164, 1162, 1176, 1933, 1933,
+     1166, 1217, 1160, 1165, 1225, 1173, 1183, 1184, 1933, 1229,
+     1182, 1933, 1231, 1933, 1174, 1189, 1177, 1192, 1196, 1933,
+     1232, 1198, 1191, 1200, 1182, 1190, 1245, 1204, 1203, 1248,
+     1196, 1250, 1251, 1200, 1933, 1253, 1254, 1203, 1256, 1933,
+     1204, 1204, 1259, 1203, 1202, 1262, 1215, 1933, 1259, 1210,
+     1207, 1933, 1221, 1933, 1224, 1269, 1222, 1271, 1230, 1213,
+     1215, 1212, 1228, 1229, 1238, 1933, 1228, 1280, 1933, 1239,
+     1933, 1933, 1277, 1933, 1933, 1239, 1933, 1279, 1234, 1933,
+
+     1232, 1239, 1933, 1236, 1241, 1239, 1291, 1292, 1235, 1933,
+     1250, 1933, 1251, 1241, 1253, 1298, 1240, 1248, 1249, 1262,
+     1933, 1239, 1262, 1247, 1251, 1307, 1266, 1257, 1266, 1268,
+     1272, 1933, 1933, 1313, 1256, 1315, 1273, 1317, 1933, 1313,
+     1275, 1276, 1263, 1322, 1259, 1324, 1281, 1933, 1282, 1283,
+     1328, 1285, 1288, 1933, 1331, 1933, 1292, 1933, 1274, 1334,
+     1335, 1278, 1933, 1295, 1933, 1281, 1281, 1283, 1933, 1288,
+     1298, 1933, 1284, 1296, 1933, 1933, 1301, 1295, 1299, 1290,
+     1344, 1291, 1299, 1308, 1301, 1296, 1311, 1302, 1309, 1296,
+     1311, 1316, 1361, 1318, 1363, 1306, 1322, 1313, 1327, 1323,
+
+     1316, 1933, 1370, 1933, 1371, 1372, 1327, 1326, 1327, 1317,
+     1933, 1933, 1933, 1377, 1319, 1335, 1380, 1933, 1376, 1325,
+     1933, 1324, 1326, 1337, 1386, 1335, 1933, 1344, 1389, 1933,
+     1933, 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1428, 1402,
+     1407, 1409, 1422
     } ;
 
-static const flex_int16_t yy_def[1519] =
+static const flex_int16_t yy_def[1544] =
     {   0,
-     1507, 1507, 1508, 1508, 1507, 1507, 1507, 1507, 1507, 1507,
-     1506, 1506, 1506, 1506, 1506, 1509, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1510,
-     1506, 1506, 1506, 1511,   15, 1506,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1512,   45,   45,
+     1532, 1532, 1533, 1533, 1532, 1532, 1532, 1532, 1532, 1532,
+     1531, 1531, 1531, 1531, 1531, 1534, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1535,
+     1531, 1531, 1531, 1536,   15, 1531,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1537,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1509,
-     1506, 1506, 1506, 1506, 1506, 1506, 1513, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1510, 1506,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1534,
+     1531, 1531, 1531, 1531, 1531, 1531, 1538, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1535, 1531,
 
-     1511, 1506, 1506,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1514,   45, 1512,   45,   45,
+     1536, 1531, 1531,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1539,   45, 1537,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1513, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1515,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1538, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1540,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1514, 1506, 1512,   45,   45,   45,   45,
+       45,   45,   45, 1539, 1531, 1537,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1516,
+       45,   45, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1541,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
-     1506,   45, 1512, 1506,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
+     1531,   45, 1537, 1531,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1506,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1506,   45,   45,   45,   45, 1506, 1506, 1506, 1517,
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
-       45, 1506,   45, 1512,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45,   45,   45,   45,   45, 1506,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45, 1531, 1531,
+     1531, 1542,   45,   45,   45,   45,   45,   45,   45,   45,
+     1531,   45,   45, 1531,   45, 1537,   45,   45,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
+       45, 1531,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506,   45, 1506,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1531,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506, 1506,   45,
-       45, 1506,   45,   45, 1506, 1518,   45,   45,   45,   45,
-     1506, 1506,   45, 1506,   45, 1506,   45,   45,   45, 1506,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1531, 1531,   45,   45, 1531,   45,   45, 1531, 1543,
+       45,   45,   45,   45, 1531, 1531,   45, 1531,   45, 1531,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1506,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1506,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45, 1506,   45,   45,   45,   45,   45,
+       45, 1531,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45, 1531,   45,   45,   45,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+     1531,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
+       45,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
 
+       45, 1531,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1506,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
+       45,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1506,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506, 1506,   45,
-       45,   45,   45, 1506, 1506,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
+       45, 1531,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1531, 1531,   45,   45,
+       45,   45, 1531, 1531,   45,   45,   45,   45,   45,   45,
 
+       45,   45,   45,   45,   45, 1531,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1506,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
+       45,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1531,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
-       45,   45, 1506,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45,   45, 1506,   45,   45,   45,   45,
 
+       45,   45, 1531,   45,   45,   45, 1531,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1506,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1531,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1531,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506,   45,   45,
-
-     1506,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
-       45,   45,   45, 1506,   45,   45,   45,   45,   45,   45,
-     1506, 1506,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506, 1506,   45,
-     1506,   45,   45,   45,   45,   45,   45,   45,   45, 1506,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
-     1506, 1506,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1506,   45,   45,
-       45, 1506, 1506,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45, 1506,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1506,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1531,   45,   45,   45, 1531,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1531,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45,   45, 1531, 1531,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
-     1506, 1506,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1506,   45,   45,   45,   45,   45,   45,   45, 1506,
-       45, 1506,   45, 1506, 1506,   45, 1506,   45, 1506,   45,
-       45,   45,   45,   45, 1506,   45,   45,   45, 1506,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
+       45,   45, 1531, 1531,   45, 1531,   45,   45,   45,   45,
+       45,   45,   45,   45, 1531,   45,   45,   45,   45, 1531,
+       45,   45,   45,   45,   45, 1531, 1531,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1506, 1506,   45, 1506,   45,   45,   45,   45,   45, 1506,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45, 1506,
-       45,   45,   45,   45, 1506,   45,   45,   45,   45,   45,
-       45, 1506,   45, 1506,   45, 1506,   45, 1506,   45,   45,
+       45,   45,   45, 1531,   45,   45,   45, 1531, 1531,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1531,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45,   45,   45, 1531,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1531,   45, 1531, 1531,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
+       45,   45,   45,   45,   45,   45, 1531,   45,   45, 1531,
+       45, 1531, 1531,   45, 1531,   45, 1531,   45,   45,   45,
+       45,   45, 1531,   45,   45,   45, 1531,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1531,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531, 1531,
+       45, 1531,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45,   45, 1531,   45,   45, 1531,   45,   45,
+       45,   45, 1531,   45,   45,   45,   45,   45,   45,   45,
+     1531,   45, 1531,   45, 1531,   45, 1531,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1506,
-       45,   45, 1506,   45,   45,   45,   45, 1506,   45, 1506,
-     1506,   45,   45, 1506, 1506,   45,   45,   45, 1506, 1506,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
-       45, 1506,   45, 1506,   45,   45,   45,   45,   45, 1506,
+       45,   45, 1531,   45,   45,   45,   45, 1531,   45, 1531,
+     1531,   45,   45, 1531, 1531,   45,   45,   45, 1531, 1531,
+       45,   45,   45,   45,   45,   45,   45,   45, 1531,   45,
+       45, 1531,   45, 1531,   45,   45,   45,   45,   45, 1531,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1531,   45,   45,   45,   45, 1531,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45, 1531,   45, 1531,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1531,   45,   45, 1531,   45,
+     1531, 1531,   45, 1531, 1531,   45, 1531,   45,   45, 1531,
+
+       45,   45, 1531,   45,   45,   45,   45,   45,   45, 1531,
+       45, 1531,   45,   45,   45,   45,   45,   45,   45,   45,
+     1531,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1531, 1531,   45,   45,   45,   45,   45, 1531,   45,
+       45,   45,   45,   45,   45,   45,   45, 1531,   45,   45,
+       45,   45,   45, 1531,   45, 1531,   45, 1531,   45,   45,
+       45,   45, 1531,   45, 1531,   45,   45,   45, 1531,   45,
+       45, 1531,   45,   45, 1531, 1531,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1506,   45,   45,   45,   45, 1506,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45,   45,   45,
-     1506,   45, 1506,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1506,   45,   45, 1506, 1506, 1506,
-       45, 1506, 1506,   45, 1506,   45,   45, 1506,   45,   45,
-     1506,   45,   45,   45,   45,   45,   45, 1506,   45, 1506,
-       45,   45,   45,   45,   45,   45,   45,   45, 1506,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1506, 1506,
-       45,   45,   45,   45,   45, 1506,   45,   45,   45,   45,
-       45,   45,   45, 1506,   45,   45,   45,   45,   45, 1506,
-       45, 1506,   45, 1506,   45,   45,   45,   45,   45, 1506,
-       45,   45,   45, 1506,   45,   45, 1506,   45,   45, 1506,
-     1506,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1506,   45, 1506,   45,
-       45,   45,   45,   45,   45, 1506, 1506, 1506,   45,   45,
-       45,   45, 1506,   45,   45, 1506,   45,   45,   45,   45,
 
-       45, 1506,   45,   45, 1506,    0, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506
+       45, 1531,   45, 1531,   45,   45,   45,   45,   45,   45,
+     1531, 1531, 1531,   45,   45,   45,   45, 1531,   45,   45,
+     1531,   45,   45,   45,   45,   45, 1531,   45,   45, 1531,
+        0, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531
     } ;
 
-static const flex_int16_t yy_nxt[1982] =
+static const flex_int16_t yy_nxt[2007] =
     {   0,
-     1506,   13,   14,   13, 1506,   15,   16, 1506,   17,   18,
+     1531,   13,   14,   13, 1531,   15,   16, 1531,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       86,  695,   37,   14,   37,   87,   25,   26,   38,  102,
-     1506,   27,   37,   14,   37,   42,   28,   42,   38,   92,
+       86,  702,   37,   14,   37,   87,   25,   26,   38,  102,
+     1531,   27,   37,   14,   37,   42,   28,   42,   38,   92,
        93,   29,  197,   30,   13,   14,   13,   91,   92,   25,
        31,   93,   13,   14,   13,   13,   14,   13,   32,   40,
-      696,   13,   14,   13,   33,   40,  103,   92,   93,  197,
+      703,   13,   14,   13,   33,   40,  103,   92,   93,  197,
        91,   34,   35,   13,   14,   13,   95,   15,   16,   96,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   91,   39,  105,   25,   26,
@@ -1281,120 +1290,120 @@ static const flex_int16_t yy_nxt[1982] =
        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,  812,
+       78,   79,   57,   45,   45,   45,   45,   45,   81,  815,
        82,   82,   82,   82,   82,   81,  105,   84,   84,   84,
        84,   84,  108,   83,   85,   85,   85,   85,   85,   81,
        83,   84,   84,   84,   84,   84,  183,   83,  258,  259,
       112,  123,  119,  134,   83,  108,   83,  185,  120,  124,
       113,  121,  125,   83,  135,  126,  137,  127,  138,  128,
        83,  142,  183,  112,  136,  139,  161,   83,   45,  184,
-      162,  143,  819,  144,   45,  185,   45,   45,  113,   45,
-      163,   45,   45,   45,  411,  117,  146,  147,   45,   45,
+      162,  143,  816,  144,   45,  185,   45,   45,  113,   45,
+      163,   45,   45,   45,  413,  117,  146,  147,   45,   45,
 
-      148,   45,   45,  185,  412,  184,  149,   45,   45,   45,
+      148,   45,   45,  185,  414,  184,  149,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      129,  188,   45,  820,  130,  150,   45,  131,  132,  151,
+      129,  188,   45,  817,  130,  150,   45,  131,  132,  151,
        45,  111,  165,  275,  276,  183,  166,  102,   45,  114,
       133,  193,   45,  156,   45,  118,  200,  173,  174,  152,
       153,  157,  154,  158,  155,  184,  167,  112,  159,  160,
-      168,  186,  178,  169,  246,  823,  404,  113,  247,  193,
-      170,  171,  179,  200,  103,  203,  172,  180,  469,  470,
+      168,  186,  178,  169,  246,  392,  406,  113,  247,  193,
+      170,  171,  179,  200,  103,  203,  172,  180,  393,  818,
       175,  187,  176,   85,   85,   85,   85,   85,   81,  199,
 
        82,   82,   82,   82,   82,  113,   83,  201,  203,   89,
-      824,   89,  177,   83,   90,   90,   90,   90,   90,   81,
-      202,   84,   84,   84,   84,   84,  101,  199,  405,   83,
-      196,  193,  825,  101,   83,  201,   83,   85,   85,   85,
+      819,   89,  177,   83,   90,   90,   90,   90,   90,   81,
+      202,   84,   84,   84,   84,   84,  101,  199,  407,   83,
+      196,  193,  820,  101,   83,  201,   83,   85,   85,   85,
        85,   85,   90,   90,   90,   90,   90,  202,  207,  230,
        83,   90,   90,   90,   90,   90,  196,   83,  277,  208,
       215,  234,  278,  101,  235,  231,  279,  101,  236,  216,
       217,  101,  261,   83,  199,  262,  263,  294,  200,  101,
       266,  202,  293,  101,  295,  101,  191,  206,  206,  206,
-      206,  206,  294,  355,  677,  678,  206,  206,  206,  206,
+      206,  206,  294,  472,  473,  821,  206,  206,  206,  206,
 
       206,  206,  199,  294,  252,  286,  293,  295,  289,  295,
       293,  305,  302,  306,  308,  267,  268,  269,  297,  206,
       206,  206,  206,  206,  206,  310,  270,  312,  271,  302,
-      272,  273,  298,  274,  296,  302,  324,  308,  381,  305,
-      306,  382,  309,  366,  325,  421,  356,  399,  310,  357,
-      326,  407,  315,  407,  312,  313,  313,  313,  313,  313,
-      418,  436,  415,  416,  313,  313,  313,  313,  313,  313,
-      413,  417,  476,  421,  407,  442,  408,  413,  437,  367,
-      488,  443,  477,  418,  737,  826,  721,  313,  313,  313,
-      313,  313,  313,  368,  497,  639,  529,  722,  498,  413,
-
-      424,  424,  424,  424,  424,  516,  425,  737,  517,  424,
-      424,  424,  424,  424,  424,  456,  529,  502,  522,  640,
-      457,  503,  639,  523,  529,  537,  554,  538,  736,  746,
-      747,  827,  424,  424,  424,  424,  424,  424,  489,  555,
-      564,  556,  828,  635,  539,  565,  829,  640,  641,  743,
-      782,  813,  537,  783,  538,  744,  736,  821,  814,  815,
-      816,  830,  831,  822,  832,  833,  834,  817,  458,  835,
-      836,  818,  837,  459,   45,   45,   45,   45,   45,  838,
-      839,  840,  841,   45,   45,   45,   45,   45,   45,  842,
+      272,  273,  298,  274,  296,  302,  324,  308,  409,  305,
+      306,  356,  382,  367,  325,  383,  309,  409,  310,  326,
+      327,  401,  315,  415,  312,  313,  313,  313,  313,  313,
+      420,  409,  417,  418,  313,  313,  313,  313,  313,  313,
+      410,  419,  423,  491,  445,  479,  824,  415,  439,  368,
+      446,  520,  415,  420,  521,  480,  829,  313,  313,  313,
+      313,  313,  313,  369,  357,  440,  533,  358,  729,  533,
+
+      423,  426,  426,  426,  426,  426,  427,  684,  685,  730,
+      426,  426,  426,  426,  426,  426,  459,  559,  500,  505,
+      526,  460,  501,  506,  533,  527,  541,  543,  542,  645,
+      560,  492,  561,  426,  426,  426,  426,  426,  426,  569,
+      646,  641,  744,  745,  570,  751,  647,  754,  755,  791,
+      822,  752,  792,  541,  830,  542,  645,  823,  831,  825,
+      826,  833,  834,  835,  832,  836,  745,  827,  646,  461,
+      744,  828,  837,  838,  462,   45,   45,   45,   45,   45,
+      839,  840,  841,  842,   45,   45,   45,   45,   45,   45,
       843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
 
-      837,  853,  854,  855,  856,  857,   45,   45,   45,   45,
-       45,   45,  858,  859,  860,  861,  862,  863,  864,  865,
-      866,  867,  869,  870,  871,  872,  868,  873,  874,  875,
-      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
-      887,  888,  889,  886,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  900,  901,  902,  903,  904,  905,
+      853,  854,  855,  856,  857,  858,  859,   45,   45,   45,
+       45,   45,   45,  860,  861,  862,  863,  864,  865,  866,
+      867,  868,  847,  869,  870,  871,  872,  873,  874,  875,
+      876,  877,  878,  880,  881,  882,  883,  879,  884,  885,
+      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
+      896,  898,  899,  900,  897,  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,  930,  953,  954,
-      929,  955,  956,  957,  958,  959,  960,  961,  962,  964,
-      965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
-      975,  976,  977,  978,  979,  980,  981,  983,  984,  985,
-      986,  987,  988,  989,  990,  991,  992,  982,  993,  994,
-      995,  996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004,
-     1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
-     1015, 1016, 1017, 1018, 1020, 1019,  963, 1021, 1022, 1023,
-     1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
-     1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
-
-     1044, 1018, 1019, 1045, 1046, 1047, 1048, 1049, 1051, 1053,
-     1054, 1055, 1050, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  958,  959,  960,  961,  962,  963,  964,  942,
+      965,  966,  941,  967,  968,  969,  970,  971,  972,  973,
+      974,  975,  977,  978,  979,  980,  981,  982,  983,  984,
+      985,  986,  987,  988,  989,  990,  991,  992,  993,  994,
+      996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+      995, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
+     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
+     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1034,  976,
+     1033, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
+
+     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1054, 1055, 1056, 1057, 1058, 1032, 1059, 1033, 1060, 1061,
+     1062, 1063, 1064, 1066, 1068, 1069, 1070, 1065, 1071, 1072,
      1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
      1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1052, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
-     1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
+     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1067, 1110, 1111,
      1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
-     1122, 1123, 1124, 1102, 1125, 1126, 1127, 1128, 1129, 1103,
-     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, 1158, 1159, 1160,
-     1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
-     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1181,
-     1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
-     1202, 1174, 1203, 1204, 1205, 1206, 1207, 1209, 1210, 1157,
-     1211, 1212, 1213, 1214, 1208, 1215, 1216, 1217, 1218, 1219,
-     1220, 1221, 1180, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
-     1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237, 1238, 1239,
-
-     1235, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
-     1237, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
-     1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
+     1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
+     1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1118,
+
+     1141, 1142, 1143, 1144, 1145, 1119, 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, 1175, 1176, 1177, 1178, 1179, 1180,
+     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199, 1200, 1201,
+     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
+     1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1192,
+     1221, 1222, 1223, 1224, 1225, 1227, 1174, 1228, 1229, 1230,
+     1231, 1232, 1226, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
+
+     1198, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
+     1249, 1250, 1251, 1252, 1253, 1255, 1256, 1257, 1258, 1254,
+     1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
+     1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1256,
      1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
      1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
      1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
-     1308, 1309, 1311, 1312, 1313, 1314, 1287, 1315, 1316, 1317,
+     1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
      1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
-     1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337,
+     1328, 1329, 1331, 1332, 1333, 1334, 1307, 1335, 1336, 1337,
 
      1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
      1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
-     1358, 1359, 1360, 1361, 1362, 1363, 1336, 1364, 1365, 1310,
-     1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
-     1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
+     1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
+     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
+     1378, 1379, 1380, 1381, 1382, 1383, 1384, 1357, 1385, 1330,
      1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
      1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
      1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
@@ -1408,85 +1417,88 @@ static const flex_int16_t yy_nxt[1982] =
      1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
      1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
      1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
-       80,  300,   80,   80,   80,   99,  410,   99,  526,   99,
-      101,  101,  101,  101,  101,  116,  116,  116,  116,  116,
-
-      182,  101,  182,  182,  182,  204,  204,  204,  811,  810,
-      809,  808,  807,  806,  805,  804,  803,  802,  801,  800,
-      799,  798,  797,  796,  795,  794,  793,  792,  791,  790,
-      789,  788,  787,  786,  785,  784,  781,  780,  779,  778,
-      777,  776,  775,  774,  773,  772,  771,  770,  769,  768,
-      767,  766,  765,  764,  763,  762,  761,  760,  759,  758,
-      757,  756,  755,  754,  753,  752,  751,  750,  749,  748,
-      745,  742,  741,  740,  739,  738,  735,  734,  733,  732,
-      731,  730,  729,  728,  727,  726,  725,  724,  723,  720,
-      719,  718,  717,  716,  715,  714,  713,  712,  711,  710,
-
-      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
-      699,  698,  697,  694,  693,  692,  691,  690,  689,  688,
-      687,  686,  685,  684,  683,  682,  681,  680,  679,  676,
-      675,  674,  673,  672,  671,  670,  669,  668,  667,  666,
-      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
-      655,  654,  653,  652,  651,  650,  649,  648,  647,  646,
-      645,  644,  643,  642,  638,  637,  636,  635,  634,  633,
-      632,  631,  630,  629,  628,  627,  626,  625,  624,  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,  580,  579,  578,  577,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  563,  562,  561,
-      560,  559,  558,  557,  553,  552,  551,  550,  549,  548,
-      547,  546,  545,  544,  543,  542,  541,  540,  536,  535,
-      534,  533,  532,  531,  530,  528,  527,  525,  524,  521,
-      520,  519,  518,  515,  514,  513,  512,  511,  510,  509,
-      508,  507,  506,  505,  504,  501,  500,  499,  496,  495,
-      494,  493,  492,  491,  490,  487,  486,  485,  484,  483,
-
-      482,  481,  480,  479,  478,  475,  474,  473,  472,  471,
-      468,  467,  466,  465,  464,  463,  462,  461,  460,  455,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  441,  440,  439,  438,  435,  434,  433,  432,  431,
-      430,  429,  428,  427,  426,  423,  422,  420,  419,  414,
-      409,  406,  403,  402,  401,  400,  398,  397,  396,  395,
-      394,  393,  392,  391,  390,  389,  388,  387,  386,  385,
-      384,  383,  380,  379,  378,  377,  376,  375,  374,  373,
-      372,  371,  370,  369,  365,  364,  363,  362,  361,  360,
-      359,  358,  354,  353,  352,  351,  350,  349,  348,  347,
-
-      346,  345,  344,  343,  342,  341,  340,  339,  338,  337,
-      336,  335,  334,  333,  332,  331,  330,  329,  328,  327,
-      323,  322,  321,  320,  319,  318,  317,  316,  314,  205,
-      311,  309,  307,  304,  303,  301,  299,  292,  291,  290,
-      288,  287,  285,  284,  283,  282,  281,  280,  265,  264,
-      260,  257,  256,  255,  254,  253,  251,  250,  249,  248,
-      245,  244,  243,  242,  241,  240,  239,  238,  237,  233,
-      232,  229,  226,  225,  224,  223,  220,  219,  218,  214,
-      213,  212,  211,  210,  209,  205,  198,  195,  194,  192,
-      190,  189,  181,  164,  145,  122,  110,  107,  106,  104,
-
-       43,  100,   98,   97,   88,   43, 1506,   11, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506
+     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
+     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+     1526, 1527, 1528, 1529, 1530,   12,   12,   12,   12,   12,
+
+       36,   36,   36,   36,   36,   80,  300,   80,   80,   80,
+       99,  412,   99,  530,   99,  101,  101,  101,  101,  101,
+      116,  116,  116,  116,  116,  182,  101,  182,  182,  182,
+      204,  204,  204,  814,  813,  812,  811,  810,  809,  808,
+      807,  806,  805,  804,  803,  802,  801,  800,  799,  798,
+      797,  796,  795,  794,  793,  790,  789,  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,  759,  758,  757,  756,
+      753,  750,  749,  748,  747,  746,  743,  742,  741,  740,
+
+      739,  738,  737,  736,  735,  734,  733,  732,  731,  728,
+      727,  726,  725,  724,  723,  722,  721,  720,  719,  718,
+      717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
+      707,  706,  705,  704,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,
+      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,  644,  643,  642,  641,
+      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
+
+      630,  629,  628,  627,  626,  625,  624,  623,  622,  621,
+      620,  619,  618,  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,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      568,  567,  566,  565,  564,  563,  562,  558,  557,  556,
+      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
+      545,  544,  540,  539,  538,  537,  536,  535,  534,  532,
+      531,  529,  528,  525,  524,  523,  522,  519,  518,  517,
+
+      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      504,  503,  502,  499,  498,  497,  496,  495,  494,  493,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      478,  477,  476,  475,  474,  471,  470,  469,  468,  467,
+      466,  465,  464,  463,  458,  457,  456,  455,  454,  453,
+      452,  451,  450,  449,  448,  447,  444,  443,  442,  441,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      428,  425,  424,  422,  421,  416,  411,  408,  405,  404,
+      403,  402,  400,  399,  398,  397,  396,  395,  394,  391,
+      390,  389,  388,  387,  386,  385,  384,  381,  380,  379,
+
+      378,  377,  376,  375,  374,  373,  372,  371,  370,  366,
+      365,  364,  363,  362,  361,  360,  359,  355,  354,  353,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  341,  340,  339,  338,  337,  336,  335,  334,  333,
+      332,  331,  330,  329,  328,  323,  322,  321,  320,  319,
+      318,  317,  316,  314,  205,  311,  309,  307,  304,  303,
+      301,  299,  292,  291,  290,  288,  287,  285,  284,  283,
+      282,  281,  280,  265,  264,  260,  257,  256,  255,  254,
+      253,  251,  250,  249,  248,  245,  244,  243,  242,  241,
+      240,  239,  238,  237,  233,  232,  229,  226,  225,  224,
+
+      223,  220,  219,  218,  214,  213,  212,  211,  210,  209,
+      205,  198,  195,  194,  192,  190,  189,  181,  164,  145,
+      122,  110,  107,  106,  104,   43,  100,   98,   97,   88,
+       43, 1531,   11, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+
+     1531, 1531, 1531, 1531, 1531, 1531
     } ;
 
-static const flex_int16_t yy_chk[1982] =
+static const flex_int16_t yy_chk[2007] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  595,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  600,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  109,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      595,    8,    8,    8,    1,    8,   44,   27,   28,  109,
+      600,    8,    8,    8,    1,    8,   44,   27,   28,  109,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   48,    2,    2,
@@ -1503,201 +1515,204 @@ static const flex_int16_t yy_chk[1982] =
        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,  715,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  716,
        17,   17,   17,   17,   17,   19,   59,   19,   19,   19,
        19,   19,   64,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   91,   20,  161,  161,
        55,   61,   59,   63,   22,   64,   17,   93,   59,   61,
        55,   59,   61,   19,   63,   61,   64,   61,   65,   61,
        20,   67,   91,   55,   63,   65,   73,   22,   45,   92,
-       73,   67,  718,   67,   45,   93,   45,   45,   55,   45,
+       73,   67,  717,   67,   45,   93,   45,   45,   55,   45,
        73,   45,   45,   45,  301,   58,   69,   69,   45,   45,
 
        69,   45,   58,   96,  301,   92,   69,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       62,   96,   58,  719,   62,   70,   58,   62,   62,   70,
+       62,   96,   58,  718,   62,   70,   58,   62,   62,   70,
        58,   71,   75,  167,  167,   94,   75,  101,   58,   78,
        62,  105,   58,   72,   58,   58,  112,   77,   77,   70,
        71,   72,   71,   72,   71,   95,   76,   77,   72,   72,
-       76,   94,   78,   76,  150,  722,  291,   77,  150,  105,
-       76,   76,   78,  112,  101,  115,   76,   78,  355,  355,
+       76,   94,   78,   76,  150,  278,  291,   77,  150,  105,
+       76,   76,   78,  112,  101,  115,   76,   78,  278,  719,
        77,   95,   77,   81,   81,   81,   81,   81,   82,  111,
 
        82,   82,   82,   82,   82,   77,   81,  113,  115,   83,
-      723,   83,   77,   82,   83,   83,   83,   83,   83,   84,
+      720,   83,   77,   82,   83,   83,   83,   83,   83,   84,
       114,   84,   84,   84,   84,   84,  103,  111,  291,   81,
-      108,  119,  724,  103,   84,  113,   82,   85,   85,   85,
+      108,  119,  721,  103,   84,  113,   82,   85,   85,   85,
        85,   85,   89,   89,   89,   89,   89,  114,  119,  137,
        85,   90,   90,   90,   90,   90,  108,   84,  168,  119,
       126,  140,  168,  103,  140,  137,  168,  103,  140,  126,
       126,  103,  163,   85,  155,  163,  163,  184,  175,  103,
       166,  178,  183,  103,  185,  103,  103,  118,  118,  118,
-      118,  118,  187,  247,  577,  577,  118,  118,  118,  118,
+      118,  118,  187,  356,  356,  722,  118,  118,  118,  118,
 
       118,  118,  155,  184,  155,  175,  186,  185,  178,  188,
       183,  196,  193,  197,  199,  166,  166,  166,  187,  118,
       118,  118,  118,  118,  118,  201,  166,  203,  166,  208,
-      166,  166,  188,  166,  186,  193,  217,  199,  269,  196,
-      197,  269,  286,  256,  217,  308,  247,  286,  201,  247,
-      217,  293,  208,  296,  203,  206,  206,  206,  206,  206,
-      305,  326,  304,  304,  206,  206,  206,  206,  206,  206,
-      302,  304,  361,  308,  293,  332,  296,  315,  326,  256,
-      373,  332,  361,  305,  640,  725,  623,  206,  206,  206,
-      206,  206,  206,  256,  382,  537,  413,  623,  382,  302,
-
-      313,  313,  313,  313,  313,  399,  315,  640,  399,  313,
-      313,  313,  313,  313,  313,  345,  425,  386,  405,  538,
-      345,  386,  537,  405,  413,  423,  442,  423,  639,  648,
-      648,  726,  313,  313,  313,  313,  313,  313,  373,  442,
-      451,  442,  727,  539,  425,  451,  728,  538,  539,  646,
-      684,  716,  423,  684,  423,  646,  639,  720,  716,  717,
-      717,  729,  730,  720,  731,  732,  733,  717,  345,  734,
-      736,  717,  737,  345,  424,  424,  424,  424,  424,  738,
-      739,  740,  741,  424,  424,  424,  424,  424,  424,  742,
-      743,  744,  746,  747,  748,  749,  750,  751,  752,  753,
-
-      737,  754,  755,  756,  757,  758,  424,  424,  424,  424,
-      424,  424,  759,  760,  761,  762,  764,  765,  766,  767,
-      768,  769,  770,  771,  772,  773,  769,  774,  775,  776,
-      777,  780,  781,  782,  783,  786,  787,  788,  789,  790,
-      791,  792,  793,  790,  794,  795,  796,  798,  799,  800,
-      801,  802,  803,  804,  805,  806,  807,  808,  809,  810,
-      811,  812,  813,  814,  815,  816,  817,  818,  819,  820,
-      821,  822,  824,  825,  826,  827,  828,  829,  830,  831,
-      832,  833,  834,  836,  837,  838,  839,  840,  841,  842,
-      843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
-
-      853,  854,  855,  856,  858,  859,  860,  837,  861,  862,
-      836,  863,  864,  865,  866,  868,  869,  870,  871,  872,
-      874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
-      884,  885,  886,  887,  888,  889,  890,  891,  893,  894,
-      895,  897,  898,  899,  900,  901,  902,  890,  903,  904,
-      905,  906,  907,  908,  909,  910,  911,  912,  913,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
-      926,  927,  928,  929,  931,  930,  871,  932,  933,  934,
-      935,  936,  938,  939,  940,  941,  942,  943,  944,  945,
-      947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
-
-      957,  929,  930,  958,  959,  960,  961,  963,  964,  965,
-      966,  967,  963,  968,  969,  970,  971,  972,  973,  974,
-      975,  976,  977,  978,  979,  980,  981,  982,  983,  984,
-      985,  987,  988,  989,  990,  991,  992,  993,  994,  995,
-      996,  997,  999, 1000, 1002, 1003, 1004, 1005, 1006, 1007,
-     1008, 1009,  964, 1010, 1011, 1012, 1013, 1014, 1015, 1017,
-     1018, 1019, 1020, 1021, 1022, 1023, 1025, 1026, 1027, 1028,
-     1029, 1030, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
-     1041, 1042, 1043, 1018, 1044, 1045, 1046, 1047, 1050, 1019,
-     1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1061, 1062,
-
-     1063, 1064, 1066, 1067, 1068, 1069, 1070, 1073, 1074, 1075,
-     1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
-     1086, 1087, 1089, 1090, 1091, 1094, 1095, 1096, 1097, 1098,
-     1099, 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109,
-     1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
-     1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
-     1131, 1102, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1082,
-     1140, 1143, 1144, 1145, 1136, 1146, 1147, 1148, 1149, 1150,
-     1151, 1153, 1108, 1154, 1155, 1156, 1157, 1158, 1159, 1161,
-     1163, 1166, 1168, 1170, 1171, 1172, 1173, 1174, 1176, 1177,
-
-     1172, 1178, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
-     1188, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
-     1174, 1199, 1200, 1203, 1205, 1206, 1207, 1208, 1209, 1211,
-     1212, 1213, 1214, 1215, 1216, 1218, 1219, 1221, 1222, 1223,
-     1224, 1226, 1227, 1228, 1229, 1230, 1231, 1233, 1235, 1237,
-     1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
-     1258, 1259, 1260, 1261, 1262, 1263, 1237, 1264, 1265, 1266,
-     1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
-     1277, 1278, 1279, 1281, 1282, 1284, 1285, 1286, 1287, 1289,
-
-     1292, 1293, 1296, 1297, 1298, 1301, 1302, 1303, 1304, 1305,
-     1306, 1307, 1308, 1310, 1311, 1313, 1315, 1316, 1317, 1318,
-     1319, 1321, 1322, 1323, 1324, 1325, 1287, 1326, 1327, 1259,
-     1328, 1329, 1330, 1331, 1332, 1333, 1335, 1336, 1337, 1338,
-     1340, 1341, 1342, 1343, 1344, 1345, 1346, 1348, 1349, 1350,
-     1352, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
-     1363, 1364, 1366, 1367, 1371, 1374, 1376, 1377, 1379, 1380,
-     1382, 1383, 1384, 1385, 1386, 1387, 1389, 1391, 1392, 1393,
-     1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403, 1404,
-     1405, 1406, 1407, 1408, 1411, 1412, 1413, 1414, 1415, 1417,
-
-     1418, 1419, 1420, 1421, 1422, 1423, 1425, 1426, 1427, 1428,
-     1429, 1431, 1433, 1435, 1436, 1437, 1438, 1439, 1441, 1442,
-     1443, 1445, 1446, 1448, 1449, 1452, 1453, 1454, 1455, 1456,
-     1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466,
-     1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
-     1478, 1480, 1481, 1482, 1483, 1484, 1485, 1489, 1490, 1491,
-     1492, 1494, 1495, 1497, 1498, 1499, 1500, 1501, 1503, 1504,
-     1507, 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508, 1508,
-     1509, 1515, 1509, 1509, 1509, 1510, 1516, 1510, 1517, 1510,
-     1511, 1511, 1511, 1511, 1511, 1512, 1512, 1512, 1512, 1512,
-
-     1513, 1518, 1513, 1513, 1513, 1514, 1514, 1514,  714,  713,
-      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
-      702,  701,  700,  699,  698,  697,  696,  694,  693,  692,
-      691,  690,  689,  688,  687,  685,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
-      669,  668,  666,  665,  664,  663,  662,  661,  660,  659,
-      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
-      647,  645,  644,  643,  642,  641,  638,  637,  636,  634,
-      633,  631,  630,  629,  628,  627,  626,  625,  624,  621,
-      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
-
-      610,  608,  607,  606,  605,  604,  603,  602,  601,  599,
-      598,  597,  596,  594,  593,  592,  591,  590,  589,  588,
-      586,  585,  584,  583,  582,  581,  580,  579,  578,  576,
-      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
-      565,  563,  562,  561,  560,  559,  558,  557,  556,  555,
-      554,  553,  552,  551,  550,  549,  548,  547,  546,  545,
-      544,  543,  542,  541,  535,  533,  530,  529,  528,  527,
-      525,  524,  523,  521,  520,  517,  516,  515,  514,  513,
-      512,  511,  510,  509,  508,  507,  506,  505,  504,  503,
-      502,  501,  500,  499,  498,  497,  496,  495,  494,  493,
-
-      492,  491,  489,  487,  486,  485,  484,  483,  482,  481,
-      480,  479,  478,  477,  476,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  464,  463,  462,  461,  460,
-      459,  458,  457,  455,  454,  453,  452,  450,  449,  448,
-      447,  446,  444,  443,  441,  440,  438,  437,  436,  435,
-      434,  433,  431,  430,  429,  428,  427,  426,  421,  420,
-      418,  417,  416,  415,  414,  412,  411,  409,  406,  404,
-      403,  401,  400,  398,  397,  396,  395,  394,  393,  392,
-      391,  390,  389,  388,  387,  385,  384,  383,  381,  380,
-      379,  378,  376,  375,  374,  372,  371,  370,  369,  368,
-
-      367,  366,  365,  364,  362,  360,  359,  358,  357,  356,
-      354,  353,  352,  351,  350,  349,  348,  347,  346,  344,
-      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
-      333,  331,  330,  329,  328,  325,  324,  323,  322,  321,
-      320,  319,  318,  317,  316,  312,  310,  307,  306,  303,
-      299,  292,  290,  289,  288,  287,  285,  284,  283,  282,
-      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
-      271,  270,  268,  267,  266,  265,  264,  263,  262,  261,
-      260,  259,  258,  257,  255,  254,  253,  252,  251,  250,
-      249,  248,  246,  245,  244,  243,  242,  241,  240,  239,
-
-      237,  236,  235,  234,  233,  232,  231,  230,  229,  228,
-      227,  226,  225,  224,  223,  222,  221,  220,  219,  218,
-      216,  215,  214,  213,  212,  211,  210,  209,  207,  204,
-      202,  200,  198,  195,  194,  192,  189,  181,  180,  179,
-      177,  176,  174,  173,  172,  171,  170,  169,  165,  164,
-      162,  160,  159,  158,  157,  156,  154,  153,  152,  151,
-      149,  148,  147,  146,  145,  144,  143,  142,  141,  139,
-      138,  136,  134,  133,  132,  131,  129,  128,  127,  125,
-      124,  123,  122,  121,  120,  116,  110,  107,  106,  104,
-       99,   98,   79,   74,   68,   60,   53,   50,   49,   47,
-
-       43,   41,   39,   38,   24,   14,   11, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
-     1506
+      166,  166,  188,  166,  186,  193,  217,  199,  293,  196,
+      197,  247,  269,  256,  217,  269,  286,  296,  201,  217,
+      217,  286,  208,  302,  203,  206,  206,  206,  206,  206,
+      305,  293,  304,  304,  206,  206,  206,  206,  206,  206,
+      296,  304,  308,  374,  333,  362,  724,  315,  327,  256,
+      333,  401,  302,  305,  401,  362,  726,  206,  206,  206,
+      206,  206,  206,  256,  247,  327,  415,  247,  629,  427,
+
+      308,  313,  313,  313,  313,  313,  315,  582,  582,  629,
+      313,  313,  313,  313,  313,  313,  346,  445,  383,  387,
+      407,  346,  383,  387,  415,  407,  425,  427,  425,  541,
+      445,  374,  445,  313,  313,  313,  313,  313,  313,  454,
+      542,  543,  645,  646,  454,  652,  543,  654,  654,  691,
+      723,  652,  691,  425,  727,  425,  541,  723,  728,  725,
+      725,  730,  731,  732,  728,  733,  646,  725,  542,  346,
+      645,  725,  734,  735,  346,  426,  426,  426,  426,  426,
+      736,  737,  738,  739,  426,  426,  426,  426,  426,  426,
+      740,  741,  742,  744,  745,  746,  747,  748,  749,  750,
+
+      751,  752,  754,  755,  756,  757,  758,  426,  426,  426,
+      426,  426,  426,  759,  760,  761,  762,  763,  764,  765,
+      766,  767,  745,  768,  769,  770,  771,  773,  774,  775,
+      776,  777,  778,  779,  780,  781,  782,  778,  783,  784,
+      785,  786,  789,  790,  791,  792,  795,  796,  797,  798,
+      799,  800,  801,  802,  799,  803,  804,  805,  807,  808,
+      809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
+      819,  820,  821,  822,  823,  824,  825,  826,  827,  828,
+      829,  830,  831,  832,  834,  835,  836,  837,  838,  839,
+      840,  841,  842,  843,  844,  846,  847,  848,  849,  850,
+
+      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
+      861,  862,  863,  864,  865,  866,  867,  869,  870,  847,
+      871,  872,  846,  873,  874,  875,  876,  877,  879,  880,
+      881,  882,  883,  885,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  895,  896,  897,  898,  899,  900,  901,
+      902,  904,  905,  906,  908,  909,  910,  911,  912,  913,
+      901,  914,  915,  916,  917,  918,  919,  920,  921,  922,
+      923,  924,  925,  927,  928,  929,  930,  931,  932,  933,
+      934,  935,  936,  937,  938,  939,  940,  941,  943,  882,
+      942,  944,  945,  946,  947,  948,  950,  951,  952,  953,
+
+      954,  955,  956,  957,  958,  960,  961,  962,  963,  964,
+      965,  966,  967,  968,  969,  941,  970,  942,  971,  972,
+      973,  974,  976,  977,  978,  979,  980,  976,  981,  982,
+      983,  984,  985,  986,  987,  988,  989,  990,  991,  992,
+      993,  994,  995,  996,  997,  998, 1000, 1001, 1002, 1003,
+     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1012, 1013, 1014,
+     1016, 1017, 1018, 1019, 1020, 1021, 1022,  977, 1023, 1024,
+     1025, 1026, 1027, 1028, 1029, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1048,
+     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1032,
+
+     1058, 1059, 1060, 1061, 1062, 1033, 1065, 1067, 1068, 1069,
+     1070, 1071, 1072, 1073, 1074, 1076, 1077, 1078, 1079, 1081,
+     1082, 1083, 1084, 1085, 1088, 1089, 1090, 1091, 1092, 1093,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1105, 1106, 1107, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
+     1117, 1118, 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127,
+     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139,
+     1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1118,
+     1149, 1150, 1151, 1152, 1153, 1154, 1097, 1155, 1157, 1160,
+     1161, 1162, 1153, 1163, 1164, 1165, 1166, 1167, 1168, 1170,
+
+     1124, 1171, 1172, 1173, 1174, 1175, 1176, 1178, 1179, 1181,
+     1184, 1186, 1188, 1189, 1190, 1191, 1192, 1194, 1195, 1190,
+     1196, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206,
+     1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1192,
+     1217, 1218, 1221, 1223, 1224, 1225, 1226, 1227, 1229, 1230,
+     1231, 1232, 1233, 1234, 1236, 1237, 1239, 1240, 1241, 1242,
+     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1252, 1254, 1256,
+     1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
+     1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
+     1277, 1278, 1279, 1280, 1281, 1282, 1256, 1283, 1284, 1285,
+
+     1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
+     1296, 1297, 1298, 1300, 1301, 1302, 1304, 1305, 1306, 1307,
+     1309, 1312, 1313, 1316, 1317, 1318, 1321, 1322, 1323, 1324,
+     1325, 1326, 1327, 1328, 1330, 1331, 1333, 1335, 1336, 1337,
+     1338, 1339, 1341, 1342, 1343, 1344, 1345, 1307, 1346, 1278,
+     1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1356, 1357,
+     1358, 1359, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1369,
+     1370, 1371, 1373, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
+     1382, 1383, 1384, 1385, 1387, 1388, 1390, 1393, 1396, 1398,
+     1399, 1401, 1402, 1404, 1405, 1406, 1407, 1408, 1409, 1411,
+
+     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1422, 1423,
+     1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1434, 1435,
+     1436, 1437, 1438, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
+     1447, 1449, 1450, 1451, 1452, 1453, 1455, 1457, 1459, 1460,
+     1461, 1462, 1464, 1466, 1467, 1468, 1470, 1471, 1473, 1474,
+     1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486,
+     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496,
+     1497, 1498, 1499, 1500, 1501, 1503, 1505, 1506, 1507, 1508,
+     1509, 1510, 1514, 1515, 1516, 1517, 1519, 1520, 1522, 1523,
+     1524, 1525, 1526, 1528, 1529, 1532, 1532, 1532, 1532, 1532,
+
+     1533, 1533, 1533, 1533, 1533, 1534, 1540, 1534, 1534, 1534,
+     1535, 1541, 1535, 1542, 1535, 1536, 1536, 1536, 1536, 1536,
+     1537, 1537, 1537, 1537, 1537, 1538, 1543, 1538, 1538, 1538,
+     1539, 1539, 1539,  715,  714,  713,  712,  711,  710,  709,
+      708,  707,  706,  705,  704,  703,  701,  700,  699,  698,
+      697,  696,  695,  694,  692,  690,  689,  688,  687,  686,
+      685,  684,  683,  682,  681,  680,  679,  678,  677,  676,
+      675,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      653,  651,  650,  649,  648,  647,  644,  643,  642,  640,
+
+      639,  637,  636,  635,  634,  633,  632,  631,  630,  627,
+      626,  625,  624,  623,  622,  621,  620,  619,  618,  617,
+      616,  615,  613,  612,  611,  610,  609,  608,  607,  606,
+      604,  603,  602,  601,  599,  598,  597,  596,  595,  594,
+      593,  591,  590,  589,  588,  587,  586,  585,  584,  583,
+      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
+      571,  570,  568,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  557,  556,  555,  554,  553,  552,  551,
+      550,  549,  548,  547,  546,  545,  539,  537,  534,  533,
+      532,  531,  529,  528,  527,  525,  524,  521,  520,  519,
+
+      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
+      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
+      498,  497,  496,  495,  494,  492,  490,  489,  488,  487,
+      486,  485,  484,  483,  482,  481,  480,  479,  477,  476,
+      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+      465,  464,  463,  462,  461,  460,  458,  457,  456,  455,
+      453,  452,  451,  450,  449,  447,  446,  444,  443,  441,
+      440,  439,  438,  437,  436,  435,  433,  432,  431,  430,
+      429,  428,  423,  422,  420,  419,  418,  417,  416,  414,
+      413,  411,  408,  406,  405,  403,  402,  400,  399,  398,
+
+      397,  396,  395,  394,  393,  392,  391,  390,  389,  388,
+      386,  385,  384,  382,  381,  380,  379,  377,  376,  375,
+      373,  372,  371,  370,  369,  368,  367,  366,  365,  363,
+      361,  360,  359,  358,  357,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  345,  344,  343,  342,  341,  340,
+      339,  338,  337,  336,  335,  334,  332,  331,  330,  329,
+      326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
+      316,  312,  310,  307,  306,  303,  299,  292,  290,  289,
+      288,  287,  285,  284,  283,  282,  281,  280,  279,  277,
+      276,  275,  274,  273,  272,  271,  270,  268,  267,  266,
+
+      265,  264,  263,  262,  261,  260,  259,  258,  257,  255,
+      254,  253,  252,  251,  250,  249,  248,  246,  245,  244,
+      243,  242,  241,  240,  239,  237,  236,  235,  234,  233,
+      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
+      222,  221,  220,  219,  218,  216,  215,  214,  213,  212,
+      211,  210,  209,  207,  204,  202,  200,  198,  195,  194,
+      192,  189,  181,  180,  179,  177,  176,  174,  173,  172,
+      171,  170,  169,  165,  164,  162,  160,  159,  158,  157,
+      156,  154,  153,  152,  151,  149,  148,  147,  146,  145,
+      144,  143,  142,  141,  139,  138,  136,  134,  133,  132,
+
+      131,  129,  128,  127,  125,  124,  123,  122,  121,  120,
+      116,  110,  107,  106,  104,   99,   98,   79,   74,   68,
+       60,   53,   50,   49,   47,   43,   41,   39,   38,   24,
+       14,   11, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+     1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
+
+     1531, 1531, 1531, 1531, 1531, 1531
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1706,27 +1721,27 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[178] =
+static const flex_int16_t yy_rule_linenum[180] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  255,  264,
       273,  282,  291,  300,  309,  318,  327,  336,  345,  354,
       366,  375,  384,  393,  402,  413,  424,  435,  446,  456,
       466,  477,  488,  499,  510,  521,  532,  543,  554,  565,
-      576,  587,  596,  605,  615,  624,  634,  648,  664,  673,
-      682,  691,  700,  721,  742,  751,  761,  770,  781,  790,
-      799,  808,  817,  826,  836,  845,  856,  867,  879,  888,
-      897,  906,  915,  924,  933,  942,  951,  960,  970,  981,
-      993, 1002, 1011, 1021, 1031, 1041, 1051, 1061, 1071, 1080,
-
-     1090, 1099, 1108, 1117, 1126, 1136, 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, 1390, 1399, 1408, 1417, 1426, 1435, 1445,
-     1455, 1465, 1475, 1485, 1495, 1505, 1515, 1525, 1534, 1543,
-     1552, 1561, 1570, 1579, 1588, 1599, 1610, 1623, 1636, 1651,
-     1750, 1755, 1760, 1765, 1766, 1767, 1768, 1769, 1770, 1772,
-     1790, 1803, 1808, 1812, 1814, 1816, 1818
+      576,  587,  598,  609,  618,  627,  637,  646,  656,  670,
+      686,  695,  704,  713,  722,  743,  764,  773,  783,  792,
+      803,  812,  821,  830,  839,  848,  858,  867,  878,  889,
+      901,  910,  919,  928,  937,  946,  955,  964,  973,  982,
+      992, 1003, 1015, 1024, 1033, 1043, 1053, 1063, 1073, 1083,
+
+     1093, 1102, 1112, 1121, 1130, 1139, 1148, 1158, 1168, 1177,
+     1187, 1196, 1205, 1214, 1223, 1232, 1241, 1250, 1259, 1268,
+     1277, 1286, 1295, 1304, 1313, 1322, 1331, 1340, 1349, 1358,
+     1367, 1376, 1385, 1394, 1403, 1412, 1421, 1430, 1439, 1448,
+     1457, 1467, 1477, 1487, 1497, 1507, 1517, 1527, 1537, 1547,
+     1556, 1565, 1574, 1583, 1592, 1601, 1610, 1621, 1632, 1645,
+     1658, 1673, 1772, 1777, 1782, 1787, 1788, 1789, 1790, 1791,
+     1792, 1794, 1812, 1825, 1830, 1834, 1836, 1838, 1840
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1738,7 +1753,7 @@ static const flex_int16_t yy_rule_linenum[178] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "dhcp4_lexer.ll"
-/* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2016-2019 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -1779,7 +1794,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1783 "dhcp4_lexer.cc"
+#line 1798 "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
@@ -1805,8 +1820,8 @@ using namespace isc::dhcp;
    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 1809 "dhcp4_lexer.cc"
-#line 1810 "dhcp4_lexer.cc"
+#line 1824 "dhcp4_lexer.cc"
+#line 1825 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2136,7 +2151,7 @@ YY_DECL
     }
 
 
-#line 2140 "dhcp4_lexer.cc"
+#line 2155 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2165,13 +2180,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 >= 1507 )
+                               if ( yy_current_state >= 1532 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1506 );
+               while ( yy_current_state != 1531 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2190,13 +2205,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 < 178 )
+                       else if ( yy_act < 180 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 178 )
+                       else if ( yy_act == 180 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 179 )
+                       else if ( yy_act == 181 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2698,9 +2713,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_CONSISTENCY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("consistency", driver.loc_);
     }
 }
        YY_BREAK
@@ -2712,9 +2727,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_REQUEST_TIMEOUT(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_SERIAL_CONSISTENCY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("request-timeout", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("serial-consistency", driver.loc_);
     }
 }
        YY_BREAK
@@ -2726,9 +2741,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_TCP_KEEPALIVE(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-keepalive", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
     }
 }
        YY_BREAK
@@ -2740,9 +2755,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_TCP_NODELAY(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_REQUEST_TIMEOUT(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-nodelay", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("request-timeout", driver.loc_);
     }
 }
        YY_BREAK
@@ -2754,9 +2769,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_CONTACT_POINTS(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_TCP_KEEPALIVE(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("contact-points", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-keepalive", driver.loc_);
     }
 }
        YY_BREAK
@@ -2768,15 +2783,43 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     case isc::dhcp::Parser4Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp4Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_TCP_NODELAY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("max-reconnect-tries", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-nodelay", driver.loc_);
     }
 }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 554 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_CONTACT_POINTS(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("contact-points", driver.loc_);
+    }
+}
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 565 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("max-reconnect-tries", driver.loc_);
+    }
+}
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 576 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2788,9 +2831,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 52:
 YY_RULE_SETUP
-#line 565 "dhcp4_lexer.ll"
+#line 587 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2802,9 +2845,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 53:
 YY_RULE_SETUP
-#line 576 "dhcp4_lexer.ll"
+#line 598 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2816,9 +2859,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 54:
 YY_RULE_SETUP
-#line 587 "dhcp4_lexer.ll"
+#line 609 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2828,9 +2871,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 55:
 YY_RULE_SETUP
-#line 596 "dhcp4_lexer.ll"
+#line 618 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2840,9 +2883,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 56:
 YY_RULE_SETUP
-#line 605 "dhcp4_lexer.ll"
+#line 627 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2853,9 +2896,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 57:
 YY_RULE_SETUP
-#line 615 "dhcp4_lexer.ll"
+#line 637 "dhcp4_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2865,9 +2908,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 58:
 YY_RULE_SETUP
-#line 624 "dhcp4_lexer.ll"
+#line 646 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2878,9 +2921,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 59:
 YY_RULE_SETUP
-#line 634 "dhcp4_lexer.ll"
+#line 656 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2895,9 +2938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 60:
 YY_RULE_SETUP
-#line 648 "dhcp4_lexer.ll"
+#line 670 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2914,9 +2957,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 61:
 YY_RULE_SETUP
-#line 664 "dhcp4_lexer.ll"
+#line 686 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2926,9 +2969,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 62:
 YY_RULE_SETUP
-#line 673 "dhcp4_lexer.ll"
+#line 695 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2938,9 +2981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 63:
 YY_RULE_SETUP
-#line 682 "dhcp4_lexer.ll"
+#line 704 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2950,9 +2993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 64:
 YY_RULE_SETUP
-#line 691 "dhcp4_lexer.ll"
+#line 713 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -2962,9 +3005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 65:
 YY_RULE_SETUP
-#line 700 "dhcp4_lexer.ll"
+#line 722 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2986,9 +3029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 66:
 YY_RULE_SETUP
-#line 721 "dhcp4_lexer.ll"
+#line 743 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3010,9 +3053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 67:
 YY_RULE_SETUP
-#line 742 "dhcp4_lexer.ll"
+#line 764 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3022,9 +3065,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 68:
 YY_RULE_SETUP
-#line 751 "dhcp4_lexer.ll"
+#line 773 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3035,9 +3078,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 69:
 YY_RULE_SETUP
-#line 761 "dhcp4_lexer.ll"
+#line 783 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3047,9 +3090,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 70:
 YY_RULE_SETUP
-#line 770 "dhcp4_lexer.ll"
+#line 792 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3061,9 +3104,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 781 "dhcp4_lexer.ll"
+#line 803 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3073,9 +3116,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 790 "dhcp4_lexer.ll"
+#line 812 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3085,9 +3128,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 799 "dhcp4_lexer.ll"
+#line 821 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3097,9 +3140,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 808 "dhcp4_lexer.ll"
+#line 830 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3109,9 +3152,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 817 "dhcp4_lexer.ll"
+#line 839 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3121,9 +3164,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 826 "dhcp4_lexer.ll"
+#line 848 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3134,9 +3177,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 836 "dhcp4_lexer.ll"
+#line 858 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3146,9 +3189,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 845 "dhcp4_lexer.ll"
+#line 867 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3160,9 +3203,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 856 "dhcp4_lexer.ll"
+#line 878 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3174,9 +3217,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 867 "dhcp4_lexer.ll"
+#line 889 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3188,9 +3231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 879 "dhcp4_lexer.ll"
+#line 901 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3200,9 +3243,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 888 "dhcp4_lexer.ll"
+#line 910 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -3212,9 +3255,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 897 "dhcp4_lexer.ll"
+#line 919 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3224,9 +3267,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 906 "dhcp4_lexer.ll"
+#line 928 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3236,9 +3279,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 915 "dhcp4_lexer.ll"
+#line 937 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3248,9 +3291,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 924 "dhcp4_lexer.ll"
+#line 946 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3260,9 +3303,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 933 "dhcp4_lexer.ll"
+#line 955 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3272,9 +3315,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 942 "dhcp4_lexer.ll"
+#line 964 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3284,9 +3327,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 973 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3296,9 +3339,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 960 "dhcp4_lexer.ll"
+#line 982 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3309,9 +3352,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 970 "dhcp4_lexer.ll"
+#line 992 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3323,9 +3366,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 981 "dhcp4_lexer.ll"
+#line 1003 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3338,9 +3381,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 93:
 YY_RULE_SETUP
-#line 993 "dhcp4_lexer.ll"
+#line 1015 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3350,9 +3393,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 1002 "dhcp4_lexer.ll"
+#line 1024 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3362,9 +3405,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1011 "dhcp4_lexer.ll"
+#line 1033 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3375,9 +3418,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1021 "dhcp4_lexer.ll"
+#line 1043 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3388,9 +3431,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1031 "dhcp4_lexer.ll"
+#line 1053 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3401,9 +3444,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1041 "dhcp4_lexer.ll"
+#line 1063 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3414,9 +3457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1051 "dhcp4_lexer.ll"
+#line 1073 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3427,9 +3470,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1061 "dhcp4_lexer.ll"
+#line 1083 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3440,9 +3483,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1071 "dhcp4_lexer.ll"
+#line 1093 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3452,9 +3495,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1080 "dhcp4_lexer.ll"
+#line 1102 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3465,9 +3508,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1090 "dhcp4_lexer.ll"
+#line 1112 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3477,9 +3520,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1099 "dhcp4_lexer.ll"
+#line 1121 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3489,9 +3532,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1108 "dhcp4_lexer.ll"
+#line 1130 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3501,9 +3544,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1117 "dhcp4_lexer.ll"
+#line 1139 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3513,9 +3556,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1126 "dhcp4_lexer.ll"
+#line 1148 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3526,9 +3569,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1136 "dhcp4_lexer.ll"
+#line 1158 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3539,9 +3582,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1146 "dhcp4_lexer.ll"
+#line 1168 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3551,9 +3594,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1155 "dhcp4_lexer.ll"
+#line 1177 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3563,9 +3606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1165 "dhcp4_lexer.ll"
+#line 1187 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3575,9 +3618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1174 "dhcp4_lexer.ll"
+#line 1196 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3587,9 +3630,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1183 "dhcp4_lexer.ll"
+#line 1205 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3599,9 +3642,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1192 "dhcp4_lexer.ll"
+#line 1214 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3611,9 +3654,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1201 "dhcp4_lexer.ll"
+#line 1223 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3623,9 +3666,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1210 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3635,9 +3678,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1219 "dhcp4_lexer.ll"
+#line 1241 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3647,9 +3690,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1228 "dhcp4_lexer.ll"
+#line 1250 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3659,9 +3702,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1237 "dhcp4_lexer.ll"
+#line 1259 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3671,9 +3714,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1246 "dhcp4_lexer.ll"
+#line 1268 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3683,9 +3726,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1255 "dhcp4_lexer.ll"
+#line 1277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3695,9 +3738,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1264 "dhcp4_lexer.ll"
+#line 1286 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3707,9 +3750,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1273 "dhcp4_lexer.ll"
+#line 1295 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3719,9 +3762,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1282 "dhcp4_lexer.ll"
+#line 1304 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3731,9 +3774,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1291 "dhcp4_lexer.ll"
+#line 1313 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3743,9 +3786,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1300 "dhcp4_lexer.ll"
+#line 1322 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3755,9 +3798,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1331 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3767,9 +3810,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1318 "dhcp4_lexer.ll"
+#line 1340 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3779,9 +3822,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1327 "dhcp4_lexer.ll"
+#line 1349 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3791,9 +3834,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1336 "dhcp4_lexer.ll"
+#line 1358 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3803,9 +3846,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1345 "dhcp4_lexer.ll"
+#line 1367 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3815,9 +3858,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1354 "dhcp4_lexer.ll"
+#line 1376 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3827,9 +3870,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1363 "dhcp4_lexer.ll"
+#line 1385 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3839,9 +3882,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1372 "dhcp4_lexer.ll"
+#line 1394 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3851,9 +3894,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1381 "dhcp4_lexer.ll"
+#line 1403 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3863,9 +3906,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1390 "dhcp4_lexer.ll"
+#line 1412 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3875,9 +3918,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1399 "dhcp4_lexer.ll"
+#line 1421 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3887,9 +3930,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1408 "dhcp4_lexer.ll"
+#line 1430 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3899,9 +3942,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1417 "dhcp4_lexer.ll"
+#line 1439 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3911,9 +3954,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1426 "dhcp4_lexer.ll"
+#line 1448 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3923,9 +3966,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1435 "dhcp4_lexer.ll"
+#line 1457 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3936,9 +3979,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1445 "dhcp4_lexer.ll"
+#line 1467 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -3949,9 +3992,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1455 "dhcp4_lexer.ll"
+#line 1477 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -3962,9 +4005,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1465 "dhcp4_lexer.ll"
+#line 1487 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3975,9 +4018,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1475 "dhcp4_lexer.ll"
+#line 1497 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -3988,9 +4031,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1485 "dhcp4_lexer.ll"
+#line 1507 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4001,9 +4044,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1517 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4014,9 +4057,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1505 "dhcp4_lexer.ll"
+#line 1527 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4027,9 +4070,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1515 "dhcp4_lexer.ll"
+#line 1537 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4040,9 +4083,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1525 "dhcp4_lexer.ll"
+#line 1547 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4052,9 +4095,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1534 "dhcp4_lexer.ll"
+#line 1556 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4064,9 +4107,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1543 "dhcp4_lexer.ll"
+#line 1565 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4076,9 +4119,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1552 "dhcp4_lexer.ll"
+#line 1574 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4088,9 +4131,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1561 "dhcp4_lexer.ll"
+#line 1583 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4100,9 +4143,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1570 "dhcp4_lexer.ll"
+#line 1592 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4112,9 +4155,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1579 "dhcp4_lexer.ll"
+#line 1601 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4124,9 +4167,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1588 "dhcp4_lexer.ll"
+#line 1610 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4138,9 +4181,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1599 "dhcp4_lexer.ll"
+#line 1621 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4152,9 +4195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1610 "dhcp4_lexer.ll"
+#line 1632 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4168,9 +4211,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1623 "dhcp4_lexer.ll"
+#line 1645 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4184,9 +4227,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1636 "dhcp4_lexer.ll"
+#line 1658 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4200,9 +4243,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1651 "dhcp4_lexer.ll"
+#line 1673 "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.
@@ -4302,65 +4345,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 161:
-/* rule 161 can match eol */
+case 163:
+/* rule 163 can match eol */
 YY_RULE_SETUP
-#line 1750 "dhcp4_lexer.ll"
+#line 1772 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 162:
-/* rule 162 can match eol */
+case 164:
+/* rule 164 can match eol */
 YY_RULE_SETUP
-#line 1755 "dhcp4_lexer.ll"
+#line 1777 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1760 "dhcp4_lexer.ll"
+#line 1782 "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 164:
+case 166:
 YY_RULE_SETUP
-#line 1765 "dhcp4_lexer.ll"
+#line 1787 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1766 "dhcp4_lexer.ll"
+#line 1788 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1767 "dhcp4_lexer.ll"
+#line 1789 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1768 "dhcp4_lexer.ll"
+#line 1790 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1769 "dhcp4_lexer.ll"
+#line 1791 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1770 "dhcp4_lexer.ll"
+#line 1792 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1772 "dhcp4_lexer.ll"
+#line 1794 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4379,9 +4422,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1790 "dhcp4_lexer.ll"
+#line 1812 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4395,43 +4438,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1803 "dhcp4_lexer.ll"
+#line 1825 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1808 "dhcp4_lexer.ll"
+#line 1830 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1812 "dhcp4_lexer.ll"
+#line 1834 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1814 "dhcp4_lexer.ll"
+#line 1836 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1816 "dhcp4_lexer.ll"
+#line 1838 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1818 "dhcp4_lexer.ll"
+#line 1840 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1820 "dhcp4_lexer.ll"
+#line 1842 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4455,12 +4498,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1843 "dhcp4_lexer.ll"
+#line 1865 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4464 "dhcp4_lexer.cc"
+#line 4507 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4779,7 +4822,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 >= 1507 )
+                       if ( yy_current_state >= 1532 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4812,11 +4855,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 >= 1507 )
+               if ( yy_current_state >= 1532 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1506);
+       yy_is_jam = (yy_current_state == 1531);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5565,7 +5608,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1843 "dhcp4_lexer.ll"
+#line 1865 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 55ddee004fc39c572680f5f345e3e024923bb7ab..b3a20a7e97590f9cde1f0dec35ade4b7dc05a7f8 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // This special exception was added by the Free Software Foundation in
 // version 2.2 of Bison.
 
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details.  Do not rely on them.
-
-
 // Take the name prefix into account.
 #define yylex   parser4_lex
 
+// First part of user declarations.
 
+#line 39 "dhcp4_parser.cc" // lalr1.cc:404
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
 
 #include "dhcp4_parser.h"
 
+// User implementation prologue.
 
+#line 53 "dhcp4_parser.cc" // lalr1.cc:412
 // Unqualified %code blocks.
-#line 34 "dhcp4_parser.yy" // lalr1.cc:435
+#line 34 "dhcp4_parser.yy" // lalr1.cc:413
 
 #include <dhcp4/parser_context.h>
 
-#line 51 "dhcp4_parser.cc" // lalr1.cc:435
+#line 59 "dhcp4_parser.cc" // lalr1.cc:413
 
 
 #ifndef YY_
 # endif
 #endif
 
-// Whether we are compiled with exception support.
-#ifndef YY_EXCEPTIONS
-# if defined __GNUC__ && !defined __EXCEPTIONS
-#  define YY_EXCEPTIONS 0
-# else
-#  define YY_EXCEPTIONS 1
-# endif
-#endif
-
 #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    If N is 0, then set CURRENT to the empty location which ends
@@ -88,7 +87,7 @@
         {                                                               \
           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
         }                                                               \
-    while (false)
+    while (/*CONSTCOND*/ false)
 # endif
 
 
     {                                           \
       *yycdebug_ << Title << ' ';               \
       yy_print_ (*yycdebug_, Symbol);           \
-      *yycdebug_ << '\n';                       \
+      *yycdebug_ << std::endl;                  \
     }                                           \
   } while (false)
 
 #else // !PARSER4_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
-# define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
-# define YY_STACK_PRINT()                static_cast<void> (0)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE(Symbol)
+# define YY_REDUCE_PRINT(Rule)           static_cast<void>(0)
+# define YY_STACK_PRINT()                static_cast<void>(0)
 
 #endif // !PARSER4_DEBUG
 
 #define YYERROR         goto yyerrorlab
 #define YYRECOVERING()  (!!yyerrstatus_)
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:510
+#line 14 "dhcp4_parser.yy" // lalr1.cc:479
 namespace isc { namespace dhcp {
-#line 146 "dhcp4_parser.cc" // lalr1.cc:510
+#line 145 "dhcp4_parser.cc" // lalr1.cc:479
 
   /* Return YYSTR after stripping away unnecessary quotes and
      backslashes, so that it's suitable for yyerror.  The heuristic is
@@ -154,7 +153,7 @@ namespace isc { namespace dhcp {
   {
     if (*yystr == '"')
       {
-        std::string yyr;
+        std::string yyr = "";
         char const *yyp = yystr;
 
         for (;;)
@@ -167,10 +166,7 @@ namespace isc { namespace dhcp {
             case '\\':
               if (*++yyp != '\\')
                 goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
+              // Fall through.
             default:
               yyr += *yyp;
               break;
@@ -198,8 +194,6 @@ namespace isc { namespace dhcp {
   Dhcp4Parser::~Dhcp4Parser ()
   {}
 
-  Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
-  {}
 
   /*---------------.
   | Symbol types.  |
@@ -208,20 +202,24 @@ namespace isc { namespace dhcp {
 
 
   // by_state.
-  Dhcp4Parser::by_state::by_state () YY_NOEXCEPT
+  inline
+  Dhcp4Parser::by_state::by_state ()
     : state (empty_state)
   {}
 
-  Dhcp4Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
-    : state (that.state)
+  inline
+  Dhcp4Parser::by_state::by_state (const by_state& other)
+    : state (other.state)
   {}
 
+  inline
   void
-  Dhcp4Parser::by_state::clear () YY_NOEXCEPT
+  Dhcp4Parser::by_state::clear ()
   {
     state = empty_state;
   }
 
+  inline
   void
   Dhcp4Parser::by_state::move (by_state& that)
   {
@@ -229,12 +227,14 @@ namespace isc { namespace dhcp {
     that.clear ();
   }
 
-  Dhcp4Parser::by_state::by_state (state_type s) YY_NOEXCEPT
+  inline
+  Dhcp4Parser::by_state::by_state (state_type s)
     : state (s)
   {}
 
+  inline
   Dhcp4Parser::symbol_number_type
-  Dhcp4Parser::by_state::type_get () const YY_NOEXCEPT
+  Dhcp4Parser::by_state::type_get () const
   {
     if (state == empty_state)
       return empty_symbol;
@@ -242,81 +242,42 @@ namespace isc { namespace dhcp {
       return yystos_[state];
   }
 
+  inline
   Dhcp4Parser::stack_symbol_type::stack_symbol_type ()
   {}
 
-  Dhcp4Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
-    : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
-  {
-    switch (that.type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
-        break;
 
-      case 171: // "boolean"
-        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
-        break;
-
-      case 170: // "floating point"
-        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
-        break;
-
-      case 169: // "integer"
-        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
-        break;
-
-      case 168: // "constant string"
-        value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
-        break;
-
-      default:
-        break;
-    }
-
-#if 201103L <= YY_CPLUSPLUS
-    // that is emptied.
-    that.state = empty_state;
-#endif
-  }
-
-  Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
-    : super_type (s, YY_MOVE (that.location))
+  inline
+  Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
+    : super_type (s, that.location)
   {
-    switch (that.type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.move< ElementPtr > (YY_MOVE (that.value));
+      switch (that.type_get ())
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.move< ElementPtr > (that.value);
         break;
 
-      case 171: // "boolean"
-        value.move< bool > (YY_MOVE (that.value));
+      case 173: // "boolean"
+        value.move< bool > (that.value);
         break;
 
-      case 170: // "floating point"
-        value.move< double > (YY_MOVE (that.value));
+      case 172: // "floating point"
+        value.move< double > (that.value);
         break;
 
-      case 169: // "integer"
-        value.move< int64_t > (YY_MOVE (that.value));
+      case 171: // "integer"
+        value.move< int64_t > (that.value);
         break;
 
-      case 168: // "constant string"
-        value.move< std::string > (YY_MOVE (that.value));
+      case 170: // "constant string"
+        value.move< std::string > (that.value);
         break;
 
       default:
@@ -327,38 +288,38 @@ namespace isc { namespace dhcp {
     that.type = empty_symbol;
   }
 
-#if YY_CPLUSPLUS < 201103L
+  inline
   Dhcp4Parser::stack_symbol_type&
-  Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that)
+  Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.move< ElementPtr > (that.value);
+      switch (that.type_get ())
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.copy< ElementPtr > (that.value);
         break;
 
-      case 171: // "boolean"
-        value.move< bool > (that.value);
+      case 173: // "boolean"
+        value.copy< bool > (that.value);
         break;
 
-      case 170: // "floating point"
-        value.move< double > (that.value);
+      case 172: // "floating point"
+        value.copy< double > (that.value);
         break;
 
-      case 169: // "integer"
-        value.move< int64_t > (that.value);
+      case 171: // "integer"
+        value.copy< int64_t > (that.value);
         break;
 
-      case 168: // "constant string"
-        value.move< std::string > (that.value);
+      case 170: // "constant string"
+        value.copy< std::string > (that.value);
         break;
 
       default:
@@ -366,13 +327,12 @@ namespace isc { namespace dhcp {
     }
 
     location = that.location;
-    // that is emptied.
-    that.state = empty_state;
     return *this;
   }
-#endif
+
 
   template <typename Base>
+  inline
   void
   Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
   {
@@ -389,89 +349,100 @@ namespace isc { namespace dhcp {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
     symbol_number_type yytype = yysym.type_get ();
-#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
     // Avoid a (spurious) G++ 4.8 warning about "array subscript is
     // below array bounds".
     if (yysym.empty ())
       std::abort ();
-#endif
     yyo << (yytype < yyntokens_ ? "token" : "nterm")
         << ' ' << yytname_[yytype] << " ("
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 168: // "constant string"
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < std::string > (); }
-#line 407 "dhcp4_parser.cc" // lalr1.cc:676
+            case 170: // "constant string"
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< std::string > (); }
+#line 366 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 169: // "integer"
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < int64_t > (); }
-#line 413 "dhcp4_parser.cc" // lalr1.cc:676
+      case 171: // "integer"
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< int64_t > (); }
+#line 373 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 170: // "floating point"
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < double > (); }
-#line 419 "dhcp4_parser.cc" // lalr1.cc:676
+      case 172: // "floating point"
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< double > (); }
+#line 380 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 171: // "boolean"
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < bool > (); }
-#line 425 "dhcp4_parser.cc" // lalr1.cc:676
+      case 173: // "boolean"
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< bool > (); }
+#line 387 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 188: // value
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 431 "dhcp4_parser.cc" // lalr1.cc:676
+      case 190: // value
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 394 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 192: // map_value
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 437 "dhcp4_parser.cc" // lalr1.cc:676
+      case 194: // map_value
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 401 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 236: // socket_type
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 443 "dhcp4_parser.cc" // lalr1.cc:676
+      case 238: // socket_type
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 408 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 239: // outbound_interface_value
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 449 "dhcp4_parser.cc" // lalr1.cc:676
+      case 241: // outbound_interface_value
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 415 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 261: // db_type
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 455 "dhcp4_parser.cc" // lalr1.cc:676
+      case 263: // db_type
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 422 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 343: // hr_mode
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 461 "dhcp4_parser.cc" // lalr1.cc:676
+      case 349: // hr_mode
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 429 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 492: // ncr_protocol_value
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 467 "dhcp4_parser.cc" // lalr1.cc:676
+      case 498: // ncr_protocol_value
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 436 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 499: // replace_client_name_value
-#line 248 "dhcp4_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 473 "dhcp4_parser.cc" // lalr1.cc:676
+      case 505: // replace_client_name_value
+
+#line 250 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 443 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
+
       default:
         break;
     }
@@ -479,27 +450,26 @@ namespace isc { namespace dhcp {
   }
 #endif
 
+  inline
   void
-  Dhcp4Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
+  Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
   {
-    if (m)
-      YY_SYMBOL_PRINT (m, sym);
-    yystack_.push (YY_MOVE (sym));
+    stack_symbol_type t (s, sym);
+    yypush_ (m, t);
   }
 
+  inline
   void
-  Dhcp4Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
+  Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s)
   {
-#if 201103L <= YY_CPLUSPLUS
-    yypush_ (m, stack_symbol_type (s, std::move (sym)));
-#else
-    stack_symbol_type ss (s, sym);
-    yypush_ (m, ss);
-#endif
+    if (m)
+      YY_SYMBOL_PRINT (m, s);
+    yystack_.push (s);
   }
 
+  inline
   void
-  Dhcp4Parser::yypop_ (int n)
+  Dhcp4Parser::yypop_ (unsigned int n)
   {
     yystack_.pop (n);
   }
@@ -531,7 +501,7 @@ namespace isc { namespace dhcp {
   }
 #endif // PARSER4_DEBUG
 
-  Dhcp4Parser::state_type
+  inline Dhcp4Parser::state_type
   Dhcp4Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
   {
     int yyr = yypgoto_[yysym - yyntokens_] + yystate;
@@ -541,24 +511,18 @@ namespace isc { namespace dhcp {
       return yydefgoto_[yysym - yyntokens_];
   }
 
-  bool
+  inline bool
   Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue)
   {
     return yyvalue == yypact_ninf_;
   }
 
-  bool
+  inline bool
   Dhcp4Parser::yy_table_value_is_error_ (int yyvalue)
   {
     return yyvalue == yytable_ninf_;
   }
 
-  int
-  Dhcp4Parser::operator() ()
-  {
-    return parse ();
-  }
-
   int
   Dhcp4Parser::parse ()
   {
@@ -580,11 +544,11 @@ namespace isc { namespace dhcp {
     /// The return value of parse ().
     int yyresult;
 
-#if YY_EXCEPTIONS
+    // FIXME: This shoud be completely indented.  It is not yet to
+    // avoid gratuitous conflicts when merging into the master branch.
     try
-#endif // YY_EXCEPTIONS
       {
-    YYCDEBUG << "Starting parse\n";
+    YYCDEBUG << "Starting parse" << std::endl;
 
 
     /* Initialize the stack.  The initial state will be set in
@@ -592,25 +556,21 @@ namespace isc { namespace dhcp {
        location values to have been already stored, initialize these
        stacks with a primary value.  */
     yystack_.clear ();
-    yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
+    yypush_ (YY_NULLPTR, 0, yyla);
 
-  /*-----------------------------------------------.
-  | yynewstate -- push a new symbol on the stack.  |
-  `-----------------------------------------------*/
+    // A new symbol was pushed on the stack.
   yynewstate:
-    YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
+    YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
 
     // Accept?
     if (yystack_[0].state == yyfinal_)
-      YYACCEPT;
+      goto yyacceptlab;
 
     goto yybackup;
 
-
-  /*-----------.
-  | yybackup.  |
-  `-----------*/
+    // Backup.
   yybackup:
+
     // Try to take a decision without lookahead.
     yyn = yypact_[yystack_[0].state];
     if (yy_pact_value_is_default_ (yyn))
@@ -620,21 +580,16 @@ namespace isc { namespace dhcp {
     if (yyla.empty ())
       {
         YYCDEBUG << "Reading a token: ";
-#if YY_EXCEPTIONS
         try
-#endif // YY_EXCEPTIONS
           {
             symbol_type yylookahead (yylex (ctx));
             yyla.move (yylookahead);
           }
-#if YY_EXCEPTIONS
         catch (const syntax_error& yyexc)
           {
-            YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
             error (yyexc);
             goto yyerrlab1;
           }
-#endif // YY_EXCEPTIONS
       }
     YY_SYMBOL_PRINT ("Next token is", yyla);
 
@@ -659,10 +614,9 @@ namespace isc { namespace dhcp {
       --yyerrstatus_;
 
     // Shift the lookahead token.
-    yypush_ ("Shifting", yyn, YY_MOVE (yyla));
+    yypush_ ("Shifting", yyn, yyla);
     goto yynewstate;
 
-
   /*-----------------------------------------------------------.
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
@@ -672,45 +626,44 @@ namespace isc { namespace dhcp {
       goto yyerrlab;
     goto yyreduce;
 
-
   /*-----------------------------.
-  | yyreduce -- do a reduction.  |
+  | yyreduce -- Do a reduction.  |
   `-----------------------------*/
   yyreduce:
     yylen = yyr2_[yyn];
     {
       stack_symbol_type yylhs;
-      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+      yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
       /* Variants are always initialized to an empty instance of the
          correct type. The default '$$ = $1' action is NOT applied
          when using variants.  */
-      switch (yyr1_[yyn])
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        yylhs.value.emplace< ElementPtr > ();
+        switch (yyr1_[yyn])
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        yylhs.value.build< ElementPtr > ();
         break;
 
-      case 171: // "boolean"
-        yylhs.value.emplace< bool > ();
+      case 173: // "boolean"
+        yylhs.value.build< bool > ();
         break;
 
-      case 170: // "floating point"
-        yylhs.value.emplace< double > ();
+      case 172: // "floating point"
+        yylhs.value.build< double > ();
         break;
 
-      case 169: // "integer"
-        yylhs.value.emplace< int64_t > ();
+      case 171: // "integer"
+        yylhs.value.build< int64_t > ();
         break;
 
-      case 168: // "constant string"
-        yylhs.value.emplace< std::string > ();
+      case 170: // "constant string"
+        yylhs.value.build< std::string > ();
         break;
 
       default:
@@ -718,296 +671,293 @@ namespace isc { namespace dhcp {
     }
 
 
-      // Default location.
+      // Compute the default @$.
       {
-        stack_type::slice range (yystack_, yylen);
-        YYLLOC_DEFAULT (yylhs.location, range, yylen);
-        yyerror_range[1].location = yylhs.location;
+        slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
+        YYLLOC_DEFAULT (yylhs.location, slice, yylen);
       }
 
       // Perform the reduction.
       YY_REDUCE_PRINT (yyn);
-#if YY_EXCEPTIONS
       try
-#endif // YY_EXCEPTIONS
         {
           switch (yyn)
             {
   case 2:
-#line 257 "dhcp4_parser.yy" // lalr1.cc:919
+#line 259 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 740 "dhcp4_parser.cc" // lalr1.cc:919
+#line 690 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 258 "dhcp4_parser.yy" // lalr1.cc:919
+#line 260 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
-#line 746 "dhcp4_parser.cc" // lalr1.cc:919
+#line 696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 259 "dhcp4_parser.yy" // lalr1.cc:919
+#line 261 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
-#line 752 "dhcp4_parser.cc" // lalr1.cc:919
+#line 702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 260 "dhcp4_parser.yy" // lalr1.cc:919
+#line 262 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 758 "dhcp4_parser.cc" // lalr1.cc:919
+#line 708 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 261 "dhcp4_parser.yy" // lalr1.cc:919
+#line 263 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
-#line 764 "dhcp4_parser.cc" // lalr1.cc:919
+#line 714 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 262 "dhcp4_parser.yy" // lalr1.cc:919
+#line 264 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
-#line 770 "dhcp4_parser.cc" // lalr1.cc:919
+#line 720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 263 "dhcp4_parser.yy" // lalr1.cc:919
+#line 265 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 776 "dhcp4_parser.cc" // lalr1.cc:919
+#line 726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 264 "dhcp4_parser.yy" // lalr1.cc:919
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
-#line 782 "dhcp4_parser.cc" // lalr1.cc:919
+#line 732 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:919
+#line 267 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 788 "dhcp4_parser.cc" // lalr1.cc:919
+#line 738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:919
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 794 "dhcp4_parser.cc" // lalr1.cc:919
+#line 744 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:919
+#line 269 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 800 "dhcp4_parser.cc" // lalr1.cc:919
+#line 750 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 268 "dhcp4_parser.yy" // lalr1.cc:919
+#line 270 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 806 "dhcp4_parser.cc" // lalr1.cc:919
+#line 756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 269 "dhcp4_parser.yy" // lalr1.cc:919
+#line 271 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
-#line 812 "dhcp4_parser.cc" // lalr1.cc:919
+#line 762 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 270 "dhcp4_parser.yy" // lalr1.cc:919
+#line 272 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 818 "dhcp4_parser.cc" // lalr1.cc:919
+#line 768 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 824 "dhcp4_parser.cc" // lalr1.cc:919
+#line 280 "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 774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 279 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 830 "dhcp4_parser.cc" // lalr1.cc:919
+#line 281 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 780 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 280 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 836 "dhcp4_parser.cc" // lalr1.cc:919
+#line 282 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 786 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 281 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 842 "dhcp4_parser.cc" // lalr1.cc:919
+#line 283 "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 792 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 282 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 848 "dhcp4_parser.cc" // lalr1.cc:919
+#line 284 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 798 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 283 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 854 "dhcp4_parser.cc" // lalr1.cc:919
+#line 285 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 804 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 284 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 860 "dhcp4_parser.cc" // lalr1.cc:919
+#line 286 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 287 "dhcp4_parser.yy" // lalr1.cc:919
+#line 289 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
-    ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 869 "dhcp4_parser.cc" // lalr1.cc:919
+#line 819 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 292 "dhcp4_parser.yy" // lalr1.cc:919
+#line 294 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 880 "dhcp4_parser.cc" // lalr1.cc:919
+#line 830 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 297 "dhcp4_parser.yy" // lalr1.cc:919
+#line 299 "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
     // for it.
 }
-#line 890 "dhcp4_parser.cc" // lalr1.cc:919
+#line 840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 303 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 896 "dhcp4_parser.cc" // lalr1.cc:919
+#line 305 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 846 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 43:
-#line 310 "dhcp4_parser.yy" // lalr1.cc:919
+#line 312 "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 > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 905 "dhcp4_parser.cc" // lalr1.cc:919
+#line 855 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 44:
-#line 314 "dhcp4_parser.yy" // lalr1.cc:919
+#line 316 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 915 "dhcp4_parser.cc" // lalr1.cc:919
+#line 865 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 321 "dhcp4_parser.yy" // lalr1.cc:919
+#line 323 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 924 "dhcp4_parser.cc" // lalr1.cc:919
+#line 874 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 324 "dhcp4_parser.yy" // lalr1.cc:919
+#line 326 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 932 "dhcp4_parser.cc" // lalr1.cc:919
+#line 882 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 49:
-#line 332 "dhcp4_parser.yy" // lalr1.cc:919
+#line 334 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 941 "dhcp4_parser.cc" // lalr1.cc:919
+#line 891 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 50:
-#line 336 "dhcp4_parser.yy" // lalr1.cc:919
+#line 338 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 950 "dhcp4_parser.cc" // lalr1.cc:919
+#line 900 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 51:
-#line 343 "dhcp4_parser.yy" // lalr1.cc:919
+#line 345 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 958 "dhcp4_parser.cc" // lalr1.cc:919
+#line 908 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 52:
-#line 345 "dhcp4_parser.yy" // lalr1.cc:919
+#line 347 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 967 "dhcp4_parser.cc" // lalr1.cc:919
+#line 917 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 55:
-#line 354 "dhcp4_parser.yy" // lalr1.cc:919
+#line 356 "dhcp4_parser.yy" // lalr1.cc:859
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 976 "dhcp4_parser.cc" // lalr1.cc:919
+#line 926 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 56:
-#line 358 "dhcp4_parser.yy" // lalr1.cc:919
+#line 360 "dhcp4_parser.yy" // lalr1.cc:859
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 985 "dhcp4_parser.cc" // lalr1.cc:919
+#line 935 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 57:
-#line 369 "dhcp4_parser.yy" // lalr1.cc:919
+#line 371 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
-    const std::string& keyword = yystack_[1].value.as < std::string > ();
+    const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 996 "dhcp4_parser.cc" // lalr1.cc:919
+#line 946 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 58:
-#line 379 "dhcp4_parser.yy" // lalr1.cc:919
+#line 381 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1007 "dhcp4_parser.cc" // lalr1.cc:919
+#line 957 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 59:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:919
+#line 386 "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
@@ -1016,11 +966,11 @@ namespace isc { namespace dhcp {
     // Dhcp4 is required
     ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1020 "dhcp4_parser.cc" // lalr1.cc:919
+#line 970 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 68:
-#line 408 "dhcp4_parser.yy" // lalr1.cc:919
+#line 410 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1029,915 +979,951 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP4);
 }
-#line 1033 "dhcp4_parser.cc" // lalr1.cc:919
+#line 983 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 69:
-#line 415 "dhcp4_parser.yy" // lalr1.cc:919
+#line 417 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1043 "dhcp4_parser.cc" // lalr1.cc:919
+#line 993 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 70:
-#line 423 "dhcp4_parser.yy" // lalr1.cc:919
+#line 425 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1053 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1003 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 71:
-#line 427 "dhcp4_parser.yy" // lalr1.cc:919
+#line 429 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
 }
-#line 1062 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 111:
-#line 477 "dhcp4_parser.yy" // lalr1.cc:919
+#line 479 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 1071 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1021 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 112:
-#line 482 "dhcp4_parser.yy" // lalr1.cc:919
+#line 484 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 1080 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 113:
-#line 487 "dhcp4_parser.yy" // lalr1.cc:919
+#line 489 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 1089 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1039 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 114:
-#line 492 "dhcp4_parser.yy" // lalr1.cc:919
+#line 494 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
 }
-#line 1098 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1048 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 115:
-#line 497 "dhcp4_parser.yy" // lalr1.cc:919
+#line 499 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
 }
-#line 1107 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1057 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 116:
-#line 502 "dhcp4_parser.yy" // lalr1.cc:919
+#line 504 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
 }
-#line 1116 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 117:
-#line 507 "dhcp4_parser.yy" // lalr1.cc:919
+#line 509 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1125 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 118:
-#line 512 "dhcp4_parser.yy" // lalr1.cc:919
+#line 514 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1133 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1083 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 119:
-#line 514 "dhcp4_parser.yy" // lalr1.cc:919
+#line 516 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1143 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1093 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 120:
-#line 520 "dhcp4_parser.yy" // lalr1.cc:919
+#line 522 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
 }
-#line 1152 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1102 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 121:
-#line 525 "dhcp4_parser.yy" // lalr1.cc:919
+#line 527 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
 }
-#line 1161 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1111 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 122:
-#line 530 "dhcp4_parser.yy" // lalr1.cc:919
+#line 532 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("authoritative", prf);
 }
-#line 1170 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1120 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 123:
-#line 536 "dhcp4_parser.yy" // lalr1.cc:919
+#line 538 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1181 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 124:
-#line 541 "dhcp4_parser.yy" // lalr1.cc:919
+#line 543 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1191 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1141 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 134:
-#line 560 "dhcp4_parser.yy" // lalr1.cc:919
+#line 562 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1201 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1151 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 135:
-#line 564 "dhcp4_parser.yy" // lalr1.cc:919
+#line 566 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1210 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1160 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 136:
-#line 569 "dhcp4_parser.yy" // lalr1.cc:919
+#line 571 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1221 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1171 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 137:
-#line 574 "dhcp4_parser.yy" // lalr1.cc:919
+#line 576 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1230 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1180 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 138:
-#line 579 "dhcp4_parser.yy" // lalr1.cc:919
+#line 581 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1238 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1188 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 139:
-#line 581 "dhcp4_parser.yy" // lalr1.cc:919
+#line 583 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1247 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1197 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 140:
-#line 586 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1253 "dhcp4_parser.cc" // lalr1.cc:919
+#line 588 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
+#line 1203 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 141:
-#line 587 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1259 "dhcp4_parser.cc" // lalr1.cc:919
+#line 589 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
+#line 1209 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 142:
-#line 590 "dhcp4_parser.yy" // lalr1.cc:919
+#line 592 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1267 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 143:
-#line 592 "dhcp4_parser.yy" // lalr1.cc:919
+#line 594 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1276 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1226 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 144:
-#line 597 "dhcp4_parser.yy" // lalr1.cc:919
+#line 599 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
+    yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1284 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1234 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 145:
-#line 599 "dhcp4_parser.yy" // lalr1.cc:919
+#line 601 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
+    yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1292 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1242 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 146:
-#line 603 "dhcp4_parser.yy" // lalr1.cc:919
+#line 605 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1301 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1251 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 147:
-#line 609 "dhcp4_parser.yy" // lalr1.cc:919
+#line 611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1312 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1262 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 148:
-#line 614 "dhcp4_parser.yy" // lalr1.cc:919
+#line 616 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1323 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1273 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 149:
-#line 621 "dhcp4_parser.yy" // lalr1.cc:919
+#line 623 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1334 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 150:
-#line 626 "dhcp4_parser.yy" // lalr1.cc:919
+#line 628 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1343 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1293 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 154:
-#line 636 "dhcp4_parser.yy" // lalr1.cc:919
+#line 638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1351 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1301 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 155:
-#line 638 "dhcp4_parser.yy" // lalr1.cc:919
+#line 640 "dhcp4_parser.yy" // lalr1.cc:859
     {
 
-    if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
-         (string(yystack_[0].value.as < std::string > ()) == "warn") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
-         (string(yystack_[0].value.as < std::string > ()) == "del")) {
-        ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
+         (string(yystack_[0].value.as< std::string > ()) == "warn") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
+         (string(yystack_[0].value.as< std::string > ()) == "del")) {
+        ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
         ctx.stack_.back()->set("lease-checks", user);
         ctx.leave();
     } else {
-        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
+        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1371 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1321 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 156:
-#line 654 "dhcp4_parser.yy" // lalr1.cc:919
+#line 656 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1382 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1332 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 157:
-#line 659 "dhcp4_parser.yy" // lalr1.cc:919
+#line 661 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1393 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1343 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 158:
-#line 666 "dhcp4_parser.yy" // lalr1.cc:919
+#line 668 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1404 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1354 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 159:
-#line 671 "dhcp4_parser.yy" // lalr1.cc:919
+#line 673 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1413 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1363 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 164:
-#line 684 "dhcp4_parser.yy" // lalr1.cc:919
+#line 686 "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 1423 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1373 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 165:
-#line 688 "dhcp4_parser.yy" // lalr1.cc:919
+#line 690 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1433 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1383 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 718 "dhcp4_parser.yy" // lalr1.cc:919
+  case 188:
+#line 722 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1441 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1391 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 720 "dhcp4_parser.yy" // lalr1.cc:919
+  case 189:
+#line 724 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1450 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1400 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 725 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1456 "dhcp4_parser.cc" // lalr1.cc:919
+  case 190:
+#line 729 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1406 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 189:
-#line 726 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1462 "dhcp4_parser.cc" // lalr1.cc:919
+  case 191:
+#line 730 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1412 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 190:
-#line 727 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1468 "dhcp4_parser.cc" // lalr1.cc:919
+  case 192:
+#line 731 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1418 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 191:
-#line 728 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1474 "dhcp4_parser.cc" // lalr1.cc:919
+  case 193:
+#line 732 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1424 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 731 "dhcp4_parser.yy" // lalr1.cc:919
+  case 194:
+#line 735 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1482 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1432 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 733 "dhcp4_parser.yy" // lalr1.cc:919
+  case 195:
+#line 737 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1492 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 739 "dhcp4_parser.yy" // lalr1.cc:919
+  case 196:
+#line 743 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1500 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 741 "dhcp4_parser.yy" // lalr1.cc:919
+  case 197:
+#line 745 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1510 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1460 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 747 "dhcp4_parser.yy" // lalr1.cc:919
+  case 198:
+#line 751 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1518 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1468 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 749 "dhcp4_parser.yy" // lalr1.cc:919
+  case 199:
+#line 753 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1528 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1478 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 755 "dhcp4_parser.yy" // lalr1.cc:919
+  case 200:
+#line 759 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1537 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1487 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 760 "dhcp4_parser.yy" // lalr1.cc:919
+  case 201:
+#line 764 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1545 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 762 "dhcp4_parser.yy" // lalr1.cc:919
+  case 202:
+#line 766 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr name(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)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1555 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 768 "dhcp4_parser.yy" // lalr1.cc:919
+  case 203:
+#line 772 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1564 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1514 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 773 "dhcp4_parser.yy" // lalr1.cc:919
+  case 204:
+#line 777 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1573 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 778 "dhcp4_parser.yy" // lalr1.cc:919
+  case 205:
+#line 782 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1582 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 783 "dhcp4_parser.yy" // lalr1.cc:919
+  case 206:
+#line 787 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1591 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 788 "dhcp4_parser.yy" // lalr1.cc:919
+  case 207:
+#line 792 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1600 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 793 "dhcp4_parser.yy" // lalr1.cc:919
+  case 208:
+#line 797 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1609 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1559 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 798 "dhcp4_parser.yy" // lalr1.cc:919
+  case 209:
+#line 802 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1618 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1568 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 803 "dhcp4_parser.yy" // lalr1.cc:919
+  case 210:
+#line 807 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1626 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1576 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 805 "dhcp4_parser.yy" // lalr1.cc:919
+  case 211:
+#line 809 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1636 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1586 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 811 "dhcp4_parser.yy" // lalr1.cc:919
+  case 212:
+#line 815 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1644 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1594 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 813 "dhcp4_parser.yy" // lalr1.cc:919
+  case 213:
+#line 817 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1654 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1604 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 819 "dhcp4_parser.yy" // lalr1.cc:919
+  case 214:
+#line 823 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1612 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 215:
+#line 825 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("consistency", c);
+    ctx.leave();
+}
+#line 1622 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 216:
+#line 831 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1630 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 217:
+#line 833 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("serial-consistency", c);
+    ctx.leave();
+}
+#line 1640 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 218:
+#line 839 "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("max-reconnect-tries", n);
 }
-#line 1663 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1649 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 824 "dhcp4_parser.yy" // lalr1.cc:919
+  case 219:
+#line 844 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1672 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1658 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 829 "dhcp4_parser.yy" // lalr1.cc:919
+  case 220:
+#line 849 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1683 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1669 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 834 "dhcp4_parser.yy" // lalr1.cc:919
+  case 221:
+#line 854 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1692 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1678 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 223:
-#line 850 "dhcp4_parser.yy" // lalr1.cc:919
+  case 229:
+#line 870 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1701 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1687 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 224:
-#line 855 "dhcp4_parser.yy" // lalr1.cc:919
+  case 230:
+#line 875 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1710 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 860 "dhcp4_parser.yy" // lalr1.cc:919
+  case 231:
+#line 880 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1719 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1705 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 865 "dhcp4_parser.yy" // lalr1.cc:919
+  case 232:
+#line 885 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1728 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1714 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 870 "dhcp4_parser.yy" // lalr1.cc:919
+  case 233:
+#line 890 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1737 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1723 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 228:
-#line 875 "dhcp4_parser.yy" // lalr1.cc:919
+  case 234:
+#line 895 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1748 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1734 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 229:
-#line 880 "dhcp4_parser.yy" // lalr1.cc:919
+  case 235:
+#line 900 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1757 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1743 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 893 "dhcp4_parser.yy" // lalr1.cc:919
+  case 240:
+#line 913 "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 1767 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1753 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 897 "dhcp4_parser.yy" // lalr1.cc:919
+  case 241:
+#line 917 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1777 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1763 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 903 "dhcp4_parser.yy" // lalr1.cc:919
+  case 242:
+#line 923 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1787 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1773 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 907 "dhcp4_parser.yy" // lalr1.cc:919
+  case 243:
+#line 927 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1797 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1783 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 922 "dhcp4_parser.yy" // lalr1.cc:919
+  case 249:
+#line 942 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1805 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 924 "dhcp4_parser.yy" // lalr1.cc:919
+  case 250:
+#line 944 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1815 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 930 "dhcp4_parser.yy" // lalr1.cc:919
+  case 251:
+#line 950 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1823 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1809 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 932 "dhcp4_parser.yy" // lalr1.cc:919
+  case 252:
+#line 952 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1832 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1818 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 938 "dhcp4_parser.yy" // lalr1.cc:919
+  case 253:
+#line 958 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1843 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1829 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 943 "dhcp4_parser.yy" // lalr1.cc:919
+  case 254:
+#line 963 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1853 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1839 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 961 "dhcp4_parser.yy" // lalr1.cc:919
+  case 263:
+#line 981 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1862 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1848 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 258:
-#line 966 "dhcp4_parser.yy" // lalr1.cc:919
+  case 264:
+#line 986 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    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);
 }
-#line 1871 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 971 "dhcp4_parser.yy" // lalr1.cc:919
+  case 265:
+#line 991 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1880 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 976 "dhcp4_parser.yy" // lalr1.cc:919
+  case 266:
+#line 996 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1889 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1875 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 981 "dhcp4_parser.yy" // lalr1.cc:919
+  case 267:
+#line 1001 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1898 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 986 "dhcp4_parser.yy" // lalr1.cc:919
+  case 268:
+#line 1006 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1907 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 263:
-#line 994 "dhcp4_parser.yy" // lalr1.cc:919
+  case 269:
+#line 1014 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 1918 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1904 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 264:
-#line 999 "dhcp4_parser.yy" // lalr1.cc:919
+  case 270:
+#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1927 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1913 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 269:
-#line 1019 "dhcp4_parser.yy" // lalr1.cc:919
+  case 275:
+#line 1039 "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 1937 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1923 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1023 "dhcp4_parser.yy" // lalr1.cc:919
+  case 276:
+#line 1043 "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.
@@ -1959,294 +1945,294 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1963 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1949 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 1045 "dhcp4_parser.yy" // lalr1.cc:919
+  case 277:
+#line 1065 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1973 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1959 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1049 "dhcp4_parser.yy" // lalr1.cc:919
+  case 278:
+#line 1069 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1983 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1969 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 302:
-#line 1090 "dhcp4_parser.yy" // lalr1.cc:919
+  case 308:
+#line 1110 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1991 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1092 "dhcp4_parser.yy" // lalr1.cc:919
+  case 309:
+#line 1112 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2001 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1987 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1098 "dhcp4_parser.yy" // lalr1.cc:919
+  case 310:
+#line 1118 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2009 "dhcp4_parser.cc" // lalr1.cc:919
+#line 1995 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1100 "dhcp4_parser.yy" // lalr1.cc:919
+  case 311:
+#line 1120 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 2019 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2005 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 306:
-#line 1106 "dhcp4_parser.yy" // lalr1.cc:919
+  case 312:
+#line 1126 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2027 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1108 "dhcp4_parser.yy" // lalr1.cc:919
+  case 313:
+#line 1128 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 2037 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2023 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1114 "dhcp4_parser.yy" // lalr1.cc:919
+  case 314:
+#line 1134 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2045 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2031 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1116 "dhcp4_parser.yy" // lalr1.cc:919
+  case 315:
+#line 1136 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 2055 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2041 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 310:
-#line 1122 "dhcp4_parser.yy" // lalr1.cc:919
+  case 316:
+#line 1142 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2063 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2049 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1124 "dhcp4_parser.yy" // lalr1.cc:919
+  case 317:
+#line 1144 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2073 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2059 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 312:
-#line 1130 "dhcp4_parser.yy" // lalr1.cc:919
+  case 318:
+#line 1150 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2081 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2067 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1132 "dhcp4_parser.yy" // lalr1.cc:919
+  case 319:
+#line 1152 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2091 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2077 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1138 "dhcp4_parser.yy" // lalr1.cc:919
+  case 320:
+#line 1158 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2102 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2088 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1143 "dhcp4_parser.yy" // lalr1.cc:919
+  case 321:
+#line 1163 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2111 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2097 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1148 "dhcp4_parser.yy" // lalr1.cc:919
+  case 322:
+#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2119 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2105 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1150 "dhcp4_parser.yy" // lalr1.cc:919
+  case 323:
+#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2128 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2114 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 318:
-#line 1155 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2134 "dhcp4_parser.cc" // lalr1.cc:919
+  case 324:
+#line 1175 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2120 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1156 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2140 "dhcp4_parser.cc" // lalr1.cc:919
+  case 325:
+#line 1176 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2126 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1157 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2146 "dhcp4_parser.cc" // lalr1.cc:919
+  case 326:
+#line 1177 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2132 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1158 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2152 "dhcp4_parser.cc" // lalr1.cc:919
+  case 327:
+#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2138 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1161 "dhcp4_parser.yy" // lalr1.cc:919
+  case 328:
+#line 1181 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2161 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2147 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1168 "dhcp4_parser.yy" // lalr1.cc:919
+  case 329:
+#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2172 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2158 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1173 "dhcp4_parser.yy" // lalr1.cc:919
+  case 330:
+#line 1193 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2181 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2167 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1188 "dhcp4_parser.yy" // lalr1.cc:919
+  case 335:
+#line 1208 "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 2191 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1192 "dhcp4_parser.yy" // lalr1.cc:919
+  case 336:
+#line 1212 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2199 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2185 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1228 "dhcp4_parser.yy" // lalr1.cc:919
+  case 361:
+#line 1248 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2210 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2196 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1233 "dhcp4_parser.yy" // lalr1.cc:919
+  case 362:
+#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2219 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 357:
-#line 1241 "dhcp4_parser.yy" // lalr1.cc:919
+  case 363:
+#line 1261 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2228 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2214 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 358:
-#line 1244 "dhcp4_parser.yy" // lalr1.cc:919
+  case 364:
+#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2236 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1260 "dhcp4_parser.yy" // lalr1.cc:919
+  case 369:
+#line 1280 "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 2246 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2232 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1264 "dhcp4_parser.yy" // lalr1.cc:919
+  case 370:
+#line 1284 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2254,21 +2240,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2258 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2244 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1275 "dhcp4_parser.yy" // lalr1.cc:919
+  case 371:
+#line 1295 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2268 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2254 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1279 "dhcp4_parser.yy" // lalr1.cc:919
+  case 372:
+#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2276,284 +2262,284 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2280 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2266 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1311 "dhcp4_parser.yy" // lalr1.cc:919
+  case 388:
+#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2289 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1318 "dhcp4_parser.yy" // lalr1.cc:919
+  case 390:
+#line 1338 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2297 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2283 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1320 "dhcp4_parser.yy" // lalr1.cc:919
+  case 391:
+#line 1340 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2307 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1326 "dhcp4_parser.yy" // lalr1.cc:919
+  case 392:
+#line 1346 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2315 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2301 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1328 "dhcp4_parser.yy" // lalr1.cc:919
+  case 393:
+#line 1348 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2325 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1334 "dhcp4_parser.yy" // lalr1.cc:919
+  case 394:
+#line 1354 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2333 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2319 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1336 "dhcp4_parser.yy" // lalr1.cc:919
+  case 395:
+#line 1356 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2343 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1344 "dhcp4_parser.yy" // lalr1.cc:919
+  case 397:
+#line 1364 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2351 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2337 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1346 "dhcp4_parser.yy" // lalr1.cc:919
+  case 398:
+#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2361 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1352 "dhcp4_parser.yy" // lalr1.cc:919
+  case 399:
+#line 1372 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2370 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1361 "dhcp4_parser.yy" // lalr1.cc:919
+  case 400:
+#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2381 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2367 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:919
+  case 401:
+#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2390 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2376 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1385 "dhcp4_parser.yy" // lalr1.cc:919
+  case 406:
+#line 1405 "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 2400 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2386 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1389 "dhcp4_parser.yy" // lalr1.cc:919
+  case 407:
+#line 1409 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2409 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2395 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1397 "dhcp4_parser.yy" // lalr1.cc:919
+  case 408:
+#line 1417 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2419 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2405 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1401 "dhcp4_parser.yy" // lalr1.cc:919
+  case 409:
+#line 1421 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2428 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2414 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1434 "dhcp4_parser.yy" // lalr1.cc:919
+  case 424:
+#line 1454 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2436 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1436 "dhcp4_parser.yy" // lalr1.cc:919
+  case 425:
+#line 1456 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2446 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2432 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1446 "dhcp4_parser.yy" // lalr1.cc:919
+  case 428:
+#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2455 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2441 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 423:
-#line 1451 "dhcp4_parser.yy" // lalr1.cc:919
+  case 429:
+#line 1471 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2464 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1459 "dhcp4_parser.yy" // lalr1.cc:919
+  case 430:
+#line 1479 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2475 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2461 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1464 "dhcp4_parser.yy" // lalr1.cc:919
+  case 431:
+#line 1484 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2484 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2470 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1479 "dhcp4_parser.yy" // lalr1.cc:919
+  case 436:
+#line 1499 "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 2494 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1483 "dhcp4_parser.yy" // lalr1.cc:919
+  case 437:
+#line 1503 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2504 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2490 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1489 "dhcp4_parser.yy" // lalr1.cc:919
+  case 438:
+#line 1509 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2514 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2500 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1493 "dhcp4_parser.yy" // lalr1.cc:919
+  case 439:
+#line 1513 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2524 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2510 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1512 "dhcp4_parser.yy" // lalr1.cc:919
+  case 449:
+#line 1532 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2532 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1514 "dhcp4_parser.yy" // lalr1.cc:919
+  case 450:
+#line 1534 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2542 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2528 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1520 "dhcp4_parser.yy" // lalr1.cc:919
+  case 451:
+#line 1540 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2550 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2536 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1522 "dhcp4_parser.yy" // lalr1.cc:919
+  case 452:
+#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
-    ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
     ConstElementPtr old = parent->get("user-context");
 
     // Handle already existing user context
@@ -2573,23 +2559,23 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2577 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2563 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1545 "dhcp4_parser.yy" // lalr1.cc:919
+  case 453:
+#line 1565 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2585 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2571 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1547 "dhcp4_parser.yy" // lalr1.cc:919
+  case 454:
+#line 1567 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
-    ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     user_context->set("comment", comment);
 
     // Handle already existing user context
@@ -2610,451 +2596,451 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2614 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2600 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:919
+  case 455:
+#line 1595 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2625 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2611 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1580 "dhcp4_parser.yy" // lalr1.cc:919
+  case 456:
+#line 1600 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2634 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2620 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1593 "dhcp4_parser.yy" // lalr1.cc:919
+  case 461:
+#line 1613 "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 2644 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2630 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1597 "dhcp4_parser.yy" // lalr1.cc:919
+  case 462:
+#line 1617 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2653 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2639 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1602 "dhcp4_parser.yy" // lalr1.cc:919
+  case 463:
+#line 1622 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2663 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2649 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1606 "dhcp4_parser.yy" // lalr1.cc:919
+  case 464:
+#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2672 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2658 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1637 "dhcp4_parser.yy" // lalr1.cc:919
+  case 484:
+#line 1657 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2680 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2666 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1639 "dhcp4_parser.yy" // lalr1.cc:919
+  case 485:
+#line 1659 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2690 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2676 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1645 "dhcp4_parser.yy" // lalr1.cc:919
+  case 486:
+#line 1665 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2698 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2684 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1647 "dhcp4_parser.yy" // lalr1.cc:919
+  case 487:
+#line 1667 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2708 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2694 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1653 "dhcp4_parser.yy" // lalr1.cc:919
+  case 488:
+#line 1673 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2716 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1655 "dhcp4_parser.yy" // lalr1.cc:919
+  case 489:
+#line 1675 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2726 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2712 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1661 "dhcp4_parser.yy" // lalr1.cc:919
+  case 490:
+#line 1681 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2734 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1663 "dhcp4_parser.yy" // lalr1.cc:919
+  case 491:
+#line 1683 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2744 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2730 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1669 "dhcp4_parser.yy" // lalr1.cc:919
+  case 492:
+#line 1689 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2755 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2741 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1674 "dhcp4_parser.yy" // lalr1.cc:919
+  case 493:
+#line 1694 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2764 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2750 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1679 "dhcp4_parser.yy" // lalr1.cc:919
+  case 494:
+#line 1699 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2772 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2758 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1681 "dhcp4_parser.yy" // lalr1.cc:919
+  case 495:
+#line 1701 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2782 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2768 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1687 "dhcp4_parser.yy" // lalr1.cc:919
+  case 496:
+#line 1707 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2790 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1689 "dhcp4_parser.yy" // lalr1.cc:919
+  case 497:
+#line 1709 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2800 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1695 "dhcp4_parser.yy" // lalr1.cc:919
+  case 498:
+#line 1715 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2808 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2794 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1697 "dhcp4_parser.yy" // lalr1.cc:919
+  case 499:
+#line 1717 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 2818 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2804 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1703 "dhcp4_parser.yy" // lalr1.cc:919
+  case 500:
+#line 1723 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2826 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2812 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1705 "dhcp4_parser.yy" // lalr1.cc:919
+  case 501:
+#line 1725 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 2836 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2822 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 496:
-#line 1711 "dhcp4_parser.yy" // lalr1.cc:919
+  case 502:
+#line 1731 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2844 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2830 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1713 "dhcp4_parser.yy" // lalr1.cc:919
+  case 503:
+#line 1733 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2854 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1719 "dhcp4_parser.yy" // lalr1.cc:919
+  case 504:
+#line 1739 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2862 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2848 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 499:
-#line 1721 "dhcp4_parser.yy" // lalr1.cc:919
+  case 505:
+#line 1741 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2872 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2858 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 500:
-#line 1727 "dhcp4_parser.yy" // lalr1.cc:919
+  case 506:
+#line 1747 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2883 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2869 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 501:
-#line 1732 "dhcp4_parser.yy" // lalr1.cc:919
+  case 507:
+#line 1752 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2892 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2878 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 502:
-#line 1740 "dhcp4_parser.yy" // lalr1.cc:919
+  case 508:
+#line 1760 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2903 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2889 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1745 "dhcp4_parser.yy" // lalr1.cc:919
+  case 509:
+#line 1765 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2912 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2898 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1757 "dhcp4_parser.yy" // lalr1.cc:919
+  case 512:
+#line 1777 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2923 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2909 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1762 "dhcp4_parser.yy" // lalr1.cc:919
+  case 513:
+#line 1782 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2932 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2918 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 510:
-#line 1771 "dhcp4_parser.yy" // lalr1.cc:919
+  case 516:
+#line 1791 "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 2942 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2928 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 511:
-#line 1775 "dhcp4_parser.yy" // lalr1.cc:919
+  case 517:
+#line 1795 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2952 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2938 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 528:
-#line 1804 "dhcp4_parser.yy" // lalr1.cc:919
+  case 534:
+#line 1824 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2960 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2946 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 529:
-#line 1806 "dhcp4_parser.yy" // lalr1.cc:919
+  case 535:
+#line 1826 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2970 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2956 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1812 "dhcp4_parser.yy" // lalr1.cc:919
+  case 536:
+#line 1832 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 2979 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2965 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1821 "dhcp4_parser.yy" // lalr1.cc:919
+  case 537:
+#line 1841 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2988 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2974 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1828 "dhcp4_parser.yy" // lalr1.cc:919
+  case 538:
+#line 1848 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2999 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2985 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1833 "dhcp4_parser.yy" // lalr1.cc:919
+  case 539:
+#line 1853 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3008 "dhcp4_parser.cc" // lalr1.cc:919
+#line 2994 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 541:
-#line 1849 "dhcp4_parser.yy" // lalr1.cc:919
+  case 547:
+#line 1869 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3016 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3002 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 542:
-#line 1851 "dhcp4_parser.yy" // lalr1.cc:919
+  case 548:
+#line 1871 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3026 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3012 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 543:
-#line 1857 "dhcp4_parser.yy" // lalr1.cc:919
+  case 549:
+#line 1877 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3034 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3020 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 544:
-#line 1859 "dhcp4_parser.yy" // lalr1.cc:919
+  case 550:
+#line 1879 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr name(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)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3044 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 545:
-#line 1868 "dhcp4_parser.yy" // lalr1.cc:919
+  case 551:
+#line 1888 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3052 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3038 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 546:
-#line 1870 "dhcp4_parser.yy" // lalr1.cc:919
+  case 552:
+#line 1890 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
 
     // Doing this manually, because dhcp-queue-control
@@ -3086,640 +3072,636 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3090 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3076 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 547:
-#line 1906 "dhcp4_parser.yy" // lalr1.cc:919
+  case 553:
+#line 1926 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3101 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3087 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 548:
-#line 1911 "dhcp4_parser.yy" // lalr1.cc:919
+  case 554:
+#line 1931 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3112 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3098 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 549:
-#line 1918 "dhcp4_parser.yy" // lalr1.cc:919
+  case 555:
+#line 1938 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3122 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3108 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 550:
-#line 1922 "dhcp4_parser.yy" // lalr1.cc:919
+  case 556:
+#line 1942 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3132 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3118 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 571:
-#line 1952 "dhcp4_parser.yy" // lalr1.cc:919
+  case 577:
+#line 1972 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3141 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3127 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 572:
-#line 1957 "dhcp4_parser.yy" // lalr1.cc:919
+  case 578:
+#line 1977 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3149 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3135 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 573:
-#line 1959 "dhcp4_parser.yy" // lalr1.cc:919
+  case 579:
+#line 1979 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3159 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3145 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 574:
-#line 1965 "dhcp4_parser.yy" // lalr1.cc:919
+  case 580:
+#line 1985 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3167 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3153 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 575:
-#line 1967 "dhcp4_parser.yy" // lalr1.cc:919
+  case 581:
+#line 1987 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3177 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3163 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 576:
-#line 1973 "dhcp4_parser.yy" // lalr1.cc:919
+  case 582:
+#line 1993 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3186 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3172 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 577:
-#line 1978 "dhcp4_parser.yy" // lalr1.cc:919
+  case 583:
+#line 1998 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3194 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3180 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 578:
-#line 1980 "dhcp4_parser.yy" // lalr1.cc:919
+  case 584:
+#line 2000 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3204 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3190 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 579:
-#line 1986 "dhcp4_parser.yy" // lalr1.cc:919
+  case 585:
+#line 2006 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3213 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3199 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 580:
-#line 1991 "dhcp4_parser.yy" // lalr1.cc:919
+  case 586:
+#line 2011 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3222 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3208 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 581:
-#line 1996 "dhcp4_parser.yy" // lalr1.cc:919
+  case 587:
+#line 2016 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3230 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3216 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 582:
-#line 1998 "dhcp4_parser.yy" // lalr1.cc:919
+  case 588:
+#line 2018 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3239 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3225 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 583:
-#line 2004 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3245 "dhcp4_parser.cc" // lalr1.cc:919
+  case 589:
+#line 2024 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3231 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 584:
-#line 2005 "dhcp4_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3251 "dhcp4_parser.cc" // lalr1.cc:919
+  case 590:
+#line 2025 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3237 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 585:
-#line 2008 "dhcp4_parser.yy" // lalr1.cc:919
+  case 591:
+#line 2028 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3259 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3245 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2010 "dhcp4_parser.yy" // lalr1.cc:919
+  case 592:
+#line 2030 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3269 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3255 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 587:
-#line 2016 "dhcp4_parser.yy" // lalr1.cc:919
+  case 593:
+#line 2036 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3278 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3264 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 588:
-#line 2021 "dhcp4_parser.yy" // lalr1.cc:919
+  case 594:
+#line 2041 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3287 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3273 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 589:
-#line 2026 "dhcp4_parser.yy" // lalr1.cc:919
+  case 595:
+#line 2046 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3295 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3281 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 590:
-#line 2028 "dhcp4_parser.yy" // lalr1.cc:919
+  case 596:
+#line 2048 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3304 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3290 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 591:
-#line 2034 "dhcp4_parser.yy" // lalr1.cc:919
+  case 597:
+#line 2054 "dhcp4_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3312 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3298 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 592:
-#line 2037 "dhcp4_parser.yy" // lalr1.cc:919
+  case 598:
+#line 2057 "dhcp4_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3320 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3306 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 593:
-#line 2040 "dhcp4_parser.yy" // lalr1.cc:919
+  case 599:
+#line 2060 "dhcp4_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3328 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3314 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 594:
-#line 2043 "dhcp4_parser.yy" // lalr1.cc:919
+  case 600:
+#line 2063 "dhcp4_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3336 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3322 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 595:
-#line 2046 "dhcp4_parser.yy" // lalr1.cc:919
+  case 601:
+#line 2066 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3345 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3331 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 596:
-#line 2052 "dhcp4_parser.yy" // lalr1.cc:919
+  case 602:
+#line 2072 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3353 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3339 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 597:
-#line 2054 "dhcp4_parser.yy" // lalr1.cc:919
+  case 603:
+#line 2074 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3363 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3349 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 598:
-#line 2060 "dhcp4_parser.yy" // lalr1.cc:919
+  case 604:
+#line 2080 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3371 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3357 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 599:
-#line 2062 "dhcp4_parser.yy" // lalr1.cc:919
+  case 605:
+#line 2082 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3381 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3367 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 600:
-#line 2068 "dhcp4_parser.yy" // lalr1.cc:919
+  case 606:
+#line 2088 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3389 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 601:
-#line 2070 "dhcp4_parser.yy" // lalr1.cc:919
+  case 607:
+#line 2090 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3399 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3385 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 602:
-#line 2079 "dhcp4_parser.yy" // lalr1.cc:919
+  case 608:
+#line 2099 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3407 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3393 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 603:
-#line 2081 "dhcp4_parser.yy" // lalr1.cc:919
+  case 609:
+#line 2101 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3416 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3402 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 604:
-#line 2086 "dhcp4_parser.yy" // lalr1.cc:919
+  case 610:
+#line 2106 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3424 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3410 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 605:
-#line 2088 "dhcp4_parser.yy" // lalr1.cc:919
+  case 611:
+#line 2108 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3433 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3419 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 606:
-#line 2093 "dhcp4_parser.yy" // lalr1.cc:919
+  case 612:
+#line 2113 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3441 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3427 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 607:
-#line 2095 "dhcp4_parser.yy" // lalr1.cc:919
+  case 613:
+#line 2115 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3450 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3436 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 608:
-#line 2100 "dhcp4_parser.yy" // lalr1.cc:919
+  case 614:
+#line 2120 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3461 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3447 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 609:
-#line 2105 "dhcp4_parser.yy" // lalr1.cc:919
+  case 615:
+#line 2125 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3471 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3457 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 610:
-#line 2111 "dhcp4_parser.yy" // lalr1.cc:919
+  case 616:
+#line 2131 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3481 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3467 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 611:
-#line 2115 "dhcp4_parser.yy" // lalr1.cc:919
+  case 617:
+#line 2135 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3490 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3476 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 615:
-#line 2129 "dhcp4_parser.yy" // lalr1.cc:919
+  case 621:
+#line 2149 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3501 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3487 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 616:
-#line 2134 "dhcp4_parser.yy" // lalr1.cc:919
+  case 622:
+#line 2154 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3510 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3496 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 617:
-#line 2144 "dhcp4_parser.yy" // lalr1.cc:919
+  case 623:
+#line 2164 "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 3521 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3507 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 618:
-#line 2149 "dhcp4_parser.yy" // lalr1.cc:919
+  case 624:
+#line 2169 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3530 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3516 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 619:
-#line 2154 "dhcp4_parser.yy" // lalr1.cc:919
+  case 625:
+#line 2174 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3540 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3526 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 620:
-#line 2158 "dhcp4_parser.yy" // lalr1.cc:919
+  case 626:
+#line 2178 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3548 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3534 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 624:
-#line 2174 "dhcp4_parser.yy" // lalr1.cc:919
+  case 630:
+#line 2194 "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 3559 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3545 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 625:
-#line 2179 "dhcp4_parser.yy" // lalr1.cc:919
+  case 631:
+#line 2199 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3568 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3554 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 628:
-#line 2191 "dhcp4_parser.yy" // lalr1.cc:919
+  case 634:
+#line 2211 "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 3578 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3564 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 629:
-#line 2195 "dhcp4_parser.yy" // lalr1.cc:919
+  case 635:
+#line 2215 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3586 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3572 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 639:
-#line 2212 "dhcp4_parser.yy" // lalr1.cc:919
+  case 645:
+#line 2232 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3595 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3581 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 640:
-#line 2217 "dhcp4_parser.yy" // lalr1.cc:919
+  case 646:
+#line 2237 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3603 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3589 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 641:
-#line 2219 "dhcp4_parser.yy" // lalr1.cc:919
+  case 647:
+#line 2239 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3613 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3599 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 642:
-#line 2225 "dhcp4_parser.yy" // lalr1.cc:919
+  case 648:
+#line 2245 "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 3624 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3610 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 643:
-#line 2230 "dhcp4_parser.yy" // lalr1.cc:919
+  case 649:
+#line 2250 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3633 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3619 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 646:
-#line 2239 "dhcp4_parser.yy" // lalr1.cc:919
+  case 652:
+#line 2259 "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 3643 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3629 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 647:
-#line 2243 "dhcp4_parser.yy" // lalr1.cc:919
+  case 653:
+#line 2263 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3651 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3637 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 654:
-#line 2257 "dhcp4_parser.yy" // lalr1.cc:919
+  case 660:
+#line 2277 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3659 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3645 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 655:
-#line 2259 "dhcp4_parser.yy" // lalr1.cc:919
+  case 661:
+#line 2279 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3669 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3655 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 656:
-#line 2265 "dhcp4_parser.yy" // lalr1.cc:919
+  case 662:
+#line 2285 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3678 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3664 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 657:
-#line 2270 "dhcp4_parser.yy" // lalr1.cc:919
+  case 663:
+#line 2290 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3687 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3673 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 658:
-#line 2275 "dhcp4_parser.yy" // lalr1.cc:919
+  case 664:
+#line 2295 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3696 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3682 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3700 "dhcp4_parser.cc" // lalr1.cc:919
+#line 3686 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
         }
-#if YY_EXCEPTIONS
       catch (const syntax_error& yyexc)
         {
-          YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
           error (yyexc);
           YYERROR;
         }
-#endif // YY_EXCEPTIONS
       YY_SYMBOL_PRINT ("-> $$ =", yylhs);
       yypop_ (yylen);
       yylen = 0;
       YY_STACK_PRINT ();
 
       // Shift the result of the reduction.
-      yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
+      yypush_ (YY_NULLPTR, yylhs);
     }
     goto yynewstate;
 
-
   /*--------------------------------------.
   | yyerrlab -- here on detecting error.  |
   `--------------------------------------*/
@@ -3756,18 +3738,19 @@ namespace isc { namespace dhcp {
   | yyerrorlab -- error raised explicitly by YYERROR.  |
   `---------------------------------------------------*/
   yyerrorlab:
-    /* Pacify compilers when the user code never invokes YYERROR and
-       the label yyerrorlab therefore never appears in user code.  */
-    if (false)
-      YYERROR;
 
+    /* Pacify compilers like GCC when the user code never invokes
+       YYERROR and the label yyerrorlab therefore never appears in user
+       code.  */
+    if (false)
+      goto yyerrorlab;
+    yyerror_range[1].location = yystack_[yylen - 1].location;
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYERROR.  */
     yypop_ (yylen);
     yylen = 0;
     goto yyerrlab1;
 
-
   /*-------------------------------------------------------------.
   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   `-------------------------------------------------------------*/
@@ -3804,30 +3787,20 @@ namespace isc { namespace dhcp {
 
       // Shift the error token.
       error_token.state = yyn;
-      yypush_ ("Shifting", YY_MOVE (error_token));
+      yypush_ ("Shifting", error_token);
     }
     goto yynewstate;
 
-
-  /*-------------------------------------.
-  | yyacceptlab -- YYACCEPT comes here.  |
-  `-------------------------------------*/
+    // Accept.
   yyacceptlab:
     yyresult = 0;
     goto yyreturn;
 
-
-  /*-----------------------------------.
-  | yyabortlab -- YYABORT comes here.  |
-  `-----------------------------------*/
+    // Abort.
   yyabortlab:
     yyresult = 1;
     goto yyreturn;
 
-
-  /*-----------------------------------------------------.
-  | yyreturn -- parsing is finished, return the result.  |
-  `-----------------------------------------------------*/
   yyreturn:
     if (!yyla.empty ())
       yy_destroy_ ("Cleanup: discarding lookahead", yyla);
@@ -3843,12 +3816,12 @@ namespace isc { namespace dhcp {
 
     return yyresult;
   }
-#if YY_EXCEPTIONS
     catch (...)
       {
-        YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+                 << std::endl;
         // Do not try to display the values of the reclaimed symbols,
-        // as their printers might throw an exception.
+        // as their printer might throw an exception.
         if (!yyla.empty ())
           yy_destroy_ (YY_NULLPTR, yyla);
 
@@ -3859,13 +3832,12 @@ namespace isc { namespace dhcp {
           }
         throw;
       }
-#endif // YY_EXCEPTIONS
   }
 
   void
   Dhcp4Parser::error (const syntax_error& yyexc)
   {
-    error (yyexc.location, yyexc.what ());
+    error (yyexc.location, yyexc.what());
   }
 
   // Generate an error message.
@@ -3941,13 +3913,12 @@ namespace isc { namespace dhcp {
         case N:                               \
           yyformat = S;                       \
         break
-      default: // Avoid compiler warnings.
-        YYCASE_ (0, YY_("syntax error"));
-        YYCASE_ (1, YY_("syntax error, unexpected %s"));
-        YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
-        YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-        YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-        YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+        YYCASE_(0, YY_("syntax error"));
+        YYCASE_(1, YY_("syntax error, unexpected %s"));
+        YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+        YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+        YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+        YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 #undef YYCASE_
       }
 
@@ -3966,714 +3937,720 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -812;
+  const short int Dhcp4Parser::yypact_ninf_ = -822;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
-  const short
+  const short int
   Dhcp4Parser::yypact_[] =
   {
-     437,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,    59,    35,    56,    60,    62,
-      64,    66,    75,    98,   137,   139,   158,   173,   175,   186,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,    35,   -11,
-      17,    82,    43,   191,    -4,   384,   144,   392,   439,    -5,
-     449,    78,   210,  -812,   235,   231,   238,   227,   240,  -812,
-    -812,  -812,  -812,  -812,   254,  -812,    57,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   261,   263,   265,  -812,
-    -812,  -812,  -812,  -812,  -812,   277,   296,   297,   306,   321,
-     323,   324,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   325,  -812,  -812,  -812,  -812,
-      81,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,   328,  -812,    83,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,   330,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-      95,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   152,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,   316,   333,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   331,  -812,  -812,   334,
-    -812,  -812,  -812,   336,  -812,  -812,   338,   341,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,   337,   343,  -812,  -812,  -812,  -812,   340,   346,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,   170,  -812,  -812,  -812,   347,  -812,  -812,   348,  -812,
-     350,   353,  -812,  -812,   357,   358,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,   176,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,   178,  -812,  -812,  -812,   207,  -812,  -812,  -812,    35,
-      35,  -812,   182,   360,   361,   362,   363,   366,  -812,    17,
-    -812,   368,   371,   372,   206,   209,   212,   381,   383,   387,
-     389,   390,   391,   232,   233,   234,   225,   237,   244,   236,
-     394,   395,   404,   412,   417,   420,   422,   423,   426,   427,
-     430,   434,   435,   276,   442,   445,   451,    82,  -812,   452,
-     454,   456,   282,    43,  -812,   464,   465,   466,   469,   471,
-     472,   309,   473,   475,   484,   191,  -812,   485,    -4,  -812,
-     486,   508,   509,   510,   511,   512,   513,   519,  -812,   384,
-    -812,   520,   521,   364,   522,   526,   527,   365,  -812,   392,
-     528,   367,   370,  -812,   439,   530,   531,    85,  -812,   374,
-     533,   535,   373,   539,   377,   378,   544,   545,   379,   380,
-     550,   552,   553,   555,   449,  -812,   557,    78,  -812,   558,
-     210,  -812,  -812,  -812,   559,   450,   560,    35,    35,    35,
-    -812,   562,   576,   578,  -812,  -812,  -812,   396,   397,   419,
-     581,   598,   601,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-     440,   604,   605,   606,   607,   608,   446,    46,   611,   613,
-     614,   615,   616,  -812,   617,   608,   618,  -812,   621,    33,
-     180,  -812,  -812,   459,   460,   461,   625,   463,   467,  -812,
-     621,   468,   626,  -812,   470,  -812,   621,   474,   476,   477,
-     478,   479,   480,   481,  -812,   482,   483,  -812,   487,   488,
-     489,  -812,  -812,   490,  -812,  -812,  -812,   491,    35,  -812,
-    -812,   492,   493,  -812,   494,  -812,  -812,    11,   497,  -812,
-    -812,   -91,   495,   496,   498,  -812,   629,  -812,   632,  -812,
-      35,    82,    78,  -812,  -812,  -812,   210,    43,   590,  -812,
-    -812,  -812,   453,   453,   633,  -812,   634,   636,   645,   646,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,    53,   647,
-     658,   660,    16,    -1,  -812,   449,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,   661,  -812,  -812,
-    -812,  -812,   104,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   662,   633,  -812,   220,
-     221,   222,   228,  -812,   229,  -812,  -812,  -812,  -812,  -812,
-    -812,   635,   666,   667,   668,   669,  -812,  -812,   670,   671,
-     672,   673,   674,  -812,   230,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,   248,  -812,   675,   619,  -812,  -812,   676,
-     677,  -812,  -812,   678,   680,  -812,  -812,   679,   683,  -812,
-    -812,   681,   685,  -812,  -812,  -812,  -812,  -812,  -812,    91,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,   118,  -812,  -812,
-     684,   686,  -812,  -812,   687,   688,  -812,   690,   691,   692,
-     693,   694,   695,   256,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   258,  -812,  -812,  -812,
-     280,   524,  -812,   696,   697,  -812,  -812,  -812,  -812,   698,
-    -812,   150,  -812,   699,  -812,  -812,  -812,  -812,   700,   590,
-    -812,   703,   704,   705,   706,   532,   540,   534,   541,   546,
-     709,   710,   547,   548,   549,   551,   554,   453,  -812,  -812,
-     453,  -812,   633,   191,  -812,   634,   392,  -812,   636,   439,
-    -812,   645,   251,  -812,   646,    53,  -812,   147,   647,  -812,
-     384,  -812,   658,    -5,  -812,   660,   561,   563,   564,   565,
-     566,   567,    16,  -812,   715,   717,    -1,  -812,  -812,  -812,
-     716,   720,    -4,  -812,   661,   722,  -812,   116,   662,  -812,
-    -812,   556,  -812,   285,   569,   570,   571,  -812,  -812,  -812,
-    -812,  -812,   572,   573,  -812,  -812,  -812,  -812,  -812,  -812,
-     284,  -812,   286,  -812,   719,  -812,   721,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,   287,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   724,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   723,   739,  -812,  -812,  -812,
-    -812,  -812,   735,  -812,   288,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,   577,   579,  -812,  -812,   580,   294,  -812,
-     621,  -812,   740,  -812,  -812,  -812,  -812,  -812,   295,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,   251,
-    -812,   742,   582,  -812,   147,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,   745,   583,   746,   116,  -812,  -812,   586,  -812,
-    -812,   750,  -812,   588,  -812,  -812,   744,  -812,  -812,   320,
-    -812,   -30,   744,  -812,  -812,   753,   754,   755,   308,  -812,
-    -812,  -812,  -812,  -812,  -812,   756,   591,   592,   595,   -30,
-    -812,   597,  -812,  -812,  -812,  -812,  -812
+     413,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,    32,    35,    42,    56,    58,
+      60,    62,    64,    66,    79,    94,   150,   152,   156,   172,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,    35,   -88,
+      40,    80,    43,   189,    -6,   249,   118,   226,   251,   -49,
+     349,    36,   212,  -822,   193,   206,   247,   244,   263,  -822,
+    -822,  -822,  -822,  -822,   265,  -822,    81,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   277,   308,   312,  -822,
+    -822,  -822,  -822,  -822,  -822,   314,   315,   322,   323,   324,
+     334,   338,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   341,  -822,  -822,  -822,  -822,
+     114,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   342,  -822,   126,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   360,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     141,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,   147,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,   259,   287,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   272,  -822,  -822,   379,
+    -822,  -822,  -822,   381,  -822,  -822,   328,   350,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   383,   387,  -822,  -822,  -822,  -822,   368,   392,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   157,  -822,  -822,  -822,   397,  -822,  -822,   398,  -822,
+     399,   401,  -822,  -822,   403,   404,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,   188,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   276,  -822,  -822,  -822,   280,  -822,  -822,  -822,    35,
+      35,  -822,   246,   420,   421,   422,   423,   434,  -822,    40,
+    -822,   435,   441,   442,   261,   281,   290,   445,   446,   449,
+     456,   457,   460,   294,   295,   296,   298,   325,   329,   299,
+     464,   465,   490,   491,   492,   496,   498,   499,   500,   501,
+     502,   503,   504,   339,   505,   509,   511,    80,  -822,   513,
+     514,   516,   351,    43,  -822,   521,   524,   525,   526,   527,
+     528,   364,   529,   532,   533,   189,  -822,   534,    -6,  -822,
+     535,   537,   538,   539,   541,   542,   543,   544,  -822,   249,
+    -822,   545,   546,   380,   548,   550,   552,   384,  -822,   226,
+     555,   388,   389,  -822,   251,   556,   559,     5,  -822,   394,
+     560,   561,   412,   581,   416,   417,   585,   586,   418,   419,
+     589,   590,   591,   592,   349,  -822,   593,    36,  -822,   594,
+     212,  -822,  -822,  -822,   595,   596,   597,    35,    35,    35,
+    -822,   598,   599,   600,  -822,  -822,  -822,   431,   432,   438,
+     602,   603,   606,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     443,   607,   609,   610,   611,   612,   447,   -42,   613,   615,
+     616,   617,   618,  -822,   619,   612,   620,  -822,   623,   195,
+     203,  -822,  -822,   453,   454,   459,   625,   461,   462,  -822,
+     623,   463,   627,  -822,   466,  -822,   623,   467,   468,   469,
+     470,   471,   472,   473,  -822,   474,   475,  -822,   476,   477,
+     478,  -822,  -822,   479,  -822,  -822,  -822,   480,    35,  -822,
+    -822,   481,   482,  -822,   483,  -822,  -822,    20,   517,  -822,
+    -822,    13,   485,   486,   487,  -822,   630,  -822,   653,  -822,
+      35,    80,    36,  -822,  -822,  -822,   212,    43,   636,  -822,
+    -822,  -822,   187,   187,   654,  -822,   655,   656,   657,   658,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,    75,   659,
+     660,   661,   149,    49,  -822,   349,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   662,  -822,  -822,
+    -822,  -822,   137,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   663,   654,  -822,   284,
+     286,   288,   297,  -822,   301,  -822,  -822,  -822,  -822,  -822,
+    -822,   667,   668,   669,   670,   671,  -822,  -822,  -822,  -822,
+     672,   673,   674,   675,   676,  -822,   303,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   307,  -822,   677,
+     678,  -822,  -822,   679,   681,  -822,  -822,   680,   684,  -822,
+    -822,   682,   686,  -822,  -822,   685,   687,  -822,  -822,  -822,
+    -822,  -822,  -822,    91,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,    92,  -822,  -822,   688,   689,  -822,  -822,   690,   692,
+    -822,   693,   694,   695,   696,   697,   698,   326,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     332,  -822,  -822,  -822,   336,   512,  -822,   699,   700,  -822,
+    -822,  -822,  -822,   652,  -822,   164,  -822,   701,  -822,  -822,
+    -822,  -822,   702,   636,  -822,   704,   705,   706,   707,   522,
+     531,   547,   540,   549,   708,   710,   711,   712,   551,   553,
+     554,   557,   558,   187,  -822,  -822,   187,  -822,   654,   189,
+    -822,   655,   226,  -822,   656,   251,  -822,   657,   430,  -822,
+     658,    75,  -822,    51,   659,  -822,   249,  -822,   660,   -49,
+    -822,   661,   562,   563,   564,   565,   566,   567,   149,  -822,
+     713,   715,    49,  -822,  -822,  -822,   717,   718,    -6,  -822,
+     662,   722,  -822,    34,   663,  -822,  -822,   569,  -822,   377,
+     570,   571,   572,  -822,  -822,  -822,  -822,  -822,   573,   574,
+     575,   576,  -822,  -822,  -822,  -822,  -822,  -822,   358,  -822,
+     359,  -822,   719,  -822,   721,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   362,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,   726,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,   724,   744,  -822,  -822,  -822,  -822,  -822,
+     740,  -822,   369,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   579,   580,  -822,  -822,   582,   372,  -822,   623,  -822,
+     747,  -822,  -822,  -822,  -822,  -822,   390,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   430,
+    -822,   749,   583,  -822,    51,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,   750,   584,   753,    34,  -822,  -822,   588,  -822,
+    -822,   754,  -822,   601,  -822,  -822,   755,  -822,  -822,   197,
+    -822,   -24,   755,  -822,  -822,   756,   757,   759,   391,  -822,
+    -822,  -822,  -822,  -822,  -822,   760,   614,   605,   626,   -24,
+    -822,   604,  -822,  -822,  -822,  -822,  -822
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp4Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
       20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    70,     7,   134,     9,   271,    11,
-     432,    13,   457,    15,   357,    17,   365,    19,   402,    21,
-     236,    23,   549,    25,   619,    27,   610,    29,    47,    41,
-       0,     0,     0,     0,     0,   459,     0,   367,   404,     0,
+      35,    36,    58,     5,    70,     7,   134,     9,   277,    11,
+     438,    13,   463,    15,   363,    17,   371,    19,   408,    21,
+     242,    23,   555,    25,   625,    27,   616,    29,    47,    41,
+       0,     0,     0,     0,     0,   465,     0,   373,   410,     0,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    68,
-     617,   602,   604,   606,     0,    67,     0,    60,    62,    64,
-      65,    66,    63,   608,   123,   149,     0,     0,     0,   478,
-     480,   482,   147,   156,   158,     0,     0,     0,     0,     0,
-       0,     0,   118,   263,   355,   394,   323,   445,   447,   316,
-     214,   506,   449,   228,   247,     0,   532,   545,   547,   110,
+     623,   608,   610,   612,     0,    67,     0,    60,    62,    64,
+      65,    66,    63,   614,   123,   149,     0,     0,     0,   484,
+     486,   488,   147,   156,   158,     0,     0,     0,     0,     0,
+       0,     0,   118,   269,   361,   400,   329,   451,   453,   322,
+     220,   512,   455,   234,   253,     0,   538,   551,   553,   110,
        0,    72,    74,    75,    76,   107,   108,   109,    77,   105,
       94,    95,    96,    80,    81,   102,    82,    83,    84,    88,
       89,    78,   106,    79,    86,    87,   100,   101,   103,    97,
       98,    99,    85,    90,    91,    92,    93,   104,   136,   138,
      142,     0,   133,     0,   125,   127,   128,   129,   130,   131,
-     132,   304,   306,   308,   424,   302,   310,     0,   314,   312,
-     502,   301,   275,   276,   277,   298,   299,   300,   288,   289,
-       0,   273,   280,   293,   294,   295,   281,   283,   284,   286,
-     282,   278,   279,   296,   297,   285,   290,   291,   292,   287,
-     443,   442,   438,   439,   437,     0,   434,   436,   440,   441,
-     500,   488,   490,   494,   492,   498,   496,   484,   477,   471,
-     475,   476,     0,   460,   461,   472,   473,   474,   468,   463,
-     469,   465,   466,   467,   470,   464,     0,   384,   199,     0,
-     388,   386,   391,     0,   380,   381,     0,   368,   369,   371,
-     383,   372,   373,   374,   390,   375,   376,   377,   378,   379,
-     418,     0,     0,   416,   417,   420,   421,     0,   405,   406,
-     408,   409,   410,   411,   412,   413,   414,   415,   243,   245,
-     240,     0,   238,   241,   242,     0,   572,   574,     0,   577,
-       0,     0,   581,   585,     0,     0,   589,   596,   598,   600,
-     570,   568,   569,     0,   551,   553,   554,   555,   556,   557,
-     558,   559,   560,   561,   562,   563,   564,   565,   566,   567,
-     624,     0,   621,   623,   615,     0,   612,   614,    46,     0,
+     132,   310,   312,   314,   430,   308,   316,     0,   320,   318,
+     508,   307,   281,   282,   283,   304,   305,   306,   294,   295,
+       0,   279,   286,   299,   300,   301,   287,   289,   290,   292,
+     288,   284,   285,   302,   303,   291,   296,   297,   298,   293,
+     449,   448,   444,   445,   443,     0,   440,   442,   446,   447,
+     506,   494,   496,   500,   498,   504,   502,   490,   483,   477,
+     481,   482,     0,   466,   467,   478,   479,   480,   474,   469,
+     475,   471,   472,   473,   476,   470,     0,   390,   201,     0,
+     394,   392,   397,     0,   386,   387,     0,   374,   375,   377,
+     389,   378,   379,   380,   396,   381,   382,   383,   384,   385,
+     424,     0,     0,   422,   423,   426,   427,     0,   411,   412,
+     414,   415,   416,   417,   418,   419,   420,   421,   249,   251,
+     246,     0,   244,   247,   248,     0,   578,   580,     0,   583,
+       0,     0,   587,   591,     0,     0,   595,   602,   604,   606,
+     576,   574,   575,     0,   557,   559,   560,   561,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     630,     0,   627,   629,   621,     0,   618,   620,    46,     0,
        0,    39,     0,     0,     0,     0,     0,     0,    57,     0,
       59,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    71,     0,
        0,     0,     0,     0,   135,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   272,     0,     0,   433,
-       0,     0,     0,     0,     0,     0,     0,     0,   458,     0,
-     358,     0,     0,     0,     0,     0,     0,     0,   366,     0,
-       0,     0,     0,   403,     0,     0,     0,     0,   237,     0,
+       0,     0,     0,     0,     0,     0,   278,     0,     0,   439,
+       0,     0,     0,     0,     0,     0,     0,     0,   464,     0,
+     364,     0,     0,     0,     0,     0,     0,     0,   372,     0,
+       0,     0,     0,   409,     0,     0,     0,     0,   243,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   550,     0,     0,   620,     0,
-       0,   611,    50,    43,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   556,     0,     0,   626,     0,
+       0,   617,    50,    43,     0,     0,     0,     0,     0,     0,
       61,     0,     0,     0,   120,   121,   122,     0,     0,     0,
        0,     0,     0,   111,   112,   113,   114,   115,   116,   117,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   531,     0,     0,     0,    73,     0,     0,
-       0,   146,   126,     0,     0,     0,     0,     0,     0,   322,
-       0,     0,     0,   274,     0,   435,     0,     0,     0,     0,
-       0,     0,     0,     0,   462,     0,     0,   382,     0,     0,
-       0,   393,   370,     0,   422,   423,   407,     0,     0,   239,
-     571,     0,     0,   576,     0,   579,   580,     0,     0,   587,
-     588,     0,     0,     0,     0,   552,     0,   622,     0,   613,
-       0,     0,     0,   603,   605,   607,     0,     0,     0,   479,
-     481,   483,     0,     0,   160,   119,   265,   359,   396,   325,
-      40,   446,   448,   318,   319,   320,   321,   317,     0,     0,
-     451,   230,     0,     0,   546,     0,    51,   137,   140,   141,
-     139,   144,   145,   143,   305,   307,   309,   426,   303,   311,
-     315,   313,     0,   444,   501,   489,   491,   495,   493,   499,
-     497,   485,   385,   200,   389,   387,   392,   419,   244,   246,
-     573,   575,   578,   583,   584,   582,   586,   591,   592,   593,
-     594,   595,   590,   597,   599,   601,     0,   160,    44,     0,
-       0,     0,     0,   154,     0,   151,   153,   186,   192,   194,
-     196,     0,     0,     0,     0,     0,   208,   210,     0,     0,
-       0,     0,     0,   185,     0,   166,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   181,   182,   183,   178,
-     184,   179,   180,     0,   164,     0,   161,   162,   269,     0,
-     266,   267,   363,     0,   360,   361,   400,     0,   397,   398,
-     329,     0,   326,   327,   223,   224,   225,   226,   227,     0,
-     216,   218,   219,   220,   221,   222,   510,     0,   508,   455,
-       0,   452,   453,   234,     0,   231,   232,     0,     0,     0,
-       0,     0,     0,     0,   249,   251,   252,   253,   254,   255,
-     256,   541,   543,   540,   538,   539,     0,   534,   536,   537,
-       0,    53,   430,     0,   427,   428,   486,   504,   505,     0,
-     628,     0,   626,     0,    69,   618,   609,   124,     0,     0,
-     150,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   148,   157,
-       0,   159,     0,     0,   264,     0,   367,   356,     0,   404,
-     395,     0,     0,   324,     0,     0,   215,   512,     0,   507,
-     459,   450,     0,     0,   229,     0,     0,     0,     0,     0,
-       0,     0,     0,   248,     0,     0,     0,   533,   548,    55,
-       0,    54,     0,   425,     0,     0,   503,     0,     0,   625,
-     616,     0,   152,     0,     0,     0,     0,   198,   201,   202,
-     203,   204,     0,     0,   212,   213,   205,   206,   207,   167,
-       0,   163,     0,   268,     0,   362,     0,   399,   354,   348,
-     336,   337,   351,   352,   353,   339,   340,   333,   334,   335,
-     346,   347,   345,     0,   331,   338,   349,   350,   341,   342,
-     343,   344,   328,   217,   528,     0,   526,   527,   519,   520,
-     524,   525,   521,   522,   523,     0,   513,   514,   516,   517,
-     518,   509,     0,   454,     0,   233,   257,   258,   259,   260,
-     261,   262,   250,     0,     0,   535,    52,     0,     0,   429,
-       0,   642,     0,   640,   638,   632,   636,   637,     0,   630,
-     634,   635,   633,   627,   155,   188,   189,   190,   191,   187,
-     193,   195,   197,   209,   211,   165,   270,   364,   401,     0,
-     330,     0,     0,   511,     0,   456,   235,   542,   544,    56,
-     431,   487,     0,     0,     0,     0,   629,   332,     0,   530,
-     515,     0,   639,     0,   631,   529,     0,   641,   646,     0,
-     644,     0,     0,   643,   654,     0,     0,     0,     0,   648,
-     650,   651,   652,   653,   645,     0,     0,     0,     0,     0,
-     647,     0,   656,   657,   658,   649,   655
+       0,     0,     0,   537,     0,     0,     0,    73,     0,     0,
+       0,   146,   126,     0,     0,     0,     0,     0,     0,   328,
+       0,     0,     0,   280,     0,   441,     0,     0,     0,     0,
+       0,     0,     0,     0,   468,     0,     0,   388,     0,     0,
+       0,   399,   376,     0,   428,   429,   413,     0,     0,   245,
+     577,     0,     0,   582,     0,   585,   586,     0,     0,   593,
+     594,     0,     0,     0,     0,   558,     0,   628,     0,   619,
+       0,     0,     0,   609,   611,   613,     0,     0,     0,   485,
+     487,   489,     0,     0,   160,   119,   271,   365,   402,   331,
+      40,   452,   454,   324,   325,   326,   327,   323,     0,     0,
+     457,   236,     0,     0,   552,     0,    51,   137,   140,   141,
+     139,   144,   145,   143,   311,   313,   315,   432,   309,   317,
+     321,   319,     0,   450,   507,   495,   497,   501,   499,   505,
+     503,   491,   391,   202,   395,   393,   398,   425,   250,   252,
+     579,   581,   584,   589,   590,   588,   592,   597,   598,   599,
+     600,   601,   596,   603,   605,   607,     0,   160,    44,     0,
+       0,     0,     0,   154,     0,   151,   153,   188,   194,   196,
+     198,     0,     0,     0,     0,     0,   210,   212,   214,   216,
+       0,     0,     0,     0,     0,   187,     0,   166,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   181,   182,
+     183,   178,   184,   185,   186,   179,   180,     0,   164,     0,
+     161,   162,   275,     0,   272,   273,   369,     0,   366,   367,
+     406,     0,   403,   404,   335,     0,   332,   333,   229,   230,
+     231,   232,   233,     0,   222,   224,   225,   226,   227,   228,
+     516,     0,   514,   461,     0,   458,   459,   240,     0,   237,
+     238,     0,     0,     0,     0,     0,     0,     0,   255,   257,
+     258,   259,   260,   261,   262,   547,   549,   546,   544,   545,
+       0,   540,   542,   543,     0,    53,   436,     0,   433,   434,
+     492,   510,   511,     0,   634,     0,   632,     0,    69,   624,
+     615,   124,     0,     0,   150,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   148,   157,     0,   159,     0,     0,
+     270,     0,   373,   362,     0,   410,   401,     0,     0,   330,
+       0,     0,   221,   518,     0,   513,   465,   456,     0,     0,
+     235,     0,     0,     0,     0,     0,     0,     0,     0,   254,
+       0,     0,     0,   539,   554,    55,     0,    54,     0,   431,
+       0,     0,   509,     0,     0,   631,   622,     0,   152,     0,
+       0,     0,     0,   200,   203,   204,   205,   206,     0,     0,
+       0,     0,   218,   219,   207,   208,   209,   167,     0,   163,
+       0,   274,     0,   368,     0,   405,   360,   354,   342,   343,
+     357,   358,   359,   345,   346,   339,   340,   341,   352,   353,
+     351,     0,   337,   344,   355,   356,   347,   348,   349,   350,
+     334,   223,   534,     0,   532,   533,   525,   526,   530,   531,
+     527,   528,   529,     0,   519,   520,   522,   523,   524,   515,
+       0,   460,     0,   239,   263,   264,   265,   266,   267,   268,
+     256,     0,     0,   541,    52,     0,     0,   435,     0,   648,
+       0,   646,   644,   638,   642,   643,     0,   636,   640,   641,
+     639,   633,   155,   190,   191,   192,   193,   189,   195,   197,
+     199,   211,   213,   215,   217,   165,   276,   370,   407,     0,
+     336,     0,     0,   517,     0,   462,   241,   548,   550,    56,
+     437,   493,     0,     0,     0,     0,   635,   338,     0,   536,
+     521,     0,   645,     0,   637,   535,     0,   647,   652,     0,
+     650,     0,     0,   649,   660,     0,     0,     0,     0,   654,
+     656,   657,   658,   659,   651,     0,     0,     0,     0,     0,
+     653,     0,   662,   663,   664,   655,   661
   };
 
-  const short
+  const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   -46,  -812,  -472,  -812,
-     154,  -812,  -812,  -812,  -812,  -812,  -812,  -516,  -812,  -812,
-    -812,   -70,  -812,  -812,  -812,   398,  -812,  -812,  -812,  -812,
-     177,   385,   -47,   -44,     4,    12,    15,    19,  -812,  -812,
-    -812,  -812,    23,    26,  -812,  -812,   181,   375,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,   -28,  -812,  -812,  -812,  -812,  -812,
-    -812,    93,  -812,   -41,  -812,  -578,   -22,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,   -26,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   -33,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,   -56,  -812,  -812,  -812,   -52,
-     349,  -812,  -812,  -812,  -812,  -812,  -812,  -812,   -43,  -812,
-    -812,  -812,  -812,  -812,  -812,  -811,  -812,  -812,  -812,   -17,
-    -812,  -812,  -812,    -9,   400,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -810,  -812,   -68,  -812,   -55,  -812,    27,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,   -15,  -812,  -812,
-    -177,   -63,  -812,  -812,  -812,  -812,  -812,    -6,  -812,  -812,
-    -812,    -2,  -812,   393,  -812,   -66,  -812,  -812,  -812,  -812,
-    -812,   -64,  -812,  -812,  -812,  -812,  -812,   -19,  -812,  -812,
-    -812,    21,  -812,  -812,  -812,    10,  -812,   382,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,   -10,
-    -812,  -812,  -812,     0,   438,  -812,  -812,   -57,  -812,   -39,
-    -812,   -62,  -812,  -812,  -812,    18,  -812,  -812,  -812,    13,
-    -812,   428,    -7,  -812,    -3,  -812,     8,  -812,   239,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -805,  -812,  -812,  -812,
-    -812,  -812,    25,  -812,  -812,  -812,  -133,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,     9,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,   249,   402,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,  -812,
-    -812,  -812,  -812,  -812,   281,   399,  -812,  -812,  -812,  -812,
-    -812,  -812,   290,   401,  -812,  -812,  -812,     2,  -812,  -812,
-    -132,  -812,  -812,  -812,  -812,  -812,  -812,  -148,  -812,  -812,
-    -164,  -812,  -812,  -812,  -812,  -812
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,   -46,  -822,  -472,  -822,
+     240,  -822,  -822,  -822,  -822,  -822,  -822,  -516,  -822,  -822,
+    -822,   -70,  -822,  -822,  -822,   415,  -822,  -822,  -822,  -822,
+     175,   361,   -47,   -44,     4,    12,    15,    19,  -822,  -822,
+    -822,  -822,    23,    26,  -822,  -822,   170,   357,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,   -40,  -822,  -822,  -822,  -822,  -822,
+    -822,   117,  -822,   -33,  -822,  -578,   -35,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,   -26,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   -27,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   -54,
+    -822,  -822,  -822,   -48,   355,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,   -50,  -822,  -822,  -822,  -822,  -822,  -822,  -821,
+    -822,  -822,  -822,   -16,  -822,  -822,  -822,   -11,   405,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -820,  -822,   -68,
+    -822,   -55,  -822,    27,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,   -15,  -822,  -822,  -178,   -63,  -822,  -822,  -822,  -822,
+    -822,    -4,  -822,  -822,  -822,     0,  -822,   406,  -822,   -66,
+    -822,  -822,  -822,  -822,  -822,   -64,  -822,  -822,  -822,  -822,
+    -822,   -19,  -822,  -822,  -822,    -9,  -822,  -822,  -822,     3,
+    -822,   414,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,   -10,  -822,  -822,  -822,    -5,   444,  -822,
+    -822,   -57,  -822,   -39,  -822,   -62,  -822,  -822,  -822,    11,
+    -822,  -822,  -822,    21,  -822,   437,    -7,  -822,    -3,  -822,
+       8,  -822,   236,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -817,  -822,  -822,  -822,  -822,  -822,    25,  -822,  -822,  -822,
+    -134,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,     9,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+     257,   409,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,
+    -822,  -822,  -822,  -822,  -822,  -822,  -822,  -822,   289,   407,
+    -822,  -822,  -822,  -822,  -822,  -822,   292,   411,  -822,  -822,
+    -822,     2,  -822,  -822,  -136,  -822,  -822,  -822,  -822,  -822,
+    -822,  -152,  -822,  -822,  -168,  -822,  -822,  -822,  -822,  -822
   };
 
-  const short
+  const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    38,    39,    40,    69,
-     611,    87,    88,    41,    68,    84,    85,   627,   791,   870,
-     871,   703,    43,    70,    96,    97,    98,   363,    45,    71,
+     611,    87,    88,    41,    68,    84,    85,   627,   795,   876,
+     877,   705,    43,    70,    96,    97,    98,   363,    45,    71,
      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
      390,   150,   151,   152,   153,   372,   183,   184,    47,    72,
      185,   409,   186,   410,   630,   187,   411,   633,   188,   154,
-     380,   155,   373,   684,   685,   686,   808,   156,   381,   157,
-     382,   725,   726,   727,   830,   704,   705,   706,   811,   989,
-     707,   812,   708,   813,   709,   814,   710,   711,   442,   712,
-     713,   714,   715,   716,   717,   718,   719,   820,   720,   821,
-     721,   722,   158,   398,   749,   750,   751,   752,   753,   754,
-     755,   159,   401,   764,   765,   766,   853,    61,    79,   311,
-     312,   313,   455,   314,   456,   160,   402,   773,   774,   775,
-     776,   777,   778,   779,   780,   161,   391,   729,   730,   731,
-     833,    49,    73,   210,   211,   212,   419,   213,   415,   214,
-     416,   215,   417,   216,   420,   217,   423,   218,   422,   162,
-     397,   617,   220,   163,   394,   741,   742,   743,   842,   923,
-     924,   164,   392,    55,    76,   733,   734,   735,   836,    57,
-      77,   276,   277,   278,   279,   280,   281,   282,   441,   283,
-     445,   284,   444,   285,   286,   446,   287,   165,   393,   737,
-     738,   739,   839,    59,    78,   297,   298,   299,   300,   301,
-     450,   302,   303,   304,   305,   222,   418,   793,   794,   795,
-     872,    51,    74,   235,   236,   237,   427,   166,   395,   167,
-     396,   168,   400,   760,   761,   762,   850,    53,    75,   252,
-     253,   254,   169,   377,   170,   378,   171,   379,   258,   437,
-     798,   875,   259,   431,   260,   432,   261,   434,   262,   433,
-     263,   436,   264,   435,   265,   430,   229,   424,   799,   172,
-     399,   757,   758,   847,   945,   946,   947,   948,   949,  1001,
-     950,   173,   174,   404,   786,   787,   788,   864,   789,   865,
-     175,   405,   176,   406,    63,    80,   333,   334,   335,   336,
-     460,   337,   461,   338,   339,   463,   340,   341,   342,   466,
-     665,   343,   467,   344,   345,   346,   470,   672,   347,   471,
-     348,   472,   349,   473,    99,   365,   100,   366,   101,   367,
-     177,   371,    67,    82,   355,   356,   357,   479,   102,   364,
-      65,    81,   351,   352,   353,   476,   801,   802,   877,   978,
-     979,   980,   981,  1014,   982,  1012,  1029,  1030,  1031,  1038,
-    1039,  1040,  1045,  1041,  1042,  1043
+     380,   155,   373,   684,   685,   686,   812,   156,   381,   157,
+     382,   729,   730,   731,   836,   706,   707,   708,   815,   997,
+     709,   816,   710,   817,   711,   818,   712,   713,   442,   714,
+     715,   716,   717,   718,   719,   720,   721,   824,   722,   825,
+     723,   826,   724,   827,   725,   726,   158,   398,   753,   754,
+     755,   756,   757,   758,   759,   159,   401,   768,   769,   770,
+     859,    61,    79,   311,   312,   313,   455,   314,   456,   160,
+     402,   777,   778,   779,   780,   781,   782,   783,   784,   161,
+     391,   733,   734,   735,   839,    49,    73,   210,   211,   212,
+     419,   213,   415,   214,   416,   215,   417,   216,   420,   217,
+     423,   218,   422,   162,   397,   617,   220,   163,   394,   745,
+     746,   747,   848,   931,   932,   164,   392,    55,    76,   737,
+     738,   739,   842,    57,    77,   276,   277,   278,   279,   280,
+     281,   282,   441,   283,   445,   284,   444,   285,   286,   446,
+     287,   165,   393,   741,   742,   743,   845,    59,    78,   297,
+     298,   299,   300,   301,   450,   302,   303,   304,   305,   222,
+     418,   797,   798,   799,   878,    51,    74,   235,   236,   237,
+     427,   166,   395,   167,   396,   168,   400,   764,   765,   766,
+     856,    53,    75,   252,   253,   254,   169,   377,   170,   378,
+     171,   379,   258,   437,   802,   881,   259,   431,   260,   432,
+     261,   434,   262,   433,   263,   436,   264,   435,   265,   430,
+     229,   424,   803,   172,   399,   761,   762,   853,   953,   954,
+     955,   956,   957,  1011,   958,   173,   174,   404,   790,   791,
+     792,   870,   793,   871,   175,   405,   176,   406,    63,    80,
+     333,   334,   335,   336,   460,   337,   461,   338,   339,   463,
+     340,   341,   342,   466,   665,   343,   467,   344,   345,   346,
+     470,   672,   347,   471,   348,   472,   349,   473,    99,   365,
+     100,   366,   101,   367,   177,   371,    67,    82,   355,   356,
+     357,   479,   102,   364,    65,    81,   351,   352,   353,   476,
+     805,   806,   883,   986,   987,   988,   989,  1024,   990,  1022,
+    1039,  1040,  1041,  1048,  1049,  1050,  1055,  1051,  1052,  1053
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
       95,   139,   182,   201,   231,   248,   232,   274,   293,   310,
      330,   225,   295,   266,   296,   189,   223,   238,   250,   233,
-     288,   306,    83,   331,   640,   723,   202,    89,   663,   203,
-     644,   918,   919,   190,   224,   239,   251,   931,   289,   307,
-      31,   332,    32,   610,    33,   667,   668,   669,   670,   628,
-     629,   275,   294,   610,   221,   234,   249,   178,   179,    30,
-     369,   180,   125,    42,   181,   370,   226,    44,   255,    46,
-     227,    48,   256,    50,   230,   127,   128,   204,   127,   128,
-     671,   228,    52,   257,   407,   205,   413,   198,   206,   408,
-     199,   414,   207,   103,   845,   104,   208,   846,   425,   209,
-     219,   308,   309,   426,   105,    54,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,  1034,   781,   782,  1035,  1036,
-    1037,   848,   127,   128,   849,   767,   768,   769,   770,   771,
-     772,   613,   614,   615,   616,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,    56,   664,    58,   124,   125,   744,
-     745,   746,   747,   878,   748,   428,   879,    86,   126,    90,
-     429,   127,   128,    94,    94,    60,   129,    94,    91,    92,
-      93,   130,   131,   457,   109,   110,   111,   132,   458,   474,
-      62,   477,    64,   268,   475,    94,   478,   133,   918,   919,
-     134,   308,   309,    66,   931,   127,   128,   135,   136,   631,
-     632,   137,   138,    34,    35,    36,    37,   247,   796,   124,
-     480,    94,   124,   125,   268,   481,   107,   108,   109,   110,
-     111,   350,   354,   407,   477,   480,   127,   128,   804,   805,
-     806,   413,   809,   827,   359,   361,   807,   810,   828,   934,
-     935,   358,   360,   362,   115,   116,   117,   118,   119,   120,
-      94,   827,   900,   191,   192,   193,   829,   125,   368,   862,
-     971,   866,   972,   973,   863,   374,   867,   375,   194,   376,
-     127,   128,   195,   196,   197,   129,   107,   108,   109,   110,
-     111,   383,   198,   474,    94,   199,   132,   827,   868,   425,
-     999,   457,   995,   200,   996,  1000,  1006,   428,  1015,    95,
-     384,   385,  1010,  1016,   115,   116,   117,   118,   119,   120,
-     386,  1049,   123,   482,   483,    94,  1050,   125,   268,   985,
-     986,   987,   988,  1032,   438,   387,  1033,   388,   389,   403,
-     127,   128,   412,   196,   421,   129,   439,   139,   443,   440,
-     447,   451,   198,   182,   449,   199,   448,   452,   453,   454,
-     484,   459,   462,   200,   464,   201,   189,   465,   231,    94,
-     232,   468,   469,   225,   485,   486,   487,   488,   223,   248,
-     489,   238,   491,   233,   190,   492,   493,   494,   202,   274,
-     495,   203,   250,   496,   293,   497,   224,   498,   295,   239,
-     296,   499,   288,   500,   501,   502,   506,   306,   510,   511,
-     251,   503,   504,   505,   330,   509,   221,   507,   512,   234,
-     289,   109,   110,   111,   508,   307,   513,   331,   226,    94,
-     249,   514,   227,   275,   515,   267,   516,   517,   294,   204,
-     518,   519,   255,   228,   520,   332,   256,   205,   521,   522,
-     206,   593,   594,   595,   207,   523,   524,   257,   208,   525,
-     125,   209,   219,   531,  1011,   526,   528,   591,   529,   268,
-     530,   269,   270,   127,   128,   271,   272,   273,   533,   534,
-     535,   127,   128,   536,   240,   537,   538,   540,   539,   541,
-     241,   242,   243,   244,   245,   246,   687,   247,   542,   544,
-     546,   688,   689,   690,   691,   692,   693,   694,   695,   696,
-     697,   698,   699,   700,   701,   702,   268,   290,   269,   270,
-     291,   292,   547,   548,   549,   550,   551,   552,   127,   128,
-     268,   139,   659,   553,   555,   556,   558,   182,   127,   128,
-     559,   560,   563,   557,   567,   568,   561,   571,   564,   572,
-     189,   565,   573,   574,   678,   570,   575,   576,   577,   578,
-     579,   580,    94,   783,   581,   330,   582,   583,   190,   584,
-      94,   586,   588,   590,   599,   600,   784,   592,   331,   596,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   597,   785,   598,   332,   601,   602,   328,
-     329,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,   603,   604,    94,   605,   606,
-     607,   608,   609,   683,   612,    32,   618,    94,   619,   620,
-     621,    94,   832,   622,   623,   625,   626,   634,   635,   636,
-     637,   638,   666,   642,   676,   639,   641,   677,   643,   815,
-     724,   728,   645,   732,   646,   647,   648,   649,   650,   651,
-     652,   653,   736,   740,   756,   654,   655,   656,   657,   658,
-     660,   661,   662,   673,   674,   759,   675,   763,   792,   800,
-     816,   817,   818,   819,   822,   823,   824,   825,   826,   624,
-     835,   831,   834,   838,   837,   840,   841,   843,   844,   852,
-     851,   855,   869,   854,   856,   857,   858,   859,   860,   861,
-     874,   887,   873,   889,   881,   880,   876,   883,   884,   885,
-     886,   888,   890,   892,   893,   891,   894,   895,   896,   963,
-     897,   964,   966,   967,   984,   898,   970,   997,  1002,   998,
-     956,  1003,   957,   958,   959,   960,   961,   990,   991,   992,
-     993,   994,  1004,  1005,  1013,  1007,  1018,  1008,  1009,  1021,
-    1023,  1028,  1022,  1019,  1025,  1026,  1027,  1046,  1047,  1048,
-    1051,  1053,  1052,   201,  1054,  1056,   274,   490,   679,   293,
-     803,   225,   908,   295,   920,   296,   223,   936,   682,   288,
-     248,   882,   306,   310,   938,   926,   202,   921,   532,   203,
-     940,   901,   527,   250,   224,   909,   783,   289,   910,   955,
-     307,   954,   231,   927,   232,   899,   569,   974,   941,   784,
-     275,   251,   933,   294,   221,   238,   917,   233,   903,   962,
-     976,   937,  1017,   925,   902,   543,   226,   785,   939,   932,
-     227,   249,   905,   239,   904,   928,   566,   204,   977,   929,
-     942,   228,   562,   255,   943,   205,   911,   256,   206,   906,
-     930,   975,   207,   234,   912,   944,   208,   913,   257,   209,
-     219,   914,   907,   952,   969,   915,   545,   554,   916,   922,
-     953,  1020,   968,   951,   790,   965,   585,   681,   587,   589,
-     983,   797,   680,  1024,  1044,  1055,     0,     0,     0,     0,
+     288,   306,    83,   331,   640,   727,   202,   926,   927,   203,
+     644,   939,    30,   190,   224,   239,   251,   663,   289,   307,
+      31,   332,    32,   610,    33,   613,   614,   615,   616,    42,
+      89,   275,   294,   610,   221,   234,   249,   178,   179,   308,
+     309,   180,   125,    44,   181,    46,   226,    48,   255,    50,
+     227,    52,   256,    54,   230,   127,   128,   204,   109,   110,
+     111,   228,    86,   257,   369,   205,    56,   198,   206,   370,
+     199,   103,   207,   104,   851,   854,   208,   852,   855,   209,
+     219,    58,   105,   268,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   308,   309,   127,   128,   407,   124,   125,
+     268,    94,   408,  1044,   127,   128,  1045,  1046,  1047,   413,
+     127,   128,   127,   128,   414,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   425,   942,   943,   124,   125,   426,
+     428,   667,   668,   669,   670,   429,   664,    60,   126,    62,
+     457,   127,   128,    64,    94,   458,   129,   884,   785,   786,
+     885,   130,   131,   748,   749,   750,   751,   132,   752,    66,
+     979,   350,   980,   981,    90,   124,   671,   133,   926,   927,
+     134,   474,   939,    91,    92,    93,   475,   135,   136,   358,
+    1042,   137,   138,  1043,    94,    34,    35,    36,    37,   359,
+      94,   628,   629,    94,   107,   108,   109,   110,   111,    94,
+     687,    94,   631,   632,   354,   688,   689,   690,   691,   692,
+     693,   694,   695,   696,   697,   698,   699,   700,   701,   702,
+     703,   704,   247,   800,   115,   116,   117,   118,   119,   120,
+      94,   360,   361,   191,   192,   193,   268,   125,   908,   267,
+     771,   772,   773,   774,   775,   776,   362,   438,   194,   368,
+     127,   128,   195,   196,   197,   129,   109,   110,   111,   477,
+     440,   374,   198,   480,   478,   199,   132,   407,   481,   477,
+     439,   480,   808,   200,   809,   268,   810,   269,   270,    95,
+     413,   271,   272,   273,   813,   811,   833,   127,   128,   814,
+     833,   834,   375,   482,   483,   835,   376,   125,   383,   384,
+     268,   290,   269,   270,   291,   292,   385,   386,   387,   868,
+     127,   128,   127,   128,   869,   872,   448,   139,   388,   474,
+     873,   240,   389,   182,   874,   403,   412,   241,   242,   243,
+     244,   245,   246,   449,   247,   201,   189,    94,   231,    94,
+     232,   833,   425,   225,   421,  1009,  1005,  1006,   223,   248,
+    1010,   238,   457,   233,   190,   428,   453,  1016,   202,   274,
+    1020,   203,   250,   443,   293,   447,   224,   451,   295,   239,
+     296,   452,   288,  1025,  1059,   454,    94,   306,  1026,  1060,
+     251,   459,   462,   464,   330,   465,   221,   468,   469,   234,
+     289,   993,   994,   995,   996,   307,   484,   331,   226,    94,
+     249,    94,   227,   275,   485,   486,   487,   488,   294,   204,
+     127,   128,   255,   228,   494,   332,   256,   205,   489,   491,
+     206,   593,   594,   595,   207,   492,   493,   257,   208,   497,
+     498,   209,   219,   499,   495,   107,   108,   109,   110,   111,
+     500,   501,  1021,   496,   502,   503,   504,   505,   510,   511,
+     509,   506,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,   115,   116,   117,   118,   119,
+     120,   328,   329,   123,   512,   513,   514,   507,   125,   268,
+     515,   508,   516,   517,   518,   519,   520,   521,   522,   524,
+     523,   127,   128,   525,   196,   526,   129,   528,   529,    94,
+     530,   139,   659,   198,   531,   533,   199,   182,   534,   535,
+     536,   537,   538,   540,   200,   539,   541,   542,   544,   546,
+     189,   547,   548,   549,   678,   550,   551,   552,   553,   555,
+     556,   557,   558,   787,   559,   330,   560,   561,   190,   563,
+     567,   564,   565,   568,   571,   572,   788,   570,   331,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,   573,   789,   574,   332,   575,   576,   577,
+     578,   579,   580,   581,   582,   583,   584,   586,   588,   590,
+      94,   599,   600,   591,   592,   596,   597,   598,   601,   602,
+     603,   604,   606,   605,   607,   608,   609,   612,   618,    32,
+     619,   620,   621,   634,   635,   622,   623,   625,   626,   636,
+     637,   638,   639,   641,   642,   676,   643,   645,   646,   647,
+     648,   649,   650,   651,   652,   653,   654,   655,   656,   657,
+     658,   660,   661,   662,   666,   673,   674,   675,   677,   683,
+     882,   728,   732,   736,   740,   744,   760,   763,   767,   796,
+     804,   819,   820,   821,   822,   823,   828,   829,   830,   831,
+     832,   838,   875,   837,   841,   840,   843,   844,   846,   847,
+     850,   849,   858,   893,   857,   861,   860,   862,   863,   864,
+     865,   866,   867,   880,   894,   879,   887,   886,   889,   890,
+     891,   892,   898,   896,   899,   900,   901,   971,   895,   972,
+     897,   975,   902,   974,   903,   904,   978,  1007,   905,  1008,
+    1012,   906,  1013,   964,   965,   966,   967,   968,   969,   992,
+     998,   999,  1000,  1001,  1002,  1003,  1004,  1014,  1015,  1017,
+    1018,  1023,  1019,  1028,  1031,  1032,  1029,  1033,  1035,  1036,
+    1056,  1057,  1038,  1058,  1061,   624,   679,   682,   527,   201,
+     532,  1037,   274,   888,  1066,   293,  1063,   225,   916,   295,
+     928,   296,   223,   944,   490,   288,   248,  1062,   306,   310,
+     946,   934,   202,   929,   807,   203,   948,  1064,   907,   250,
+     224,   917,   787,   289,   918,   909,   307,   963,   231,   935,
+     232,   962,   569,   982,   949,   788,   275,   251,   970,   294,
+     221,   238,   925,   233,   941,   911,   984,   945,   910,   933,
+     543,  1027,   226,   789,   947,   940,   227,   249,   915,   239,
+     913,   936,   912,   204,   985,   937,   950,   228,   914,   255,
+     951,   205,   919,   256,   206,   562,   938,   983,   207,   234,
+     920,   952,   208,   921,   257,   209,   219,   922,   566,   961,
+     977,   923,   545,   976,   924,   930,   554,   960,   801,   959,
+    1030,   973,   794,   585,   680,   681,   991,   589,   587,  1034,
+    1054,  1065,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   908,
-       0,   920,     0,     0,   936,     0,     0,     0,     0,     0,
-       0,   938,   926,     0,   921,   974,     0,   940,     0,     0,
-       0,     0,   909,     0,     0,   910,     0,     0,   976,     0,
-     927,     0,     0,     0,     0,   941,     0,     0,     0,     0,
-       0,     0,     0,   917,     0,     0,   977,     0,   937,     0,
-     925,     0,     0,     0,     0,   939,     0,     0,     0,   975,
-       0,     0,   928,     0,     0,     0,   929,   942,     0,     0,
-       0,   943,     0,   911,     0,     0,     0,   930,     0,     0,
-       0,   912,   944,     0,   913,     0,     0,     0,   914,     0,
-       0,     0,   915,     0,     0,   916,   922
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   916,
+       0,   928,     0,     0,   944,     0,     0,     0,     0,     0,
+       0,   946,   934,     0,   929,   982,     0,   948,     0,     0,
+       0,     0,   917,     0,     0,   918,     0,     0,   984,     0,
+     935,     0,     0,     0,     0,   949,     0,     0,     0,     0,
+       0,     0,     0,   925,     0,     0,   985,     0,   945,     0,
+     933,     0,     0,     0,     0,   947,     0,     0,     0,   983,
+       0,     0,   936,     0,     0,     0,   937,   950,     0,     0,
+       0,   951,     0,   919,     0,     0,     0,   938,     0,     0,
+       0,   920,   952,     0,   921,     0,     0,     0,   922,     0,
+       0,     0,   923,     0,     0,   924,   930
   };
 
-  const short
+  const short int
   Dhcp4Parser::yycheck_[] =
   {
       70,    71,    72,    73,    74,    75,    74,    77,    78,    79,
       80,    73,    78,    76,    78,    72,    73,    74,    75,    74,
-      77,    78,    68,    80,   540,   603,    73,    10,    17,    73,
-     546,   842,   842,    72,    73,    74,    75,   842,    77,    78,
-       5,    80,     7,   515,     9,   136,   137,   138,   139,    16,
-      17,    77,    78,   525,    73,    74,    75,    14,    15,     0,
-       3,    18,    66,     7,    21,     8,    73,     7,    75,     7,
-      73,     7,    75,     7,    78,    79,    80,    73,    79,    80,
-     171,    73,     7,    75,     3,    73,     3,    91,    73,     8,
-      94,     8,    73,    11,     3,    13,    73,     6,     3,    73,
-      73,   106,   107,     8,    22,     7,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,   145,   117,   118,   148,   149,
-     150,     3,    79,    80,     6,   109,   110,   111,   112,   113,
-     114,    85,    86,    87,    88,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,     7,   134,     7,    65,    66,    96,
-      97,    98,    99,     3,   101,     3,     6,   168,    76,   142,
-       8,    79,    80,   168,   168,     7,    84,   168,   151,   152,
-     153,    89,    90,     3,    27,    28,    29,    95,     8,     3,
-       7,     3,     7,    67,     8,   168,     8,   105,   999,   999,
-     108,   106,   107,     7,   999,    79,    80,   115,   116,    19,
-      20,   119,   120,   168,   169,   170,   171,   103,   104,    65,
-       3,   168,    65,    66,    67,     8,    25,    26,    27,    28,
-      29,   143,    12,     3,     3,     3,    79,    80,     8,     8,
-       8,     3,     3,     3,     3,     8,     8,     8,     8,    92,
-      93,     6,     4,     3,    53,    54,    55,    56,    57,    58,
-     168,     3,   830,    62,    63,    64,     8,    66,     4,     3,
-     144,     3,   146,   147,     8,     4,     8,     4,    77,     4,
-      79,    80,    81,    82,    83,    84,    25,    26,    27,    28,
-      29,     4,    91,     3,   168,    94,    95,     3,     8,     3,
-       3,     3,     8,   102,     8,     8,     8,     3,     3,   369,
-       4,     4,     8,     8,    53,    54,    55,    56,    57,    58,
-       4,     3,    61,   359,   360,   168,     8,    66,    67,    34,
-      35,    36,    37,     3,     8,     4,     6,     4,     4,     4,
-      79,    80,     4,    82,     4,    84,     3,   407,     4,     8,
-       4,     4,    91,   413,     3,    94,     8,     4,     8,     3,
-     168,     4,     4,   102,     4,   425,   413,     4,   428,   168,
-     428,     4,     4,   425,     4,     4,     4,     4,   425,   439,
-       4,   428,     4,   428,   413,     4,     4,   171,   425,   449,
-     171,   425,   439,   171,   454,     4,   425,     4,   454,   428,
-     454,     4,   449,     4,     4,     4,   171,   454,     4,     4,
-     439,   169,   169,   169,   474,   169,   425,   170,     4,   428,
-     449,    27,    28,    29,   170,   454,     4,   474,   425,   168,
-     439,     4,   425,   449,     4,    33,     4,     4,   454,   425,
-       4,     4,   439,   425,     4,   474,   439,   425,     4,     4,
-     425,   487,   488,   489,   425,   169,     4,   439,   425,     4,
-      66,   425,   425,   171,   970,     4,     4,     7,     4,    67,
-       4,    69,    70,    79,    80,    73,    74,    75,     4,     4,
-       4,    79,    80,     4,    90,     4,     4,     4,   169,     4,
-      96,    97,    98,    99,   100,   101,    33,   103,     4,     4,
-       4,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    67,    68,    69,    70,
-      71,    72,     4,     4,     4,     4,     4,     4,    79,    80,
-      67,   591,   568,     4,     4,     4,     4,   597,    79,    80,
-       4,     4,     4,   169,     4,     4,   171,     4,   171,     4,
-     597,   171,   169,     4,   590,   171,   169,   169,     4,     4,
-     171,   171,   168,   623,     4,   625,     4,     4,   597,     4,
-     168,     4,     4,     4,   168,   168,   623,     7,   625,     7,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,     7,   623,     7,   625,   168,     7,   140,
-     141,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,     7,     5,   168,   168,     5,
-       5,     5,     5,    23,   168,     7,     5,   168,     5,     5,
-       5,   168,     3,     7,     7,     7,     5,   168,   168,   168,
-       5,   168,   135,     7,     5,   168,   168,     5,   168,     4,
-       7,     7,   168,     7,   168,   168,   168,   168,   168,   168,
-     168,   168,     7,     7,     7,   168,   168,   168,   168,   168,
-     168,   168,   168,   168,   168,     7,   168,     7,     7,     7,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   525,
-       3,     6,     6,     3,     6,     6,     3,     6,     3,     3,
-       6,     3,   168,     6,     4,     4,     4,     4,     4,     4,
-       3,   169,     6,   169,     4,     6,     8,     4,     4,     4,
-       4,   171,   171,     4,     4,   169,   169,   169,   169,     4,
-     169,     4,     6,     3,   168,   171,     4,     8,     4,     8,
-     169,     8,   169,   169,   169,   169,   169,   168,   168,   168,
-     168,   168,     3,     8,     4,   168,     4,   168,   168,     4,
-       4,     7,   169,   171,   168,     5,   168,     4,     4,     4,
-       4,   169,   171,   833,   169,   168,   836,   369,   591,   839,
-     677,   833,   842,   839,   842,   839,   833,   847,   597,   836,
-     850,   809,   839,   853,   847,   842,   833,   842,   413,   833,
-     847,   832,   407,   850,   833,   842,   866,   836,   842,   855,
-     839,   853,   872,   842,   872,   827,   457,   877,   847,   866,
-     836,   850,   845,   839,   833,   872,   842,   872,   835,   862,
-     877,   847,   999,   842,   833,   425,   833,   866,   847,   844,
-     833,   850,   838,   872,   836,   842,   454,   833,   877,   842,
-     847,   833,   449,   850,   847,   833,   842,   850,   833,   839,
-     842,   877,   833,   872,   842,   847,   833,   842,   850,   833,
-     833,   842,   841,   850,   874,   842,   428,   439,   842,   842,
-     852,  1004,   872,   848,   625,   866,   474,   596,   477,   480,
-     878,   642,   592,  1015,  1032,  1049,    -1,    -1,    -1,    -1,
+      77,    78,    68,    80,   540,   603,    73,   848,   848,    73,
+     546,   848,     0,    72,    73,    74,    75,    17,    77,    78,
+       5,    80,     7,   515,     9,    87,    88,    89,    90,     7,
+      10,    77,    78,   525,    73,    74,    75,    14,    15,   108,
+     109,    18,    68,     7,    21,     7,    73,     7,    75,     7,
+      73,     7,    75,     7,    80,    81,    82,    73,    27,    28,
+      29,    73,   170,    75,     3,    73,     7,    93,    73,     8,
+      96,    11,    73,    13,     3,     3,    73,     6,     6,    73,
+      73,     7,    22,    69,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,   108,   109,    81,    82,     3,    67,    68,
+      69,   170,     8,   147,    81,    82,   150,   151,   152,     3,
+      81,    82,    81,    82,     8,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,     3,    94,    95,    67,    68,     8,
+       3,   138,   139,   140,   141,     8,   136,     7,    78,     7,
+       3,    81,    82,     7,   170,     8,    86,     3,   119,   120,
+       6,    91,    92,    98,    99,   100,   101,    97,   103,     7,
+     146,   145,   148,   149,   144,    67,   173,   107,  1009,  1009,
+     110,     3,  1009,   153,   154,   155,     8,   117,   118,     6,
+       3,   121,   122,     6,   170,   170,   171,   172,   173,     3,
+     170,    16,    17,   170,    25,    26,    27,    28,    29,   170,
+      33,   170,    19,    20,    12,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,   105,   106,    55,    56,    57,    58,    59,    60,
+     170,     4,     8,    64,    65,    66,    69,    68,   836,    33,
+     111,   112,   113,   114,   115,   116,     3,     8,    79,     4,
+      81,    82,    83,    84,    85,    86,    27,    28,    29,     3,
+       8,     4,    93,     3,     8,    96,    97,     3,     8,     3,
+       3,     3,     8,   104,     8,    69,     8,    71,    72,   369,
+       3,    75,    76,    77,     3,     8,     3,    81,    82,     8,
+       3,     8,     4,   359,   360,     8,     4,    68,     4,     4,
+      69,    70,    71,    72,    73,    74,     4,     4,     4,     3,
+      81,    82,    81,    82,     8,     3,     8,   407,     4,     3,
+       8,    92,     4,   413,     8,     4,     4,    98,    99,   100,
+     101,   102,   103,     3,   105,   425,   413,   170,   428,   170,
+     428,     3,     3,   425,     4,     3,     8,     8,   425,   439,
+       8,   428,     3,   428,   413,     3,     8,     8,   425,   449,
+       8,   425,   439,     4,   454,     4,   425,     4,   454,   428,
+     454,     4,   449,     3,     3,     3,   170,   454,     8,     8,
+     439,     4,     4,     4,   474,     4,   425,     4,     4,   428,
+     449,    34,    35,    36,    37,   454,   170,   474,   425,   170,
+     439,   170,   425,   449,     4,     4,     4,     4,   454,   425,
+      81,    82,   439,   425,   173,   474,   439,   425,     4,     4,
+     425,   487,   488,   489,   425,     4,     4,   439,   425,     4,
+       4,   425,   425,     4,   173,    25,    26,    27,    28,    29,
+       4,     4,   978,   173,     4,   171,   171,   171,     4,     4,
+     171,   173,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,    55,    56,    57,    58,    59,
+      60,   142,   143,    63,     4,     4,     4,   172,    68,    69,
+       4,   172,     4,     4,     4,     4,     4,     4,     4,     4,
+     171,    81,    82,     4,    84,     4,    86,     4,     4,   170,
+       4,   591,   568,    93,   173,     4,    96,   597,     4,     4,
+       4,     4,     4,     4,   104,   171,     4,     4,     4,     4,
+     597,     4,     4,     4,   590,     4,     4,     4,     4,     4,
+       4,   171,     4,   623,     4,   625,     4,   173,   597,     4,
+       4,   173,   173,     4,     4,     4,   623,   173,   625,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   171,   623,     4,   625,   171,   171,     4,
+       4,   173,   173,     4,     4,     4,     4,     4,     4,     4,
+     170,   170,   170,     7,     7,     7,     7,     7,   170,     7,
+       7,     5,     5,   170,     5,     5,     5,   170,     5,     7,
+       5,     5,     5,   170,   170,     7,     7,     7,     5,   170,
+       5,   170,   170,   170,     7,     5,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   170,   170,   170,   137,   170,   170,   170,     5,    23,
+       8,     7,     7,     7,     7,     7,     7,     7,     7,     7,
+       7,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     3,   170,     6,     3,     6,     6,     3,     6,     3,
+       3,     6,     3,   171,     6,     3,     6,     4,     4,     4,
+       4,     4,     4,     3,   173,     6,     4,     6,     4,     4,
+       4,     4,     4,   173,     4,     4,     4,     4,   171,     4,
+     171,     3,   171,     6,   171,   171,     4,     8,   171,     8,
+       4,   173,     8,   171,   171,   171,   171,   171,   171,   170,
+     170,   170,   170,   170,   170,   170,   170,     3,     8,   170,
+     170,     4,   170,     4,     4,   171,   173,     4,   170,     5,
+       4,     4,     7,     4,     4,   525,   591,   597,   407,   839,
+     413,   170,   842,   813,   170,   845,   171,   839,   848,   845,
+     848,   845,   839,   853,   369,   842,   856,   173,   845,   859,
+     853,   848,   839,   848,   677,   839,   853,   171,   833,   856,
+     839,   848,   872,   842,   848,   838,   845,   861,   878,   848,
+     878,   859,   457,   883,   853,   872,   842,   856,   868,   845,
+     839,   878,   848,   878,   851,   841,   883,   853,   839,   848,
+     425,  1009,   839,   872,   853,   850,   839,   856,   847,   878,
+     844,   848,   842,   839,   883,   848,   853,   839,   845,   856,
+     853,   839,   848,   856,   839,   449,   848,   883,   839,   878,
+     848,   853,   839,   848,   856,   839,   839,   848,   454,   858,
+     880,   848,   428,   878,   848,   848,   439,   856,   642,   854,
+    1014,   872,   625,   474,   592,   596,   884,   480,   477,  1025,
+    1042,  1059,    -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,   999,
-      -1,   999,    -1,    -1,  1004,    -1,    -1,    -1,    -1,    -1,
-      -1,  1004,   999,    -1,   999,  1015,    -1,  1004,    -1,    -1,
-      -1,    -1,   999,    -1,    -1,   999,    -1,    -1,  1015,    -1,
-     999,    -1,    -1,    -1,    -1,  1004,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   999,    -1,    -1,  1015,    -1,  1004,    -1,
-     999,    -1,    -1,    -1,    -1,  1004,    -1,    -1,    -1,  1015,
-      -1,    -1,   999,    -1,    -1,    -1,   999,  1004,    -1,    -1,
-      -1,  1004,    -1,   999,    -1,    -1,    -1,   999,    -1,    -1,
-      -1,   999,  1004,    -1,   999,    -1,    -1,    -1,   999,    -1,
-      -1,    -1,   999,    -1,    -1,   999,   999
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
+      -1,  1009,    -1,    -1,  1014,    -1,    -1,    -1,    -1,    -1,
+      -1,  1014,  1009,    -1,  1009,  1025,    -1,  1014,    -1,    -1,
+      -1,    -1,  1009,    -1,    -1,  1009,    -1,    -1,  1025,    -1,
+    1009,    -1,    -1,    -1,    -1,  1014,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1009,    -1,    -1,  1025,    -1,  1014,    -1,
+    1009,    -1,    -1,    -1,    -1,  1014,    -1,    -1,    -1,  1025,
+      -1,    -1,  1009,    -1,    -1,    -1,  1009,  1014,    -1,    -1,
+      -1,  1014,    -1,  1009,    -1,    -1,    -1,  1009,    -1,    -1,
+      -1,  1009,  1014,    -1,  1009,    -1,    -1,    -1,  1009,    -1,
+      -1,    -1,  1009,    -1,    -1,  1009,  1009
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-       0,     5,     7,     9,   168,   169,   170,   171,   188,   189,
-     190,   195,     7,   204,     7,   210,     7,   230,     7,   323,
-       7,   403,     7,   419,     7,   355,     7,   361,     7,   385,
-       7,   299,     7,   476,     7,   522,     7,   514,   196,   191,
-     205,   211,   231,   324,   404,   420,   356,   362,   386,   300,
-     477,   523,   515,   188,   197,   198,   168,   193,   194,    10,
-     142,   151,   152,   153,   168,   203,   206,   207,   208,   506,
-     508,   510,   520,    11,    13,    22,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    65,    66,    76,    79,    80,    84,
-      89,    90,    95,   105,   108,   115,   116,   119,   120,   203,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     223,   224,   225,   226,   241,   243,   249,   251,   284,   293,
-     307,   317,   341,   345,   353,   379,   409,   411,   413,   424,
-     426,   428,   451,   463,   464,   472,   474,   512,    14,    15,
-      18,    21,   203,   228,   229,   232,   234,   237,   240,   409,
-     411,    62,    63,    64,    77,    81,    82,    83,    91,    94,
-     102,   203,   214,   215,   216,   217,   218,   219,   224,   225,
-     325,   326,   327,   329,   331,   333,   335,   337,   339,   341,
-     344,   379,   397,   409,   411,   413,   424,   426,   428,   448,
-      78,   203,   337,   339,   379,   405,   406,   407,   409,   411,
-      90,    96,    97,    98,    99,   100,   101,   103,   203,   379,
-     409,   411,   421,   422,   423,   424,   426,   428,   430,   434,
-     436,   438,   440,   442,   444,   446,   353,    33,    67,    69,
-      70,    73,    74,    75,   203,   269,   363,   364,   365,   366,
-     367,   368,   369,   371,   373,   375,   376,   378,   409,   411,
-      68,    71,    72,   203,   269,   367,   373,   387,   388,   389,
-     390,   391,   393,   394,   395,   396,   409,   411,   106,   107,
-     203,   301,   302,   303,   305,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   140,   141,
-     203,   409,   411,   478,   479,   480,   481,   483,   485,   486,
-     488,   489,   490,   493,   495,   496,   497,   500,   502,   504,
-     143,   524,   525,   526,    12,   516,   517,   518,     6,     3,
-       4,     8,     3,   209,   521,   507,   509,   511,     4,     3,
-       8,   513,   227,   244,     4,     4,     4,   425,   427,   429,
-     242,   250,   252,     4,     4,     4,     4,     4,     4,     4,
-     222,   318,   354,   380,   346,   410,   412,   342,   285,   452,
-     414,   294,   308,     4,   465,   473,   475,     3,     8,   233,
-     235,   238,     4,     3,     8,   330,   332,   334,   398,   328,
-     336,     4,   340,   338,   449,     3,     8,   408,     3,     8,
-     447,   435,   437,   441,   439,   445,   443,   431,     8,     3,
-       8,   370,   270,     4,   374,   372,   377,     4,     8,     3,
-     392,     4,     4,     8,     3,   304,   306,     3,     8,     4,
-     482,   484,     4,   487,     4,     4,   491,   494,     4,     4,
-     498,   501,   503,   505,     3,     8,   527,     3,     8,   519,
-       3,     8,   188,   188,   168,     4,     4,     4,     4,     4,
-     207,     4,     4,     4,   171,   171,   171,     4,     4,     4,
-       4,     4,     4,   169,   169,   169,   171,   170,   170,   169,
+       0,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+       0,     5,     7,     9,   170,   171,   172,   173,   190,   191,
+     192,   197,     7,   206,     7,   212,     7,   232,     7,   329,
+       7,   409,     7,   425,     7,   361,     7,   367,     7,   391,
+       7,   305,     7,   482,     7,   528,     7,   520,   198,   193,
+     207,   213,   233,   330,   410,   426,   362,   368,   392,   306,
+     483,   529,   521,   190,   199,   200,   170,   195,   196,    10,
+     144,   153,   154,   155,   170,   205,   208,   209,   210,   512,
+     514,   516,   526,    11,    13,    22,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    67,    68,    78,    81,    82,    86,
+      91,    92,    97,   107,   110,   117,   118,   121,   122,   205,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     225,   226,   227,   228,   243,   245,   251,   253,   290,   299,
+     313,   323,   347,   351,   359,   385,   415,   417,   419,   430,
+     432,   434,   457,   469,   470,   478,   480,   518,    14,    15,
+      18,    21,   205,   230,   231,   234,   236,   239,   242,   415,
+     417,    64,    65,    66,    79,    83,    84,    85,    93,    96,
+     104,   205,   216,   217,   218,   219,   220,   221,   226,   227,
+     331,   332,   333,   335,   337,   339,   341,   343,   345,   347,
+     350,   385,   403,   415,   417,   419,   430,   432,   434,   454,
+      80,   205,   343,   345,   385,   411,   412,   413,   415,   417,
+      92,    98,    99,   100,   101,   102,   103,   105,   205,   385,
+     415,   417,   427,   428,   429,   430,   432,   434,   436,   440,
+     442,   444,   446,   448,   450,   452,   359,    33,    69,    71,
+      72,    75,    76,    77,   205,   271,   369,   370,   371,   372,
+     373,   374,   375,   377,   379,   381,   382,   384,   415,   417,
+      70,    73,    74,   205,   271,   373,   379,   393,   394,   395,
+     396,   397,   399,   400,   401,   402,   415,   417,   108,   109,
+     205,   307,   308,   309,   311,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   142,   143,
+     205,   415,   417,   484,   485,   486,   487,   489,   491,   492,
+     494,   495,   496,   499,   501,   502,   503,   506,   508,   510,
+     145,   530,   531,   532,    12,   522,   523,   524,     6,     3,
+       4,     8,     3,   211,   527,   513,   515,   517,     4,     3,
+       8,   519,   229,   246,     4,     4,     4,   431,   433,   435,
+     244,   252,   254,     4,     4,     4,     4,     4,     4,     4,
+     224,   324,   360,   386,   352,   416,   418,   348,   291,   458,
+     420,   300,   314,     4,   471,   479,   481,     3,     8,   235,
+     237,   240,     4,     3,     8,   336,   338,   340,   404,   334,
+     342,     4,   346,   344,   455,     3,     8,   414,     3,     8,
+     453,   441,   443,   447,   445,   451,   449,   437,     8,     3,
+       8,   376,   272,     4,   380,   378,   383,     4,     8,     3,
+     398,     4,     4,     8,     3,   310,   312,     3,     8,     4,
+     488,   490,     4,   493,     4,     4,   497,   500,     4,     4,
+     504,   507,   509,   511,     3,     8,   533,     3,     8,   525,
+       3,     8,   190,   190,   170,     4,     4,     4,     4,     4,
+     209,     4,     4,     4,   173,   173,   173,     4,     4,     4,
+       4,     4,     4,   171,   171,   171,   173,   172,   172,   171,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,   169,     4,     4,     4,   213,     4,     4,
-       4,   171,   229,     4,     4,     4,     4,     4,     4,   169,
-       4,     4,     4,   326,     4,   406,     4,     4,     4,     4,
-       4,     4,     4,     4,   423,     4,     4,   169,     4,     4,
-       4,   171,   365,     4,   171,   171,   389,     4,     4,   302,
-     171,     4,     4,   169,     4,   169,   169,     4,     4,   171,
-     171,     4,     4,     4,     4,   479,     4,   525,     4,   517,
-       4,     7,     7,   188,   188,   188,     7,     7,     7,   168,
-     168,   168,     7,     7,     5,   168,     5,     5,     5,     5,
-     190,   192,   168,    85,    86,    87,    88,   343,     5,     5,
-       5,     5,     7,     7,   192,     7,     5,   199,    16,    17,
-     236,    19,    20,   239,   168,   168,   168,     5,   168,   168,
-     199,   168,     7,   168,   199,   168,   168,   168,   168,   168,
-     168,   168,   168,   168,   168,   168,   168,   168,   168,   188,
-     168,   168,   168,    17,   134,   492,   135,   136,   137,   138,
-     139,   171,   499,   168,   168,   168,     5,     5,   188,   212,
-     524,   516,   228,    23,   245,   246,   247,    33,    38,    39,
+       4,     4,     4,   171,     4,     4,     4,   215,     4,     4,
+       4,   173,   231,     4,     4,     4,     4,     4,     4,   171,
+       4,     4,     4,   332,     4,   412,     4,     4,     4,     4,
+       4,     4,     4,     4,   429,     4,     4,   171,     4,     4,
+       4,   173,   371,     4,   173,   173,   395,     4,     4,   308,
+     173,     4,     4,   171,     4,   171,   171,     4,     4,   173,
+     173,     4,     4,     4,     4,   485,     4,   531,     4,   523,
+       4,     7,     7,   190,   190,   190,     7,     7,     7,   170,
+     170,   170,     7,     7,     5,   170,     5,     5,     5,     5,
+     192,   194,   170,    87,    88,    89,    90,   349,     5,     5,
+       5,     5,     7,     7,   194,     7,     5,   201,    16,    17,
+     238,    19,    20,   241,   170,   170,   170,     5,   170,   170,
+     201,   170,     7,   170,   201,   170,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   190,
+     170,   170,   170,    17,   136,   498,   137,   138,   139,   140,
+     141,   173,   505,   170,   170,   170,     5,     5,   190,   214,
+     530,   522,   230,    23,   247,   248,   249,    33,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,   203,   257,   258,   259,   262,   264,   266,
-     268,   269,   271,   272,   273,   274,   275,   276,   277,   278,
-     280,   282,   283,   257,     7,   253,   254,   255,     7,   319,
-     320,   321,     7,   357,   358,   359,     7,   381,   382,   383,
-       7,   347,   348,   349,    96,    97,    98,    99,   101,   286,
-     287,   288,   289,   290,   291,   292,     7,   453,   454,     7,
-     415,   416,   417,     7,   295,   296,   297,   109,   110,   111,
-     112,   113,   114,   309,   310,   311,   312,   313,   314,   315,
-     316,   117,   118,   203,   409,   411,   466,   467,   468,   470,
-     478,   200,     7,   399,   400,   401,   104,   430,   432,   450,
-       7,   528,   529,   253,     8,     8,     8,     8,   248,     3,
-       8,   260,   263,   265,   267,     4,     4,     4,     4,     4,
-     279,   281,     4,     4,     4,     4,     4,     3,     8,     8,
-     256,     6,     3,   322,     6,     3,   360,     6,     3,   384,
-       6,     3,   350,     6,     3,     3,     6,   455,     3,     6,
-     418,     6,     3,   298,     6,     3,     4,     4,     4,     4,
-       4,     4,     3,     8,   469,   471,     3,     8,     8,   168,
-     201,   202,   402,     6,     3,   433,     8,   530,     3,     6,
-       6,     4,   246,     4,     4,     4,     4,   169,   171,   169,
-     171,   169,     4,     4,   169,   169,   169,   169,   171,   258,
-     257,   255,   325,   321,   363,   359,   387,   383,   203,   214,
-     215,   216,   217,   218,   219,   224,   225,   269,   317,   335,
-     337,   339,   341,   351,   352,   379,   409,   411,   424,   426,
-     428,   448,   349,   287,    92,    93,   203,   269,   353,   379,
-     409,   411,   424,   426,   428,   456,   457,   458,   459,   460,
-     462,   454,   421,   417,   301,   297,   169,   169,   169,   169,
-     169,   169,   310,     4,     4,   467,     6,     3,   405,   401,
-       4,   144,   146,   147,   203,   269,   409,   411,   531,   532,
-     533,   534,   536,   529,   168,    34,    35,    36,    37,   261,
-     168,   168,   168,   168,   168,     8,     8,     8,     8,     3,
-       8,   461,     4,     8,     3,     8,     8,   168,   168,   168,
-       8,   199,   537,     4,   535,     3,     8,   352,     4,   171,
-     458,     4,   169,     4,   532,   168,     5,   168,     7,   538,
-     539,   540,     3,     6,   145,   148,   149,   150,   541,   542,
-     543,   545,   546,   547,   539,   544,     4,     4,     4,     3,
-       8,     4,   171,   169,   169,   542,   168
+      50,    51,    52,    53,    54,   205,   259,   260,   261,   264,
+     266,   268,   270,   271,   273,   274,   275,   276,   277,   278,
+     279,   280,   282,   284,   286,   288,   289,   259,     7,   255,
+     256,   257,     7,   325,   326,   327,     7,   363,   364,   365,
+       7,   387,   388,   389,     7,   353,   354,   355,    98,    99,
+     100,   101,   103,   292,   293,   294,   295,   296,   297,   298,
+       7,   459,   460,     7,   421,   422,   423,     7,   301,   302,
+     303,   111,   112,   113,   114,   115,   116,   315,   316,   317,
+     318,   319,   320,   321,   322,   119,   120,   205,   415,   417,
+     472,   473,   474,   476,   484,   202,     7,   405,   406,   407,
+     106,   436,   438,   456,     7,   534,   535,   255,     8,     8,
+       8,     8,   250,     3,     8,   262,   265,   267,   269,     4,
+       4,     4,     4,     4,   281,   283,   285,   287,     4,     4,
+       4,     4,     4,     3,     8,     8,   258,     6,     3,   328,
+       6,     3,   366,     6,     3,   390,     6,     3,   356,     6,
+       3,     3,     6,   461,     3,     6,   424,     6,     3,   304,
+       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
+     475,   477,     3,     8,     8,   170,   203,   204,   408,     6,
+       3,   439,     8,   536,     3,     6,     6,     4,   248,     4,
+       4,     4,     4,   171,   173,   171,   173,   171,     4,     4,
+       4,     4,   171,   171,   171,   171,   173,   260,   259,   257,
+     331,   327,   369,   365,   393,   389,   205,   216,   217,   218,
+     219,   220,   221,   226,   227,   271,   323,   341,   343,   345,
+     347,   357,   358,   385,   415,   417,   430,   432,   434,   454,
+     355,   293,    94,    95,   205,   271,   359,   385,   415,   417,
+     430,   432,   434,   462,   463,   464,   465,   466,   468,   460,
+     427,   423,   307,   303,   171,   171,   171,   171,   171,   171,
+     316,     4,     4,   473,     6,     3,   411,   407,     4,   146,
+     148,   149,   205,   271,   415,   417,   537,   538,   539,   540,
+     542,   535,   170,    34,    35,    36,    37,   263,   170,   170,
+     170,   170,   170,   170,   170,     8,     8,     8,     8,     3,
+       8,   467,     4,     8,     3,     8,     8,   170,   170,   170,
+       8,   201,   543,     4,   541,     3,     8,   358,     4,   173,
+     464,     4,   171,     4,   538,   170,     5,   170,     7,   544,
+     545,   546,     3,     6,   147,   150,   151,   152,   547,   548,
+     549,   551,   552,   553,   545,   550,     4,     4,     4,     3,
+       8,     4,   173,   171,   171,   548,   170
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   172,   174,   173,   175,   173,   176,   173,   177,   173,
-     178,   173,   179,   173,   180,   173,   181,   173,   182,   173,
-     183,   173,   184,   173,   185,   173,   186,   173,   187,   173,
-     188,   188,   188,   188,   188,   188,   188,   189,   191,   190,
-     192,   193,   193,   194,   194,   196,   195,   197,   197,   198,
-     198,   200,   199,   201,   201,   202,   202,   203,   205,   204,
-     206,   206,   207,   207,   207,   207,   207,   207,   209,   208,
-     211,   210,   212,   212,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   214,   215,   216,   217,   218,   219,   220,   222,   221,
-     223,   224,   225,   227,   226,   228,   228,   229,   229,   229,
-     229,   229,   229,   229,   231,   230,   233,   232,   235,   234,
-     236,   236,   238,   237,   239,   239,   240,   242,   241,   244,
-     243,   245,   245,   246,   248,   247,   250,   249,   252,   251,
-     253,   253,   254,   254,   256,   255,   257,   257,   258,   258,
-     258,   258,   258,   258,   258,   258,   258,   258,   258,   258,
-     258,   258,   258,   258,   258,   258,   260,   259,   261,   261,
-     261,   261,   263,   262,   265,   264,   267,   266,   268,   270,
-     269,   271,   272,   273,   274,   275,   276,   277,   279,   278,
-     281,   280,   282,   283,   285,   284,   286,   286,   287,   287,
-     287,   287,   287,   288,   289,   290,   291,   292,   294,   293,
-     295,   295,   296,   296,   298,   297,   300,   299,   301,   301,
-     301,   302,   302,   304,   303,   306,   305,   308,   307,   309,
-     309,   310,   310,   310,   310,   310,   310,   311,   312,   313,
-     314,   315,   316,   318,   317,   319,   319,   320,   320,   322,
-     321,   324,   323,   325,   325,   326,   326,   326,   326,   326,
-     326,   326,   326,   326,   326,   326,   326,   326,   326,   326,
-     326,   326,   326,   326,   326,   326,   326,   326,   326,   326,
-     326,   326,   328,   327,   330,   329,   332,   331,   334,   333,
-     336,   335,   338,   337,   340,   339,   342,   341,   343,   343,
-     343,   343,   344,   346,   345,   347,   347,   348,   348,   350,
-     349,   351,   351,   352,   352,   352,   352,   352,   352,   352,
-     352,   352,   352,   352,   352,   352,   352,   352,   352,   352,
-     352,   352,   352,   352,   352,   354,   353,   356,   355,   357,
-     357,   358,   358,   360,   359,   362,   361,   363,   363,   364,
-     364,   365,   365,   365,   365,   365,   365,   365,   365,   365,
-     365,   366,   367,   368,   370,   369,   372,   371,   374,   373,
-     375,   377,   376,   378,   380,   379,   381,   381,   382,   382,
-     384,   383,   386,   385,   387,   387,   388,   388,   389,   389,
-     389,   389,   389,   389,   389,   389,   389,   390,   392,   391,
-     393,   394,   395,   396,   398,   397,   399,   399,   400,   400,
-     402,   401,   404,   403,   405,   405,   406,   406,   406,   406,
-     406,   406,   406,   408,   407,   410,   409,   412,   411,   414,
-     413,   415,   415,   416,   416,   418,   417,   420,   419,   421,
-     421,   422,   422,   423,   423,   423,   423,   423,   423,   423,
-     423,   423,   423,   423,   423,   423,   423,   423,   425,   424,
-     427,   426,   429,   428,   431,   430,   433,   432,   435,   434,
+       0,   174,   176,   175,   177,   175,   178,   175,   179,   175,
+     180,   175,   181,   175,   182,   175,   183,   175,   184,   175,
+     185,   175,   186,   175,   187,   175,   188,   175,   189,   175,
+     190,   190,   190,   190,   190,   190,   190,   191,   193,   192,
+     194,   195,   195,   196,   196,   198,   197,   199,   199,   200,
+     200,   202,   201,   203,   203,   204,   204,   205,   207,   206,
+     208,   208,   209,   209,   209,   209,   209,   209,   211,   210,
+     213,   212,   214,   214,   215,   215,   215,   215,   215,   215,
+     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
+     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
+     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
+     215,   216,   217,   218,   219,   220,   221,   222,   224,   223,
+     225,   226,   227,   229,   228,   230,   230,   231,   231,   231,
+     231,   231,   231,   231,   233,   232,   235,   234,   237,   236,
+     238,   238,   240,   239,   241,   241,   242,   244,   243,   246,
+     245,   247,   247,   248,   250,   249,   252,   251,   254,   253,
+     255,   255,   256,   256,   258,   257,   259,   259,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   262,   261,
+     263,   263,   263,   263,   265,   264,   267,   266,   269,   268,
+     270,   272,   271,   273,   274,   275,   276,   277,   278,   279,
+     281,   280,   283,   282,   285,   284,   287,   286,   288,   289,
+     291,   290,   292,   292,   293,   293,   293,   293,   293,   294,
+     295,   296,   297,   298,   300,   299,   301,   301,   302,   302,
+     304,   303,   306,   305,   307,   307,   307,   308,   308,   310,
+     309,   312,   311,   314,   313,   315,   315,   316,   316,   316,
+     316,   316,   316,   317,   318,   319,   320,   321,   322,   324,
+     323,   325,   325,   326,   326,   328,   327,   330,   329,   331,
+     331,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+     332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+     332,   332,   332,   332,   332,   332,   332,   332,   334,   333,
+     336,   335,   338,   337,   340,   339,   342,   341,   344,   343,
+     346,   345,   348,   347,   349,   349,   349,   349,   350,   352,
+     351,   353,   353,   354,   354,   356,   355,   357,   357,   358,
+     358,   358,   358,   358,   358,   358,   358,   358,   358,   358,
+     358,   358,   358,   358,   358,   358,   358,   358,   358,   358,
+     358,   360,   359,   362,   361,   363,   363,   364,   364,   366,
+     365,   368,   367,   369,   369,   370,   370,   371,   371,   371,
+     371,   371,   371,   371,   371,   371,   371,   372,   373,   374,
+     376,   375,   378,   377,   380,   379,   381,   383,   382,   384,
+     386,   385,   387,   387,   388,   388,   390,   389,   392,   391,
+     393,   393,   394,   394,   395,   395,   395,   395,   395,   395,
+     395,   395,   395,   396,   398,   397,   399,   400,   401,   402,
+     404,   403,   405,   405,   406,   406,   408,   407,   410,   409,
+     411,   411,   412,   412,   412,   412,   412,   412,   412,   414,
+     413,   416,   415,   418,   417,   420,   419,   421,   421,   422,
+     422,   424,   423,   426,   425,   427,   427,   428,   428,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   431,   430,   433,   432,   435,   434,
      437,   436,   439,   438,   441,   440,   443,   442,   445,   444,
-     447,   446,   449,   448,   450,   450,   452,   451,   453,   453,
-     455,   454,   456,   456,   457,   457,   458,   458,   458,   458,
-     458,   458,   458,   458,   458,   458,   458,   459,   461,   460,
-     462,   463,   465,   464,   466,   466,   467,   467,   467,   467,
-     467,   469,   468,   471,   470,   473,   472,   475,   474,   477,
-     476,   478,   478,   479,   479,   479,   479,   479,   479,   479,
-     479,   479,   479,   479,   479,   479,   479,   479,   479,   479,
-     479,   480,   482,   481,   484,   483,   485,   487,   486,   488,
-     489,   491,   490,   492,   492,   494,   493,   495,   496,   498,
-     497,   499,   499,   499,   499,   499,   501,   500,   503,   502,
-     505,   504,   507,   506,   509,   508,   511,   510,   513,   512,
-     515,   514,   516,   516,   517,   519,   518,   521,   520,   523,
-     522,   524,   524,   525,   527,   526,   528,   528,   530,   529,
-     531,   531,   532,   532,   532,   532,   532,   532,   532,   533,
-     535,   534,   537,   536,   538,   538,   540,   539,   541,   541,
-     542,   542,   542,   542,   544,   543,   545,   546,   547
+     447,   446,   449,   448,   451,   450,   453,   452,   455,   454,
+     456,   456,   458,   457,   459,   459,   461,   460,   462,   462,
+     463,   463,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   465,   467,   466,   468,   469,   471,   470,
+     472,   472,   473,   473,   473,   473,   473,   475,   474,   477,
+     476,   479,   478,   481,   480,   483,   482,   484,   484,   485,
+     485,   485,   485,   485,   485,   485,   485,   485,   485,   485,
+     485,   485,   485,   485,   485,   485,   485,   486,   488,   487,
+     490,   489,   491,   493,   492,   494,   495,   497,   496,   498,
+     498,   500,   499,   501,   502,   504,   503,   505,   505,   505,
+     505,   505,   507,   506,   509,   508,   511,   510,   513,   512,
+     515,   514,   517,   516,   519,   518,   521,   520,   522,   522,
+     523,   525,   524,   527,   526,   529,   528,   530,   530,   531,
+     533,   532,   534,   534,   536,   535,   537,   537,   538,   538,
+     538,   538,   538,   538,   538,   539,   541,   540,   543,   542,
+     544,   544,   546,   545,   547,   547,   548,   548,   548,   548,
+     550,   549,   551,   552,   553
   };
 
   const unsigned char
@@ -4697,54 +4674,55 @@ namespace isc { namespace dhcp {
        6,     1,     3,     1,     0,     4,     0,     6,     0,     6,
        0,     1,     1,     3,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     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,     3,     3,     3,     0,     4,
-       0,     4,     3,     3,     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,     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,     1,     3,     0,     6,     0,     1,     1,     3,     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,     1,     0,     6,     0,     4,     0,
-       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
-       3,     1,     1,     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,     1,     1,     1,     0,     4,
-       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     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,     0,     4,     0,     4,     0,     4,
+       3,     0,     4,     3,     3,     3,     3,     3,     3,     3,
+       0,     4,     0,     4,     0,     4,     0,     4,     3,     3,
+       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,     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,     4,     0,     6,     1,     1,     0,     6,     1,     3,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     3,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     1,     1,     1,     1,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     1,     3,     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,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     6,     0,     4,     0,     1,     1,     3,     0,
+       4,     0,     4,     0,     1,     1,     3,     1,     1,     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,     1,     1,     1,     0,     4,     1,     1,     3,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     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,     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,     4,     0,     6,
-       0,     4,     1,     3,     1,     0,     6,     0,     6,     0,
-       4,     1,     3,     1,     0,     6,     1,     3,     0,     4,
-       1,     3,     1,     1,     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,     0,     6,     1,     3,     0,     4,     0,     1,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     4,     3,     3,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     0,     4,     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,     1,     1,     1,     3,     0,     4,
+       0,     4,     3,     0,     4,     3,     3,     0,     4,     1,
+       1,     0,     4,     3,     3,     0,     4,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     4,     1,     3,
+       1,     0,     6,     0,     6,     0,     4,     1,     3,     1,
+       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
+       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
   };
 
 
@@ -4766,7 +4744,8 @@ namespace isc { namespace dhcp {
   "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
   "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
   "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
-  "\"keyspace\"", "\"max-reconnect-tries\"", "\"reconnect-wait-time\"",
+  "\"keyspace\"", "\"consistency\"", "\"serial-consistency\"",
+  "\"max-reconnect-tries\"", "\"reconnect-wait-time\"",
   "\"request-timeout\"", "\"tcp-keepalive\"", "\"tcp-nodelay\"",
   "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
   "\"calculate-tee-times\"", "\"t1-percent\"", "\"t2-percent\"",
@@ -4825,145 +4804,147 @@ namespace isc { namespace dhcp {
   "password", "$@35", "host", "$@36", "port", "name", "$@37", "persist",
   "lfc_interval", "readonly", "connect_timeout", "request_timeout",
   "tcp_keepalive", "tcp_nodelay", "contact_points", "$@38", "keyspace",
-  "$@39", "max_reconnect_tries", "reconnect_wait_time",
-  "host_reservation_identifiers", "$@40",
+  "$@39", "consistency", "$@40", "serial_consistency", "$@41",
+  "max_reconnect_tries", "reconnect_wait_time",
+  "host_reservation_identifiers", "$@42",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "duid_id", "hw_address_id", "circuit_id", "client_id", "flex_id",
-  "hooks_libraries", "$@41", "hooks_libraries_list",
-  "not_empty_hooks_libraries_list", "hooks_library", "$@42",
-  "sub_hooks_library", "$@43", "hooks_params", "hooks_param", "library",
-  "$@44", "parameters", "$@45", "expired_leases_processing", "$@46",
+  "hooks_libraries", "$@43", "hooks_libraries_list",
+  "not_empty_hooks_libraries_list", "hooks_library", "$@44",
+  "sub_hooks_library", "$@45", "hooks_params", "hooks_param", "library",
+  "$@46", "parameters", "$@47", "expired_leases_processing", "$@48",
   "expired_leases_params", "expired_leases_param",
   "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time",
   "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time",
-  "unwarned_reclaim_cycles", "subnet4_list", "$@47",
-  "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@48",
-  "sub_subnet4", "$@49", "subnet4_params", "subnet4_param", "subnet",
-  "$@50", "subnet_4o6_interface", "$@51", "subnet_4o6_interface_id",
-  "$@52", "subnet_4o6_subnet", "$@53", "interface", "$@54", "client_class",
-  "$@55", "require_client_classes", "$@56", "reservation_mode", "$@57",
-  "hr_mode", "id", "shared_networks", "$@58", "shared_networks_content",
-  "shared_networks_list", "shared_network", "$@59",
+  "unwarned_reclaim_cycles", "subnet4_list", "$@49",
+  "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@50",
+  "sub_subnet4", "$@51", "subnet4_params", "subnet4_param", "subnet",
+  "$@52", "subnet_4o6_interface", "$@53", "subnet_4o6_interface_id",
+  "$@54", "subnet_4o6_subnet", "$@55", "interface", "$@56", "client_class",
+  "$@57", "require_client_classes", "$@58", "reservation_mode", "$@59",
+  "hr_mode", "id", "shared_networks", "$@60", "shared_networks_content",
+  "shared_networks_list", "shared_network", "$@61",
   "shared_network_params", "shared_network_param", "option_def_list",
-  "$@60", "sub_option_def_list", "$@61", "option_def_list_content",
-  "not_empty_option_def_list", "option_def_entry", "$@62",
-  "sub_option_def", "$@63", "option_def_params",
+  "$@62", "sub_option_def_list", "$@63", "option_def_list_content",
+  "not_empty_option_def_list", "option_def_entry", "$@64",
+  "sub_option_def", "$@65", "option_def_params",
   "not_empty_option_def_params", "option_def_param", "option_def_name",
-  "code", "option_def_code", "option_def_type", "$@64",
-  "option_def_record_types", "$@65", "space", "$@66", "option_def_space",
-  "option_def_encapsulate", "$@67", "option_def_array", "option_data_list",
-  "$@68", "option_data_list_content", "not_empty_option_data_list",
-  "option_data_entry", "$@69", "sub_option_data", "$@70",
+  "code", "option_def_code", "option_def_type", "$@66",
+  "option_def_record_types", "$@67", "space", "$@68", "option_def_space",
+  "option_def_encapsulate", "$@69", "option_def_array", "option_data_list",
+  "$@70", "option_data_list_content", "not_empty_option_data_list",
+  "option_data_entry", "$@71", "sub_option_data", "$@72",
   "option_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@71",
+  "option_data_param", "option_data_name", "option_data_data", "$@73",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "option_data_always_send", "pools_list", "$@72", "pools_list_content",
-  "not_empty_pools_list", "pool_list_entry", "$@73", "sub_pool4", "$@74",
-  "pool_params", "pool_param", "pool_entry", "$@75", "user_context",
-  "$@76", "comment", "$@77", "reservations", "$@78", "reservations_list",
-  "not_empty_reservations_list", "reservation", "$@79", "sub_reservation",
-  "$@80", "reservation_params", "not_empty_reservation_params",
-  "reservation_param", "next_server", "$@81", "server_hostname", "$@82",
-  "boot_file_name", "$@83", "ip_address", "$@84", "ip_addresses", "$@85",
-  "duid", "$@86", "hw_address", "$@87", "client_id_value", "$@88",
-  "circuit_id_value", "$@89", "flex_id_value", "$@90", "hostname", "$@91",
-  "reservation_client_classes", "$@92", "relay", "$@93", "relay_map",
-  "client_classes", "$@94", "client_classes_list", "client_class_entry",
-  "$@95", "client_class_params", "not_empty_client_class_params",
-  "client_class_param", "client_class_name", "client_class_test", "$@96",
-  "only_if_required", "dhcp4o6_port", "control_socket", "$@97",
+  "option_data_always_send", "pools_list", "$@74", "pools_list_content",
+  "not_empty_pools_list", "pool_list_entry", "$@75", "sub_pool4", "$@76",
+  "pool_params", "pool_param", "pool_entry", "$@77", "user_context",
+  "$@78", "comment", "$@79", "reservations", "$@80", "reservations_list",
+  "not_empty_reservations_list", "reservation", "$@81", "sub_reservation",
+  "$@82", "reservation_params", "not_empty_reservation_params",
+  "reservation_param", "next_server", "$@83", "server_hostname", "$@84",
+  "boot_file_name", "$@85", "ip_address", "$@86", "ip_addresses", "$@87",
+  "duid", "$@88", "hw_address", "$@89", "client_id_value", "$@90",
+  "circuit_id_value", "$@91", "flex_id_value", "$@92", "hostname", "$@93",
+  "reservation_client_classes", "$@94", "relay", "$@95", "relay_map",
+  "client_classes", "$@96", "client_classes_list", "client_class_entry",
+  "$@97", "client_class_params", "not_empty_client_class_params",
+  "client_class_param", "client_class_name", "client_class_test", "$@98",
+  "only_if_required", "dhcp4o6_port", "control_socket", "$@99",
   "control_socket_params", "control_socket_param", "control_socket_type",
-  "$@98", "control_socket_name", "$@99", "dhcp_queue_control", "$@100",
-  "dhcp_ddns", "$@101", "sub_dhcp_ddns", "$@102", "dhcp_ddns_params",
-  "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@103",
-  "server_ip", "$@104", "server_port", "sender_ip", "$@105", "sender_port",
-  "max_queue_size", "ncr_protocol", "$@106", "ncr_protocol_value",
-  "ncr_format", "$@107", "override_no_update", "override_client_update",
-  "replace_client_name", "$@108", "replace_client_name_value",
-  "generated_prefix", "$@109", "hostname_char_set", "$@110",
-  "hostname_char_replacement", "$@111", "dhcp6_json_object", "$@112",
-  "dhcpddns_json_object", "$@113", "control_agent_json_object", "$@114",
-  "config_control", "$@115", "sub_config_control", "$@116",
+  "$@100", "control_socket_name", "$@101", "dhcp_queue_control", "$@102",
+  "dhcp_ddns", "$@103", "sub_dhcp_ddns", "$@104", "dhcp_ddns_params",
+  "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@105",
+  "server_ip", "$@106", "server_port", "sender_ip", "$@107", "sender_port",
+  "max_queue_size", "ncr_protocol", "$@108", "ncr_protocol_value",
+  "ncr_format", "$@109", "override_no_update", "override_client_update",
+  "replace_client_name", "$@110", "replace_client_name_value",
+  "generated_prefix", "$@111", "hostname_char_set", "$@112",
+  "hostname_char_replacement", "$@113", "dhcp6_json_object", "$@114",
+  "dhcpddns_json_object", "$@115", "control_agent_json_object", "$@116",
+  "config_control", "$@117", "sub_config_control", "$@118",
   "config_control_params", "config_control_param", "config_databases",
-  "$@117", "logging_object", "$@118", "sub_logging", "$@119",
-  "logging_params", "logging_param", "loggers", "$@120", "loggers_entries",
-  "logger_entry", "$@121", "logger_params", "logger_param", "debuglevel",
-  "severity", "$@122", "output_options_list", "$@123",
-  "output_options_list_content", "output_entry", "$@124",
-  "output_params_list", "output_params", "output", "$@125", "flush",
+  "$@119", "logging_object", "$@120", "sub_logging", "$@121",
+  "logging_params", "logging_param", "loggers", "$@122", "loggers_entries",
+  "logger_entry", "$@123", "logger_params", "logger_param", "debuglevel",
+  "severity", "$@124", "output_options_list", "$@125",
+  "output_options_list_content", "output_entry", "$@126",
+  "output_params_list", "output_params", "output", "$@127", "flush",
   "maxsize", "maxver", YY_NULLPTR
   };
 
 #if PARSER4_DEBUG
-  const unsigned short
+  const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   257,   257,   257,   258,   258,   259,   259,   260,   260,
-     261,   261,   262,   262,   263,   263,   264,   264,   265,   265,
-     266,   266,   267,   267,   268,   268,   269,   269,   270,   270,
-     278,   279,   280,   281,   282,   283,   284,   287,   292,   292,
-     303,   306,   307,   310,   314,   321,   321,   328,   329,   332,
-     336,   343,   343,   350,   351,   354,   358,   369,   379,   379,
-     395,   396,   400,   401,   402,   403,   404,   405,   408,   408,
-     423,   423,   432,   433,   438,   439,   440,   441,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
-     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
-     474,   477,   482,   487,   492,   497,   502,   507,   512,   512,
-     520,   525,   530,   536,   536,   547,   548,   551,   552,   553,
-     554,   555,   556,   557,   560,   560,   569,   569,   579,   579,
-     586,   587,   590,   590,   597,   599,   603,   609,   609,   621,
-     621,   631,   632,   634,   636,   636,   654,   654,   666,   666,
-     676,   677,   680,   681,   684,   684,   694,   695,   698,   699,
-     700,   701,   702,   703,   704,   705,   706,   707,   708,   709,
-     710,   711,   712,   713,   714,   715,   718,   718,   725,   726,
-     727,   728,   731,   731,   739,   739,   747,   747,   755,   760,
-     760,   768,   773,   778,   783,   788,   793,   798,   803,   803,
-     811,   811,   819,   824,   829,   829,   839,   840,   843,   844,
-     845,   846,   847,   850,   855,   860,   865,   870,   875,   875,
-     885,   886,   889,   890,   893,   893,   903,   903,   913,   914,
-     915,   918,   919,   922,   922,   930,   930,   938,   938,   949,
-     950,   953,   954,   955,   956,   957,   958,   961,   966,   971,
-     976,   981,   986,   994,   994,  1007,  1008,  1011,  1012,  1019,
-    1019,  1045,  1045,  1056,  1057,  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,  1090,  1090,  1098,  1098,  1106,  1106,  1114,  1114,
-    1122,  1122,  1130,  1130,  1138,  1138,  1148,  1148,  1155,  1156,
-    1157,  1158,  1161,  1168,  1168,  1179,  1180,  1184,  1185,  1188,
-    1188,  1196,  1197,  1200,  1201,  1202,  1203,  1204,  1205,  1206,
-    1207,  1208,  1209,  1210,  1211,  1212,  1213,  1214,  1215,  1216,
-    1217,  1218,  1219,  1220,  1221,  1228,  1228,  1241,  1241,  1250,
-    1251,  1254,  1255,  1260,  1260,  1275,  1275,  1289,  1290,  1293,
-    1294,  1297,  1298,  1299,  1300,  1301,  1302,  1303,  1304,  1305,
-    1306,  1309,  1311,  1316,  1318,  1318,  1326,  1326,  1334,  1334,
-    1342,  1344,  1344,  1352,  1361,  1361,  1373,  1374,  1379,  1380,
-    1385,  1385,  1397,  1397,  1409,  1410,  1415,  1416,  1421,  1422,
-    1423,  1424,  1425,  1426,  1427,  1428,  1429,  1432,  1434,  1434,
-    1442,  1444,  1446,  1451,  1459,  1459,  1471,  1472,  1475,  1476,
-    1479,  1479,  1489,  1489,  1499,  1500,  1503,  1504,  1505,  1506,
-    1507,  1508,  1509,  1512,  1512,  1520,  1520,  1545,  1545,  1575,
-    1575,  1585,  1586,  1589,  1590,  1593,  1593,  1602,  1602,  1611,
-    1612,  1615,  1616,  1620,  1621,  1622,  1623,  1624,  1625,  1626,
-    1627,  1628,  1629,  1630,  1631,  1632,  1633,  1634,  1637,  1637,
-    1645,  1645,  1653,  1653,  1661,  1661,  1669,  1669,  1679,  1679,
-    1687,  1687,  1695,  1695,  1703,  1703,  1711,  1711,  1719,  1719,
-    1727,  1727,  1740,  1740,  1750,  1751,  1757,  1757,  1767,  1768,
-    1771,  1771,  1781,  1782,  1785,  1786,  1789,  1790,  1791,  1792,
-    1793,  1794,  1795,  1796,  1797,  1798,  1799,  1802,  1804,  1804,
-    1812,  1821,  1828,  1828,  1838,  1839,  1842,  1843,  1844,  1845,
-    1846,  1849,  1849,  1857,  1857,  1868,  1868,  1906,  1906,  1918,
-    1918,  1928,  1929,  1932,  1933,  1934,  1935,  1936,  1937,  1938,
-    1939,  1940,  1941,  1942,  1943,  1944,  1945,  1946,  1947,  1948,
-    1949,  1952,  1957,  1957,  1965,  1965,  1973,  1978,  1978,  1986,
-    1991,  1996,  1996,  2004,  2005,  2008,  2008,  2016,  2021,  2026,
-    2026,  2034,  2037,  2040,  2043,  2046,  2052,  2052,  2060,  2060,
-    2068,  2068,  2079,  2079,  2086,  2086,  2093,  2093,  2100,  2100,
-    2111,  2111,  2121,  2122,  2126,  2129,  2129,  2144,  2144,  2154,
-    2154,  2165,  2166,  2170,  2174,  2174,  2186,  2187,  2191,  2191,
-    2199,  2200,  2203,  2204,  2205,  2206,  2207,  2208,  2209,  2212,
-    2217,  2217,  2225,  2225,  2235,  2236,  2239,  2239,  2247,  2248,
-    2251,  2252,  2253,  2254,  2257,  2257,  2265,  2270,  2275
+       0,   259,   259,   259,   260,   260,   261,   261,   262,   262,
+     263,   263,   264,   264,   265,   265,   266,   266,   267,   267,
+     268,   268,   269,   269,   270,   270,   271,   271,   272,   272,
+     280,   281,   282,   283,   284,   285,   286,   289,   294,   294,
+     305,   308,   309,   312,   316,   323,   323,   330,   331,   334,
+     338,   345,   345,   352,   353,   356,   360,   371,   381,   381,
+     397,   398,   402,   403,   404,   405,   406,   407,   410,   410,
+     425,   425,   434,   435,   440,   441,   442,   443,   444,   445,
+     446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   479,   484,   489,   494,   499,   504,   509,   514,   514,
+     522,   527,   532,   538,   538,   549,   550,   553,   554,   555,
+     556,   557,   558,   559,   562,   562,   571,   571,   581,   581,
+     588,   589,   592,   592,   599,   601,   605,   611,   611,   623,
+     623,   633,   634,   636,   638,   638,   656,   656,   668,   668,
+     678,   679,   682,   683,   686,   686,   696,   697,   700,   701,
+     702,   703,   704,   705,   706,   707,   708,   709,   710,   711,
+     712,   713,   714,   715,   716,   717,   718,   719,   722,   722,
+     729,   730,   731,   732,   735,   735,   743,   743,   751,   751,
+     759,   764,   764,   772,   777,   782,   787,   792,   797,   802,
+     807,   807,   815,   815,   823,   823,   831,   831,   839,   844,
+     849,   849,   859,   860,   863,   864,   865,   866,   867,   870,
+     875,   880,   885,   890,   895,   895,   905,   906,   909,   910,
+     913,   913,   923,   923,   933,   934,   935,   938,   939,   942,
+     942,   950,   950,   958,   958,   969,   970,   973,   974,   975,
+     976,   977,   978,   981,   986,   991,   996,  1001,  1006,  1014,
+    1014,  1027,  1028,  1031,  1032,  1039,  1039,  1065,  1065,  1076,
+    1077,  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,  1110,  1110,
+    1118,  1118,  1126,  1126,  1134,  1134,  1142,  1142,  1150,  1150,
+    1158,  1158,  1168,  1168,  1175,  1176,  1177,  1178,  1181,  1188,
+    1188,  1199,  1200,  1204,  1205,  1208,  1208,  1216,  1217,  1220,
+    1221,  1222,  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,
+    1231,  1232,  1233,  1234,  1235,  1236,  1237,  1238,  1239,  1240,
+    1241,  1248,  1248,  1261,  1261,  1270,  1271,  1274,  1275,  1280,
+    1280,  1295,  1295,  1309,  1310,  1313,  1314,  1317,  1318,  1319,
+    1320,  1321,  1322,  1323,  1324,  1325,  1326,  1329,  1331,  1336,
+    1338,  1338,  1346,  1346,  1354,  1354,  1362,  1364,  1364,  1372,
+    1381,  1381,  1393,  1394,  1399,  1400,  1405,  1405,  1417,  1417,
+    1429,  1430,  1435,  1436,  1441,  1442,  1443,  1444,  1445,  1446,
+    1447,  1448,  1449,  1452,  1454,  1454,  1462,  1464,  1466,  1471,
+    1479,  1479,  1491,  1492,  1495,  1496,  1499,  1499,  1509,  1509,
+    1519,  1520,  1523,  1524,  1525,  1526,  1527,  1528,  1529,  1532,
+    1532,  1540,  1540,  1565,  1565,  1595,  1595,  1605,  1606,  1609,
+    1610,  1613,  1613,  1622,  1622,  1631,  1632,  1635,  1636,  1640,
+    1641,  1642,  1643,  1644,  1645,  1646,  1647,  1648,  1649,  1650,
+    1651,  1652,  1653,  1654,  1657,  1657,  1665,  1665,  1673,  1673,
+    1681,  1681,  1689,  1689,  1699,  1699,  1707,  1707,  1715,  1715,
+    1723,  1723,  1731,  1731,  1739,  1739,  1747,  1747,  1760,  1760,
+    1770,  1771,  1777,  1777,  1787,  1788,  1791,  1791,  1801,  1802,
+    1805,  1806,  1809,  1810,  1811,  1812,  1813,  1814,  1815,  1816,
+    1817,  1818,  1819,  1822,  1824,  1824,  1832,  1841,  1848,  1848,
+    1858,  1859,  1862,  1863,  1864,  1865,  1866,  1869,  1869,  1877,
+    1877,  1888,  1888,  1926,  1926,  1938,  1938,  1948,  1949,  1952,
+    1953,  1954,  1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,
+    1963,  1964,  1965,  1966,  1967,  1968,  1969,  1972,  1977,  1977,
+    1985,  1985,  1993,  1998,  1998,  2006,  2011,  2016,  2016,  2024,
+    2025,  2028,  2028,  2036,  2041,  2046,  2046,  2054,  2057,  2060,
+    2063,  2066,  2072,  2072,  2080,  2080,  2088,  2088,  2099,  2099,
+    2106,  2106,  2113,  2113,  2120,  2120,  2131,  2131,  2141,  2142,
+    2146,  2149,  2149,  2164,  2164,  2174,  2174,  2185,  2186,  2190,
+    2194,  2194,  2206,  2207,  2211,  2211,  2219,  2220,  2223,  2224,
+    2225,  2226,  2227,  2228,  2229,  2232,  2237,  2237,  2245,  2245,
+    2255,  2256,  2259,  2259,  2267,  2268,  2271,  2272,  2273,  2274,
+    2277,  2277,  2285,  2290,  2295
   };
 
   // Print the state stack on the debug stream.
@@ -4976,18 +4957,18 @@ namespace isc { namespace dhcp {
            i_end = yystack_.end ();
          i != i_end; ++i)
       *yycdebug_ << ' ' << i->state;
-    *yycdebug_ << '\n';
+    *yycdebug_ << std::endl;
   }
 
   // Report on the debug stream that the rule \a yyrule is going to be reduced.
   void
   Dhcp4Parser::yy_reduce_print_ (int yyrule)
   {
-    unsigned yylno = yyrline_[yyrule];
+    unsigned int yylno = yyrline_[yyrule];
     int yynrhs = yyr2_[yyrule];
     // Print the symbols being reduced, and their result.
     *yycdebug_ << "Reducing stack by rule " << yyrule - 1
-               << " (line " << yylno << "):\n";
+               << " (line " << yylno << "):" << std::endl;
     // The symbols being reduced.
     for (int yyi = 0; yyi < yynrhs; yyi++)
       YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
@@ -4996,10 +4977,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER4_DEBUG
 
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:1242
+#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 5002 "dhcp4_parser.cc" // lalr1.cc:1242
-#line 2280 "dhcp4_parser.yy" // lalr1.cc:1243
+#line 4983 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 2300 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 7f6d505ddda1fa0b427e920f9178f5df18a884c2..31f472d1defdb5dfa272c2236bd3cffb06a390fb 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -30,7 +30,6 @@
 // This special exception was added by the Free Software Foundation in
 // version 2.2 of Bison.
 
-
 /**
  ** \file dhcp4_parser.h
  ** Define the isc::dhcp::parser class.
 
 // C++ LALR(1) parser skeleton written by Akim Demaille.
 
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details.  Do not rely on them.
-
 #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
 # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "dhcp4_parser.yy" // lalr1.cc:401
+#line 17 "dhcp4_parser.yy" // lalr1.cc:377
 
 #include <string>
 #include <cc/data.h>
@@ -56,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 60 "dhcp4_parser.h" // lalr1.cc:401
+#line 56 "dhcp4_parser.h" // lalr1.cc:377
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -64,43 +60,7 @@ using namespace std;
 # include <stdexcept>
 # include <string>
 # include <vector>
-
-#if defined __cplusplus
-# define YY_CPLUSPLUS __cplusplus
-#else
-# define YY_CPLUSPLUS 199711L
-#endif
-
-// Support move semantics when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_MOVE           std::move
-# define YY_MOVE_OR_COPY   move
-# define YY_MOVE_REF(Type) Type&&
-# define YY_RVREF(Type)    Type&&
-# define YY_COPY(Type)     Type
-#else
-# define YY_MOVE
-# define YY_MOVE_OR_COPY   copy
-# define YY_MOVE_REF(Type) Type&
-# define YY_RVREF(Type)    const Type&
-# define YY_COPY(Type)     const Type&
-#endif
-
-// Support noexcept when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_NOEXCEPT noexcept
-# define YY_NOTHROW
-#else
-# define YY_NOEXCEPT
-# define YY_NOTHROW throw ()
-#endif
-
-// Support constexpr when possible.
-#if 201703 <= YY_CPLUSPLUS
-# define YY_CONSTEXPR constexpr
-#else
-# define YY_CONSTEXPR
-#endif
+# include "stack.hh"
 # include "location.hh"
 #include <typeinfo>
 #ifndef YYASSERT
@@ -127,6 +87,15 @@ using namespace std;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -134,7 +103,7 @@ using namespace std;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -153,18 +122,6 @@ using namespace std;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
 /* Debug traces.  */
 #ifndef PARSER4_DEBUG
 # if defined YYDEBUG
@@ -178,174 +135,120 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER4_DEBUG */
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:401
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
 namespace isc { namespace dhcp {
-#line 184 "dhcp4_parser.h" // lalr1.cc:401
+#line 141 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
-  /// A Bison parser.
-  class Dhcp4Parser
-  {
-  public:
-#ifndef PARSER4_STYPE
-  /// A buffer to store and retrieve objects.
+  /// A char[S] buffer to store and retrieve objects.
   ///
   /// Sort of a variant, but does not keep track of the nature
   /// of the stored data, since that knowledge is available
-  /// via the current parser state.
-  class semantic_type
+  /// via the current state.
+  template <size_t S>
+  struct variant
   {
-  public:
     /// Type of *this.
-    typedef semantic_type self_type;
+    typedef variant<S> self_type;
 
     /// Empty construction.
-    semantic_type () YY_NOEXCEPT
-      : yybuffer_ ()
-      , yytypeid_ (YY_NULLPTR)
+    variant ()
+      : yytypeid_ (YY_NULLPTR)
     {}
 
     /// Construct and fill.
     template <typename T>
-    semantic_type (YY_RVREF (T) t)
+    variant (const T& t)
       : yytypeid_ (&typeid (T))
     {
-      YYASSERT (sizeof (T) <= size);
-      new (yyas_<T> ()) T (YY_MOVE (t));
+      YYASSERT (sizeof (T) <= S);
+      new (yyas_<T> ()) T (t);
     }
 
     /// Destruction, allowed only if empty.
-    ~semantic_type () YY_NOEXCEPT
+    ~variant ()
     {
       YYASSERT (!yytypeid_);
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Instantiate a \a T in here from \a t.
-    template <typename T, typename... U>
-    T&
-    emplace (U&&... u)
-    {
-      YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
-      yytypeid_ = & typeid (T);
-      return *new (yyas_<T> ()) T (std::forward <U>(u)...);
-    }
-# else
     /// Instantiate an empty \a T in here.
     template <typename T>
     T&
-    emplace ()
+    build ()
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
-      return *new (yyas_<T> ()) T ();
+      return *new (yyas_<T> ()) T;
     }
 
     /// Instantiate a \a T in here from \a t.
     template <typename T>
     T&
-    emplace (const T& t)
+    build (const T& t)
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
-# endif
-
-    /// Instantiate an empty \a T in here.
-    /// Obsolete, use emplace.
-    template <typename T>
-    T&
-    build ()
-    {
-      return emplace<T> ();
-    }
-
-    /// Instantiate a \a T in here from \a t.
-    /// Obsolete, use emplace.
-    template <typename T>
-    T&
-    build (const T& t)
-    {
-      return emplace<T> (t);
-    }
 
     /// Accessor to a built \a T.
     template <typename T>
     T&
-    as () YY_NOEXCEPT
+    as ()
     {
-      YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
     /// Const accessor to a built \a T (for %printer).
     template <typename T>
     const T&
-    as () const YY_NOEXCEPT
+    as () const
     {
-      YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
-    /// Swap the content with \a that, of same type.
+    /// Swap the content with \a other, of same type.
     ///
     /// Both variants must be built beforehand, because swapping the actual
     /// data requires reading it (with as()), and this is not possible on
     /// unconstructed variants: it would require some dynamic testing, which
-    /// should not be the variant's responsibility.
+    /// should not be the variant's responsability.
     /// Swapping between built and (possibly) non-built is done with
-    /// self_type::move ().
+    /// variant::move ().
     template <typename T>
     void
-    swap (self_type& that) YY_NOEXCEPT
+    swap (self_type& other)
     {
       YYASSERT (yytypeid_);
-      YYASSERT (*yytypeid_ == *that.yytypeid_);
-      std::swap (as<T> (), that.as<T> ());
+      YYASSERT (*yytypeid_ == *other.yytypeid_);
+      std::swap (as<T> (), other.as<T> ());
     }
 
-    /// Move the content of \a that to this.
+    /// Move the content of \a other to this.
     ///
-    /// Destroys \a that.
-    template <typename T>
-    void
-    move (self_type& that)
-    {
-# if 201103L <= YY_CPLUSPLUS
-      emplace<T> (std::move (that.as<T> ()));
-# else
-      emplace<T> ();
-      swap<T> (that);
-# endif
-      that.destroy<T> ();
-    }
-
-# if 201103L <= YY_CPLUSPLUS
-    /// Move the content of \a that to this.
+    /// Destroys \a other.
     template <typename T>
     void
-    move (self_type&& that)
+    move (self_type& other)
     {
-      emplace<T> (std::move (that.as<T> ()));
-      that.destroy<T> ();
+      build<T> ();
+      swap<T> (other);
+      other.destroy<T> ();
     }
-#endif
 
-    /// Copy the content of \a that to this.
+    /// Copy the content of \a other to this.
     template <typename T>
     void
-    copy (const self_type& that)
+    copy (const self_type& other)
     {
-      emplace<T> (that.as<T> ());
+      build<T> (other.as<T> ());
     }
 
     /// Destroy the stored \a T.
@@ -359,13 +262,13 @@ namespace isc { namespace dhcp {
 
   private:
     /// Prohibit blind copies.
-    self_type& operator= (const self_type&);
-    semantic_type (const self_type&);
+    self_type& operator=(const self_type&);
+    variant (const self_type&);
 
     /// Accessor to raw memory as \a T.
     template <typename T>
     T*
-    yyas_ () YY_NOEXCEPT
+    yyas_ ()
     {
       void *yyp = yybuffer_.yyraw;
       return static_cast<T*> (yyp);
@@ -374,12 +277,30 @@ namespace isc { namespace dhcp {
     /// Const accessor to raw memory as \a T.
     template <typename T>
     const T*
-    yyas_ () const YY_NOEXCEPT
+    yyas_ () const
     {
       const void *yyp = yybuffer_.yyraw;
       return static_cast<const T*> (yyp);
      }
 
+    union
+    {
+      /// Strongest alignment constraints.
+      long double yyalign_me;
+      /// A buffer large enough to store any of the semantic values.
+      char yyraw[S];
+    } yybuffer_;
+
+    /// Whether the content is built: if defined, the name of the stored type.
+    const std::type_info *yytypeid_;
+  };
+
+
+  /// A Bison parser.
+  class Dhcp4Parser
+  {
+  public:
+#ifndef PARSER4_STYPE
     /// An auxiliary type to compute the largest semantic type.
     union union_type
     {
@@ -391,37 +312,23 @@ namespace isc { namespace dhcp {
       // hr_mode
       // ncr_protocol_value
       // replace_client_name_value
-      char dummy1[sizeof (ElementPtr)];
+      char dummy1[sizeof(ElementPtr)];
 
       // "boolean"
-      char dummy2[sizeof (bool)];
+      char dummy2[sizeof(bool)];
 
       // "floating point"
-      char dummy3[sizeof (double)];
+      char dummy3[sizeof(double)];
 
       // "integer"
-      char dummy4[sizeof (int64_t)];
+      char dummy4[sizeof(int64_t)];
 
       // "constant string"
-      char dummy5[sizeof (std::string)];
-    };
-
-    /// The size of the largest semantic type.
-    enum { size = sizeof (union_type) };
-
-    /// A buffer to store semantic values.
-    union
-    {
-      /// Strongest alignment constraints.
-      long double yyalign_me;
-      /// A buffer large enough to store any of the semantic values.
-      char yyraw[size];
-    } yybuffer_;
-
-    /// Whether the content is built: if defined, the name of the stored type.
-    const std::type_info *yytypeid_;
-  };
+      char dummy5[sizeof(std::string)];
+};
 
+    /// Symbol semantic values.
+    typedef variant<sizeof(union_type)> semantic_type;
 #else
     typedef PARSER4_STYPE semantic_type;
 #endif
@@ -431,18 +338,7 @@ namespace isc { namespace dhcp {
     /// Syntax errors thrown from user actions.
     struct syntax_error : std::runtime_error
     {
-      syntax_error (const location_type& l, const std::string& m)
-        : std::runtime_error (m)
-        , location (l)
-      {}
-
-      syntax_error (const syntax_error& s)
-        : std::runtime_error (s.what ())
-        , location (s.location)
-      {}
-
-      ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
-
+      syntax_error (const location_type& l, const std::string& m);
       location_type location;
     };
 
@@ -497,130 +393,132 @@ namespace isc { namespace dhcp {
         TOKEN_CONNECT_TIMEOUT = 300,
         TOKEN_CONTACT_POINTS = 301,
         TOKEN_KEYSPACE = 302,
-        TOKEN_MAX_RECONNECT_TRIES = 303,
-        TOKEN_RECONNECT_WAIT_TIME = 304,
-        TOKEN_REQUEST_TIMEOUT = 305,
-        TOKEN_TCP_KEEPALIVE = 306,
-        TOKEN_TCP_NODELAY = 307,
-        TOKEN_VALID_LIFETIME = 308,
-        TOKEN_RENEW_TIMER = 309,
-        TOKEN_REBIND_TIMER = 310,
-        TOKEN_CALCULATE_TEE_TIMES = 311,
-        TOKEN_T1_PERCENT = 312,
-        TOKEN_T2_PERCENT = 313,
-        TOKEN_DECLINE_PROBATION_PERIOD = 314,
-        TOKEN_SERVER_TAG = 315,
-        TOKEN_SUBNET4 = 316,
-        TOKEN_SUBNET_4O6_INTERFACE = 317,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 318,
-        TOKEN_SUBNET_4O6_SUBNET = 319,
-        TOKEN_OPTION_DEF = 320,
-        TOKEN_OPTION_DATA = 321,
-        TOKEN_NAME = 322,
-        TOKEN_DATA = 323,
-        TOKEN_CODE = 324,
-        TOKEN_SPACE = 325,
-        TOKEN_CSV_FORMAT = 326,
-        TOKEN_ALWAYS_SEND = 327,
-        TOKEN_RECORD_TYPES = 328,
-        TOKEN_ENCAPSULATE = 329,
-        TOKEN_ARRAY = 330,
-        TOKEN_SHARED_NETWORKS = 331,
-        TOKEN_POOLS = 332,
-        TOKEN_POOL = 333,
-        TOKEN_USER_CONTEXT = 334,
-        TOKEN_COMMENT = 335,
-        TOKEN_SUBNET = 336,
-        TOKEN_INTERFACE = 337,
-        TOKEN_ID = 338,
-        TOKEN_RESERVATION_MODE = 339,
-        TOKEN_DISABLED = 340,
-        TOKEN_OUT_OF_POOL = 341,
-        TOKEN_GLOBAL = 342,
-        TOKEN_ALL = 343,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 344,
-        TOKEN_CLIENT_CLASSES = 345,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 346,
-        TOKEN_TEST = 347,
-        TOKEN_ONLY_IF_REQUIRED = 348,
-        TOKEN_CLIENT_CLASS = 349,
-        TOKEN_RESERVATIONS = 350,
-        TOKEN_DUID = 351,
-        TOKEN_HW_ADDRESS = 352,
-        TOKEN_CIRCUIT_ID = 353,
-        TOKEN_CLIENT_ID = 354,
-        TOKEN_HOSTNAME = 355,
-        TOKEN_FLEX_ID = 356,
-        TOKEN_RELAY = 357,
-        TOKEN_IP_ADDRESS = 358,
-        TOKEN_IP_ADDRESSES = 359,
-        TOKEN_HOOKS_LIBRARIES = 360,
-        TOKEN_LIBRARY = 361,
-        TOKEN_PARAMETERS = 362,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 363,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 364,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 365,
-        TOKEN_HOLD_RECLAIMED_TIME = 366,
-        TOKEN_MAX_RECLAIM_LEASES = 367,
-        TOKEN_MAX_RECLAIM_TIME = 368,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 369,
-        TOKEN_DHCP4O6_PORT = 370,
-        TOKEN_CONTROL_SOCKET = 371,
-        TOKEN_SOCKET_TYPE = 372,
-        TOKEN_SOCKET_NAME = 373,
-        TOKEN_DHCP_QUEUE_CONTROL = 374,
-        TOKEN_DHCP_DDNS = 375,
-        TOKEN_ENABLE_UPDATES = 376,
-        TOKEN_QUALIFYING_SUFFIX = 377,
-        TOKEN_SERVER_IP = 378,
-        TOKEN_SERVER_PORT = 379,
-        TOKEN_SENDER_IP = 380,
-        TOKEN_SENDER_PORT = 381,
-        TOKEN_MAX_QUEUE_SIZE = 382,
-        TOKEN_NCR_PROTOCOL = 383,
-        TOKEN_NCR_FORMAT = 384,
-        TOKEN_OVERRIDE_NO_UPDATE = 385,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 386,
-        TOKEN_REPLACE_CLIENT_NAME = 387,
-        TOKEN_GENERATED_PREFIX = 388,
-        TOKEN_TCP = 389,
-        TOKEN_JSON = 390,
-        TOKEN_WHEN_PRESENT = 391,
-        TOKEN_NEVER = 392,
-        TOKEN_ALWAYS = 393,
-        TOKEN_WHEN_NOT_PRESENT = 394,
-        TOKEN_HOSTNAME_CHAR_SET = 395,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 396,
-        TOKEN_LOGGING = 397,
-        TOKEN_LOGGERS = 398,
-        TOKEN_OUTPUT_OPTIONS = 399,
-        TOKEN_OUTPUT = 400,
-        TOKEN_DEBUGLEVEL = 401,
-        TOKEN_SEVERITY = 402,
-        TOKEN_FLUSH = 403,
-        TOKEN_MAXSIZE = 404,
-        TOKEN_MAXVER = 405,
-        TOKEN_DHCP6 = 406,
-        TOKEN_DHCPDDNS = 407,
-        TOKEN_CONTROL_AGENT = 408,
-        TOKEN_TOPLEVEL_JSON = 409,
-        TOKEN_TOPLEVEL_DHCP4 = 410,
-        TOKEN_SUB_DHCP4 = 411,
-        TOKEN_SUB_INTERFACES4 = 412,
-        TOKEN_SUB_SUBNET4 = 413,
-        TOKEN_SUB_POOL4 = 414,
-        TOKEN_SUB_RESERVATION = 415,
-        TOKEN_SUB_OPTION_DEFS = 416,
-        TOKEN_SUB_OPTION_DEF = 417,
-        TOKEN_SUB_OPTION_DATA = 418,
-        TOKEN_SUB_HOOKS_LIBRARY = 419,
-        TOKEN_SUB_DHCP_DDNS = 420,
-        TOKEN_SUB_LOGGING = 421,
-        TOKEN_SUB_CONFIG_CONTROL = 422,
-        TOKEN_STRING = 423,
-        TOKEN_INTEGER = 424,
-        TOKEN_FLOAT = 425,
-        TOKEN_BOOLEAN = 426
+        TOKEN_CONSISTENCY = 303,
+        TOKEN_SERIAL_CONSISTENCY = 304,
+        TOKEN_MAX_RECONNECT_TRIES = 305,
+        TOKEN_RECONNECT_WAIT_TIME = 306,
+        TOKEN_REQUEST_TIMEOUT = 307,
+        TOKEN_TCP_KEEPALIVE = 308,
+        TOKEN_TCP_NODELAY = 309,
+        TOKEN_VALID_LIFETIME = 310,
+        TOKEN_RENEW_TIMER = 311,
+        TOKEN_REBIND_TIMER = 312,
+        TOKEN_CALCULATE_TEE_TIMES = 313,
+        TOKEN_T1_PERCENT = 314,
+        TOKEN_T2_PERCENT = 315,
+        TOKEN_DECLINE_PROBATION_PERIOD = 316,
+        TOKEN_SERVER_TAG = 317,
+        TOKEN_SUBNET4 = 318,
+        TOKEN_SUBNET_4O6_INTERFACE = 319,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 320,
+        TOKEN_SUBNET_4O6_SUBNET = 321,
+        TOKEN_OPTION_DEF = 322,
+        TOKEN_OPTION_DATA = 323,
+        TOKEN_NAME = 324,
+        TOKEN_DATA = 325,
+        TOKEN_CODE = 326,
+        TOKEN_SPACE = 327,
+        TOKEN_CSV_FORMAT = 328,
+        TOKEN_ALWAYS_SEND = 329,
+        TOKEN_RECORD_TYPES = 330,
+        TOKEN_ENCAPSULATE = 331,
+        TOKEN_ARRAY = 332,
+        TOKEN_SHARED_NETWORKS = 333,
+        TOKEN_POOLS = 334,
+        TOKEN_POOL = 335,
+        TOKEN_USER_CONTEXT = 336,
+        TOKEN_COMMENT = 337,
+        TOKEN_SUBNET = 338,
+        TOKEN_INTERFACE = 339,
+        TOKEN_ID = 340,
+        TOKEN_RESERVATION_MODE = 341,
+        TOKEN_DISABLED = 342,
+        TOKEN_OUT_OF_POOL = 343,
+        TOKEN_GLOBAL = 344,
+        TOKEN_ALL = 345,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 346,
+        TOKEN_CLIENT_CLASSES = 347,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 348,
+        TOKEN_TEST = 349,
+        TOKEN_ONLY_IF_REQUIRED = 350,
+        TOKEN_CLIENT_CLASS = 351,
+        TOKEN_RESERVATIONS = 352,
+        TOKEN_DUID = 353,
+        TOKEN_HW_ADDRESS = 354,
+        TOKEN_CIRCUIT_ID = 355,
+        TOKEN_CLIENT_ID = 356,
+        TOKEN_HOSTNAME = 357,
+        TOKEN_FLEX_ID = 358,
+        TOKEN_RELAY = 359,
+        TOKEN_IP_ADDRESS = 360,
+        TOKEN_IP_ADDRESSES = 361,
+        TOKEN_HOOKS_LIBRARIES = 362,
+        TOKEN_LIBRARY = 363,
+        TOKEN_PARAMETERS = 364,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 365,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 366,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 367,
+        TOKEN_HOLD_RECLAIMED_TIME = 368,
+        TOKEN_MAX_RECLAIM_LEASES = 369,
+        TOKEN_MAX_RECLAIM_TIME = 370,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 371,
+        TOKEN_DHCP4O6_PORT = 372,
+        TOKEN_CONTROL_SOCKET = 373,
+        TOKEN_SOCKET_TYPE = 374,
+        TOKEN_SOCKET_NAME = 375,
+        TOKEN_DHCP_QUEUE_CONTROL = 376,
+        TOKEN_DHCP_DDNS = 377,
+        TOKEN_ENABLE_UPDATES = 378,
+        TOKEN_QUALIFYING_SUFFIX = 379,
+        TOKEN_SERVER_IP = 380,
+        TOKEN_SERVER_PORT = 381,
+        TOKEN_SENDER_IP = 382,
+        TOKEN_SENDER_PORT = 383,
+        TOKEN_MAX_QUEUE_SIZE = 384,
+        TOKEN_NCR_PROTOCOL = 385,
+        TOKEN_NCR_FORMAT = 386,
+        TOKEN_OVERRIDE_NO_UPDATE = 387,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 388,
+        TOKEN_REPLACE_CLIENT_NAME = 389,
+        TOKEN_GENERATED_PREFIX = 390,
+        TOKEN_TCP = 391,
+        TOKEN_JSON = 392,
+        TOKEN_WHEN_PRESENT = 393,
+        TOKEN_NEVER = 394,
+        TOKEN_ALWAYS = 395,
+        TOKEN_WHEN_NOT_PRESENT = 396,
+        TOKEN_HOSTNAME_CHAR_SET = 397,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 398,
+        TOKEN_LOGGING = 399,
+        TOKEN_LOGGERS = 400,
+        TOKEN_OUTPUT_OPTIONS = 401,
+        TOKEN_OUTPUT = 402,
+        TOKEN_DEBUGLEVEL = 403,
+        TOKEN_SEVERITY = 404,
+        TOKEN_FLUSH = 405,
+        TOKEN_MAXSIZE = 406,
+        TOKEN_MAXVER = 407,
+        TOKEN_DHCP6 = 408,
+        TOKEN_DHCPDDNS = 409,
+        TOKEN_CONTROL_AGENT = 410,
+        TOKEN_TOPLEVEL_JSON = 411,
+        TOKEN_TOPLEVEL_DHCP4 = 412,
+        TOKEN_SUB_DHCP4 = 413,
+        TOKEN_SUB_INTERFACES4 = 414,
+        TOKEN_SUB_SUBNET4 = 415,
+        TOKEN_SUB_POOL4 = 416,
+        TOKEN_SUB_RESERVATION = 417,
+        TOKEN_SUB_OPTION_DEFS = 418,
+        TOKEN_SUB_OPTION_DEF = 419,
+        TOKEN_SUB_OPTION_DATA = 420,
+        TOKEN_SUB_HOOKS_LIBRARY = 421,
+        TOKEN_SUB_DHCP_DDNS = 422,
+        TOKEN_SUB_LOGGING = 423,
+        TOKEN_SUB_CONFIG_CONTROL = 424,
+        TOKEN_STRING = 425,
+        TOKEN_INTEGER = 426,
+        TOKEN_FLOAT = 427,
+        TOKEN_BOOLEAN = 428
       };
     };
 
@@ -639,7 +537,7 @@ namespace isc { namespace dhcp {
     /// A complete symbol.
     ///
     /// Expects its Base type to provide access to the symbol type
-    /// via type_get ().
+    /// via type_get().
     ///
     /// Provide access to semantic value and location.
     template <typename Base>
@@ -649,155 +547,39 @@ namespace isc { namespace dhcp {
       typedef Base super_type;
 
       /// Default constructor.
-      basic_symbol ()
-        : value ()
-        , location ()
-      {}
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      basic_symbol (basic_symbol&& that);
-#endif
+      basic_symbol ();
 
       /// Copy constructor.
-      basic_symbol (const basic_symbol& that);
+      basic_symbol (const basic_symbol& other);
 
       /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, location_type&& l)
-        : Base (t)
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const location_type& l)
-        : Base (t)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
 
-      /// Destroy the symbol.
-      ~basic_symbol ()
-      {
-        clear ();
-      }
+  basic_symbol (typename Base::kind_type t, const location_type& l);
 
-      /// Destroy contents, and record that is empty.
-      void clear ()
-      {
-        // User destructor.
-        symbol_number_type yytype = this->type_get ();
-        basic_symbol<Base>& yysym = *this;
-        (void) yysym;
-        switch (yytype)
-        {
-       default:
-          break;
-        }
-
-        // Type destructor.
-switch (yytype)
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.template destroy< ElementPtr > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
 
-      case 171: // "boolean"
-        value.template destroy< bool > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
 
-      case 170: // "floating point"
-        value.template destroy< double > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
 
-      case 169: // "integer"
-        value.template destroy< int64_t > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
 
-      case 168: // "constant string"
-        value.template destroy< std::string > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
 
-      default:
-        break;
-    }
 
-        Base::clear ();
-      }
+      /// Constructor for symbols with semantic value.
+      basic_symbol (typename Base::kind_type t,
+                    const semantic_type& v,
+                    const location_type& l);
+
+      /// Destroy the symbol.
+      ~basic_symbol ();
+
+      /// Destroy contents, and record that is empty.
+      void clear ();
 
       /// Whether empty.
-      bool empty () const YY_NOEXCEPT;
+      bool empty () const;
 
       /// Destructive move, \a s is emptied into this.
       void move (basic_symbol& s);
@@ -809,10 +591,8 @@ switch (yytype)
       location_type location;
 
     private:
-#if YY_CPLUSPLUS < 201103L
       /// Assignment operator.
-      basic_symbol& operator= (const basic_symbol& that);
-#endif
+      basic_symbol& operator= (const basic_symbol& other);
     };
 
     /// Type access provider for token (enum) based symbols.
@@ -821,13 +601,8 @@ switch (yytype)
       /// Default constructor.
       by_type ();
 
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      by_type (by_type&& that);
-#endif
-
       /// Copy constructor.
-      by_type (const by_type& that);
+      by_type (const by_type& other);
 
       /// The symbol type as needed by the constructor.
       typedef token_type kind_type;
@@ -843,10 +618,10 @@ switch (yytype)
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+      symbol_number_type type_get () const;
 
       /// The token.
-      token_type token () const YY_NOEXCEPT;
+      token_type token () const;
 
       /// The symbol type.
       /// \a empty_symbol when empty.
@@ -855,3268 +630,2338 @@ switch (yytype)
     };
 
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_type>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_type> super_type;
+    typedef basic_symbol<by_type> symbol_type;
 
-      /// Empty symbol.
-      symbol_type () {}
+    // Symbol constructors declarations.
+    static inline
+    symbol_type
+    make_END (const location_type& l);
 
-      /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, location_type l)
-        : super_type(token_type (tok), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#else
-      symbol_type (int tok, const location_type& l)
-        : super_type(token_type (tok), l)
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, bool v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#else
-      symbol_type (int tok, const bool& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, double v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#else
-      symbol_type (int tok, const double& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, int64_t v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#else
-      symbol_type (int tok, const int64_t& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, std::string v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#else
-      symbol_type (int tok, const std::string& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#endif
-    };
+    static inline
+    symbol_type
+    make_COMMA (const location_type& l);
 
-    /// Build a parser object.
-    Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
-    virtual ~Dhcp4Parser ();
+    static inline
+    symbol_type
+    make_COLON (const location_type& l);
 
-    /// Parse.  An alias for parse ().
-    /// \returns  0 iff parsing succeeded.
-    int operator() ();
+    static inline
+    symbol_type
+    make_LSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.
-    /// \returns  0 iff parsing succeeded.
-    virtual int parse ();
+    static inline
+    symbol_type
+    make_RSQUARE_BRACKET (const location_type& l);
 
-#if PARSER4_DEBUG
-    /// The current debugging stream.
-    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
-    /// Set the current debugging stream.
-    void set_debug_stream (std::ostream &);
+    static inline
+    symbol_type
+    make_LCURLY_BRACKET (const location_type& l);
 
-    /// Type for debugging levels.
-    typedef int debug_level_type;
-    /// The current debugging level.
-    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
-    /// Set the current debugging level.
-    void set_debug_level (debug_level_type l);
-#endif
+    static inline
+    symbol_type
+    make_RCURLY_BRACKET (const location_type& l);
 
-    /// Report a syntax error.
-    /// \param loc    where the syntax error is found.
-    /// \param msg    a description of the syntax error.
-    virtual void error (const location_type& loc, const std::string& msg);
+    static inline
+    symbol_type
+    make_NULL_TYPE (const location_type& l);
 
-    /// Report a syntax error.
-    void error (const syntax_error& err);
+    static inline
+    symbol_type
+    make_DHCP4 (const location_type& l);
 
-    // Implementation of make_symbol for each symbol type.
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_END (location_type l)
-      {
-        return symbol_type (token::TOKEN_END, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_END (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_END, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMA (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COLON (location_type l)
-      {
-        return symbol_type (token::TOKEN_COLON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COLON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COLON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NULL_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NULL_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_SOCKET_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_SOCKET_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RAW (location_type l)
-      {
-        return symbol_type (token::TOKEN_RAW, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RAW (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RAW, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UDP (location_type l)
-      {
-        return symbol_type (token::TOKEN_UDP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UDP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UDP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTBOUND_INTERFACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTBOUND_INTERFACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SAME_AS_INBOUND (location_type l)
-      {
-        return symbol_type (token::TOKEN_SAME_AS_INBOUND, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SAME_AS_INBOUND (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USE_ROUTING (location_type l)
-      {
-        return symbol_type (token::TOKEN_USE_ROUTING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USE_ROUTING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USE_ROUTING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RE_DETECT (location_type l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RE_DETECT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SANITY_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SANITY_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ECHO_CLIENT_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ECHO_CLIENT_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ECHO_CLIENT_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MATCH_CLIENT_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_MATCH_CLIENT_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MATCH_CLIENT_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_AUTHORITATIVE (location_type l)
-      {
-        return symbol_type (token::TOKEN_AUTHORITATIVE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_AUTHORITATIVE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_AUTHORITATIVE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NEXT_SERVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_NEXT_SERVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NEXT_SERVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NEXT_SERVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_HOSTNAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_HOSTNAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_HOSTNAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_BOOT_FILE_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_BOOT_FILE_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_BOOT_FILE_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MEMFILE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MEMFILE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MYSQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MYSQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POSTGRESQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POSTGRESQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CQL, l);
-      }
+    static inline
+    symbol_type
+    make_CONFIG_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONFIG_DATABASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACES_CONFIG (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_SOCKET_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RAW (const location_type& l);
+
+    static inline
+    symbol_type
+    make_UDP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUTBOUND_INTERFACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SAME_AS_INBOUND (const location_type& l);
+
+    static inline
+    symbol_type
+    make_USE_ROUTING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RE_DETECT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SANITY_CHECKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LEASE_CHECKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ECHO_CLIENT_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MATCH_CLIENT_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_AUTHORITATIVE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NEXT_SERVER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_HOSTNAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_BOOT_FILE_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LEASE_DATABASE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTS_DATABASE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTS_DATABASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MEMFILE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MYSQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POSTGRESQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_USER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PASSWORD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PERSIST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LFC_INTERVAL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_READONLY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONNECT_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONTACT_POINTS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_KEYSPACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONSISTENCY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERIAL_CONSISTENCY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECONNECT_TRIES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECONNECT_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUEST_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_KEEPALIVE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_NODELAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RENEW_TIMER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REBIND_TIMER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CALCULATE_TEE_TIMES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_T1_PERCENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_T2_PERCENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DECLINE_PROBATION_PERIOD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_TAG (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET_4O6_INTERFACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET_4O6_INTERFACE_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET_4O6_SUBNET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OPTION_DEF (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OPTION_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CODE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SPACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CSV_FORMAT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALWAYS_SEND (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECORD_TYPES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENCAPSULATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ARRAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SHARED_NETWORKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POOLS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_USER_CONTEXT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_COMMENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RESERVATION_MODE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DISABLED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUT_OF_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_GLOBAL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CLIENT_CLASSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUIRE_CLIENT_CLASSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TEST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ONLY_IF_REQUIRED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CLIENT_CLASS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RESERVATIONS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DUID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HW_ADDRESS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CIRCUIT_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CLIENT_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLEX_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RELAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_IP_ADDRESS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_IP_ADDRESSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOOKS_LIBRARIES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LIBRARY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PARAMETERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EXPIRED_LEASES_PROCESSING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOLD_RECLAIMED_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECLAIM_LEASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECLAIM_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP4O6_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONTROL_SOCKET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SOCKET_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SOCKET_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_QUEUE_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_DDNS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENABLE_UPDATES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_QUALIFYING_SUFFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_IP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SENDER_IP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SENDER_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_QUEUE_SIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NCR_PROTOCOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NCR_FORMAT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OVERRIDE_NO_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REPLACE_CLIENT_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_GENERATED_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_JSON (const location_type& l);
+
+    static inline
+    symbol_type
+    make_WHEN_PRESENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NEVER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALWAYS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_WHEN_NOT_PRESENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME_CHAR_SET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LOGGING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LOGGERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUTPUT_OPTIONS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUTPUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DEBUGLEVEL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SEVERITY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP6 (const location_type& l);
+
+    static inline
+    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);
+
+    static inline
+    symbol_type
+    make_TOPLEVEL_DHCP4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_DHCP4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_INTERFACES4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_SUBNET4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_POOL4 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_RESERVATION (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DEFS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DEF (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_HOOKS_LIBRARY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_DHCP_DDNS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_LOGGING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_CONFIG_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STRING (const std::string& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTEGER (const int64_t& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLOAT (const double& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_BOOLEAN (const bool& v, const location_type& l);
+
+
+    /// Build a parser object.
+    Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
+    virtual ~Dhcp4Parser ();
+
+    /// Parse.
+    /// \returns  0 iff parsing succeeded.
+    virtual int parse ();
+
+#if PARSER4_DEBUG
+    /// The current debugging stream.
+    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging stream.
+    void set_debug_stream (std::ostream &);
+
+    /// Type for debugging levels.
+    typedef int debug_level_type;
+    /// The current debugging level.
+    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging level.
+    void set_debug_level (debug_level_type l);
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PASSWORD (location_type l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PASSWORD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PERSIST (location_type l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PERSIST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LFC_INTERVAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LFC_INTERVAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_READONLY (location_type l)
-      {
-        return symbol_type (token::TOKEN_READONLY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_READONLY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_READONLY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTACT_POINTS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTACT_POINTS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_KEYSPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_KEYSPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_NODELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_NODELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RENEW_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RENEW_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REBIND_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REBIND_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CALCULATE_TEE_TIMES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CALCULATE_TEE_TIMES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_T1_PERCENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_T1_PERCENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_T1_PERCENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_T2_PERCENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_T2_PERCENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_T2_PERCENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (location_type l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_TAG (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_TAG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET_4O6_INTERFACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET_4O6_INTERFACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET_4O6_INTERFACE_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET_4O6_SUBNET (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET_4O6_SUBNET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_CODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SPACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CSV_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CSV_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS_SEND (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS_SEND (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECORD_TYPES (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECORD_TYPES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENCAPSULATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENCAPSULATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ARRAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ARRAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SHARED_NETWORKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SHARED_NETWORKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOLS (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOLS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOLS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOLS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER_CONTEXT (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER_CONTEXT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATION_MODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATION_MODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DISABLED (location_type l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DISABLED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUT_OF_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUT_OF_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GLOBAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GLOBAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALL (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TEST (location_type l)
-      {
-        return symbol_type (token::TOKEN_TEST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TEST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TEST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (location_type l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DUID (location_type l)
-      {
-        return symbol_type (token::TOKEN_DUID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DUID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DUID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HW_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HW_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CIRCUIT_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_CIRCUIT_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CIRCUIT_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CIRCUIT_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLEX_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLEX_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_RELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARAMETERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARAMETERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (location_type l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4O6_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4O6_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_SOCKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_SOCKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENABLE_UPDATES (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_UPDATES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_PROTOCOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_PROTOCOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GENERATED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GENERATED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NEVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_NEVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NEVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NEVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DEBUGLEVEL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DEBUGLEVEL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SEVERITY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SEVERITY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXSIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXSIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCPDDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCPDDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_AGENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_AGENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_INTERFACES4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_INTERFACES4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_SUBNET4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_SUBNET4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_POOL4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_POOL4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_RESERVATION (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_RESERVATION (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STRING (std::string v, location_type l)
-      {
-        return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STRING (const std::string& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STRING, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTEGER (int64_t v, location_type l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTEGER (const int64_t& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLOAT (double v, location_type l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLOAT (const double& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_BOOLEAN (bool v, location_type l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_BOOLEAN (const bool& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, v, l);
-      }
+
+    /// Report a syntax error.
+    /// \param loc    where the syntax error is found.
+    /// \param msg    a description of the syntax error.
+    virtual void error (const location_type& loc, const std::string& msg);
+
+    /// Report a syntax error.
+    void error (const syntax_error& err);
+
+  private:
+    /// This class is not copyable.
+    Dhcp4Parser (const Dhcp4Parser&);
+    Dhcp4Parser& operator= (const Dhcp4Parser&);
+
+    /// State numbers.
+    typedef int state_type;
+
+    /// Generate an error message.
+    /// \param yystate   the state where the error occurred.
+    /// \param yyla      the lookahead token.
+    virtual std::string yysyntax_error_ (state_type yystate,
+                                         const symbol_type& yyla) const;
+
+    /// Compute post-reduction state.
+    /// \param yystate   the current state
+    /// \param yysym     the nonterminal to push on the stack
+    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+
+    /// Whether the given \c yypact_ value indicates a defaulted state.
+    /// \param yyvalue   the value to check
+    static bool yy_pact_value_is_default_ (int yyvalue);
+
+    /// Whether the given \c yytable_ value indicates a syntax error.
+    /// \param yyvalue   the value to check
+    static bool yy_table_value_is_error_ (int yyvalue);
+
+    static const short int yypact_ninf_;
+    static const signed char yytable_ninf_;
+
+    /// Convert a scanner token number \a t to a symbol number.
+    static token_number_type yytranslate_ (token_type t);
+
+    // Tables.
+  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+  // STATE-NUM.
+  static const short int yypact_[];
+
+  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+  // Performed when YYTABLE does not specify something else to do.  Zero
+  // means the default is an error.
+  static const unsigned short int yydefact_[];
+
+  // YYPGOTO[NTERM-NUM].
+  static const short int yypgoto_[];
+
+  // YYDEFGOTO[NTERM-NUM].
+  static const short int yydefgoto_[];
+
+  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+  // positive, shift that token.  If negative, reduce the rule whose
+  // number is the opposite.  If YYTABLE_NINF, syntax error.
+  static const unsigned short int yytable_[];
+
+  static const short int yycheck_[];
+
+  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+  // symbol of state STATE-NUM.
+  static const unsigned short int yystos_[];
+
+  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+  static const unsigned short int yyr1_[];
+
+  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+  static const unsigned char yyr2_[];
+
+
+    /// Convert the symbol name \a n to a form suitable for a diagnostic.
+    static std::string yytnamerr_ (const char *n);
+
+
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
+#if PARSER4_DEBUG
+  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+  static const unsigned short int yyrline_[];
+    /// Report on the debug stream that the rule \a r is going to be reduced.
+    virtual void yy_reduce_print_ (int r);
+    /// Print the state stack on the debug stream.
+    virtual void yystack_print_ ();
+
+    // Debugging.
+    int yydebug_;
+    std::ostream* yycdebug_;
+
+    /// \brief Display a symbol type, value and location.
+    /// \param yyo    The output stream.
+    /// \param yysym  The symbol.
+    template <typename Base>
+    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
 #endif
 
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg     Why this token is reclaimed.
+    ///                  If null, print nothing.
+    /// \param yysym     The symbol.
+    template <typename Base>
+    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+
+  private:
+    /// Type access provider for state based symbols.
+    struct by_state
+    {
+      /// Default constructor.
+      by_state ();
+
+      /// The symbol type as needed by the constructor.
+      typedef state_type kind_type;
+
+      /// Constructor.
+      by_state (kind_type s);
+
+      /// Copy constructor.
+      by_state (const by_state& other);
+
+      /// Record that this symbol is empty.
+      void clear ();
+
+      /// Steal the symbol type from \a that.
+      void move (by_state& that);
+
+      /// The (internal) type number (corresponding to \a state).
+      /// \a empty_symbol when empty.
+      symbol_number_type type_get () const;
+
+      /// The state number used to denote an empty symbol.
+      enum { empty_state = -1 };
+
+      /// The state.
+      /// \a empty when empty.
+      state_type state;
+    };
+
+    /// "Internal" symbol: element of the stack.
+    struct stack_symbol_type : basic_symbol<by_state>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_state> super_type;
+      /// Construct an empty symbol.
+      stack_symbol_type ();
+      /// Steal the contents from \a sym to build this.
+      stack_symbol_type (state_type s, symbol_type& sym);
+      /// Assignment, needed by push_back.
+      stack_symbol_type& operator= (const stack_symbol_type& that);
+    };
+
+    /// Stack type.
+    typedef stack<stack_symbol_type> stack_type;
+
+    /// The stack.
+    stack_type yystack_;
+
+    /// Push a new state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the symbol
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, stack_symbol_type& s);
+
+    /// Push a new look ahead token on the state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the state
+    /// \param sym  the symbol (for its value and location).
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, state_type s, symbol_type& sym);
+
+    /// Pop \a n symbols the three stacks.
+    void yypop_ (unsigned int n = 1);
+
+    /// Constants.
+    enum
+    {
+      yyeof_ = 0,
+      yylast_ = 1036,     ///< Last index in yytable_.
+      yynnts_ = 380,  ///< Number of nonterminal symbols.
+      yyfinal_ = 30, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 174  ///< Number of tokens.
+    };
+
+
+    // User arguments.
+    isc::dhcp::Parser4Context& ctx;
+  };
+
+  // Symbol number corresponding to token number t.
+  inline
+  Dhcp4Parser::token_number_type
+  Dhcp4Parser::yytranslate_ (token_type t)
+  {
+    static
+    const token_number_type
+    translate_table[] =
+    {
+     0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173
+    };
+    const unsigned int user_token_number_max_ = 428;
+    const token_number_type undef_token_ = 2;
+
+    if (static_cast<int>(t) <= yyeof_)
+      return yyeof_;
+    else if (static_cast<unsigned int> (t) <= user_token_number_max_)
+      return translate_table[t];
+    else
+      return undef_token_;
+  }
+
+  inline
+  Dhcp4Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
+    : std::runtime_error (m)
+    , location (l)
+  {}
+
+  // basic_symbol.
+  template <typename Base>
+  inline
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol ()
+    : value ()
+  {}
+
+  template <typename Base>
+  inline
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
+    : Base (other)
+    , value ()
+    , location (other.location)
+  {
+      switch (other.type_get ())
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.copy< ElementPtr > (other.value);
+        break;
+
+      case 173: // "boolean"
+        value.copy< bool > (other.value);
+        break;
+
+      case 172: // "floating point"
+        value.copy< double > (other.value);
+        break;
+
+      case 171: // "integer"
+        value.copy< int64_t > (other.value);
+        break;
+
+      case 170: // "constant string"
+        value.copy< std::string > (other.value);
+        break;
+
+      default:
+        break;
+    }
+
+  }
+
+
+  template <typename Base>
+  inline
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
+    : Base (t)
+    , value ()
+    , location (l)
+  {
+    (void) v;
+      switch (this->type_get ())
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.copy< ElementPtr > (v);
+        break;
+
+      case 173: // "boolean"
+        value.copy< bool > (v);
+        break;
+
+      case 172: // "floating point"
+        value.copy< double > (v);
+        break;
+
+      case 171: // "integer"
+        value.copy< int64_t > (v);
+        break;
+
+      case 170: // "constant string"
+        value.copy< std::string > (v);
+        break;
+
+      default:
+        break;
+    }
+}
+
+
+  // Implementation of basic_symbol constructor for each type.
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
+    : Base (t)
+    , value ()
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+
+  template <typename Base>
+  inline
+  Dhcp4Parser::basic_symbol<Base>::~basic_symbol ()
+  {
+    clear ();
+  }
+
+  template <typename Base>
+  inline
+  void
+  Dhcp4Parser::basic_symbol<Base>::clear ()
+  {
+    // User destructor.
+    symbol_number_type yytype = this->type_get ();
+    basic_symbol<Base>& yysym = *this;
+    (void) yysym;
+    switch (yytype)
+    {
+   default:
+      break;
+    }
+
+    // Type destructor.
+    switch (yytype)
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.template destroy< ElementPtr > ();
+        break;
+
+      case 173: // "boolean"
+        value.template destroy< bool > ();
+        break;
+
+      case 172: // "floating point"
+        value.template destroy< double > ();
+        break;
+
+      case 171: // "integer"
+        value.template destroy< int64_t > ();
+        break;
+
+      case 170: // "constant string"
+        value.template destroy< std::string > ();
+        break;
+
+      default:
+        break;
+    }
+
+    Base::clear ();
+  }
+
+  template <typename Base>
+  inline
+  bool
+  Dhcp4Parser::basic_symbol<Base>::empty () const
+  {
+    return Base::type_get () == empty_symbol;
+  }
+
+  template <typename Base>
+  inline
+  void
+  Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
+  {
+    super_type::move(s);
+      switch (this->type_get ())
+    {
+      case 190: // value
+      case 194: // map_value
+      case 238: // socket_type
+      case 241: // outbound_interface_value
+      case 263: // db_type
+      case 349: // hr_mode
+      case 498: // ncr_protocol_value
+      case 505: // replace_client_name_value
+        value.move< ElementPtr > (s.value);
+        break;
+
+      case 173: // "boolean"
+        value.move< bool > (s.value);
+        break;
+
+      case 172: // "floating point"
+        value.move< double > (s.value);
+        break;
+
+      case 171: // "integer"
+        value.move< int64_t > (s.value);
+        break;
+
+      case 170: // "constant string"
+        value.move< std::string > (s.value);
+        break;
+
+      default:
+        break;
+    }
+
+    location = s.location;
+  }
+
+  // by_type.
+  inline
+  Dhcp4Parser::by_type::by_type ()
+    : type (empty_symbol)
+  {}
+
+  inline
+  Dhcp4Parser::by_type::by_type (const by_type& other)
+    : type (other.type)
+  {}
+
+  inline
+  Dhcp4Parser::by_type::by_type (token_type t)
+    : type (yytranslate_ (t))
+  {}
+
+  inline
+  void
+  Dhcp4Parser::by_type::clear ()
+  {
+    type = empty_symbol;
+  }
+
+  inline
+  void
+  Dhcp4Parser::by_type::move (by_type& that)
+  {
+    type = that.type;
+    that.clear ();
+  }
+
+  inline
+  int
+  Dhcp4Parser::by_type::type_get () const
+  {
+    return type;
+  }
+
+  inline
+  Dhcp4Parser::token_type
+  Dhcp4Parser::by_type::token () const
+  {
+    // YYTOKNUM[NUM] -- (External) token number corresponding to the
+    // (internal) symbol number NUM (which must be that of a token).  */
+    static
+    const unsigned short int
+    yytoken_number_[] =
+    {
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428
+    };
+    return static_cast<token_type> (yytoken_number_[type]);
+  }
+  // Implementation of make_symbol for each symbol type.
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_END (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_END, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_COMMA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMA, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_COLON (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COLON, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LSQUARE_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RSQUARE_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LCURLY_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RCURLY_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NULL_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NULL_TYPE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP4, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONFIG_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONFIG_DATABASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTERFACES_CONFIG (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTERFACES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_SOCKET_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RAW (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RAW, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_UDP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_UDP, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUTBOUND_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SAME_AS_INBOUND (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_USE_ROUTING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USE_ROUTING, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RE_DETECT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RE_DETECT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SANITY_CHECKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LEASE_CHECKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MATCH_CLIENT_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_AUTHORITATIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_AUTHORITATIVE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NEXT_SERVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NEXT_SERVER, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERVER_HOSTNAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_BOOT_FILE_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LEASE_DATABASE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTS_DATABASE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTS_DATABASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TYPE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MEMFILE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MEMFILE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MYSQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MYSQL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_POSTGRESQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POSTGRESQL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CQL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_USER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USER, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PASSWORD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PASSWORD, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOST, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PORT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PERSIST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PERSIST, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LFC_INTERVAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_READONLY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_READONLY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONNECT_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONTACT_POINTS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_KEYSPACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_KEYSPACE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONSISTENCY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONSISTENCY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERIAL_CONSISTENCY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RENEW_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RENEW_TIMER, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REBIND_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REBIND_TIMER, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CALCULATE_TEE_TIMES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_T1_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T1_PERCENT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_T2_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T2_PERCENT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+  }
 
-  private:
-    /// This class is not copyable.
-    Dhcp4Parser (const Dhcp4Parser&);
-    Dhcp4Parser& operator= (const Dhcp4Parser&);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERVER_TAG (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_TAG, l);
+  }
 
-    /// State numbers.
-    typedef int state_type;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET4, l);
+  }
 
-    /// Generate an error message.
-    /// \param yystate   the state where the error occurred.
-    /// \param yyla      the lookahead token.
-    virtual std::string yysyntax_error_ (state_type yystate,
-                                         const symbol_type& yyla) const;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
+  }
 
-    /// Compute post-reduction state.
-    /// \param yystate   the current state
-    /// \param yysym     the nonterminal to push on the stack
-    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
+  }
 
-    /// Whether the given \c yypact_ value indicates a defaulted state.
-    /// \param yyvalue   the value to check
-    static bool yy_pact_value_is_default_ (int yyvalue);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
+  }
 
-    /// Whether the given \c yytable_ value indicates a syntax error.
-    /// \param yyvalue   the value to check
-    static bool yy_table_value_is_error_ (int yyvalue);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DEF, l);
+  }
 
-    static const short yypact_ninf_;
-    static const signed char yytable_ninf_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DATA, l);
+  }
 
-    /// Convert a scanner token number \a t to a symbol number.
-    static token_number_type yytranslate_ (token_type t);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NAME, l);
+  }
 
-    // Tables.
-  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-  // STATE-NUM.
-  static const short yypact_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DATA, l);
+  }
 
-  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-  // Performed when YYTABLE does not specify something else to do.  Zero
-  // means the default is an error.
-  static const unsigned short yydefact_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CODE, l);
+  }
 
-  // YYPGOTO[NTERM-NUM].
-  static const short yypgoto_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SPACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SPACE, l);
+  }
 
-  // YYDEFGOTO[NTERM-NUM].
-  static const short yydefgoto_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CSV_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CSV_FORMAT, l);
+  }
 
-  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-  // positive, shift that token.  If negative, reduce the rule whose
-  // number is the opposite.  If YYTABLE_NINF, syntax error.
-  static const unsigned short yytable_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALWAYS_SEND (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+  }
 
-  static const short yycheck_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECORD_TYPES, l);
+  }
 
-  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-  // symbol of state STATE-NUM.
-  static const unsigned short yystos_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENCAPSULATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENCAPSULATE, l);
+  }
 
-  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-  static const unsigned short yyr1_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ARRAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ARRAY, l);
+  }
 
-  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-  static const unsigned char yyr2_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_POOLS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOLS, l);
+  }
 
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *n);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOL, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_USER_CONTEXT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USER_CONTEXT, l);
+  }
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
-#if PARSER4_DEBUG
-  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-  static const unsigned short yyrline_[];
-    /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r);
-    /// Print the state stack on the debug stream.
-    virtual void yystack_print_ ();
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_COMMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMENT, l);
+  }
 
-    /// Debugging level.
-    int yydebug_;
-    /// Debug stream.
-    std::ostream* yycdebug_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET, l);
+  }
 
-    /// \brief Display a symbol type, value and location.
-    /// \param yyo    The output stream.
-    /// \param yysym  The symbol.
-    template <typename Base>
-    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
-#endif
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE, l);
+  }
 
-    /// \brief Reclaim the memory associated to a symbol.
-    /// \param yymsg     Why this token is reclaimed.
-    ///                  If null, print nothing.
-    /// \param yysym     The symbol.
-    template <typename Base>
-    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ID, l);
+  }
 
-  private:
-    /// Type access provider for state based symbols.
-    struct by_state
-    {
-      /// Default constructor.
-      by_state () YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RESERVATION_MODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+  }
 
-      /// The symbol type as needed by the constructor.
-      typedef state_type kind_type;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
 
-      /// Constructor.
-      by_state (kind_type s) YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
 
-      /// Copy constructor.
-      by_state (const by_state& that) YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_GLOBAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, l);
+  }
 
-      /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
 
-      /// Steal the symbol type from \a that.
-      void move (by_state& that);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+  }
 
-      /// The (internal) type number (corresponding to \a state).
-      /// \a empty_symbol when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+  }
 
-      /// The state number used to denote an empty symbol.
-      enum { empty_state = -1 };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+  }
 
-      /// The state.
-      /// \a empty when empty.
-      state_type state;
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TEST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TEST, l);
+  }
 
-    /// "Internal" symbol: element of the stack.
-    struct stack_symbol_type : basic_symbol<by_state>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_state> super_type;
-      /// Construct an empty symbol.
-      stack_symbol_type ();
-      /// Move or copy construction.
-      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
-      /// Steal the contents from \a sym to build this.
-      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if YY_CPLUSPLUS < 201103L
-      /// Assignment, needed by push_back by some old implementations.
-      /// Moves the contents of that.
-      stack_symbol_type& operator= (stack_symbol_type& that);
-#endif
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+  }
 
-    /// A stack with random access from its top.
-    template <typename T, typename S = std::vector<T> >
-    class stack
-    {
-    public:
-      // Hide our reversed order.
-      typedef typename S::reverse_iterator iterator;
-      typedef typename S::const_reverse_iterator const_iterator;
-      typedef typename S::size_type size_type;
-
-      stack (size_type n = 200)
-        : seq_ (n)
-      {}
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (size_type i)
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (int i)
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (size_type i) const
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (int i) const
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Steal the contents of \a t.
-      ///
-      /// Close to move-semantics.
-      void
-      push (YY_MOVE_REF (T) t)
-      {
-        seq_.push_back (T ());
-        operator[] (0).move (t);
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CLIENT_CLASS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+  }
 
-      /// Pop elements from the stack.
-      void
-      pop (int n = 1) YY_NOEXCEPT
-      {
-        for (; 0 < n; --n)
-          seq_.pop_back ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RESERVATIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATIONS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DUID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DUID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HW_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HW_ADDRESS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CIRCUIT_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CIRCUIT_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CLIENT_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTNAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLEX_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLEX_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RELAY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_IP_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_IP_ADDRESSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LIBRARY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LIBRARY, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PARAMETERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PARAMETERS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_RECLAIM_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP4O6_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SOCKET_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SOCKET_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_NAME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_DDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_DDNS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+  }
 
-      /// Pop all elements from the stack.
-      void
-      clear () YY_NOEXCEPT
-      {
-        seq_.clear ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERVER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_IP, l);
+  }
 
-      /// Number of elements on the stack.
-      size_type
-      size () const YY_NOEXCEPT
-      {
-        return seq_.size ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERVER_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_PORT, l);
+  }
 
-      /// Iterator on top of the stack (going downwards).
-      const_iterator
-      begin () const YY_NOEXCEPT
-      {
-        return seq_.rbegin ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SENDER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SENDER_IP, l);
+  }
 
-      /// Bottom of the stack.
-      const_iterator
-      end () const YY_NOEXCEPT
-      {
-        return seq_.rend ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SENDER_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SENDER_PORT, l);
+  }
 
-      /// Present a slice of the top of a stack.
-      class slice
-      {
-      public:
-        slice (const stack& stack, int range)
-          : stack_ (stack)
-          , range_ (range)
-        {}
-
-        const T&
-        operator[] (int i) const
-        {
-          return stack_[range_ - i];
-        }
-
-      private:
-        const stack& stack_;
-        int range_;
-      };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_QUEUE_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+  }
 
-    private:
-      stack (const stack&);
-      stack& operator= (const stack&);
-      /// The wrapped container.
-      S seq_;
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NCR_PROTOCOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NCR_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_FORMAT, l);
+  }
 
-    /// Stack type.
-    typedef stack<stack_symbol_type> stack_type;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+  }
 
-    /// The stack.
-    stack_type yystack_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+  }
 
-    /// Push a new state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param sym  the symbol
-    /// \warning the contents of \a s.value is stolen.
-    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+  }
 
-    /// Push a new look ahead token on the state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param s    the state
-    /// \param sym  the symbol (for its value and location).
-    /// \warning the contents of \a sym.value is stolen.
-    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_GENERATED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+  }
 
-    /// Pop \a n symbols from the stack.
-    void yypop_ (int n = 1);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP, l);
+  }
 
-    /// Constants.
-    enum
-    {
-      yyeof_ = 0,
-      yylast_ = 1026,     ///< Last index in yytable_.
-      yynnts_ = 376,  ///< Number of nonterminal symbols.
-      yyfinal_ = 30, ///< Termination state number.
-      yyterror_ = 1,
-      yyerrcode_ = 256,
-      yyntokens_ = 172  ///< Number of tokens.
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_JSON (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_JSON, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_WHEN_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+  }
 
-    // User arguments.
-    isc::dhcp::Parser4Context& ctx;
-  };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NEVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NEVER, l);
+  }
 
-  inline
-  Dhcp4Parser::token_number_type
-  Dhcp4Parser::yytranslate_ (token_type t)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALWAYS (const location_type& l)
   {
-    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
-    // TOKEN-NUM as returned by yylex.
-    static
-    const token_number_type
-    translate_table[] =
-    {
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171
-    };
-    const unsigned user_token_number_max_ = 426;
-    const token_number_type undef_token_ = 2;
+    return symbol_type (token::TOKEN_ALWAYS, l);
+  }
 
-    if (static_cast<int> (t) <= yyeof_)
-      return yyeof_;
-    else if (static_cast<unsigned> (t) <= user_token_number_max_)
-      return translate_table[t];
-    else
-      return undef_token_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
   }
 
-  // basic_symbol.
-#if 201103L <= YY_CPLUSPLUS
-  template <typename Base>
-  Dhcp4Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
-    : Base (std::move (that))
-    , value ()
-    , location (std::move (that.location))
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
   {
-    switch (this->type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+  }
 
-      case 171: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+  }
 
-      case 170: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LOGGING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LOGGING, l);
+  }
 
-      case 169: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LOGGERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LOGGERS, l);
+  }
 
-      case 168: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUTPUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DEBUGLEVEL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DEBUGLEVEL, l);
   }
-#endif
 
-  template <typename Base>
-  Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
-    : Base (that)
-    , value ()
-    , location (that.location)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SEVERITY (const location_type& l)
   {
-    switch (this->type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.copy< ElementPtr > (YY_MOVE (that.value));
-        break;
+    return symbol_type (token::TOKEN_SEVERITY, l);
+  }
 
-      case 171: // "boolean"
-        value.copy< bool > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
 
-      case 170: // "floating point"
-        value.copy< double > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
 
-      case 169: // "integer"
-        value.copy< int64_t > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
 
-      case 168: // "constant string"
-        value.copy< std::string > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP6, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCPDDNS (const location_type& l)
+  {
+    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)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
+  }
 
-  template <typename Base>
-  bool
-  Dhcp4Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_DHCP4 (const location_type& l)
   {
-    return Base::type_get () == empty_symbol;
+    return symbol_type (token::TOKEN_SUB_DHCP4, l);
   }
 
-  template <typename Base>
-  void
-  Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l)
   {
-    super_type::move (s);
-    switch (this->type_get ())
-    {
-      case 188: // value
-      case 192: // map_value
-      case 236: // socket_type
-      case 239: // outbound_interface_value
-      case 261: // db_type
-      case 343: // hr_mode
-      case 492: // ncr_protocol_value
-      case 499: // replace_client_name_value
-        value.move< ElementPtr > (YY_MOVE (s.value));
-        break;
+    return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
+  }
 
-      case 171: // "boolean"
-        value.move< bool > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_SUBNET4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_SUBNET4, l);
+  }
 
-      case 170: // "floating point"
-        value.move< double > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_POOL4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_POOL4, l);
+  }
 
-      case 169: // "integer"
-        value.move< int64_t > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_RESERVATION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+  }
 
-      case 168: // "constant string"
-        value.move< std::string > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+  }
 
-    location = YY_MOVE (s.location);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
   }
 
-  // by_type.
-  inline
-  Dhcp4Parser::by_type::by_type ()
-    : type (empty_symbol)
-  {}
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+  }
 
-#if 201103L <= YY_CPLUSPLUS
-  inline
-  Dhcp4Parser::by_type::by_type (by_type&& that)
-    : type (that.type)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l)
   {
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
   }
-#endif
 
-  inline
-  Dhcp4Parser::by_type::by_type (const by_type& that)
-    : type (that.type)
-  {}
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_LOGGING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_LOGGING, l);
+  }
 
-  inline
-  Dhcp4Parser::by_type::by_type (token_type t)
-    : type (yytranslate_ (t))
-  {}
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+  }
 
-  inline
-  void
-  Dhcp4Parser::by_type::clear ()
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_STRING (const std::string& v, const location_type& l)
   {
-    type = empty_symbol;
+    return symbol_type (token::TOKEN_STRING, v, l);
   }
 
-  inline
-  void
-  Dhcp4Parser::by_type::move (by_type& that)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l)
   {
-    type = that.type;
-    that.clear ();
+    return symbol_type (token::TOKEN_INTEGER, v, l);
   }
 
-  inline
-  int
-  Dhcp4Parser::by_type::type_get () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLOAT (const double& v, const location_type& l)
   {
-    return type;
+    return symbol_type (token::TOKEN_FLOAT, v, l);
   }
 
-  inline
-  Dhcp4Parser::token_type
-  Dhcp4Parser::by_type::token () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l)
   {
-    // YYTOKNUM[NUM] -- (External) token number corresponding to the
-    // (internal) symbol number NUM (which must be that of a token).  */
-    static
-    const unsigned short
-    yytoken_number_[] =
-    {
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426
-    };
-    return token_type (yytoken_number_[type]);
+    return symbol_type (token::TOKEN_BOOLEAN, v, l);
   }
 
-#line 14 "dhcp4_parser.yy" // lalr1.cc:401
+
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 4120 "dhcp4_parser.h" // lalr1.cc:401
+#line 2965 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 199602b898b3a09803c3bc2d2f66d7d1f9126824..7e23a2ccac4e6235bff281bd9ffdb2365482b554 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201903111305
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 #ifndef YY_PARSER4_LOCATION_HH_INCLUDED
 # define YY_PARSER4_LOCATION_HH_INCLUDED
 
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
+# include "position.hh"
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
-#line 14 "dhcp4_parser.yy" // location.cc:339
+#line 14 "dhcp4_parser.yy" // location.cc:296
 namespace isc { namespace dhcp {
-#line 60 "location.hh" // location.cc:339
-  /// A point in a source file.
-  class position
-  {
-  public:
-    /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
-      : filename (f)
-      , line (l)
-      , column (c)
-    {}
-
-
-    /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
-    {
-      filename = fn;
-      line = l;
-      column = c;
-    }
-
-    /** \name Line and Column related manipulators
-     ** \{ */
-    /// (line related) Advance to the COUNT next lines.
-    void lines (int count = 1)
-    {
-      if (count)
-        {
-          column = 1u;
-          line = add_ (line, count, 1);
-        }
-    }
-
-    /// (column related) Advance to the COUNT next columns.
-    void columns (int count = 1)
-    {
-      column = add_ (column, count, 1);
-    }
-    /** \} */
-
-    /// File name to which this position refers.
-    std::string* filename;
-    /// Current line number.
-    unsigned line;
-    /// Current column number.
-    unsigned column;
-
-  private:
-    /// Compute max (min, lhs+rhs).
-    static unsigned add_ (unsigned lhs, int rhs, int min)
-    {
-      return static_cast<unsigned> (std::max (min,
-                                              static_cast<int> (lhs) + rhs));
-    }
-  };
-
-  /// Add \a width columns, in place.
-  inline position&
-  operator+= (position& res, int width)
-  {
-    res.columns (width);
-    return res;
-  }
-
-  /// Add \a width columns.
-  inline position
-  operator+ (position res, int width)
-  {
-    return res += width;
-  }
-
-  /// Subtract \a width columns, in place.
-  inline position&
-  operator-= (position& res, int width)
-  {
-    return res += -width;
-  }
-
-  /// Subtract \a width columns.
-  inline position
-  operator- (position res, int width)
-  {
-    return res -= width;
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
-  /** \brief Intercept output stream redirection.
-   ** \param ostr the destination output stream
-   ** \param pos a reference to the position to redirect
-   */
-  template <typename YYChar>
-  std::basic_ostream<YYChar>&
-  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
-  {
-    if (pos.filename)
-      ostr << *pos.filename << ':';
-    return ostr << pos.line << '.' << pos.column;
-  }
-
-  /// Two points in a source file.
+#line 46 "location.hh" // location.cc:296
+  /// Abstract a location.
   class location
   {
   public:
@@ -186,27 +52,30 @@ namespace isc { namespace dhcp {
     location (const position& b, const position& e)
       : begin (b)
       , end (e)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a p.
     explicit location (const position& p = position ())
       : begin (p)
       , end (p)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a f, \a l, \a c.
     explicit location (std::string* f,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
-    {}
+    {
+    }
 
 
     /// Initialization.
     void initialize (std::string* f = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -301,10 +170,10 @@ namespace isc { namespace dhcp {
    ** Avoid duplicate information.
    */
   template <typename YYChar>
-  std::basic_ostream<YYChar>&
+  inline std::basic_ostream<YYChar>&
   operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
-    unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+    unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
     ostr << loc.begin;
     if (loc.end.filename
         && (!loc.begin.filename
@@ -317,7 +186,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp4_parser.yy" // location.cc:339
+#line 14 "dhcp4_parser.yy" // location.cc:296
 } } // isc::dhcp
-#line 322 "location.hh" // location.cc:339
+#line 192 "location.hh" // location.cc:296
 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED
index 1c0bf1e3f71404e31169283bd967df4106335dbd..c60fabbdf87798eaaf77c5d851308166f1c29ecc 100644 (file)
-// Generated 201903111305
-// A Bison parser, made by GNU Bison 3.3.2.
-
-// Starting with Bison 3.2, this file is useless: the structure it
-// used to define is now defined in "location.hh".
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system
-// 3. if you used to include it, include "location.hh" instead.
-
-#include "location.hh"
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Positions for Bison parsers in C++
+
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file position.hh
+ ** Define the isc::dhcp::position class.
+ */
+
+#ifndef YY_PARSER4_POSITION_HH_INCLUDED
+# define YY_PARSER4_POSITION_HH_INCLUDED
+
+# include <algorithm> // std::max
+# include <iostream>
+# include <string>
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
+
+#line 14 "dhcp4_parser.yy" // location.cc:296
+namespace isc { namespace dhcp {
+#line 56 "position.hh" // location.cc:296
+  /// Abstract a position.
+  class position
+  {
+  public:
+    /// Construct a position.
+    explicit position (std::string* f = YY_NULLPTR,
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
+      : filename (f)
+      , line (l)
+      , column (c)
+    {
+    }
+
+
+    /// Initialization.
+    void initialize (std::string* fn = YY_NULLPTR,
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
+    {
+      filename = fn;
+      line = l;
+      column = c;
+    }
+
+    /** \name Line and Column related manipulators
+     ** \{ */
+    /// (line related) Advance to the COUNT next lines.
+    void lines (int count = 1)
+    {
+      if (count)
+        {
+          column = 1u;
+          line = add_ (line, count, 1);
+        }
+    }
+
+    /// (column related) Advance to the COUNT next columns.
+    void columns (int count = 1)
+    {
+      column = add_ (column, count, 1);
+    }
+    /** \} */
+
+    /// File name to which this position refers.
+    std::string* filename;
+    /// Current line number.
+    unsigned int line;
+    /// Current column number.
+    unsigned int column;
+
+  private:
+    /// Compute max(min, lhs+rhs) (provided min <= lhs).
+    static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
+    {
+      return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
+              ? rhs + lhs
+              : min);
+    }
+  };
+
+  /// Add \a width columns, in place.
+  inline position&
+  operator+= (position& res, int width)
+  {
+    res.columns (width);
+    return res;
+  }
+
+  /// Add \a width columns.
+  inline position
+  operator+ (position res, int width)
+  {
+    return res += width;
+  }
+
+  /// Subtract \a width columns, in place.
+  inline position&
+  operator-= (position& res, int width)
+  {
+    return res += -width;
+  }
+
+  /// Subtract \a width columns.
+  inline position
+  operator- (position res, int width)
+  {
+    return res -= width;
+  }
+
+  /// Compare two position objects.
+  inline bool
+  operator== (const position& pos1, const position& pos2)
+  {
+    return (pos1.line == pos2.line
+            && pos1.column == pos2.column
+            && (pos1.filename == pos2.filename
+                || (pos1.filename && pos2.filename
+                    && *pos1.filename == *pos2.filename)));
+  }
+
+  /// Compare two position objects.
+  inline bool
+  operator!= (const position& pos1, const position& pos2)
+  {
+    return !(pos1 == pos2);
+  }
+
+  /** \brief Intercept output stream redirection.
+   ** \param ostr the destination output stream
+   ** \param pos a reference to the position to redirect
+   */
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+  {
+    if (pos.filename)
+      ostr << *pos.filename << ':';
+    return ostr << pos.line << '.' << pos.column;
+  }
+
+#line 14 "dhcp4_parser.yy" // location.cc:296
+} } // isc::dhcp
+#line 180 "position.hh" // location.cc:296
+#endif // !YY_PARSER4_POSITION_HH_INCLUDED
index df84db484742c90faf1c8cb2a4b2ab32ad0d4f17..3dd2a2a3934851424d45b935573ab2e9e83f07a8 100644 (file)
@@ -1,9 +1,157 @@
-// Generated 201903111305
-// A Bison parser, made by GNU Bison 3.3.2.
-
-// Starting with Bison 3.2, this file is useless: the structure it
-// used to define is now defined with the parser itself.
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system.
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Stack handling for Bison parsers in C++
+
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file stack.hh
+ ** Define the isc::dhcp::stack class.
+ */
+
+#ifndef YY_PARSER4_STACK_HH_INCLUDED
+# define YY_PARSER4_STACK_HH_INCLUDED
+
+# include <vector>
+
+#line 14 "dhcp4_parser.yy" // stack.hh:132
+namespace isc { namespace dhcp {
+#line 46 "stack.hh" // stack.hh:132
+  template <class T, class S = std::vector<T> >
+  class stack
+  {
+  public:
+    // Hide our reversed order.
+    typedef typename S::reverse_iterator iterator;
+    typedef typename S::const_reverse_iterator const_iterator;
+
+    stack ()
+      : seq_ ()
+    {
+      seq_.reserve (200);
+    }
+
+    stack (unsigned int n)
+      : seq_ (n)
+    {}
+
+    inline
+    T&
+    operator[] (unsigned int i)
+    {
+      return seq_[seq_.size () - 1 - i];
+    }
+
+    inline
+    const T&
+    operator[] (unsigned int i) const
+    {
+      return seq_[seq_.size () - 1 - i];
+    }
+
+    /// Steal the contents of \a t.
+    ///
+    /// Close to move-semantics.
+    inline
+    void
+    push (T& t)
+    {
+      seq_.push_back (T());
+      operator[](0).move (t);
+    }
+
+    inline
+    void
+    pop (unsigned int n = 1)
+    {
+      for (; n; --n)
+        seq_.pop_back ();
+    }
+
+    void
+    clear ()
+    {
+      seq_.clear ();
+    }
+
+    inline
+    typename S::size_type
+    size () const
+    {
+      return seq_.size ();
+    }
+
+    inline
+    const_iterator
+    begin () const
+    {
+      return seq_.rbegin ();
+    }
+
+    inline
+    const_iterator
+    end () const
+    {
+      return seq_.rend ();
+    }
+
+  private:
+    stack (const stack&);
+    stack& operator= (const stack&);
+    /// The wrapped container.
+    S seq_;
+  };
+
+  /// Present a slice of the top of a stack.
+  template <class T, class S = stack<T> >
+  class slice
+  {
+  public:
+    slice (const S& stack, unsigned int range)
+      : stack_ (stack)
+      , range_ (range)
+    {}
+
+    inline
+    const T&
+    operator [] (unsigned int i) const
+    {
+      return stack_[range_ - i];
+    }
+
+  private:
+    const S& stack_;
+    unsigned int range_;
+  };
+
+#line 14 "dhcp4_parser.yy" // stack.hh:132
+} } // isc::dhcp
+#line 156 "stack.hh" // stack.hh:132
+
+#endif // !YY_PARSER4_STACK_HH_INCLUDED
index db0d49b9bd87ec4bedff4bfd7773a9794738e0b9..3193df3fb9fdba5fb66bb2b408b1d11672963391 100644 (file)
@@ -1,6 +1,6 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
 
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -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 180
-#define YY_END_OF_BUFFER 181
+#define YY_NUM_RULES 182
+#define YY_END_OF_BUFFER 183
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1464] =
+static const flex_int16_t yy_accept[1489] =
     {   0,
-      173,  173,    0,    0,    0,    0,    0,    0,    0,    0,
-      181,  179,   10,   11,  179,    1,  173,  170,  173,  173,
-      179,  172,  171,  179,  179,  179,  179,  179,  166,  167,
-      179,  179,  179,  168,  169,    5,    5,    5,  179,  179,
-      179,   10,   11,    0,    0,  162,    0,    0,    0,    0,
+      175,  175,    0,    0,    0,    0,    0,    0,    0,    0,
+      183,  181,   10,   11,  181,    1,  175,  172,  175,  175,
+      181,  174,  173,  181,  181,  181,  181,  181,  168,  169,
+      181,  181,  181,  170,  171,    5,    5,    5,  181,  181,
+      181,   10,   11,    0,    0,  164,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  173,
-      173,    0,  172,  173,    3,    2,    6,    0,  173,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  175,
+      175,    0,  174,  175,    3,    2,    6,    0,  175,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      163,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  165,    0,    0,    0,
+      165,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  167,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,147 +722,149 @@ static const flex_int16_t yy_accept[1464] =
         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,
-      140,    0,    0,  141,    0,    0,    0,    0,    0,    0,
+      142,    0,    0,  143,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  164,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  166,    0,    0,    0,    0,    0,    0,    0,
         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,
+        0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      178,  176,    0,  175,  174,    0,    0,    0,    0,    0,
+      180,  178,    0,  177,  176,    0,    0,    0,    0,    0,
 
-        0,    0,  139,    0,    0,   28,    0,   27,    0,    0,
-      102,    0,    0,    0,    0,    0,    0,    0,    0,   54,
+        0,    0,  141,    0,    0,   28,    0,   27,    0,    0,
+      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      101,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-      177,  174,    0,    0,    0,    0,    0,    0,    0,    0,
-       29,    0,    0,   31,    0,    0,    0,    0,    0,  103,
-        0,    0,    0,    0,    0,    0,   80,    0,    0,    0,
-        0,    0,    0,    0,  124,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   57,    0,    0,    0,
+        0,    0,  179,  176,    0,    0,    0,    0,    0,    0,
+        0,    0,   29,    0,    0,   31,    0,    0,    0,    0,
+        0,  105,    0,    0,    0,    0,    0,    0,    0,   82,
+        0,    0,    0,    0,    0,    0,    0,  126,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   57,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       89,    0,   58,    0,    0,    0,    0,    0,    0,    0,
+       81,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   91,    0,   58,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      119,  144,   50,    0,   55,    0,    0,    0,    0,    0,
-        0,  159,   37,    0,   34,    0,   33,    0,    0,    0,
-      132,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  121,  146,   50,    0,   55,    0,
+        0,    0,    0,    0,    0,  161,   37,    0,   34,    0,
+       33,    0,    0,    0,  134,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  113,    0,    0,
+        0,    0,    0,    0,    0,    0,  145,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  111,    0,    0,    0,    0,    0,    0,    0,
-        0,  143,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   52,    0,    0,
-       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   52,    0,    0,   32,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   84,    0,    0,    0,    0,
 
-        0,    0,  133,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  128,    0,    0,    0,    0,
-        0,    0,    7,   35,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  135,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  130,    0,    0,    0,    0,    0,    0,    7,   35,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  101,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  113,    0,    0,    0,    0,    0,    0,
-      110,    0,    0,    0,    0,    0,    0,    0,    0,   84,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      103,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      115,    0,    0,    0,    0,    0,    0,  112,    0,    0,
+        0,    0,    0,    0,    0,    0,   86,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   92,    0,    0,    0,    0,    0,    0,    0,
-        0,  107,    0,    0,    0,    0,   91,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  127,    0,    0,    0,
+       94,    0,    0,    0,    0,    0,    0,    0,    0,  109,
+        0,    0,    0,    0,   93,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  137,  108,    0,    0,    0,    0,  112,   51,
+        0,    0,    0,    0,    0,  129,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       59,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  139,  110,    0,    0,    0,    0,  114,   51,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   59,
         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,    0,  160,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   98,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  126,    0,    0,    0,    0,
-        0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   56,
-       83,    0,    0,    0,  123,    0,    0,    0,   49,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   77,
+        0,    0,    0,    0,    0,    0,  162,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  115,    0,    0,    0,
-
+        0,    0,    0,    0,    0,  100,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  128,    0,    0,    0,
+        0,    0,    0,   62,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       56,   85,    0,    0,    0,  125,    0,    0,    0,   49,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,  117,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      158,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  160,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   41,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   16,    0,  138,   14,    0,
+       95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  129,
+        0,    0,    0,    0,    0,    0,   41,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
+        0,  140,   14,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  114,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  125,  142,
-        0,   40,    0,  134,    0,    0,    0,    0,    0,    0,
-        0,    0,   20,    0,    0,    0,   77,    0,    0,    0,
-        0,  136,   53,    0,   85,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
+        0,    0,    0,    0,  131,    0,  116,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,  104,    0,    0,    0,    0,    0,   78,  100,
+        0,    0,    0,  127,  144,    0,   40,    0,  136,    0,
+        0,    0,    0,    0,    0,    0,    0,   20,    0,    0,
+        0,   79,    0,    0,    0,    0,  138,   53,    0,   87,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   71,    0,    0,    0,    0,    0,    0,   17,   15,
-        0,  156,  155,    0,   66,    0,    0,    0,    0,    0,
-       30,  118,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  153,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   94,    0,  122,   43,    0,   60,
-        0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
-        0,   96,   72,    0,    0,  130,    0,    0,    0,    0,
-        0,  121,    0,    0,    0,    0,   90,    0,  161,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   88,    0,
-        0,  145,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   76,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   83,    0,
+        0,    0,    0,   63,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  133,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  106,
+        0,    0,    0,    0,    0,   80,  102,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   73,    0,
+        0,    0,    0,    0,    0,   17,    0,   15,    0,  158,
+      157,    0,   68,    0,    0,    0,    0,    0,   30,  120,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      155,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   96,    0,  124,   43,    0,   60,    0,    0,
+        0,    0,   19,    0,    0,    0,    0,    0,    0,   98,
+
+       74,    0,    0,  132,    0,    0,    0,    0,    0,  123,
+        0,    0,    0,    0,    0,   92,    0,  163,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
+      147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       42,    0,   65,    0,    0,    0,  116,   47,    0,    0,
-       67,  154,   38,    0,    0,   12,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
+        0,    0,   67,    0,    0,    0,  118,   47,    0,    0,
+       69,  156,   38,    0,    0,   12,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   45,    0,    0,   44,   18,
-        0,    0,    0,    0,  109,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   70,    0,
-        0,   61,    0,    0,   86,    0,    0,    0,    0,    0,
-
-      135,    0,    0,    0,   46,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   64,    0,
-        0,   76,    0,   36,   48,    0,    0,    0,    0,    0,
-       24,    0,    0,    0,    0,    0,    0,  151,    0,  120,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   97,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   25,
-       39,    0,    0,    0,    0,    0,   13,    0,    0,    0,
-        0,    0,    0,    0,  157,    0,    0,    0,    0,    0,
-        0,  150,    0,    0,   21,   69,    0,    0,    0,    0,
-        0,    0,    0,   87,    0,    0,  149,    0,    0,   68,
-
-        0,    0,   63,    0,   23,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  111,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   72,
+        0,    0,   61,    0,    0,   88,    0,    0,    0,    0,
+        0,  137,    0,    0,    0,   46,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   66,
+        0,    0,    0,   78,    0,   36,   48,    0,    0,    0,
+        0,    0,   24,    0,    0,    0,    0,    0,    0,  153,
+        0,  122,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   25,   39,    0,    0,    0,    0,    0,   13,
+        0,    0,    0,    0,    0,    0,    0,    0,  159,    0,
+
+        0,    0,    0,    0,    0,  152,    0,    0,   21,   71,
+        0,    0,    0,    0,    0,   64,    0,    0,   89,    0,
+        0,  151,    0,    0,   70,    0,    0,   65,    0,   23,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   22,    0,  105,  117,    0,    0,    0,    0,
-        0,    0,  147,  152,   73,    0,    0,    0,    0,  146,
-        0,    0,   26,    0,    0,    0,    0,    0,  106,    0,
-        0,  148,    0
+        0,    0,    0,    0,    0,    0,    0,   22,    0,  107,
+      119,    0,    0,    0,    0,    0,    0,  149,  154,   75,
+        0,    0,    0,    0,  148,    0,    0,   26,    0,    0,
+        0,    0,    0,  108,    0,    0,  150,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -909,355 +911,361 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1476] =
+static const flex_int16_t yy_base[1501] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1829, 1830,   32, 1825,  141,    0,  201, 1830,  206,   88,
-       11,  213, 1830, 1807,  114,   25,    2,    6, 1830, 1830,
-       73,   11,   17, 1830, 1830, 1830,  104, 1813, 1768,    0,
-     1805,  107, 1820,  217,  241, 1830,  185, 1764, 1770, 1790,
+     1852, 1853,   32, 1848,  141,    0,  201, 1853,  206,   88,
+       11,  213, 1853, 1830,  114,   25,    2,    6, 1853, 1853,
+       73,   11,   17, 1853, 1853, 1853,  104, 1836, 1791,    0,
+     1828,  107, 1843,  217,  241, 1853,  185, 1787, 1793, 1813,
        93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
-      269,   64,  231,  184,  187,   75, 1771,  274,  215,  290,
-      278,  297, 1754,  207,  302,  316,  316, 1773,    0,  355,
-      360,  372,  377,  380, 1830,    0, 1830,  295,  383,  227,
-      296,  283,  327,  361,  293, 1830, 1770, 1809, 1830,  237,
-
-     1830,  394,  363, 1757, 1767, 1806,  375,  321,  403, 1761,
-      369,  378,  376,  382,  388, 1804,    0,  445,  407, 1748,
-     1756,  364, 1752, 1741, 1742,  372, 1758, 1741, 1750,  387,
-      308,  378, 1744, 1742,  391, 1731, 1787,  416, 1734, 1785,
-     1727, 1750, 1747, 1747, 1741,  214, 1734, 1727, 1732, 1726,
-      382, 1737, 1730, 1721, 1720, 1734,  362, 1770, 1719,  414,
-     1731, 1734, 1718,  441, 1719,  417, 1731, 1728, 1729, 1727,
-      422, 1709, 1714, 1710, 1702, 1719, 1711,    0,  422,  450,
-      440,  446,  454,  470, 1710, 1830,    0,  476, 1701, 1704,
-     1830,  465,  447, 1830, 1756, 1711,  477, 1754,  481, 1753,
-
-      477, 1752, 1830,  521, 1751,  489, 1712, 1707, 1706, 1697,
-      465, 1746, 1740, 1706, 1685, 1693, 1699, 1687, 1701, 1697,
-     1698, 1698, 1693, 1685, 1687, 1671, 1675, 1688, 1690, 1687,
-     1679, 1669, 1672, 1686, 1830, 1672, 1680, 1683, 1664, 1663,
-     1713, 1662, 1672, 1710,  510, 1671, 1659, 1670, 1706,  490,
-     1710, 1647, 1662,    9, 1652, 1668, 1649, 1651, 1647, 1653,
-     1644, 1643, 1656, 1649, 1651, 1655, 1654, 1648,   80, 1655,
-     1650, 1642, 1632, 1647, 1642, 1646, 1627, 1643, 1629, 1635,
-     1642, 1630,  230, 1623, 1637, 1636, 1639, 1621, 1629,  491,
-     1830, 1830,  492, 1830, 1830, 1616,    0,  376, 1618,  508,
-
-      501, 1672, 1830, 1625,  480, 1830, 1670, 1830, 1664,  562,
-     1830,  480, 1606, 1616, 1666, 1623, 1618, 1621,  304, 1830,
-     1619,  544, 1617, 1614, 1615,  303, 1619, 1657, 1607, 1602,
-     1599, 1595, 1597, 1646, 1605, 1594, 1610, 1642, 1590,  568,
-     1603, 1603, 1586, 1587, 1600, 1587, 1597, 1592, 1599, 1594,
-     1579,  451, 1588, 1591, 1586, 1582, 1630,  502,  497, 1830,
-     1624, 1576, 1575, 1568, 1570, 1574, 1563, 1570, 1575,  550,
-     1620, 1575,  505, 1572, 1576, 1574, 1563, 1563, 1575,  502,
-     1550, 1551, 1572,  512, 1554, 1551, 1565, 1564, 1550, 1562,
-     1561, 1560, 1559,  535, 1600, 1599, 1598, 1542,  584, 1555,
-
-     1830, 1830, 1554,    0,  518, 1542, 1593, 1592, 1550, 1590,
-     1830, 1538, 1588, 1830,  541,  617,  520, 1587, 1529, 1830,
-     1534, 1540, 1543, 1542, 1529, 1528, 1830, 1538, 1529, 1526,
-     1538,  534, 1523, 1525, 1830, 1531, 1516, 1518, 1529, 1527,
-     1522,  585, 1529, 1517, 1510, 1559, 1830, 1508, 1524, 1556,
-     1560, 1518, 1512, 1514, 1515, 1517, 1549, 1502, 1497, 1496,
-     1498, 1491, 1506, 1484, 1491, 1496, 1544, 1830, 1491, 1487,
-     1541, 1494, 1488, 1495, 1480, 1490, 1493, 1482, 1481, 1476,
-     1830, 1531, 1830, 1475, 1474, 1467, 1484, 1521, 1468, 1473,
-     1482, 1476, 1470, 1479,  591, 1514, 1478, 1461, 1461, 1456,
-
-     1452, 1458, 1457, 1465, 1469, 1452, 1508, 1450, 1464, 1453,
-     1830, 1830, 1830, 1453, 1830, 1463, 1497, 1459,    0, 1500,
-     1450, 1830, 1830, 1447, 1830, 1453, 1830,  562,  566,  607,
-     1830, 1491, 1438, 1489, 1436, 1435, 1442, 1435, 1443, 1446,
-     1445, 1429, 1444, 1426, 1473, 1440, 1476, 1422, 1424, 1436,
-     1436, 1435, 1830, 1420, 1417, 1473, 1430, 1422, 1428, 1419,
-     1427, 1830, 1412, 1423, 1427, 1409, 1423,  557, 1405, 1399,
-     1404, 1401, 1416, 1417, 1414, 1455, 1412, 1830, 1398, 1400,
-     1830, 1408, 1445, 1444,  608, 1407, 1390, 1391, 1396, 1387,
-     1830, 1401, 1387,  610, 1379, 1400, 1397, 1389, 1432, 1386,
-
-     1393, 1429, 1830, 1377, 1375, 1389, 1373, 1387, 1390, 1422,
-     1421, 1420, 1367, 1418, 1417, 1830,  599, 1379, 1379, 1377,
-     1366, 1368, 1830, 1830, 1411, 1359, 1414,  566,  597, 1357,
-     1372, 1411,  577, 1405, 1404, 1403, 1357, 1351, 1346, 1399,
-     1361, 1351, 1359, 1395, 1358, 1340, 1348, 1350, 1354, 1389,
-     1393, 1350, 1349, 1830, 1350, 1343, 1332, 1345, 1348, 1343,
-     1338, 1343, 1340, 1339, 1335, 1341, 1336, 1377, 1376, 1320,
-     1316,  579, 1373, 1830, 1372, 1321, 1313, 1364, 1327, 1314,
-     1830, 1314, 1323, 1322, 1322, 1306, 1361, 1304, 1317, 1830,
-     1309, 1301, 1310, 1303, 1314, 1291, 1295, 1346, 1310, 1292,
-
-     1290, 1301, 1341, 1340, 1339, 1286, 1302,  567,  594, 1279,
-     1289,  587, 1830, 1339, 1285, 1295, 1295, 1284, 1288, 1295,
-     1332, 1830, 1326,  594, 1288, 1280, 1830, 1276, 1289, 1269,
-     1272,   62,   82,  198,  236,  300,  385,  386,  399,  472,
-      556,  558,  591,  574,  636,  593, 1830,  603,  605,  599,
-      610,  611,  661,  597,  606,  621,  622,  609,  667,  626,
-      612,  615, 1830, 1830,  631,  630,  635,  623, 1830, 1830,
-      637,  624,  622,  640,  627,  627,  676,  628,  684,  685,
-     1830,  632,  646,  646,  689,  639,  641,  635,  693,  648,
-      638,  639,  635,  645,  649,  660,  644,  662,  657,  659,
-
-      652,  654,  666,  656,  671,  710,  669,  674,  651, 1830,
-      676,  666,  711,  660,  675,  676, 1830,  695,  703,  672,
-      686,  674,  669,  681,  676,  677,  673,  691,  683,  678,
-      729,  735,  694,  685, 1830,  697,  682,  698,  688,  700,
-      694,  739,  708,  692,  694, 1830,  710,  713,  696,  698,
-      754,  699, 1830,  716,  719,  699,  718,  756,  716,  712,
-      707,  725,  724,  710,  725,  717,  713,  731,  716, 1830,
-     1830,  724,  769,  724, 1830,  732,  727,  778, 1830,  729,
-      734,  776,  730,  731,  743,  737,  741,  739,  737,  748,
-      791,  737,  793,  794,  740,  752, 1830,  740,  748,  746,
-
-      751,  763,  747,  761,  762,  763,  779,  784,  766,  753,
-      754,  774,  763,  768,  775,  816,  760,  818,  767,  771,
-     1830,  816,  767,  785,  782,  820,  771,  789,  790,  776,
-      784,  793,  773,  788,  797,  837,  838, 1830,  793,  840,
-      841,  794,  804,  806,  790,  791,  798,  807,  850,  799,
-      798,  815,  854,  806,  810,  808,  806,  859,  860,  812,
-      862,  858,  818, 1830,  823,  816,  807,  826,  820,  815,
-      825,  822,  827,  823,  835, 1830,  819, 1830, 1830,  820,
-      878,  819,  838,  839,  836,  822,  843,  825,  830,  837,
-      870,  861,  891,  836,  838,  855,  853,  845,  849, 1830,
-
-      846, 1830,  860,  858,  861,  845,  846,  904,  859,  864,
-      851,  862,  854,  860,  856,  875,  876,  877, 1830, 1830,
-      875, 1830,  877, 1830,  863,  864,  883,  873,  923,  878,
-      920,  886, 1830,  878,  870,  929, 1830,  930,  879,  886,
-      928, 1830, 1830,  888, 1830,  879,  879,  882,  896,  901,
-      884,  895,  942,  901,  902,  903,  941,  899,  948,  949,
-     1830,  898,  951,  952,  894,  954,  915,  899,  911,  901,
-      931,  960, 1830,  961,  910,  925,  912,  908,  924,  912,
-      930,  918,  918,  971,  930, 1830,  932,  931,  933,  926,
-      935,  936,  933,  923,  926,  926,  983,  932,  985,  986,
-
-      932,  989, 1830,  927,  942,  935,  993,  948, 1830, 1830,
-      944,  954,  940,  957,  943, 1002, 1004,  950,  960, 1007,
-      966, 1830,  958,  958,  960,  962, 1013,  958, 1830, 1830,
-      960, 1830, 1830,  974, 1830,  968, 1018,  969, 1020, 1002,
-     1830, 1830,  966,  974,  968,  967,  970,  970,  966,  972,
-     1030,  980, 1830,  976, 1033,  988,  979,  994,  994,  997,
-      997,  994, 1036, 1000, 1830,  992, 1830, 1830, 1003, 1830,
-     1004, 1005, 1002, 1044, 1830,  995,  995, 1001, 1000, 1012,
-     1012, 1830, 1830, 1051, 1000, 1830, 1017, 1002, 1002, 1004,
-     1010, 1830, 1063, 1016, 1065, 1028, 1830, 1025, 1830, 1044,
-
-     1069, 1070, 1029, 1015, 1073, 1074, 1075, 1030, 1830, 1020,
-     1078, 1830, 1018, 1075, 1040, 1036, 1078, 1028, 1033, 1031,
-     1088, 1046, 1090, 1091, 1054, 1043, 1037, 1054, 1097, 1041,
-     1058, 1043, 1058, 1042, 1098, 1099, 1100, 1049, 1102, 1067,
-     1830, 1053, 1830, 1064, 1111, 1083, 1830, 1830, 1057, 1114,
-     1830, 1830, 1830, 1063, 1061, 1830, 1117, 1065, 1114, 1059,
-     1064, 1123, 1073, 1083, 1084, 1830, 1127, 1082, 1830, 1830,
-     1073, 1088, 1076, 1091, 1830, 1128, 1096, 1089, 1090, 1099,
-     1081, 1087, 1090, 1142, 1103, 1103, 1146, 1097, 1830, 1148,
-     1149, 1830, 1099, 1099, 1830, 1103, 1098, 1097, 1155, 1110,
-
-     1830, 1152, 1105, 1102, 1830, 1116, 1119, 1162, 1117, 1164,
-     1107, 1109, 1117, 1107, 1123, 1124, 1118, 1134, 1830, 1124,
-     1174, 1830, 1170, 1830, 1830, 1171, 1128, 1136, 1127, 1134,
-     1830, 1131, 1136, 1134, 1184, 1185, 1130, 1830, 1145, 1830,
-     1135, 1147, 1148, 1191, 1135, 1143, 1137, 1145, 1158, 1830,
-     1157, 1145, 1199, 1149, 1161, 1152, 1161, 1163, 1167, 1830,
-     1830, 1206, 1151, 1167, 1209, 1210, 1830, 1206, 1170, 1167,
-     1172, 1159, 1154, 1175, 1830, 1218, 1177, 1178, 1221, 1180,
-     1183, 1830, 1224, 1187, 1830, 1830, 1169, 1227, 1176, 1229,
-     1174, 1191, 1177, 1830, 1177, 1179, 1830, 1184, 1194, 1830,
-
-     1180, 1192, 1830, 1188, 1830, 1198, 1192, 1196, 1187, 1239,
-     1188, 1196, 1205, 1198, 1193, 1194, 1209, 1200, 1207, 1194,
-     1209, 1214, 1257, 1216, 1259, 1260, 1205, 1221, 1212, 1226,
-     1222, 1215, 1830, 1267, 1830, 1830, 1268, 1269, 1226, 1225,
-     1226, 1216, 1830, 1830, 1830, 1274, 1218, 1234, 1277, 1830,
-     1273, 1224, 1830, 1223, 1225, 1236, 1283, 1234, 1830, 1243,
-     1286, 1830, 1830, 1292, 1297, 1302, 1307, 1312, 1317, 1322,
-     1325, 1299, 1304, 1306, 1319
+      269,   64,  231,  184,  187,   75, 1794,  274,  215,  290,
+      278,  297, 1777,  207,  302,  316,  316, 1796,    0,  355,
+      360,  372,  377,  380, 1853,    0, 1853,  295,  383,  227,
+      296,  283,  327,  361,  293, 1853, 1793, 1832, 1853,  237,
+
+     1853,  394,  363, 1780, 1790, 1829,  375,  321,  403, 1784,
+      369,  378,  376,  382,  388, 1827,    0,  445,  407, 1771,
+     1779,  364, 1775, 1764, 1765,  372, 1781, 1764, 1773,  387,
+      308,  378, 1767, 1765,  391, 1754, 1810,  416, 1757, 1808,
+     1750, 1773, 1770, 1770, 1764,  214, 1757, 1750, 1755, 1749,
+      382, 1760, 1753, 1744, 1743, 1757,  362, 1793, 1742,  414,
+     1754, 1757, 1741,  441, 1742,  417, 1754, 1751, 1752, 1750,
+      422, 1732, 1737, 1733, 1725, 1742, 1734,    0,  422,  450,
+      440,  446,  454,  470, 1733, 1853,    0,  476, 1724, 1727,
+     1853,  465,  447, 1853, 1779, 1734,  477, 1777,  481, 1776,
+
+      477, 1775, 1853,  521, 1774,  489, 1735, 1730, 1729, 1720,
+      491, 1769, 1763, 1729, 1708, 1716, 1722, 1710, 1724, 1720,
+     1721, 1721, 1716, 1708, 1710, 1694, 1698, 1711, 1713, 1710,
+     1702, 1692, 1695, 1709, 1853, 1695, 1703, 1706, 1687, 1686,
+     1736, 1685, 1695, 1733,  452, 1694, 1682, 1693, 1729,  490,
+     1733, 1670, 1685,    9, 1675, 1691, 1672, 1674, 1670, 1676,
+     1667, 1666, 1679, 1672, 1674, 1678, 1677, 1671,   80, 1678,
+     1673, 1665, 1655, 1670, 1665, 1669,  459, 1667, 1653, 1659,
+     1666, 1654,  230, 1647, 1661, 1660, 1663, 1645, 1653,  491,
+     1853, 1853,  501, 1853, 1853, 1640,    0,  376, 1642,  497,
+
+      503, 1696, 1853, 1649,  489, 1853, 1694, 1853, 1688,  557,
+     1853,  484, 1630, 1640, 1690, 1647, 1642, 1645, 1640,  304,
+     1853, 1642,  549, 1640, 1637, 1638,  303, 1642, 1680, 1630,
+     1625, 1622, 1618, 1620, 1669, 1628, 1617, 1633, 1665, 1613,
+      550, 1626, 1626, 1609, 1610, 1623, 1610, 1620, 1615, 1622,
+     1617, 1602,  470, 1611, 1614, 1609, 1605, 1653,  515,  524,
+     1853, 1647, 1599, 1598, 1591, 1593, 1597, 1586, 1593, 1598,
+      513, 1643, 1598,  510, 1595, 1599, 1597, 1586, 1586, 1598,
+      502, 1573, 1574, 1595,  536, 1577, 1574, 1588, 1591, 1586,
+     1572, 1584, 1583, 1582, 1581,  532, 1622, 1621, 1620, 1564,
+
+      581, 1577, 1853, 1853, 1576,    0,  556, 1564, 1615, 1614,
+     1572, 1612, 1853, 1560, 1610, 1853,  563,  609,  557, 1609,
+     1551, 1853, 1556, 1562, 1565, 1548, 1563, 1550, 1549, 1853,
+     1559, 1550, 1547, 1559,  549, 1544, 1546, 1853, 1552, 1537,
+     1539, 1550, 1548, 1543,  588, 1550, 1538, 1531, 1580, 1853,
+     1529, 1545, 1577, 1581, 1539, 1533, 1535, 1536, 1538, 1570,
+     1523, 1518, 1517, 1519, 1512, 1527, 1505, 1512, 1517, 1565,
+     1853, 1512, 1508, 1562, 1515, 1509, 1516, 1501, 1511, 1514,
+     1503, 1502, 1497, 1853, 1552, 1853, 1496, 1495, 1488, 1505,
+     1542, 1489, 1494, 1503, 1497, 1491, 1500,  602, 1535, 1499,
+
+     1482, 1482, 1477, 1473, 1479, 1484, 1477, 1485, 1489, 1472,
+     1528, 1470, 1484, 1473, 1853, 1853, 1853, 1473, 1853, 1483,
+     1517, 1479,    0, 1520, 1470, 1853, 1853, 1467, 1853, 1473,
+     1853,  569,  565,  604, 1853, 1511, 1458, 1509, 1456, 1455,
+     1454, 1461, 1454, 1462, 1465, 1464, 1448, 1463, 1445, 1492,
+     1459, 1495, 1441, 1443, 1455, 1455, 1454, 1853, 1439, 1436,
+     1492, 1449, 1441, 1447, 1438, 1446, 1853, 1431, 1442, 1446,
+     1428, 1442,  530, 1424, 1418, 1423, 1420, 1435, 1436, 1433,
+     1474, 1431, 1853, 1417, 1419, 1853, 1427, 1464, 1463,  605,
+     1426, 1409, 1410, 1415, 1406, 1853, 1420, 1406,  630, 1398,
+
+     1419, 1416, 1408, 1451, 1405, 1412, 1448, 1853, 1396, 1394,
+     1408, 1392, 1406, 1409, 1441, 1440, 1439, 1438, 1385, 1436,
+     1435, 1853,  622, 1397, 1397, 1395, 1384, 1386, 1853, 1853,
+     1429, 1377, 1432,  579,  591, 1375, 1390, 1429,  597, 1423,
+     1385, 1421, 1420, 1374, 1368, 1363, 1416, 1378, 1368, 1376,
+     1412, 1375, 1357, 1365, 1367, 1371, 1406, 1410, 1367, 1366,
+     1853, 1367, 1360, 1349, 1362, 1365, 1360, 1355, 1360, 1357,
+     1356, 1352, 1358, 1353, 1394, 1393, 1337, 1333,  582, 1390,
+     1853, 1389, 1338, 1330, 1381, 1344, 1331, 1853, 1331, 1340,
+     1339, 1339, 1323, 1378, 1321, 1334, 1853, 1326, 1318, 1327,
+
+     1320, 1331, 1308, 1312, 1363, 1327, 1309, 1307, 1318, 1358,
+     1357, 1356, 1303, 1319,  593, 1318,  607, 1295, 1305,  604,
+     1853, 1355, 1301, 1311, 1311, 1300, 1304, 1311, 1348, 1853,
+       17,  587,   11,   69, 1853,   68,  202,  221,  302,  373,
+      386,  488,  493,  549,  558,  582,  584,  583,  591,  645,
+      601,  618,  601,  653,  610, 1853,  622,  622,  616,  627,
+      625,  668,  612,  614,  629,  632,  619,  676,  635,  621,
+      624, 1853, 1853,  640,  639,  644,  632, 1853, 1853,  646,
+      633,  631,  649,  636,  636,  685,  637,  693,  694, 1853,
+      641,  655,  655,  698,  648,  650,  644,  702,  657,  647,
+
+      648,  644,  654,  658,  669,  653,  671,  666,  668,  661,
+      663,  664,  676,  666,  681,  720,  679,  684,  661, 1853,
+      686,  676,  721,  670,  685,  686, 1853,  705,  713,  682,
+      696,  684,  679,  691,  698,  687,  688,  684,  702,  694,
+      689,  740,  746,  705,  696, 1853,  708,  693,  709,  699,
+      711,  705,  751,  719,  704,  705, 1853,  721,  724,  707,
+      709,  765,  710, 1853,  727,  730,  710,  729,  767,  727,
+      723,  718,  736,  735,  721,  736,  728,  724,  742,  727,
+     1853, 1853,  735,  780,  735, 1853,  743,  738,  789, 1853,
+      740,  745,  787,  741,  742,  754,  748,  752,  750,  748,
+
+      759,  802,  748,  753,  805,  806,  752,  764, 1853,  752,
+      760,  758,  763,  775,  759,  773,  774,  775,  791,  796,
+      778,  766,  766,  786,  775,  764,  781,  788,  829,  773,
+      831,  780,  784, 1853,  829,  780,  798,  795,  833,  784,
+      802,  803,  789,  797,  806,  786,  803,  810,  850,  851,
+     1853,  806,  853,  854,  807,  817,  819,  803,  804,  811,
+      820,  863,  812,  811,  828,  867,  819,  823,  821,  819,
+      872,  873,  825,  875,  871,  831, 1853,  836,  829,  820,
+      839,  833,  828,  838,  835,  840,  836,  848, 1853,  832,
+      834, 1853, 1853,  834,  892,  833,  852,  853,  851,  836,
+
+      857,  839,  844,  851,  884,  875,  905,  850,  852,  869,
+      867,  910,  860,  864, 1853,  861, 1853,  875,  873,  876,
+      860,  861,  919,  874,  879,  866,  877,  869,  875,  872,
+      890,  891,  892, 1853, 1853,  890, 1853,  893, 1853,  878,
+      879,  898,  888,  938,  893,  935,  901, 1853,  893,  885,
+      944, 1853,  945,  894,  901,  943, 1853, 1853,  903, 1853,
+      894,  894,  897,  911,  916,  899,  910,  957,  916,  917,
+      918,  956,  914,  963,  918,  965, 1853,  914,  967,  968,
+      910,  970,  931,  915,  927,  917,  947,  976, 1853,  977,
+      926,  941,  928, 1853,  924,  940,  928,  946,  934,  934,
+
+      987,  946, 1853,  948,  947,  949,  942,  951,  952,  949,
+      939,  942,  942,  999,  948, 1001, 1002,  948, 1005, 1853,
+      943,  958,  951, 1009,  964, 1853, 1853,  960,  971,  956,
+      973,  959, 1018, 1020,  966,  976, 1023,  982, 1853,  974,
+      974,  976,  978, 1029,  974, 1853,  975, 1853,  977, 1853,
+     1853,  991, 1853,  985, 1035,  986, 1037, 1019, 1853, 1853,
+      983,  991,  985,  984,  987,  987,  983,  989, 1047,  997,
+     1853,  993, 1050, 1005,  996, 1011, 1011, 1014, 1014, 1011,
+     1053, 1017, 1853, 1009, 1853, 1853, 1020, 1853, 1021, 1022,
+     1019, 1061, 1853, 1012, 1012, 1018, 1017, 1029, 1029, 1853,
+
+     1853, 1068, 1017, 1853, 1034, 1019, 1019, 1021, 1027, 1853,
+     1080, 1024, 1034, 1083, 1046, 1853, 1043, 1853, 1062, 1087,
+     1088, 1047, 1033, 1091, 1092, 1093, 1048, 1853, 1038, 1096,
+     1853, 1036, 1093, 1058, 1054, 1096, 1046, 1051, 1049, 1106,
+     1064, 1108, 1109, 1072, 1061, 1055, 1072, 1115, 1059, 1076,
+     1061, 1076, 1060, 1116, 1117, 1118, 1067, 1120, 1085, 1853,
+     1085, 1072, 1853, 1083, 1130, 1102, 1853, 1853, 1076, 1133,
+     1853, 1853, 1853, 1082, 1080, 1853, 1136, 1084, 1133, 1078,
+     1083, 1142, 1092, 1102, 1103, 1853, 1146, 1101, 1853, 1853,
+     1092, 1107, 1095, 1110, 1853, 1147, 1115, 1108, 1109, 1118,
+
+     1100, 1106, 1109, 1161, 1123, 1122, 1114, 1166, 1117, 1853,
+     1168, 1169, 1853, 1119, 1119, 1853, 1123, 1118, 1117, 1175,
+     1130, 1853, 1172, 1125, 1122, 1853, 1136, 1139, 1182, 1137,
+     1184, 1127, 1129, 1137, 1127, 1143, 1144, 1138, 1154, 1853,
+     1144, 1194, 1155, 1853, 1191, 1853, 1853, 1192, 1149, 1157,
+     1148, 1155, 1853, 1152, 1157, 1155, 1205, 1206, 1151, 1853,
+     1166, 1853, 1156, 1168, 1169, 1212, 1156, 1164, 1158, 1166,
+     1179, 1853, 1156, 1179, 1167, 1221, 1171, 1183, 1174, 1183,
+     1185, 1189, 1853, 1853, 1228, 1173, 1189, 1231, 1232, 1853,
+     1228, 1192, 1189, 1194, 1181, 1238, 1177, 1198, 1853, 1241,
+
+     1200, 1201, 1244, 1203, 1206, 1853, 1247, 1210, 1853, 1853,
+     1192, 1250, 1199, 1252, 1197, 1853, 1214, 1200, 1853, 1200,
+     1202, 1853, 1207, 1217, 1853, 1203, 1215, 1853, 1211, 1853,
+     1221, 1215, 1219, 1210, 1262, 1211, 1219, 1228, 1221, 1216,
+     1217, 1232, 1223, 1230, 1217, 1232, 1237, 1280, 1239, 1282,
+     1283, 1228, 1244, 1235, 1249, 1245, 1238, 1853, 1290, 1853,
+     1853, 1291, 1292, 1249, 1248, 1249, 1239, 1853, 1853, 1853,
+     1297, 1241, 1257, 1300, 1853, 1296, 1247, 1853, 1246, 1248,
+     1259, 1306, 1257, 1853, 1266, 1309, 1853, 1853, 1315, 1320,
+     1325, 1330, 1335, 1340, 1345, 1348, 1322, 1327, 1329, 1342
+
     } ;
 
-static const flex_int16_t yy_def[1476] =
+static const flex_int16_t yy_def[1501] =
     {   0,
-     1464, 1464, 1465, 1465, 1464, 1464, 1464, 1464, 1464, 1464,
-     1463, 1463, 1463, 1463, 1463, 1466, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1467,
-     1463, 1463, 1463, 1468,   15, 1463,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1469,   45,   45,
+     1489, 1489, 1490, 1490, 1489, 1489, 1489, 1489, 1489, 1489,
+     1488, 1488, 1488, 1488, 1488, 1491, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1492,
+     1488, 1488, 1488, 1493,   15, 1488,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1494,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1466, 1463,
-     1463, 1463, 1463, 1463, 1463, 1470, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1467, 1463, 1468,
+       45,   45,   45,   45,   45,   45,   45,   45, 1491, 1488,
+     1488, 1488, 1488, 1488, 1488, 1495, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1492, 1488, 1493,
 
-     1463, 1463,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1471,   45, 1469,   45,   45,
+     1488, 1488,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1496,   45, 1494,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1470, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1472,   45,   45,   45,
-     1463,   45,   45, 1463,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1495, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1497,   45,   45,   45,
+     1488,   45,   45, 1488,   45,   45,   45,   45,   45,   45,
 
-       45, 1471, 1463, 1469,   45,   45,   45,   45,   45,   45,
+       45, 1496, 1488, 1494,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1488,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1473,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1498,   45,   45,   45,
 
-       45,   45, 1463,   45,   45, 1463,   45, 1463,   45, 1469,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1488,   45,   45, 1488,   45, 1488,   45, 1494,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1463, 1463, 1463, 1474,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45, 1463,   45, 1469,   45,   45,   45, 1463,
-       45,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
+       45,   45, 1488, 1488, 1488, 1499,   45,   45,   45,   45,
+       45,   45, 1488,   45,   45, 1488,   45, 1494,   45,   45,
+       45, 1488,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1463,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1488,   45, 1488,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463, 1463, 1463,   45, 1463,   45,   45, 1463, 1475,   45,
-       45, 1463, 1463,   45, 1463,   45, 1463,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1488, 1488, 1488,   45, 1488,   45,
+       45, 1488, 1500,   45,   45, 1488, 1488,   45, 1488,   45,
+     1488,   45,   45,   45, 1488,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1488,   45,   45, 1488,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1488,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45, 1463,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1463,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1463,   45,   45,   45,   45,
-       45,   45, 1463, 1463,   45,   45,   45,   45,   45,   45,
+       45, 1488,   45,   45,   45,   45,   45,   45, 1488, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1463,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1463,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45, 1463,   45,   45,   45,   45, 1463,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45, 1488,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463, 1463,   45,   45,   45,   45, 1463, 1463,
+       45,   45,   45,   45,   45, 1488,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1488, 1488,   45,   45,   45,   45, 1488, 1488,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-       45,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1463,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-     1463,   45,   45,   45, 1463,   45,   45,   45, 1463,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
-
+       45,   45,   45,   45,   45, 1488,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
+       45,   45,   45, 1488,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1488, 1488,   45,   45,   45, 1488,   45,   45,   45, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1488,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1463,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1488,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1463,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1463,   45, 1463, 1463,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1488,   45,
+       45, 1488, 1488,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1463,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1463, 1463,
-       45, 1463,   45, 1463,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45, 1463,   45,   45,   45,
-       45, 1463, 1463,   45, 1463,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1463,   45,   45,   45,   45,
+       45,   45,   45,   45, 1488,   45, 1488,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45, 1463,   45,   45,   45,   45,   45, 1463, 1463,
+       45,   45,   45, 1488, 1488,   45, 1488,   45, 1488,   45,
+       45,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
+       45, 1488,   45,   45,   45,   45, 1488, 1488,   45, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1463,   45,   45,   45,   45,   45,   45, 1463, 1463,
-       45, 1463, 1463,   45, 1463,   45,   45,   45,   45,   45,
-     1463, 1463,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1463,   45, 1463, 1463,   45, 1463,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45, 1463, 1463,   45,   45, 1463,   45,   45,   45,   45,
-       45, 1463,   45,   45,   45,   45, 1463,   45, 1463,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1463,   45,
-       45, 1463,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1488,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1488,   45,
+       45,   45,   45, 1488,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1488,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45,   45, 1488, 1488,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1488,   45,
+       45,   45,   45,   45,   45, 1488,   45, 1488,   45, 1488,
+     1488,   45, 1488,   45,   45,   45,   45,   45, 1488, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1488,   45, 1488, 1488,   45, 1488,   45,   45,
+       45,   45, 1488,   45,   45,   45,   45,   45,   45, 1488,
+
+     1488,   45,   45, 1488,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45,   45, 1488,   45, 1488,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1488,   45,   45,
+     1488,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1463,   45, 1463,   45,   45,   45, 1463, 1463,   45,   45,
-     1463, 1463, 1463,   45,   45, 1463,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1463,   45,   45, 1463, 1463,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1463,   45,
-       45, 1463,   45,   45, 1463,   45,   45,   45,   45,   45,
-
-     1463,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1463,   45,
-       45, 1463,   45, 1463, 1463,   45,   45,   45,   45,   45,
-     1463,   45,   45,   45,   45,   45,   45, 1463,   45, 1463,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1463,
-     1463,   45,   45,   45,   45,   45, 1463,   45,   45,   45,
-       45,   45,   45,   45, 1463,   45,   45,   45,   45,   45,
-       45, 1463,   45,   45, 1463, 1463,   45,   45,   45,   45,
-       45,   45,   45, 1463,   45,   45, 1463,   45,   45, 1463,
-
-       45,   45, 1463,   45, 1463,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45, 1488,   45,   45,   45, 1488, 1488,   45,   45,
+     1488, 1488, 1488,   45,   45, 1488,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1488,   45,   45, 1488, 1488,
+       45,   45,   45,   45, 1488,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45, 1488,   45,   45, 1488,   45,   45,   45,   45,
+       45, 1488,   45,   45,   45, 1488,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45, 1488,   45, 1488, 1488,   45,   45,   45,
+       45,   45, 1488,   45,   45,   45,   45,   45,   45, 1488,
+       45, 1488,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1488,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1488, 1488,   45,   45,   45,   45,   45, 1488,
+       45,   45,   45,   45,   45,   45,   45,   45, 1488,   45,
+
+       45,   45,   45,   45,   45, 1488,   45,   45, 1488, 1488,
+       45,   45,   45,   45,   45, 1488,   45,   45, 1488,   45,
+       45, 1488,   45,   45, 1488,   45,   45, 1488,   45, 1488,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1463,   45, 1463, 1463,   45,   45,   45,   45,
-       45,   45, 1463, 1463, 1463,   45,   45,   45,   45, 1463,
-       45,   45, 1463,   45,   45,   45,   45,   45, 1463,   45,
-       45, 1463,    0, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463
+       45,   45,   45,   45,   45,   45,   45, 1488,   45, 1488,
+     1488,   45,   45,   45,   45,   45,   45, 1488, 1488, 1488,
+       45,   45,   45,   45, 1488,   45,   45, 1488,   45,   45,
+       45,   45,   45, 1488,   45,   45, 1488,    0, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488
+
     } ;
 
-static const flex_int16_t yy_nxt[1902] =
+static const flex_int16_t yy_nxt[1925] =
     {   0,
-     1463,   13,   14,   13, 1463,   15,   16, 1463,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  363,
-       37,   14,   37,   86,   25,   26,   38, 1463, 1463,   27,
+     1488,   13,   14,   13, 1488,   15,   16, 1488,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  364,
+       37,   14,   37,   86,   25,   26,   38,  828, 1488,   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, 1463,   13,
-       14,   13,   33,   40,  115,   91,   92,  364,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  830,   13,
+       14,   13,   33,   40,  115,   91,   92,  365,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  108,   39,   90,   25,   26,   13,   14,   13,   27,
 
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  107,   41,  111,   93,   25,   31,  108,
-      130,  138,   88,  826,   88,  827,   32,   89,   89,   89,
-      131,  139,   33,  140,  379,   82,  107,  380,  111,   34,
+      130,  138,   88,  831,   88,  832,   32,   89,   89,   89,
+      131,  139,   33,  140,  380,   82,  107,  381,  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,   48,   49,   50,   51,   45,   52,   53,
@@ -1269,200 +1277,202 @@ static const flex_int16_t yy_nxt[1902] =
        45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
        83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
        82,  133,  122,  112,  123,  306,  124,   82,  134,  103,
-      394,  103,  101,  113,  135,  828,  114,  110,   82,  136,
+      396,  103,  101,  113,  135,  833,  114,  110,   82,  136,
       163,  107,  137,   82,  164,  179,  112,  102,  146,  244,
        82,   45,  147,   45,   45,   45,   45,  119,   45,   45,
        45,  113,  117,  120,  107,   45,   45,  102,   45,   45,
-      245,  179,  148,  829,   45,  132,   45,   45,   45,   45,
+      245,  179,  148,  834,   45,  132,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   89,   89,
-       89,   45,  125,  432,  111,   45,  126,  433,  181,  127,
+       89,   45,  125,  435,  111,   45,  126,  436,  181,  127,
       128,  142,  143,   45,  180,  144,  152,   45,  181,   45,
       118,  145,  129,  149,  153,  150,  154,  151,  112,  114,
-      157,  155,  156,  158,  159,  165,  181,  424,  113,  166,
-      180,  193,  167,  224,  160,  179,  184,  161,  830,  168,
-      169,  171,  114,  172,  425,  170,  225,  173,   84,   84,
+      157,  155,  156,  158,  159,  165,  181,  427,  113,  166,
+      180,  193,  167,  224,  160,  179,  184,  161,  835,  168,
+      169,  171,  114,  172,  428,  170,  225,  173,   84,   84,
        84,   80,  175,   81,   81,   81,  113,  176,  193,   82,
        88,  182,   88,  174,   82,   89,   89,   89,   80,  180,
        83,   83,   83,   84,   84,   84,   89,   89,   89,  100,
 
       188,   82,   82,  192,   82,  197,  100,   82,  194,  198,
-      209,  199,  201,  200,  405,  183,  215,  216,  197,  210,
+      209,  199,  201,  200,  407,  183,  215,  216,  197,  210,
       211,  235,  256,  257,   82,  226,  217,   82,  188,  192,
-      221,  831,  222,  197,  100,  201,  198,  195,  100,  199,
-      200,  227,  100,  405,  188,  230,  250,  832,  231,  223,
+      221,  836,  222,  197,  100,  201,  198,  195,  100,  199,
+      200,  227,  100,  407,  188,  230,  250,  837,  231,  223,
       100,  266,  232,  198,  100,  290,  100,  187,  204,  204,
-      204,  205,  833,  236,  292,  204,  204,  204,  204,  204,
+      204,  205,  353,  236,  292,  204,  204,  204,  204,  204,
       204,  260,  206,  276,  261,  262,  302,  277,  291,  290,
       283,  278,  291,  290,  267,  268,  269,  292,  204,  204,
       204,  204,  204,  204,  292,  270,  298,  271,  301,  272,
 
       273,  305,  274,  302,  291,  307,  309,  293,  294,  298,
-      462,  463,  413,  317,  305,  401,  401,  295,  405,  298,
-      352,  318,  407,  408,  305,  410,  301,  319,  307,  413,
-      834,  409,  312,  309,  310,  310,  310,  359,  401,  402,
-      413,  310,  310,  310,  310,  310,  310,  417,  410,  427,
-      469,  520,  485,  520,  428,  481,  486,  471,  493,  498,
-      470,  835,  494,  499,  310,  310,  310,  310,  310,  310,
-      528,  353,  529,  447,  354,  416,  416,  416,  448,  520,
-      543,  530,  416,  416,  416,  416,  416,  416,  509,  515,
-      553,  510,  628,  544,  516,  554,  603,  528,  629,  529,
-
-      723,  604,  665,  666,  713,  416,  416,  416,  416,  416,
-      416,  482,  624,  681,  714,  690,  836,  630,  801,  628,
-      691,  724,  728,  729,  449,  802,  629,  819,  723,  450,
-       45,   45,   45,  767,  837,  838,  768,   45,   45,   45,
-       45,   45,   45,  808,  724,  803,  839,  840,  841,  809,
-      682,  842,  804,  843,  844,  819,  805,  692,  845,  848,
-       45,   45,   45,   45,   45,   45,  846,  849,  850,  851,
-      852,  847,  853,  854,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  866,  867,  868,  865,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  895,  896,  897,  898,  899,  900,  901,
-      902,  903,  904,  905,  894,  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,
-      908,  931,  932,  907,  933,  934,  935,  936,  937,  938,
-      941,  942,  943,  944,  939,  945,  946,  947,  948,  949,
-      950,  951,  952,  953,  954,  955,  956,  958,  959,  960,
-      961,  962,  963,  964,  965,  966,  967,  957,  968,  969,
-      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
-
-      980,  981,  982,  983,  984,  985,  986,  987,  988,  989,
-      990,  991,  993,  992,  994,  940,  995,  996,  997,  998,
-      999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
-     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,  991,
-      992, 1018, 1019, 1020, 1021, 1022, 1024, 1026, 1027, 1028,
-     1023, 1029, 1030, 1031, 1032, 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, 1060, 1061, 1062, 1063, 1064, 1065, 1025, 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, 1071, 1094, 1095,
-     1096, 1097, 1098, 1072, 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, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
-     1136, 1137, 1138, 1139, 1140, 1141, 1142, 1144, 1145, 1146,
-     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
-     1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
-     1167, 1168, 1140, 1169, 1170, 1171, 1172, 1174, 1175, 1176,
-
-     1177, 1178, 1127, 1179, 1173, 1180, 1181, 1182, 1143, 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, 1200,
-     1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
-     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
-     1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252,
-     1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
-     1263, 1264, 1265, 1266, 1268, 1269, 1270, 1271, 1272, 1273,
-
-     1246, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
-     1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
-     1293, 1294, 1295, 1297, 1298, 1299, 1300, 1296, 1301, 1302,
-     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
-     1313, 1314, 1315, 1316, 1317, 1290, 1318, 1319, 1320, 1267,
-     1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330,
-     1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340,
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
-     1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
-     1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370,
-
-     1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380,
-     1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
-     1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400,
-     1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,
-     1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420,
-     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
-     1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
-     1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
-     1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460,
-     1461, 1462,   12,   12,   12,   12,   12,   36,   36,   36,
-
-       36,   36,   79,  297,   79,   79,   79,   98,  404,   98,
-      519,   98,  100,  100,  100,  100,  100,  116,  116,  116,
-      116,  116,  178,  100,  178,  178,  178,  202,  202,  202,
-      825,  824,  823,  822,  821,  820,  818,  817,  816,  815,
-      814,  813,  812,  811,  810,  807,  806,  800,  799,  798,
-      797,  796,  795,  794,  793,  792,  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,  730,  727,  726,  725,  722,
-      721,  720,  719,  718,  717,  716,  715,  712,  711,  710,
-      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
-      699,  698,  697,  696,  695,  694,  693,  689,  688,  687,
-      686,  685,  684,  683,  680,  679,  678,  677,  676,  675,
-      674,  673,  672,  671,  670,  669,  668,  667,  664,  663,
-      662,  661,  660,  659,  658,  657,  656,  655,  654,  653,
-      652,  651,  650,  649,  648,  647,  646,  645,  644,  643,
-      642,  641,  640,  639,  638,  637,  636,  635,  634,  633,
-
-      632,  631,  627,  626,  625,  624,  623,  622,  621,  620,
-      619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
-      609,  608,  607,  606,  605,  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,  565,  564,  563,  562,  561,  560,  559,  558,
-      557,  556,  555,  552,  551,  550,  549,  548,  547,  546,
-      545,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-      533,  532,  531,  527,  526,  525,  524,  523,  522,  521,
-
-      518,  517,  514,  513,  512,  511,  508,  507,  506,  505,
-      504,  503,  502,  501,  500,  497,  496,  495,  492,  491,
-      490,  489,  488,  487,  484,  483,  480,  479,  478,  477,
-      476,  475,  474,  473,  472,  468,  467,  466,  465,  464,
-      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-      451,  446,  445,  444,  443,  442,  441,  440,  439,  438,
-      437,  436,  435,  434,  431,  430,  429,  426,  423,  422,
-      421,  420,  419,  418,  415,  414,  412,  411,  406,  403,
-      400,  399,  398,  397,  396,  395,  393,  392,  391,  390,
-      389,  388,  387,  386,  385,  384,  383,  382,  381,  378,
-
-      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-      367,  366,  365,  362,  361,  360,  358,  357,  356,  355,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
-      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
-      321,  320,  316,  315,  314,  313,  311,  203,  308,  306,
-      304,  303,  300,  299,  296,  289,  288,  287,  286,  285,
-      284,  282,  281,  280,  279,  275,  265,  264,  263,  259,
-      258,  255,  254,  253,  252,  251,  249,  248,  247,  246,
-      243,  242,  241,  240,  239,  238,  237,  234,  233,  229,
-
-      228,  220,  219,  218,  214,  213,  212,  208,  207,  203,
-      196,  191,  190,  189,  186,  185,  177,  162,  141,  106,
-      105,  104,   43,   99,   97,   96,   87,   43, 1463,   11,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-
-     1463
+      389,  409,  410,  354,  305,  403,  355,  295,  484,  298,
+      411,  415,  407,  390,  305,  403,  301,  412,  307,  465,
+      466,  838,  312,  309,  310,  310,  310,  360,  403,  317,
+      839,  310,  310,  310,  310,  310,  310,  318,  404,  415,
+      412,  419,  319,  320,  430,  450,  415,  488,  496,  431,
+      451,  489,  497,  472,  310,  310,  310,  310,  310,  310,
+      418,  418,  418,  473,  485,  672,  673,  418,  418,  418,
+      418,  418,  418,  501,  474,  513,  519,  502,  514,  524,
+      524,  520,  532,  558,  533,  548,  840,  635,  559,  634,
+
+      418,  418,  418,  418,  418,  418,  452,  608,  549,  630,
+      688,  453,  609,  731,  636,  732,  841,  524,  534,  532,
+      829,  533,   45,   45,   45,  635,  634,  721,  842,   45,
+       45,   45,   45,   45,   45,  697,  776,  722,  732,  777,
+      698,  731,  736,  737,  810,  843,  844,  689,  829,  845,
+      846,  811,   45,   45,   45,   45,   45,   45,  813,  847,
+      818,  848,  849,  850,  851,  814,  819,  852,  853,  815,
+      854,  855,  856,  857,  859,  860,  861,  699,  858,  862,
+      863,  864,  865,  866,  867,  868,  869,  870,  871,  872,
+      873,  874,  875,  877,  878,  879,  876,  880,  881,  882,
+
+      883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
+      893,  894,  895,  896,  897,  898,  899,  900,  901,  902,
+      903,  904,  905,  907,  908,  909,  910,  911,  912,  913,
+      914,  915,  916,  917,  906,  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,
+      920,  943,  944,  919,  945,  946,  947,  948,  949,  950,
+      951,  954,  955,  956,  957,  952,  958,  959,  960,  961,
+      962,  963,  964,  965,  966,  967,  968,  969,  971,  972,
+      973,  974,  975,  976,  977,  978,  979,  980,  970,  981,
+
+      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
+      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
+     1002, 1003, 1004, 1005, 1007, 1006,  953, 1008, 1009, 1010,
+     1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+     1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
+     1031, 1005, 1006, 1032, 1033, 1034, 1035, 1036, 1037, 1039,
+     1041, 1042, 1043, 1038, 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, 1040, 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, 1087, 1110, 1111, 1112, 1113, 1114, 1088, 1115, 1116,
+     1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
+     1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
+     1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147,
+     1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
+     1158, 1159, 1160, 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, 1158, 1187,
+     1188, 1189, 1190, 1192, 1193, 1194, 1195, 1144, 1196, 1197,
+     1191, 1198, 1199, 1200, 1161, 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, 1219, 1242, 1243, 1244,
+     1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
+     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
+     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
+
+     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+     1285, 1286, 1288, 1289, 1290, 1291, 1292, 1293, 1266, 1294,
+     1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304,
+     1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314,
+     1315, 1316, 1318, 1319, 1320, 1321, 1317, 1322, 1323, 1324,
+     1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
+     1335, 1336, 1337, 1338, 1311, 1339, 1340, 1287, 1341, 1342,
+     1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
+     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+     1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
+
+     1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
+     1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
+     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
+     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
+     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422,
+     1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432,
+     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
+     1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452,
+     1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
+     1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472,
+
+     1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482,
+     1483, 1484, 1485, 1486, 1487,   12,   12,   12,   12,   12,
+       36,   36,   36,   36,   36,   79,  297,   79,   79,   79,
+       98,  406,   98,  523,   98,  100,  100,  100,  100,  100,
+      116,  116,  116,  116,  116,  178,  100,  178,  178,  178,
+      202,  202,  202,  827,  826,  825,  824,  823,  822,  821,
+      820,  817,  816,  812,  809,  808,  807,  806,  805,  804,
+      803,  802,  801,  800,  799,  798,  797,  796,  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,  739,  738,  735,  734,  733,  730,  729,  728,
+      727,  726,  725,  724,  723,  720,  719,  718,  717,  716,
+      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
+      705,  704,  703,  702,  701,  700,  696,  695,  694,  693,
+      692,  691,  690,  687,  686,  685,  684,  683,  682,  681,
+      680,  679,  678,  677,  676,  675,  674,  671,  670,  669,
+      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
+
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
+      638,  637,  633,  632,  631,  630,  629,  628,  627,  626,
+      625,  624,  623,  622,  621,  620,  619,  618,  617,  616,
+      615,  614,  613,  612,  611,  610,  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,  565,  564,
+      563,  562,  561,  560,  557,  556,  555,  554,  553,  552,
+
+      551,  550,  547,  546,  545,  544,  543,  542,  541,  540,
+      539,  538,  537,  536,  535,  531,  530,  529,  528,  527,
+      526,  525,  522,  521,  518,  517,  516,  515,  512,  511,
+      510,  509,  508,  507,  506,  505,  504,  503,  500,  499,
+      498,  495,  494,  493,  492,  491,  490,  487,  486,  483,
+      482,  481,  480,  479,  478,  477,  476,  475,  471,  470,
+      469,  468,  467,  464,  463,  462,  461,  460,  459,  458,
+      457,  456,  455,  454,  449,  448,  447,  446,  445,  444,
+      443,  442,  441,  440,  439,  438,  437,  434,  433,  432,
+      429,  426,  425,  424,  423,  422,  421,  420,  417,  416,
+
+      414,  413,  408,  405,  402,  401,  400,  399,  398,  397,
+      395,  394,  393,  392,  391,  388,  387,  386,  385,  384,
+      383,  382,  379,  378,  377,  376,  375,  374,  373,  372,
+      371,  370,  369,  368,  367,  366,  363,  362,  361,  359,
+      358,  357,  356,  352,  351,  350,  349,  348,  347,  346,
+      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
+      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
+      325,  324,  323,  322,  321,  316,  315,  314,  313,  311,
+      203,  308,  306,  304,  303,  300,  299,  296,  289,  288,
+      287,  286,  285,  284,  282,  281,  280,  279,  275,  265,
+
+      264,  263,  259,  258,  255,  254,  253,  252,  251,  249,
+      248,  247,  246,  243,  242,  241,  240,  239,  238,  237,
+      234,  233,  229,  228,  220,  219,  218,  214,  213,  212,
+      208,  207,  203,  196,  191,  190,  189,  186,  185,  177,
+      162,  141,  106,  105,  104,   43,   99,   97,   96,   87,
+       43, 1488,   11, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488
     } ;
 
-static const flex_int16_t yy_chk[1902] =
+static const flex_int16_t yy_chk[1925] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,   21,  254,
-        3,    3,    3,   21,    1,    1,    3,    0,    0,    1,
+        3,    3,    3,   21,    1,    1,    3,  731,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        6,    6,    6,    7,    7,    7,    1,    7,  733,    8,
         8,    8,    1,    8,   57,   27,   28,  254,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
@@ -1470,7 +1480,7 @@ static const flex_int16_t yy_chk[1902] =
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
-       62,   66,   25,  732,   25,  733,    2,   25,   25,   25,
+       62,   66,   25,  734,   25,  736,    2,   25,   25,   25,
        62,   66,    2,   66,  269,   20,   51,  269,   54,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1483,20 +1493,20 @@ static const flex_int16_t yy_chk[1902] =
        15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
        19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
        19,   64,   60,   55,   60,  283,   60,   22,   64,   47,
-      283,   59,  100,   55,   65,  734,   56,   53,   17,   65,
+      283,   59,  100,   55,   65,  737,   56,   53,   17,   65,
        74,   63,   65,   19,   74,   90,   55,   44,   69,  146,
        22,   45,   69,   45,   45,   45,   45,   59,   45,   45,
        45,   55,   58,   59,   63,   45,   45,  100,   45,   58,
-      146,   90,   69,  735,   45,   63,   45,   45,   45,   45,
+      146,   90,   69,  738,   45,   63,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   58,   88,   88,
-       88,   58,   61,  326,   70,   58,   61,  326,   92,   61,
+       88,   58,   61,  327,   70,   58,   61,  327,   92,   61,
        61,   68,   68,   58,   91,   68,   71,   58,   95,   58,
        58,   68,   61,   70,   71,   70,   71,   70,   76,   77,
-       72,   71,   71,   72,   72,   75,   92,  319,   76,   75,
-       91,  108,   75,  131,   72,   93,   95,   72,  736,   75,
-       75,   76,   77,   76,  319,   75,  131,   76,   80,   80,
+       72,   71,   71,   72,   72,   75,   92,  320,   76,   75,
+       91,  108,   75,  131,   72,   93,   95,   72,  739,   75,
+       75,   76,   77,   76,  320,   75,  131,   76,   80,   80,
        80,   81,   77,   81,   81,   81,   76,   77,  108,   80,
        82,   93,   82,   76,   81,   82,   82,   82,   83,   94,
        83,   83,   83,   84,   84,   84,   89,   89,   89,  102,
@@ -1504,169 +1514,171 @@ static const flex_int16_t yy_chk[1902] =
       103,   83,   80,  107,   84,  111,  102,   81,  109,  112,
       122,  113,  115,  114,  298,   94,  126,  126,  151,  122,
       122,  138,  157,  157,   83,  132,  126,   84,  103,  107,
-      130,  737,  130,  111,  102,  115,  112,  109,  102,  113,
-      114,  132,  102,  298,  119,  135,  151,  738,  135,  130,
+      130,  740,  130,  111,  102,  115,  112,  109,  102,  113,
+      114,  132,  102,  298,  119,  135,  151,  741,  135,  130,
       102,  164,  135,  171,  102,  179,  102,  102,  118,  118,
-      118,  119,  739,  138,  181,  118,  118,  118,  118,  118,
+      118,  119,  245,  138,  181,  118,  118,  118,  118,  118,
       118,  160,  119,  166,  160,  160,  193,  166,  180,  182,
       171,  166,  183,  179,  164,  164,  164,  181,  118,  118,
       118,  118,  118,  118,  184,  164,  188,  164,  192,  164,
 
       164,  197,  164,  193,  180,  199,  201,  182,  183,  206,
-      352,  352,  305,  211,  250,  290,  293,  184,  312,  188,
-      245,  211,  300,  300,  197,  301,  192,  211,  199,  359,
-      740,  300,  206,  201,  204,  204,  204,  250,  290,  293,
-      305,  204,  204,  204,  204,  204,  204,  312,  301,  322,
-      358,  405,  373,  417,  322,  370,  373,  359,  380,  384,
-      358,  741,  380,  384,  204,  204,  204,  204,  204,  204,
-      415,  245,  415,  340,  245,  310,  310,  310,  340,  405,
-      432,  417,  310,  310,  310,  310,  310,  310,  394,  399,
-      442,  394,  528,  432,  399,  442,  495,  415,  529,  415,
-
-      628,  495,  568,  568,  617,  310,  310,  310,  310,  310,
-      310,  370,  530,  585,  617,  594,  742,  530,  708,  528,
-      594,  629,  633,  633,  340,  708,  529,  724,  628,  340,
-      416,  416,  416,  672,  743,  744,  672,  416,  416,  416,
-      416,  416,  416,  712,  629,  709,  745,  746,  748,  712,
-      585,  749,  709,  750,  751,  724,  709,  594,  752,  754,
-      416,  416,  416,  416,  416,  416,  753,  755,  756,  757,
-      758,  753,  759,  760,  761,  762,  765,  766,  767,  768,
-      771,  772,  773,  774,  775,  776,  777,  774,  778,  779,
-      780,  782,  783,  784,  785,  786,  787,  788,  789,  790,
+      277,  300,  300,  245,  250,  290,  245,  184,  371,  188,
+      300,  305,  312,  277,  197,  293,  192,  301,  199,  353,
+      353,  742,  206,  201,  204,  204,  204,  250,  290,  211,
+      743,  204,  204,  204,  204,  204,  204,  211,  293,  305,
+      301,  312,  211,  211,  323,  341,  360,  374,  381,  323,
+      341,  374,  381,  359,  204,  204,  204,  204,  204,  204,
+      310,  310,  310,  359,  371,  573,  573,  310,  310,  310,
+      310,  310,  310,  385,  360,  396,  401,  385,  396,  407,
+      419,  401,  417,  445,  417,  435,  744,  533,  445,  532,
+
+      310,  310,  310,  310,  310,  310,  341,  498,  435,  534,
+      590,  341,  498,  634,  534,  635,  745,  407,  419,  417,
+      732,  417,  418,  418,  418,  533,  532,  623,  746,  418,
+      418,  418,  418,  418,  418,  599,  679,  623,  635,  679,
+      599,  634,  639,  639,  715,  747,  748,  590,  732,  749,
+      750,  715,  418,  418,  418,  418,  418,  418,  717,  751,
+      720,  752,  753,  754,  755,  717,  720,  757,  758,  717,
+      759,  760,  761,  762,  763,  764,  765,  599,  762,  766,
+      767,  768,  769,  770,  771,  774,  775,  776,  777,  780,
+      781,  782,  783,  784,  785,  786,  783,  787,  788,  789,
 
       791,  792,  793,  794,  795,  796,  797,  798,  799,  800,
-      801,  802,  803,  804,  805,  806,  807,  808,  809,  811,
-      812,  813,  814,  815,  803,  816,  818,  819,  820,  821,
-      822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
-      832,  833,  834,  836,  837,  838,  839,  840,  841,  842,
-      819,  843,  844,  818,  845,  847,  848,  849,  850,  851,
-      852,  854,  855,  856,  851,  857,  858,  859,  860,  861,
-      862,  863,  864,  865,  866,  867,  868,  869,  872,  873,
-      874,  876,  877,  878,  880,  881,  882,  868,  883,  884,
-      885,  886,  887,  888,  889,  890,  891,  892,  893,  894,
-
-      895,  896,  898,  899,  900,  901,  902,  903,  904,  905,
-      906,  907,  909,  908,  910,  851,  911,  912,  913,  914,
-      915,  916,  917,  918,  919,  920,  922,  923,  924,  925,
-      926,  927,  928,  929,  930,  931,  932,  933,  934,  907,
-      908,  935,  936,  937,  939,  940,  941,  942,  943,  944,
-      940,  945,  946,  947,  948,  949,  950,  951,  952,  953,
-      954,  955,  956,  957,  958,  959,  960,  961,  962,  963,
-      965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
-      975,  977,  980,  981,  982,  983,  984,  985,  941,  986,
-      987,  988,  989,  990,  991,  992,  993,  994,  995,  996,
-
-      997,  998,  999, 1001, 1003, 1004, 1005, 1006, 1007, 1008,
-     1009, 1010, 1011, 1012, 1013, 1014, 1015,  991, 1016, 1017,
-     1018, 1021, 1023,  992, 1025, 1026, 1027, 1028, 1029, 1030,
-     1031, 1032, 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1044,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1056, 1057, 1058, 1059, 1060, 1062, 1063, 1064, 1065, 1066,
-     1067, 1068, 1069, 1070, 1071, 1072, 1074, 1075, 1076, 1077,
-     1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1087, 1088,
-     1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
-     1099, 1100, 1071, 1101, 1102, 1104, 1105, 1106, 1107, 1108,
-
-     1111, 1112, 1057, 1113, 1105, 1114, 1115, 1116, 1074, 1117,
-     1118, 1119, 1120, 1121, 1123, 1124, 1125, 1126, 1127, 1128,
-     1131, 1134, 1136, 1137, 1138, 1139, 1140, 1143, 1144, 1145,
-     1146, 1147, 1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156,
-     1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1166, 1140,
-     1169, 1171, 1172, 1173, 1174, 1176, 1177, 1178, 1179, 1180,
-     1181, 1184, 1185, 1187, 1188, 1189, 1190, 1191, 1193, 1194,
-     1195, 1196, 1198, 1200, 1201, 1202, 1203, 1204, 1205, 1206,
-     1207, 1208, 1210, 1211, 1213, 1214, 1215, 1216, 1217, 1218,
-     1219, 1220, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
-
-     1200, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
-     1237, 1238, 1239, 1240, 1242, 1244, 1245, 1246, 1249, 1250,
-     1254, 1255, 1257, 1258, 1259, 1260, 1261, 1257, 1262, 1263,
-     1264, 1265, 1267, 1268, 1271, 1272, 1273, 1274, 1276, 1277,
-     1278, 1279, 1280, 1281, 1282, 1246, 1283, 1284, 1285, 1221,
-     1286, 1287, 1288, 1290, 1291, 1293, 1294, 1296, 1297, 1298,
-     1299, 1300, 1302, 1303, 1304, 1306, 1307, 1308, 1309, 1310,
-     1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1320, 1321,
-     1323, 1326, 1327, 1328, 1329, 1330, 1332, 1333, 1334, 1335,
-     1336, 1337, 1339, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
-
-     1348, 1349, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
-     1359, 1362, 1363, 1364, 1365, 1366, 1368, 1369, 1370, 1371,
-     1372, 1373, 1374, 1376, 1377, 1378, 1379, 1380, 1381, 1383,
-     1384, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1395, 1396,
-     1398, 1399, 1401, 1402, 1404, 1406, 1407, 1408, 1409, 1410,
-     1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420,
-     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
-     1431, 1432, 1434, 1437, 1438, 1439, 1440, 1441, 1442, 1446,
-     1447, 1448, 1449, 1451, 1452, 1454, 1455, 1456, 1457, 1458,
-     1460, 1461, 1464, 1464, 1464, 1464, 1464, 1465, 1465, 1465,
-
-     1465, 1465, 1466, 1472, 1466, 1466, 1466, 1467, 1473, 1467,
-     1474, 1467, 1468, 1468, 1468, 1468, 1468, 1469, 1469, 1469,
-     1469, 1469, 1470, 1475, 1470, 1470, 1470, 1471, 1471, 1471,
-      731,  730,  729,  728,  726,  725,  723,  721,  720,  719,
-      718,  717,  716,  715,  714,  711,  710,  707,  706,  705,
-      704,  703,  702,  701,  700,  699,  698,  697,  696,  695,
-      694,  693,  692,  691,  689,  688,  687,  686,  685,  684,
-      683,  682,  680,  679,  678,  677,  676,  675,  673,  671,
-      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
-      660,  659,  658,  657,  656,  655,  653,  652,  651,  650,
-
-      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
-      639,  638,  637,  636,  635,  634,  632,  631,  630,  627,
-      626,  625,  622,  621,  620,  619,  618,  615,  614,  613,
-      612,  611,  610,  609,  608,  607,  606,  605,  604,  602,
-      601,  600,  599,  598,  597,  596,  595,  593,  592,  590,
-      589,  588,  587,  586,  584,  583,  582,  580,  579,  577,
-      576,  575,  574,  573,  572,  571,  570,  569,  567,  566,
-      565,  564,  563,  561,  560,  559,  558,  557,  556,  555,
-      554,  552,  551,  550,  549,  548,  547,  546,  545,  544,
-      543,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-
-      533,  532,  526,  524,  521,  520,  518,  517,  516,  514,
-      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
-      500,  499,  498,  497,  496,  494,  493,  492,  491,  490,
-      489,  488,  487,  486,  485,  484,  482,  480,  479,  478,
-      477,  476,  475,  474,  473,  472,  471,  470,  469,  467,
-      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
-      456,  455,  454,  453,  452,  451,  450,  449,  448,  446,
-      445,  444,  443,  441,  440,  439,  438,  437,  436,  434,
-      433,  431,  430,  429,  428,  426,  425,  424,  423,  422,
-      421,  419,  418,  413,  412,  410,  409,  408,  407,  406,
-
-      403,  400,  398,  397,  396,  395,  393,  392,  391,  390,
-      389,  388,  387,  386,  385,  383,  382,  381,  379,  378,
-      377,  376,  375,  374,  372,  371,  369,  368,  367,  366,
-      365,  364,  363,  362,  361,  357,  356,  355,  354,  353,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  339,  338,  337,  336,  335,  334,  333,  332,  331,
-      330,  329,  328,  327,  325,  324,  323,  321,  318,  317,
-      316,  315,  314,  313,  309,  307,  304,  302,  299,  296,
-      289,  288,  287,  286,  285,  284,  282,  281,  280,  279,
-      278,  277,  276,  275,  274,  273,  272,  271,  270,  268,
-
-      267,  266,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  256,  255,  253,  252,  251,  249,  248,  247,  246,
-      244,  243,  242,  241,  240,  239,  238,  237,  236,  234,
-      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
-      223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
-      213,  212,  210,  209,  208,  207,  205,  202,  200,  198,
-      196,  195,  190,  189,  185,  177,  176,  175,  174,  173,
-      172,  170,  169,  168,  167,  165,  163,  162,  161,  159,
-      158,  156,  155,  154,  153,  152,  150,  149,  148,  147,
-      145,  144,  143,  142,  141,  140,  139,  137,  136,  134,
-
-      133,  129,  128,  127,  125,  124,  123,  121,  120,  116,
-      110,  106,  105,  104,   98,   97,   78,   73,   67,   50,
-       49,   48,   43,   41,   39,   38,   24,   14,   11, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-
-     1463
+      801,  802,  803,  804,  805,  806,  807,  808,  809,  810,
+      811,  812,  813,  814,  815,  816,  817,  818,  819,  821,
+      822,  823,  824,  825,  813,  826,  828,  829,  830,  831,
+      832,  833,  834,  835,  836,  837,  838,  839,  840,  841,
+      842,  843,  844,  845,  847,  848,  849,  850,  851,  852,
+      829,  853,  854,  828,  855,  856,  858,  859,  860,  861,
+      862,  863,  865,  866,  867,  862,  868,  869,  870,  871,
+      872,  873,  874,  875,  876,  877,  878,  879,  880,  883,
+      884,  885,  887,  888,  889,  891,  892,  893,  879,  894,
+
+      895,  896,  897,  898,  899,  900,  901,  902,  903,  904,
+      905,  906,  907,  908,  910,  911,  912,  913,  914,  915,
+      916,  917,  918,  919,  921,  920,  862,  922,  923,  924,
+      925,  926,  927,  928,  929,  930,  931,  932,  933,  935,
+      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
+      946,  919,  920,  947,  948,  949,  950,  952,  953,  954,
+      955,  956,  957,  953,  958,  959,  960,  961,  962,  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,  990,  991,  994,  995,  996,  997,
+
+      998,  954,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
+     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1016, 1018,
+     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
+     1029, 1005, 1030, 1031, 1032, 1033, 1036, 1006, 1038, 1040,
+     1041, 1042, 1043, 1044, 1045, 1046, 1047, 1049, 1050, 1051,
+     1053, 1054, 1055, 1056, 1059, 1061, 1062, 1063, 1064, 1065,
+     1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
+     1076, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
+     1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098,
+     1099, 1100, 1101, 1102, 1104, 1105, 1106, 1107, 1108, 1109,
+
+     1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1087, 1118,
+     1119, 1121, 1122, 1123, 1124, 1125, 1128, 1072, 1129, 1130,
+     1122, 1131, 1132, 1133, 1090, 1134, 1135, 1136, 1137, 1138,
+     1140, 1141, 1142, 1143, 1144, 1145, 1147, 1149, 1152, 1154,
+     1155, 1156, 1157, 1158, 1161, 1162, 1163, 1164, 1165, 1166,
+     1167, 1168, 1169, 1170, 1172, 1173, 1174, 1175, 1176, 1177,
+     1178, 1179, 1180, 1181, 1182, 1184, 1158, 1187, 1189, 1190,
+     1191, 1192, 1194, 1195, 1196, 1197, 1198, 1199, 1202, 1203,
+     1205, 1206, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215,
+     1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
+
+     1229, 1230, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
+     1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1219, 1247,
+     1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
+     1258, 1259, 1261, 1262, 1264, 1265, 1266, 1269, 1270, 1274,
+     1275, 1277, 1278, 1279, 1280, 1281, 1277, 1282, 1283, 1284,
+     1285, 1287, 1288, 1291, 1292, 1293, 1294, 1296, 1297, 1298,
+     1299, 1300, 1301, 1302, 1266, 1303, 1304, 1240, 1305, 1306,
+     1307, 1308, 1309, 1311, 1312, 1314, 1315, 1317, 1318, 1319,
+     1320, 1321, 1323, 1324, 1325, 1327, 1328, 1329, 1330, 1331,
+     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1342,
+
+     1343, 1345, 1348, 1349, 1350, 1351, 1352, 1354, 1355, 1356,
+     1357, 1358, 1359, 1361, 1363, 1364, 1365, 1366, 1367, 1368,
+     1369, 1370, 1371, 1373, 1374, 1375, 1376, 1377, 1378, 1379,
+     1380, 1381, 1382, 1385, 1386, 1387, 1388, 1389, 1391, 1392,
+     1393, 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403,
+     1404, 1405, 1407, 1408, 1411, 1412, 1413, 1414, 1415, 1417,
+     1418, 1420, 1421, 1423, 1424, 1426, 1427, 1429, 1431, 1432,
+     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
+     1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452,
+     1453, 1454, 1455, 1456, 1457, 1459, 1462, 1463, 1464, 1465,
+
+     1466, 1467, 1471, 1472, 1473, 1474, 1476, 1477, 1479, 1480,
+     1481, 1482, 1483, 1485, 1486, 1489, 1489, 1489, 1489, 1489,
+     1490, 1490, 1490, 1490, 1490, 1491, 1497, 1491, 1491, 1491,
+     1492, 1498, 1492, 1499, 1492, 1493, 1493, 1493, 1493, 1493,
+     1494, 1494, 1494, 1494, 1494, 1495, 1500, 1495, 1495, 1495,
+     1496, 1496, 1496,  729,  728,  727,  726,  725,  724,  723,
+      722,  719,  718,  716,  714,  713,  712,  711,  710,  709,
+      708,  707,  706,  705,  704,  703,  702,  701,  700,  699,
+      698,  696,  695,  694,  693,  692,  691,  690,  689,  687,
+      686,  685,  684,  683,  682,  680,  678,  677,  676,  675,
+
+      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,  641,  640,  638,  637,  636,  633,  632,  631,
+      628,  627,  626,  625,  624,  621,  620,  619,  618,  617,
+      616,  615,  614,  613,  612,  611,  610,  609,  607,  606,
+      605,  604,  603,  602,  601,  600,  598,  597,  595,  594,
+      593,  592,  591,  589,  588,  587,  585,  584,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  572,  571,  570,
+      569,  568,  566,  565,  564,  563,  562,  561,  560,  559,
+
+      557,  556,  555,  554,  553,  552,  551,  550,  549,  548,
+      547,  546,  545,  544,  543,  542,  541,  540,  539,  538,
+      537,  536,  530,  528,  525,  524,  522,  521,  520,  518,
+      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
+      504,  503,  502,  501,  500,  499,  497,  496,  495,  494,
+      493,  492,  491,  490,  489,  488,  487,  485,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
+      460,  459,  458,  457,  456,  455,  454,  453,  452,  451,
+      449,  448,  447,  446,  444,  443,  442,  441,  440,  439,
+
+      437,  436,  434,  433,  432,  431,  429,  428,  427,  426,
+      425,  424,  423,  421,  420,  415,  414,  412,  411,  410,
+      409,  408,  405,  402,  400,  399,  398,  397,  395,  394,
+      393,  392,  391,  390,  389,  388,  387,  386,  384,  383,
+      382,  380,  379,  378,  377,  376,  375,  373,  372,  370,
+      369,  368,  367,  366,  365,  364,  363,  362,  358,  357,
+      356,  355,  354,  352,  351,  350,  349,  348,  347,  346,
+      345,  344,  343,  342,  340,  339,  338,  337,  336,  335,
+      334,  333,  332,  331,  330,  329,  328,  326,  325,  324,
+      322,  319,  318,  317,  316,  315,  314,  313,  309,  307,
+
+      304,  302,  299,  296,  289,  288,  287,  286,  285,  284,
+      282,  281,  280,  279,  278,  276,  275,  274,  273,  272,
+      271,  270,  268,  267,  266,  265,  264,  263,  262,  261,
+      260,  259,  258,  257,  256,  255,  253,  252,  251,  249,
+      248,  247,  246,  244,  243,  242,  241,  240,  239,  238,
+      237,  236,  234,  233,  232,  231,  230,  229,  228,  227,
+      226,  225,  224,  223,  222,  221,  220,  219,  218,  217,
+      216,  215,  214,  213,  212,  210,  209,  208,  207,  205,
+      202,  200,  198,  196,  195,  190,  189,  185,  177,  176,
+      175,  174,  173,  172,  170,  169,  168,  167,  165,  163,
+
+      162,  161,  159,  158,  156,  155,  154,  153,  152,  150,
+      149,  148,  147,  145,  144,  143,  142,  141,  140,  139,
+      137,  136,  134,  133,  129,  128,  127,  125,  124,  123,
+      121,  120,  116,  110,  106,  105,  104,   98,   97,   78,
+       73,   67,   50,   49,   48,   43,   41,   39,   38,   24,
+       14,   11, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+     1488, 1488, 1488, 1488
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1675,7 +1687,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[180] =
+static const flex_int16_t yy_rule_linenum[182] =
     {   0,
       149,  151,  153,  158,  159,  164,  165,  166,  178,  181,
       186,  193,  202,  211,  220,  229,  238,  247,  256,  265,
@@ -1684,18 +1696,19 @@ static const flex_int16_t yy_rule_linenum[180] =
       463,  472,  481,  490,  499,  508,  517,  526,  536,  545,
       558,  567,  576,  585,  594,  605,  616,  627,  638,  650,
       661,  672,  683,  694,  705,  716,  727,  738,  749,  760,
-      771,  782,  793,  802,  811,  821,  830,  839,  854,  870,
-      879,  888,  897,  906,  915,  924,  933,  942,  951,  960,
-      982, 1004, 1013, 1023, 1033, 1042, 1052, 1063, 1072, 1081,
-
-     1090, 1099, 1108, 1118, 1127, 1136, 1145, 1154, 1163, 1172,
-     1181, 1190, 1199, 1209, 1218, 1227, 1237, 1249, 1262, 1271,
-     1280, 1290, 1300, 1309, 1320, 1330, 1339, 1349, 1359, 1368,
-     1377, 1386, 1395, 1405, 1414, 1424, 1433, 1442, 1451, 1460,
-     1469, 1478, 1487, 1496, 1505, 1514, 1523, 1532, 1541, 1550,
-     1559, 1568, 1577, 1586, 1595, 1604, 1613, 1622, 1631, 1640,
-     1649, 1659, 1758, 1763, 1768, 1773, 1774, 1775, 1776, 1777,
-     1778, 1780, 1798, 1811, 1816, 1820, 1822, 1824, 1826
+      771,  782,  793,  804,  815,  824,  833,  843,  852,  861,
+      876,  892,  901,  910,  919,  928,  937,  946,  955,  964,
+      973,  982, 1004, 1026, 1035, 1045, 1055, 1064, 1074, 1085,
+
+     1094, 1103, 1112, 1121, 1130, 1140, 1149, 1158, 1167, 1176,
+     1185, 1194, 1203, 1212, 1221, 1231, 1240, 1249, 1259, 1271,
+     1284, 1293, 1302, 1312, 1322, 1331, 1342, 1352, 1361, 1371,
+     1381, 1390, 1399, 1408, 1417, 1427, 1436, 1446, 1455, 1464,
+     1473, 1482, 1491, 1500, 1509, 1518, 1527, 1536, 1545, 1554,
+     1563, 1572, 1581, 1590, 1599, 1608, 1617, 1626, 1635, 1644,
+     1653, 1662, 1671, 1681, 1780, 1785, 1790, 1795, 1796, 1797,
+     1798, 1799, 1800, 1802, 1820, 1833, 1838, 1842, 1844, 1846,
+     1848
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1748,7 +1761,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1751 "dhcp6_lexer.cc"
+#line 1765 "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
@@ -1774,8 +1787,8 @@ using namespace isc::dhcp;
    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 1777 "dhcp6_lexer.cc"
-#line 1778 "dhcp6_lexer.cc"
+#line 1791 "dhcp6_lexer.cc"
+#line 1792 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2107,7 +2120,7 @@ YY_DECL
     }
 
 
-#line 2110 "dhcp6_lexer.cc"
+#line 2124 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2136,13 +2149,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 >= 1464 )
+                               if ( yy_current_state >= 1489 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1463 );
+               while ( yy_current_state != 1488 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2161,13 +2174,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 < 180 )
+                       else if ( yy_act < 182 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 180 )
+                       else if ( yy_act == 182 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 181 )
+                       else if ( yy_act == 183 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2921,9 +2934,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_CONSISTENCY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("consistency", driver.loc_);
     }
 }
        YY_BREAK
@@ -2935,9 +2948,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_REQUEST_TIMEOUT(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_SERIAL_CONSISTENCY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("request-timeout", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("serial-consistency", driver.loc_);
     }
 }
        YY_BREAK
@@ -2949,9 +2962,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_TCP_KEEPALIVE(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-keepalive", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_);
     }
 }
        YY_BREAK
@@ -2963,9 +2976,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_TCP_NODELAY(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_REQUEST_TIMEOUT(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-nodelay", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("request-timeout", driver.loc_);
     }
 }
        YY_BREAK
@@ -2977,9 +2990,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_CONTACT_POINTS(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_TCP_KEEPALIVE(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("contact-points", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-keepalive", driver.loc_);
     }
 }
        YY_BREAK
@@ -2991,15 +3004,43 @@ YY_RULE_SETUP
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     case isc::dhcp::Parser6Context::CONFIG_DATABASE:
-        return isc::dhcp::Dhcp6Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_TCP_NODELAY(driver.loc_);
     default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("max-reconnect-tries", driver.loc_);
+        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-nodelay", driver.loc_);
     }
 }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 749 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_CONTACT_POINTS(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("contact-points", driver.loc_);
+    }
+}
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 760 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+    case isc::dhcp::Parser6Context::CONFIG_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_MAX_RECONNECT_TRIES(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("max-reconnect-tries", driver.loc_);
+    }
+}
+       YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 771 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3011,9 +3052,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 760 "dhcp6_lexer.ll"
+#line 782 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3025,9 +3066,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 771 "dhcp6_lexer.ll"
+#line 793 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3039,9 +3080,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 782 "dhcp6_lexer.ll"
+#line 804 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3053,9 +3094,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 793 "dhcp6_lexer.ll"
+#line 815 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3065,9 +3106,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 802 "dhcp6_lexer.ll"
+#line 824 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3077,9 +3118,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 811 "dhcp6_lexer.ll"
+#line 833 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3090,9 +3131,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 821 "dhcp6_lexer.ll"
+#line 843 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3102,9 +3143,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 830 "dhcp6_lexer.ll"
+#line 852 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3114,9 +3155,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 839 "dhcp6_lexer.ll"
+#line 861 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3132,9 +3173,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 854 "dhcp6_lexer.ll"
+#line 876 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3151,9 +3192,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 870 "dhcp6_lexer.ll"
+#line 892 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3163,9 +3204,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 879 "dhcp6_lexer.ll"
+#line 901 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3175,9 +3216,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 888 "dhcp6_lexer.ll"
+#line 910 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3187,9 +3228,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 897 "dhcp6_lexer.ll"
+#line 919 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3199,9 +3240,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 906 "dhcp6_lexer.ll"
+#line 928 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3211,9 +3252,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 915 "dhcp6_lexer.ll"
+#line 937 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3223,9 +3264,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 924 "dhcp6_lexer.ll"
+#line 946 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3235,9 +3276,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 933 "dhcp6_lexer.ll"
+#line 955 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3247,9 +3288,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 942 "dhcp6_lexer.ll"
+#line 964 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3259,9 +3300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 951 "dhcp6_lexer.ll"
+#line 973 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3271,9 +3312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 960 "dhcp6_lexer.ll"
+#line 982 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3296,9 +3337,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 93:
 YY_RULE_SETUP
-#line 982 "dhcp6_lexer.ll"
+#line 1004 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3321,9 +3362,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 1004 "dhcp6_lexer.ll"
+#line 1026 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3333,9 +3374,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1013 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3346,9 +3387,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1023 "dhcp6_lexer.ll"
+#line 1045 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3359,9 +3400,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1033 "dhcp6_lexer.ll"
+#line 1055 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3371,9 +3412,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1042 "dhcp6_lexer.ll"
+#line 1064 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3384,9 +3425,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1052 "dhcp6_lexer.ll"
+#line 1074 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3398,9 +3439,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1063 "dhcp6_lexer.ll"
+#line 1085 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3410,9 +3451,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1072 "dhcp6_lexer.ll"
+#line 1094 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3422,9 +3463,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1081 "dhcp6_lexer.ll"
+#line 1103 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3434,9 +3475,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1090 "dhcp6_lexer.ll"
+#line 1112 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3446,9 +3487,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1099 "dhcp6_lexer.ll"
+#line 1121 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3458,9 +3499,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1108 "dhcp6_lexer.ll"
+#line 1130 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3471,9 +3512,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1118 "dhcp6_lexer.ll"
+#line 1140 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3483,9 +3524,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1127 "dhcp6_lexer.ll"
+#line 1149 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3495,9 +3536,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1136 "dhcp6_lexer.ll"
+#line 1158 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3507,9 +3548,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1145 "dhcp6_lexer.ll"
+#line 1167 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3519,9 +3560,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1154 "dhcp6_lexer.ll"
+#line 1176 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3531,9 +3572,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1163 "dhcp6_lexer.ll"
+#line 1185 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3543,9 +3584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1172 "dhcp6_lexer.ll"
+#line 1194 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3555,9 +3596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1181 "dhcp6_lexer.ll"
+#line 1203 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3567,9 +3608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1190 "dhcp6_lexer.ll"
+#line 1212 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3579,9 +3620,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1199 "dhcp6_lexer.ll"
+#line 1221 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3591,9 +3632,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1209 "dhcp6_lexer.ll"
+#line 1231 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3603,9 +3644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1218 "dhcp6_lexer.ll"
+#line 1240 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3615,9 +3656,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1227 "dhcp6_lexer.ll"
+#line 1249 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3628,9 +3669,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1237 "dhcp6_lexer.ll"
+#line 1259 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3643,9 +3684,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1249 "dhcp6_lexer.ll"
+#line 1271 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3659,9 +3700,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1262 "dhcp6_lexer.ll"
+#line 1284 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3671,9 +3712,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1271 "dhcp6_lexer.ll"
+#line 1293 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3683,9 +3724,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1280 "dhcp6_lexer.ll"
+#line 1302 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3696,9 +3737,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1290 "dhcp6_lexer.ll"
+#line 1312 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3709,9 +3750,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1300 "dhcp6_lexer.ll"
+#line 1322 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3721,9 +3762,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1309 "dhcp6_lexer.ll"
+#line 1331 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3735,9 +3776,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1320 "dhcp6_lexer.ll"
+#line 1342 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3748,9 +3789,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1330 "dhcp6_lexer.ll"
+#line 1352 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3760,9 +3801,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1339 "dhcp6_lexer.ll"
+#line 1361 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3773,9 +3814,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1349 "dhcp6_lexer.ll"
+#line 1371 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3786,9 +3827,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1359 "dhcp6_lexer.ll"
+#line 1381 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3798,9 +3839,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1368 "dhcp6_lexer.ll"
+#line 1390 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3810,9 +3851,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1377 "dhcp6_lexer.ll"
+#line 1399 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3822,9 +3863,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1386 "dhcp6_lexer.ll"
+#line 1408 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3834,9 +3875,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1395 "dhcp6_lexer.ll"
+#line 1417 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3847,9 +3888,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1405 "dhcp6_lexer.ll"
+#line 1427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3859,9 +3900,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1414 "dhcp6_lexer.ll"
+#line 1436 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3871,9 +3912,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1424 "dhcp6_lexer.ll"
+#line 1446 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3883,9 +3924,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1433 "dhcp6_lexer.ll"
+#line 1455 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3895,9 +3936,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1442 "dhcp6_lexer.ll"
+#line 1464 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3907,9 +3948,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1451 "dhcp6_lexer.ll"
+#line 1473 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3919,9 +3960,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1460 "dhcp6_lexer.ll"
+#line 1482 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3931,9 +3972,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1469 "dhcp6_lexer.ll"
+#line 1491 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3943,9 +3984,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1478 "dhcp6_lexer.ll"
+#line 1500 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3955,9 +3996,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1487 "dhcp6_lexer.ll"
+#line 1509 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3967,9 +4008,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1496 "dhcp6_lexer.ll"
+#line 1518 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3979,9 +4020,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1505 "dhcp6_lexer.ll"
+#line 1527 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3991,9 +4032,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1514 "dhcp6_lexer.ll"
+#line 1536 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4003,9 +4044,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1523 "dhcp6_lexer.ll"
+#line 1545 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4015,9 +4056,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1554 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4027,9 +4068,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1541 "dhcp6_lexer.ll"
+#line 1563 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4039,9 +4080,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1550 "dhcp6_lexer.ll"
+#line 1572 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4051,9 +4092,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1559 "dhcp6_lexer.ll"
+#line 1581 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4063,9 +4104,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1568 "dhcp6_lexer.ll"
+#line 1590 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4075,9 +4116,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1577 "dhcp6_lexer.ll"
+#line 1599 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4087,9 +4128,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1586 "dhcp6_lexer.ll"
+#line 1608 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4099,9 +4140,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1595 "dhcp6_lexer.ll"
+#line 1617 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4111,9 +4152,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1604 "dhcp6_lexer.ll"
+#line 1626 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4123,9 +4164,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1613 "dhcp6_lexer.ll"
+#line 1635 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4135,9 +4176,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1622 "dhcp6_lexer.ll"
+#line 1644 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4147,9 +4188,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1631 "dhcp6_lexer.ll"
+#line 1653 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4159,9 +4200,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1640 "dhcp6_lexer.ll"
+#line 1662 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4171,9 +4212,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1649 "dhcp6_lexer.ll"
+#line 1671 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4183,9 +4224,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1659 "dhcp6_lexer.ll"
+#line 1681 "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.
@@ -4285,65 +4326,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 163:
-/* rule 163 can match eol */
+case 165:
+/* rule 165 can match eol */
 YY_RULE_SETUP
-#line 1758 "dhcp6_lexer.ll"
+#line 1780 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 164:
-/* rule 164 can match eol */
+case 166:
+/* rule 166 can match eol */
 YY_RULE_SETUP
-#line 1763 "dhcp6_lexer.ll"
+#line 1785 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1768 "dhcp6_lexer.ll"
+#line 1790 "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 166:
+case 168:
 YY_RULE_SETUP
-#line 1773 "dhcp6_lexer.ll"
+#line 1795 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1774 "dhcp6_lexer.ll"
+#line 1796 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1775 "dhcp6_lexer.ll"
+#line 1797 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1776 "dhcp6_lexer.ll"
+#line 1798 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1777 "dhcp6_lexer.ll"
+#line 1799 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1778 "dhcp6_lexer.ll"
+#line 1800 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1780 "dhcp6_lexer.ll"
+#line 1802 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4362,9 +4403,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1798 "dhcp6_lexer.ll"
+#line 1820 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4378,43 +4419,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1811 "dhcp6_lexer.ll"
+#line 1833 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1816 "dhcp6_lexer.ll"
+#line 1838 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1820 "dhcp6_lexer.ll"
+#line 1842 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1822 "dhcp6_lexer.ll"
+#line 1844 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1824 "dhcp6_lexer.ll"
+#line 1846 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1826 "dhcp6_lexer.ll"
+#line 1848 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1828 "dhcp6_lexer.ll"
+#line 1850 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4438,12 +4479,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 180:
+case 182:
 YY_RULE_SETUP
-#line 1851 "dhcp6_lexer.ll"
+#line 1873 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4446 "dhcp6_lexer.cc"
+#line 4488 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4762,7 +4803,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 >= 1464 )
+                       if ( yy_current_state >= 1489 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4795,11 +4836,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 >= 1464 )
+               if ( yy_current_state >= 1489 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1463);
+       yy_is_jam = (yy_current_state == 1488);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5548,7 +5589,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1851 "dhcp6_lexer.ll"
+#line 1873 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 9aa6899473cd178167a02e25c7ae0a5a25be5130..5b73cf16cde918df6b8d323cd257885a881fc616 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // This special exception was added by the Free Software Foundation in
 // version 2.2 of Bison.
 
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details.  Do not rely on them.
-
-
 // Take the name prefix into account.
 #define yylex   parser6_lex
 
+// First part of user declarations.
 
+#line 39 "dhcp6_parser.cc" // lalr1.cc:404
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
 
 #include "dhcp6_parser.h"
 
+// User implementation prologue.
 
+#line 53 "dhcp6_parser.cc" // lalr1.cc:412
 // Unqualified %code blocks.
-#line 34 "dhcp6_parser.yy" // lalr1.cc:435
+#line 34 "dhcp6_parser.yy" // lalr1.cc:413
 
 #include <dhcp6/parser_context.h>
 
-#line 51 "dhcp6_parser.cc" // lalr1.cc:435
+#line 59 "dhcp6_parser.cc" // lalr1.cc:413
 
 
 #ifndef YY_
 # endif
 #endif
 
-// Whether we are compiled with exception support.
-#ifndef YY_EXCEPTIONS
-# if defined __GNUC__ && !defined __EXCEPTIONS
-#  define YY_EXCEPTIONS 0
-# else
-#  define YY_EXCEPTIONS 1
-# endif
-#endif
-
 #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    If N is 0, then set CURRENT to the empty location which ends
@@ -88,7 +87,7 @@
         {                                                               \
           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
         }                                                               \
-    while (false)
+    while (/*CONSTCOND*/ false)
 # endif
 
 
     {                                           \
       *yycdebug_ << Title << ' ';               \
       yy_print_ (*yycdebug_, Symbol);           \
-      *yycdebug_ << '\n';                       \
+      *yycdebug_ << std::endl;                  \
     }                                           \
   } while (false)
 
 #else // !PARSER6_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
-# define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
-# define YY_STACK_PRINT()                static_cast<void> (0)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE(Symbol)
+# define YY_REDUCE_PRINT(Rule)           static_cast<void>(0)
+# define YY_STACK_PRINT()                static_cast<void>(0)
 
 #endif // !PARSER6_DEBUG
 
 #define YYERROR         goto yyerrorlab
 #define YYRECOVERING()  (!!yyerrstatus_)
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:510
+#line 14 "dhcp6_parser.yy" // lalr1.cc:479
 namespace isc { namespace dhcp {
-#line 146 "dhcp6_parser.cc" // lalr1.cc:510
+#line 145 "dhcp6_parser.cc" // lalr1.cc:479
 
   /* Return YYSTR after stripping away unnecessary quotes and
      backslashes, so that it's suitable for yyerror.  The heuristic is
@@ -154,7 +153,7 @@ namespace isc { namespace dhcp {
   {
     if (*yystr == '"')
       {
-        std::string yyr;
+        std::string yyr = "";
         char const *yyp = yystr;
 
         for (;;)
@@ -167,10 +166,7 @@ namespace isc { namespace dhcp {
             case '\\':
               if (*++yyp != '\\')
                 goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
+              // Fall through.
             default:
               yyr += *yyp;
               break;
@@ -198,8 +194,6 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::~Dhcp6Parser ()
   {}
 
-  Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
-  {}
 
   /*---------------.
   | Symbol types.  |
@@ -208,20 +202,24 @@ namespace isc { namespace dhcp {
 
 
   // by_state.
-  Dhcp6Parser::by_state::by_state () YY_NOEXCEPT
+  inline
+  Dhcp6Parser::by_state::by_state ()
     : state (empty_state)
   {}
 
-  Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
-    : state (that.state)
+  inline
+  Dhcp6Parser::by_state::by_state (const by_state& other)
+    : state (other.state)
   {}
 
+  inline
   void
-  Dhcp6Parser::by_state::clear () YY_NOEXCEPT
+  Dhcp6Parser::by_state::clear ()
   {
     state = empty_state;
   }
 
+  inline
   void
   Dhcp6Parser::by_state::move (by_state& that)
   {
@@ -229,12 +227,14 @@ namespace isc { namespace dhcp {
     that.clear ();
   }
 
-  Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT
+  inline
+  Dhcp6Parser::by_state::by_state (state_type s)
     : state (s)
   {}
 
+  inline
   Dhcp6Parser::symbol_number_type
-  Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::by_state::type_get () const
   {
     if (state == empty_state)
       return empty_symbol;
@@ -242,79 +242,41 @@ namespace isc { namespace dhcp {
       return yystos_[state];
   }
 
+  inline
   Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
   {}
 
-  Dhcp6Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
-    : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
-  {
-    switch (that.type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
-        break;
-
-      case 174: // "boolean"
-        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
-        break;
-
-      case 173: // "floating point"
-        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
-        break;
-
-      case 172: // "integer"
-        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
-        break;
-
-      case 171: // "constant string"
-        value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
-        break;
-
-      default:
-        break;
-    }
-
-#if 201103L <= YY_CPLUSPLUS
-    // that is emptied.
-    that.state = empty_state;
-#endif
-  }
 
-  Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
-    : super_type (s, YY_MOVE (that.location))
+  inline
+  Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
+    : super_type (s, that.location)
   {
-    switch (that.type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.move< ElementPtr > (YY_MOVE (that.value));
+      switch (that.type_get ())
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.move< ElementPtr > (that.value);
         break;
 
-      case 174: // "boolean"
-        value.move< bool > (YY_MOVE (that.value));
+      case 176: // "boolean"
+        value.move< bool > (that.value);
         break;
 
-      case 173: // "floating point"
-        value.move< double > (YY_MOVE (that.value));
+      case 175: // "floating point"
+        value.move< double > (that.value);
         break;
 
-      case 172: // "integer"
-        value.move< int64_t > (YY_MOVE (that.value));
+      case 174: // "integer"
+        value.move< int64_t > (that.value);
         break;
 
-      case 171: // "constant string"
-        value.move< std::string > (YY_MOVE (that.value));
+      case 173: // "constant string"
+        value.move< std::string > (that.value);
         break;
 
       default:
@@ -325,37 +287,37 @@ namespace isc { namespace dhcp {
     that.type = empty_symbol;
   }
 
-#if YY_CPLUSPLUS < 201103L
+  inline
   Dhcp6Parser::stack_symbol_type&
-  Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
+  Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.move< ElementPtr > (that.value);
+      switch (that.type_get ())
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.copy< ElementPtr > (that.value);
         break;
 
-      case 174: // "boolean"
-        value.move< bool > (that.value);
+      case 176: // "boolean"
+        value.copy< bool > (that.value);
         break;
 
-      case 173: // "floating point"
-        value.move< double > (that.value);
+      case 175: // "floating point"
+        value.copy< double > (that.value);
         break;
 
-      case 172: // "integer"
-        value.move< int64_t > (that.value);
+      case 174: // "integer"
+        value.copy< int64_t > (that.value);
         break;
 
-      case 171: // "constant string"
-        value.move< std::string > (that.value);
+      case 173: // "constant string"
+        value.copy< std::string > (that.value);
         break;
 
       default:
@@ -363,13 +325,12 @@ namespace isc { namespace dhcp {
     }
 
     location = that.location;
-    // that is emptied.
-    that.state = empty_state;
     return *this;
   }
-#endif
+
 
   template <typename Base>
+  inline
   void
   Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
   {
@@ -386,83 +347,93 @@ namespace isc { namespace dhcp {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
     symbol_number_type yytype = yysym.type_get ();
-#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
     // Avoid a (spurious) G++ 4.8 warning about "array subscript is
     // below array bounds".
     if (yysym.empty ())
       std::abort ();
-#endif
     yyo << (yytype < yyntokens_ ? "token" : "nterm")
         << ' ' << yytname_[yytype] << " ("
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 171: // "constant string"
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < std::string > (); }
-#line 404 "dhcp6_parser.cc" // lalr1.cc:676
+            case 173: // "constant string"
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< std::string > (); }
+#line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 172: // "integer"
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < int64_t > (); }
-#line 410 "dhcp6_parser.cc" // lalr1.cc:676
+      case 174: // "integer"
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< int64_t > (); }
+#line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 173: // "floating point"
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < double > (); }
-#line 416 "dhcp6_parser.cc" // lalr1.cc:676
+      case 175: // "floating point"
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< double > (); }
+#line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 174: // "boolean"
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < bool > (); }
-#line 422 "dhcp6_parser.cc" // lalr1.cc:676
+      case 176: // "boolean"
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< bool > (); }
+#line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 192: // value
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "dhcp6_parser.cc" // lalr1.cc:676
+      case 194: // value
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 196: // map_value
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 434 "dhcp6_parser.cc" // lalr1.cc:676
+      case 198: // map_value
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 250: // db_type
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 440 "dhcp6_parser.cc" // lalr1.cc:676
+      case 252: // db_type
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 339: // hr_mode
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 446 "dhcp6_parser.cc" // lalr1.cc:676
+      case 345: // hr_mode
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 475: // duid_type
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 452 "dhcp6_parser.cc" // lalr1.cc:676
+      case 481: // duid_type
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 510: // ncr_protocol_value
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 458 "dhcp6_parser.cc" // lalr1.cc:676
+      case 516: // ncr_protocol_value
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 517: // replace_client_name_value
-#line 249 "dhcp6_parser.yy" // lalr1.cc:676
-        { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 464 "dhcp6_parser.cc" // lalr1.cc:676
+      case 523: // replace_client_name_value
+
+#line 251 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
+
       default:
         break;
     }
@@ -470,27 +441,26 @@ namespace isc { namespace dhcp {
   }
 #endif
 
+  inline
   void
-  Dhcp6Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
+  Dhcp6Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
   {
-    if (m)
-      YY_SYMBOL_PRINT (m, sym);
-    yystack_.push (YY_MOVE (sym));
+    stack_symbol_type t (s, sym);
+    yypush_ (m, t);
   }
 
+  inline
   void
-  Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
+  Dhcp6Parser::yypush_ (const char* m, stack_symbol_type& s)
   {
-#if 201103L <= YY_CPLUSPLUS
-    yypush_ (m, stack_symbol_type (s, std::move (sym)));
-#else
-    stack_symbol_type ss (s, sym);
-    yypush_ (m, ss);
-#endif
+    if (m)
+      YY_SYMBOL_PRINT (m, s);
+    yystack_.push (s);
   }
 
+  inline
   void
-  Dhcp6Parser::yypop_ (int n)
+  Dhcp6Parser::yypop_ (unsigned int n)
   {
     yystack_.pop (n);
   }
@@ -522,7 +492,7 @@ namespace isc { namespace dhcp {
   }
 #endif // PARSER6_DEBUG
 
-  Dhcp6Parser::state_type
+  inline Dhcp6Parser::state_type
   Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
   {
     int yyr = yypgoto_[yysym - yyntokens_] + yystate;
@@ -532,24 +502,18 @@ namespace isc { namespace dhcp {
       return yydefgoto_[yysym - yyntokens_];
   }
 
-  bool
+  inline bool
   Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue)
   {
     return yyvalue == yypact_ninf_;
   }
 
-  bool
+  inline bool
   Dhcp6Parser::yy_table_value_is_error_ (int yyvalue)
   {
     return yyvalue == yytable_ninf_;
   }
 
-  int
-  Dhcp6Parser::operator() ()
-  {
-    return parse ();
-  }
-
   int
   Dhcp6Parser::parse ()
   {
@@ -571,11 +535,11 @@ namespace isc { namespace dhcp {
     /// The return value of parse ().
     int yyresult;
 
-#if YY_EXCEPTIONS
+    // FIXME: This shoud be completely indented.  It is not yet to
+    // avoid gratuitous conflicts when merging into the master branch.
     try
-#endif // YY_EXCEPTIONS
       {
-    YYCDEBUG << "Starting parse\n";
+    YYCDEBUG << "Starting parse" << std::endl;
 
 
     /* Initialize the stack.  The initial state will be set in
@@ -583,25 +547,21 @@ namespace isc { namespace dhcp {
        location values to have been already stored, initialize these
        stacks with a primary value.  */
     yystack_.clear ();
-    yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
+    yypush_ (YY_NULLPTR, 0, yyla);
 
-  /*-----------------------------------------------.
-  | yynewstate -- push a new symbol on the stack.  |
-  `-----------------------------------------------*/
+    // A new symbol was pushed on the stack.
   yynewstate:
-    YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
+    YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
 
     // Accept?
     if (yystack_[0].state == yyfinal_)
-      YYACCEPT;
+      goto yyacceptlab;
 
     goto yybackup;
 
-
-  /*-----------.
-  | yybackup.  |
-  `-----------*/
+    // Backup.
   yybackup:
+
     // Try to take a decision without lookahead.
     yyn = yypact_[yystack_[0].state];
     if (yy_pact_value_is_default_ (yyn))
@@ -611,21 +571,16 @@ namespace isc { namespace dhcp {
     if (yyla.empty ())
       {
         YYCDEBUG << "Reading a token: ";
-#if YY_EXCEPTIONS
         try
-#endif // YY_EXCEPTIONS
           {
             symbol_type yylookahead (yylex (ctx));
             yyla.move (yylookahead);
           }
-#if YY_EXCEPTIONS
         catch (const syntax_error& yyexc)
           {
-            YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
             error (yyexc);
             goto yyerrlab1;
           }
-#endif // YY_EXCEPTIONS
       }
     YY_SYMBOL_PRINT ("Next token is", yyla);
 
@@ -650,10 +605,9 @@ namespace isc { namespace dhcp {
       --yyerrstatus_;
 
     // Shift the lookahead token.
-    yypush_ ("Shifting", yyn, YY_MOVE (yyla));
+    yypush_ ("Shifting", yyn, yyla);
     goto yynewstate;
 
-
   /*-----------------------------------------------------------.
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
@@ -663,44 +617,43 @@ namespace isc { namespace dhcp {
       goto yyerrlab;
     goto yyreduce;
 
-
   /*-----------------------------.
-  | yyreduce -- do a reduction.  |
+  | yyreduce -- Do a reduction.  |
   `-----------------------------*/
   yyreduce:
     yylen = yyr2_[yyn];
     {
       stack_symbol_type yylhs;
-      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+      yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
       /* Variants are always initialized to an empty instance of the
          correct type. The default '$$ = $1' action is NOT applied
          when using variants.  */
-      switch (yyr1_[yyn])
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        yylhs.value.emplace< ElementPtr > ();
+        switch (yyr1_[yyn])
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        yylhs.value.build< ElementPtr > ();
         break;
 
-      case 174: // "boolean"
-        yylhs.value.emplace< bool > ();
+      case 176: // "boolean"
+        yylhs.value.build< bool > ();
         break;
 
-      case 173: // "floating point"
-        yylhs.value.emplace< double > ();
+      case 175: // "floating point"
+        yylhs.value.build< double > ();
         break;
 
-      case 172: // "integer"
-        yylhs.value.emplace< int64_t > ();
+      case 174: // "integer"
+        yylhs.value.build< int64_t > ();
         break;
 
-      case 171: // "constant string"
-        yylhs.value.emplace< std::string > ();
+      case 173: // "constant string"
+        yylhs.value.build< std::string > ();
         break;
 
       default:
@@ -708,302 +661,299 @@ namespace isc { namespace dhcp {
     }
 
 
-      // Default location.
+      // Compute the default @$.
       {
-        stack_type::slice range (yystack_, yylen);
-        YYLLOC_DEFAULT (yylhs.location, range, yylen);
-        yyerror_range[1].location = yylhs.location;
+        slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
+        YYLLOC_DEFAULT (yylhs.location, slice, yylen);
       }
 
       // Perform the reduction.
       YY_REDUCE_PRINT (yyn);
-#if YY_EXCEPTIONS
       try
-#endif // YY_EXCEPTIONS
         {
           switch (yyn)
             {
   case 2:
-#line 258 "dhcp6_parser.yy" // lalr1.cc:919
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 730 "dhcp6_parser.cc" // lalr1.cc:919
+#line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 259 "dhcp6_parser.yy" // lalr1.cc:919
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
-#line 736 "dhcp6_parser.cc" // lalr1.cc:919
+#line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:919
+#line 262 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
-#line 742 "dhcp6_parser.cc" // lalr1.cc:919
+#line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:919
+#line 263 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 748 "dhcp6_parser.cc" // lalr1.cc:919
+#line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:919
+#line 264 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
-#line 754 "dhcp6_parser.cc" // lalr1.cc:919
+#line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 263 "dhcp6_parser.yy" // lalr1.cc:919
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
-#line 760 "dhcp6_parser.cc" // lalr1.cc:919
+#line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 264 "dhcp6_parser.yy" // lalr1.cc:919
+#line 266 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
-#line 766 "dhcp6_parser.cc" // lalr1.cc:919
+#line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:919
+#line 267 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 772 "dhcp6_parser.cc" // lalr1.cc:919
+#line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 266 "dhcp6_parser.yy" // lalr1.cc:919
+#line 268 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
-#line 778 "dhcp6_parser.cc" // lalr1.cc:919
+#line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 267 "dhcp6_parser.yy" // lalr1.cc:919
+#line 269 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 784 "dhcp6_parser.cc" // lalr1.cc:919
+#line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 268 "dhcp6_parser.yy" // lalr1.cc:919
+#line 270 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 790 "dhcp6_parser.cc" // lalr1.cc:919
+#line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 269 "dhcp6_parser.yy" // lalr1.cc:919
+#line 271 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 796 "dhcp6_parser.cc" // lalr1.cc:919
+#line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 270 "dhcp6_parser.yy" // lalr1.cc:919
+#line 272 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 802 "dhcp6_parser.cc" // lalr1.cc:919
+#line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 271 "dhcp6_parser.yy" // lalr1.cc:919
+#line 273 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
-#line 808 "dhcp6_parser.cc" // lalr1.cc:919
+#line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 272 "dhcp6_parser.yy" // lalr1.cc:919
+#line 274 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 814 "dhcp6_parser.cc" // lalr1.cc:919
+#line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 280 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 820 "dhcp6_parser.cc" // lalr1.cc:919
+#line 282 "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 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 281 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 826 "dhcp6_parser.cc" // lalr1.cc:919
+#line 283 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 282 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 832 "dhcp6_parser.cc" // lalr1.cc:919
+#line 284 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 838 "dhcp6_parser.cc" // lalr1.cc:919
+#line 285 "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 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 284 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 844 "dhcp6_parser.cc" // lalr1.cc:919
+#line 286 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 285 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 850 "dhcp6_parser.cc" // lalr1.cc:919
+#line 287 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 800 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 286 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 856 "dhcp6_parser.cc" // lalr1.cc:919
+#line 288 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 806 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 289 "dhcp6_parser.yy" // lalr1.cc:919
+#line 291 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
-    ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 865 "dhcp6_parser.cc" // lalr1.cc:919
+#line 815 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 294 "dhcp6_parser.yy" // lalr1.cc:919
+#line 296 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 876 "dhcp6_parser.cc" // lalr1.cc:919
+#line 826 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 41:
-#line 299 "dhcp6_parser.yy" // lalr1.cc:919
+#line 301 "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
     // for it.
 }
-#line 886 "dhcp6_parser.cc" // lalr1.cc:919
+#line 836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 42:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 892 "dhcp6_parser.cc" // lalr1.cc:919
+#line 307 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 312 "dhcp6_parser.yy" // lalr1.cc:919
+#line 314 "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 > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 901 "dhcp6_parser.cc" // lalr1.cc:919
+#line 851 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:919
+#line 318 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 911 "dhcp6_parser.cc" // lalr1.cc:919
+#line 861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 47:
-#line 323 "dhcp6_parser.yy" // lalr1.cc:919
+#line 325 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 920 "dhcp6_parser.cc" // lalr1.cc:919
+#line 870 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 48:
-#line 326 "dhcp6_parser.yy" // lalr1.cc:919
+#line 328 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 928 "dhcp6_parser.cc" // lalr1.cc:919
+#line 878 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 51:
-#line 334 "dhcp6_parser.yy" // lalr1.cc:919
+#line 336 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 937 "dhcp6_parser.cc" // lalr1.cc:919
+#line 887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 52:
-#line 338 "dhcp6_parser.yy" // lalr1.cc:919
+#line 340 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
-                  ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
+                  ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 946 "dhcp6_parser.cc" // lalr1.cc:919
+#line 896 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 53:
-#line 345 "dhcp6_parser.yy" // lalr1.cc:919
+#line 347 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 954 "dhcp6_parser.cc" // lalr1.cc:919
+#line 904 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 54:
-#line 347 "dhcp6_parser.yy" // lalr1.cc:919
+#line 349 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 963 "dhcp6_parser.cc" // lalr1.cc:919
+#line 913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 57:
-#line 356 "dhcp6_parser.yy" // lalr1.cc:919
+#line 358 "dhcp6_parser.yy" // lalr1.cc:859
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 972 "dhcp6_parser.cc" // lalr1.cc:919
+#line 922 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 58:
-#line 360 "dhcp6_parser.yy" // lalr1.cc:919
+#line 362 "dhcp6_parser.yy" // lalr1.cc:859
     {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 981 "dhcp6_parser.cc" // lalr1.cc:919
+#line 931 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 59:
-#line 371 "dhcp6_parser.yy" // lalr1.cc:919
+#line 373 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
-    const std::string& keyword = yystack_[1].value.as < std::string > ();
+    const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 992 "dhcp6_parser.cc" // lalr1.cc:919
+#line 942 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 60:
-#line 381 "dhcp6_parser.yy" // lalr1.cc:919
+#line 383 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1003 "dhcp6_parser.cc" // lalr1.cc:919
+#line 953 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 61:
-#line 386 "dhcp6_parser.yy" // lalr1.cc:919
+#line 388 "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
@@ -1012,11 +962,11 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1016 "dhcp6_parser.cc" // lalr1.cc:919
+#line 966 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 70:
-#line 409 "dhcp6_parser.yy" // lalr1.cc:919
+#line 411 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1025,857 +975,893 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 1029 "dhcp6_parser.cc" // lalr1.cc:919
+#line 979 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 71:
-#line 416 "dhcp6_parser.yy" // lalr1.cc:919
+#line 418 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1039 "dhcp6_parser.cc" // lalr1.cc:919
+#line 989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 72:
-#line 424 "dhcp6_parser.yy" // lalr1.cc:919
+#line 426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1049 "dhcp6_parser.cc" // lalr1.cc:919
+#line 999 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 73:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:919
+#line 430 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
 }
-#line 1058 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1008 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 109:
-#line 474 "dhcp6_parser.yy" // lalr1.cc:919
+#line 476 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1066 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1016 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 110:
-#line 476 "dhcp6_parser.yy" // lalr1.cc:919
+#line 478 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
     ctx.leave();
 }
-#line 1076 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1026 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 111:
-#line 482 "dhcp6_parser.yy" // lalr1.cc:919
+#line 484 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
 }
-#line 1085 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 112:
-#line 487 "dhcp6_parser.yy" // lalr1.cc:919
+#line 489 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 1094 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 113:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:919
+#line 494 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 1103 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 114:
-#line 497 "dhcp6_parser.yy" // lalr1.cc:919
+#line 499 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 1112 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1062 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 115:
-#line 502 "dhcp6_parser.yy" // lalr1.cc:919
+#line 504 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1121 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1071 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 116:
-#line 507 "dhcp6_parser.yy" // lalr1.cc:919
+#line 509 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1129 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1079 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 117:
-#line 509 "dhcp6_parser.yy" // lalr1.cc:919
+#line 511 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1139 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1089 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 118:
-#line 515 "dhcp6_parser.yy" // lalr1.cc:919
+#line 517 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1150 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1100 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 119:
-#line 520 "dhcp6_parser.yy" // lalr1.cc:919
+#line 522 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1160 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1110 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 120:
-#line 526 "dhcp6_parser.yy" // lalr1.cc:919
+#line 528 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1170 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 121:
-#line 530 "dhcp6_parser.yy" // lalr1.cc:919
+#line 532 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1179 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1129 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 129:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:919
+#line 548 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1190 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 551 "dhcp6_parser.yy" // lalr1.cc:919
+#line 553 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1199 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 556 "dhcp6_parser.yy" // lalr1.cc:919
+#line 558 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1208 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 562 "dhcp6_parser.yy" // lalr1.cc:919
+#line 564 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1219 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1169 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 133:
-#line 567 "dhcp6_parser.yy" // lalr1.cc:919
+#line 569 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1230 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1180 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 134:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:919
+#line 576 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1241 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1191 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 135:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:919
+#line 581 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1252 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1202 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 136:
-#line 586 "dhcp6_parser.yy" // lalr1.cc:919
+#line 588 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1263 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1213 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 137:
-#line 591 "dhcp6_parser.yy" // lalr1.cc:919
+#line 593 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1272 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1222 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 142:
-#line 604 "dhcp6_parser.yy" // lalr1.cc:919
+#line 606 "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 1282 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1232 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 143:
-#line 608 "dhcp6_parser.yy" // lalr1.cc:919
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1292 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1242 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 638 "dhcp6_parser.yy" // lalr1.cc:919
+  case 166:
+#line 642 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1300 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1250 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 640 "dhcp6_parser.yy" // lalr1.cc:919
+  case 167:
+#line 644 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1309 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 645 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1315 "dhcp6_parser.cc" // lalr1.cc:919
+  case 168:
+#line 649 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1265 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 646 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1321 "dhcp6_parser.cc" // lalr1.cc:919
+  case 169:
+#line 650 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1271 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1327 "dhcp6_parser.cc" // lalr1.cc:919
+  case 170:
+#line 651 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1277 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 648 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1333 "dhcp6_parser.cc" // lalr1.cc:919
+  case 171:
+#line 652 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1283 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 651 "dhcp6_parser.yy" // lalr1.cc:919
+  case 172:
+#line 655 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1341 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1291 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 653 "dhcp6_parser.yy" // lalr1.cc:919
+  case 173:
+#line 657 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1351 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1301 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 172:
-#line 659 "dhcp6_parser.yy" // lalr1.cc:919
+  case 174:
+#line 663 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1359 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 173:
-#line 661 "dhcp6_parser.yy" // lalr1.cc:919
+  case 175:
+#line 665 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1369 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 667 "dhcp6_parser.yy" // lalr1.cc:919
+  case 176:
+#line 671 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1377 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1327 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 669 "dhcp6_parser.yy" // lalr1.cc:919
+  case 177:
+#line 673 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1387 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1337 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 675 "dhcp6_parser.yy" // lalr1.cc:919
+  case 178:
+#line 679 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1396 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1346 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 680 "dhcp6_parser.yy" // lalr1.cc:919
+  case 179:
+#line 684 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1404 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1354 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 682 "dhcp6_parser.yy" // lalr1.cc:919
+  case 180:
+#line 686 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr name(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)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1414 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1364 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 688 "dhcp6_parser.yy" // lalr1.cc:919
+  case 181:
+#line 692 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1423 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 693 "dhcp6_parser.yy" // lalr1.cc:919
+  case 182:
+#line 697 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1432 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 698 "dhcp6_parser.yy" // lalr1.cc:919
+  case 183:
+#line 702 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1441 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 703 "dhcp6_parser.yy" // lalr1.cc:919
+  case 184:
+#line 707 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1450 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1400 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 183:
-#line 708 "dhcp6_parser.yy" // lalr1.cc:919
+  case 185:
+#line 712 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1459 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1409 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 184:
-#line 713 "dhcp6_parser.yy" // lalr1.cc:919
+  case 186:
+#line 717 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1468 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 718 "dhcp6_parser.yy" // lalr1.cc:919
+  case 187:
+#line 722 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1477 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1427 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 723 "dhcp6_parser.yy" // lalr1.cc:919
+  case 188:
+#line 727 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1486 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1436 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 728 "dhcp6_parser.yy" // lalr1.cc:919
+  case 189:
+#line 732 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1494 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1444 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 730 "dhcp6_parser.yy" // lalr1.cc:919
+  case 190:
+#line 734 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1504 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1454 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 189:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:919
+  case 191:
+#line 740 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1513 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1463 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 190:
-#line 741 "dhcp6_parser.yy" // lalr1.cc:919
+  case 192:
+#line 745 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1521 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1471 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 191:
-#line 743 "dhcp6_parser.yy" // lalr1.cc:919
+  case 193:
+#line 747 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1531 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1481 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 749 "dhcp6_parser.yy" // lalr1.cc:919
+  case 194:
+#line 753 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1489 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 195:
+#line 755 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("consistency", c);
+    ctx.leave();
+}
+#line 1499 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 196:
+#line 761 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1507 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 197:
+#line 763 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("serial-consistency", c);
+    ctx.leave();
+}
+#line 1517 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 198:
+#line 769 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1542 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1528 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 754 "dhcp6_parser.yy" // lalr1.cc:919
+  case 199:
+#line 774 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1551 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1537 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 764 "dhcp6_parser.yy" // lalr1.cc:919
+  case 203:
+#line 784 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1559 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 766 "dhcp6_parser.yy" // lalr1.cc:919
+  case 204:
+#line 786 "dhcp6_parser.yy" // lalr1.cc:859
     {
 
-    if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
-         (string(yystack_[0].value.as < std::string > ()) == "warn") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix") ||
-         (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
-         (string(yystack_[0].value.as < std::string > ()) == "del")) {
-        ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
+         (string(yystack_[0].value.as< std::string > ()) == "warn") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix") ||
+         (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
+         (string(yystack_[0].value.as< std::string > ()) == "del")) {
+        ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
         ctx.stack_.back()->set("lease-checks", user);
         ctx.leave();
     } else {
-        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
+        error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1579 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1565 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 782 "dhcp6_parser.yy" // lalr1.cc:919
+  case 205:
+#line 802 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1590 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 787 "dhcp6_parser.yy" // lalr1.cc:919
+  case 206:
+#line 807 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1599 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1585 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 800 "dhcp6_parser.yy" // lalr1.cc:919
+  case 211:
+#line 820 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1608 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1594 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 805 "dhcp6_parser.yy" // lalr1.cc:919
+  case 212:
+#line 825 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1617 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1603 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 810 "dhcp6_parser.yy" // lalr1.cc:919
+  case 213:
+#line 830 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1628 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1614 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 815 "dhcp6_parser.yy" // lalr1.cc:919
+  case 214:
+#line 835 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1637 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1623 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 829 "dhcp6_parser.yy" // lalr1.cc:919
+  case 220:
+#line 849 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1646 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1632 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 834 "dhcp6_parser.yy" // lalr1.cc:919
+  case 221:
+#line 854 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1655 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1641 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 216:
-#line 841 "dhcp6_parser.yy" // lalr1.cc:919
+  case 222:
+#line 861 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1666 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1652 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 217:
-#line 846 "dhcp6_parser.yy" // lalr1.cc:919
+  case 223:
+#line 866 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1675 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1661 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 218:
-#line 851 "dhcp6_parser.yy" // lalr1.cc:919
+  case 224:
+#line 871 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1686 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1672 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 219:
-#line 856 "dhcp6_parser.yy" // lalr1.cc:919
+  case 225:
+#line 876 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1695 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1681 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 224:
-#line 869 "dhcp6_parser.yy" // lalr1.cc:919
+  case 230:
+#line 889 "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 1705 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1691 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 873 "dhcp6_parser.yy" // lalr1.cc:919
+  case 231:
+#line 893 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1715 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1701 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 879 "dhcp6_parser.yy" // lalr1.cc:919
+  case 232:
+#line 899 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1725 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1711 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 883 "dhcp6_parser.yy" // lalr1.cc:919
+  case 233:
+#line 903 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1735 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1721 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 898 "dhcp6_parser.yy" // lalr1.cc:919
+  case 239:
+#line 918 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1743 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1729 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:919
+  case 240:
+#line 920 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1753 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1739 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 906 "dhcp6_parser.yy" // lalr1.cc:919
+  case 241:
+#line 926 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1761 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1747 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 908 "dhcp6_parser.yy" // lalr1.cc:919
+  case 242:
+#line 928 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1770 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1756 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 914 "dhcp6_parser.yy" // lalr1.cc:919
+  case 243:
+#line 934 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1781 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1767 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 919 "dhcp6_parser.yy" // lalr1.cc:919
+  case 244:
+#line 939 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1791 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1777 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 937 "dhcp6_parser.yy" // lalr1.cc:919
+  case 253:
+#line 957 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1800 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1786 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 942 "dhcp6_parser.yy" // lalr1.cc:919
+  case 254:
+#line 962 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    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);
 }
-#line 1809 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1795 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 947 "dhcp6_parser.yy" // lalr1.cc:919
+  case 255:
+#line 967 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1818 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1804 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 952 "dhcp6_parser.yy" // lalr1.cc:919
+  case 256:
+#line 972 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1827 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1813 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 957 "dhcp6_parser.yy" // lalr1.cc:919
+  case 257:
+#line 977 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1836 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1822 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 962 "dhcp6_parser.yy" // lalr1.cc:919
+  case 258:
+#line 982 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1845 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1831 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 970 "dhcp6_parser.yy" // lalr1.cc:919
+  case 259:
+#line 990 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1856 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 975 "dhcp6_parser.yy" // lalr1.cc:919
+  case 260:
+#line 995 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1865 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1851 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 995 "dhcp6_parser.yy" // lalr1.cc:919
+  case 265:
+#line 1015 "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 1875 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 999 "dhcp6_parser.yy" // lalr1.cc:919
+  case 266:
+#line 1019 "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.
@@ -1897,267 +1883,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1901 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 1021 "dhcp6_parser.yy" // lalr1.cc:919
+  case 267:
+#line 1041 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1911 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1897 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 1025 "dhcp6_parser.yy" // lalr1.cc:919
+  case 268:
+#line 1045 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1921 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1907 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1059 "dhcp6_parser.yy" // lalr1.cc:919
+  case 291:
+#line 1079 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1929 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1915 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1061 "dhcp6_parser.yy" // lalr1.cc:919
+  case 292:
+#line 1081 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1939 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1925 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1067 "dhcp6_parser.yy" // lalr1.cc:919
+  case 293:
+#line 1087 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1947 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1933 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1069 "dhcp6_parser.yy" // lalr1.cc:919
+  case 294:
+#line 1089 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1957 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1943 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1075 "dhcp6_parser.yy" // lalr1.cc:919
+  case 295:
+#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1965 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1951 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1077 "dhcp6_parser.yy" // lalr1.cc:919
+  case 296:
+#line 1097 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 1975 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1961 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1083 "dhcp6_parser.yy" // lalr1.cc:919
+  case 297:
+#line 1103 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1983 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1969 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 292:
-#line 1085 "dhcp6_parser.yy" // lalr1.cc:919
+  case 298:
+#line 1105 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 1993 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1979 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 293:
-#line 1091 "dhcp6_parser.yy" // lalr1.cc:919
+  case 299:
+#line 1111 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2004 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1990 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1096 "dhcp6_parser.yy" // lalr1.cc:919
+  case 300:
+#line 1116 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2013 "dhcp6_parser.cc" // lalr1.cc:919
+#line 1999 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1101 "dhcp6_parser.yy" // lalr1.cc:919
+  case 301:
+#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2021 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2007 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1103 "dhcp6_parser.yy" // lalr1.cc:919
+  case 302:
+#line 1123 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2030 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2016 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1108 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2036 "dhcp6_parser.cc" // lalr1.cc:919
+  case 303:
+#line 1128 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2022 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1109 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2042 "dhcp6_parser.cc" // lalr1.cc:919
+  case 304:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2028 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 299:
-#line 1110 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2048 "dhcp6_parser.cc" // lalr1.cc:919
+  case 305:
+#line 1130 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2034 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 300:
-#line 1111 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2054 "dhcp6_parser.cc" // lalr1.cc:919
+  case 306:
+#line 1131 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 301:
-#line 1114 "dhcp6_parser.yy" // lalr1.cc:919
+  case 307:
+#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2063 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 302:
-#line 1119 "dhcp6_parser.yy" // lalr1.cc:919
+  case 308:
+#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2072 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1127 "dhcp6_parser.yy" // lalr1.cc:919
+  case 309:
+#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2083 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2069 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1132 "dhcp6_parser.yy" // lalr1.cc:919
+  case 310:
+#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2092 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2078 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1147 "dhcp6_parser.yy" // lalr1.cc:919
+  case 315:
+#line 1167 "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 2102 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 310:
-#line 1151 "dhcp6_parser.yy" // lalr1.cc:919
+  case 316:
+#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2110 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2096 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1182 "dhcp6_parser.yy" // lalr1.cc:919
+  case 336:
+#line 1202 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2121 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2107 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1187 "dhcp6_parser.yy" // lalr1.cc:919
+  case 337:
+#line 1207 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2130 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:919
+  case 338:
+#line 1215 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2139 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2125 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1198 "dhcp6_parser.yy" // lalr1.cc:919
+  case 339:
+#line 1218 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2147 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2133 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1214 "dhcp6_parser.yy" // lalr1.cc:919
+  case 344:
+#line 1234 "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 2157 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2143 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1218 "dhcp6_parser.yy" // lalr1.cc:919
+  case 345:
+#line 1238 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2165,21 +2151,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2169 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2155 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1229 "dhcp6_parser.yy" // lalr1.cc:919
+  case 346:
+#line 1249 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2179 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2165 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1233 "dhcp6_parser.yy" // lalr1.cc:919
+  case 347:
+#line 1253 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2187,283 +2173,283 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2191 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2177 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 357:
-#line 1265 "dhcp6_parser.yy" // lalr1.cc:919
+  case 363:
+#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2200 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2186 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 359:
-#line 1272 "dhcp6_parser.yy" // lalr1.cc:919
+  case 365:
+#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2208 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 360:
-#line 1274 "dhcp6_parser.yy" // lalr1.cc:919
+  case 366:
+#line 1294 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2218 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1280 "dhcp6_parser.yy" // lalr1.cc:919
+  case 367:
+#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2226 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1282 "dhcp6_parser.yy" // lalr1.cc:919
+  case 368:
+#line 1302 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2236 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2222 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1288 "dhcp6_parser.yy" // lalr1.cc:919
+  case 369:
+#line 1308 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2244 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1290 "dhcp6_parser.yy" // lalr1.cc:919
+  case 370:
+#line 1310 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2254 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2240 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1298 "dhcp6_parser.yy" // lalr1.cc:919
+  case 372:
+#line 1318 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2262 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2248 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1300 "dhcp6_parser.yy" // lalr1.cc:919
+  case 373:
+#line 1320 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2272 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2258 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1306 "dhcp6_parser.yy" // lalr1.cc:919
+  case 374:
+#line 1326 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2281 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2267 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1315 "dhcp6_parser.yy" // lalr1.cc:919
+  case 375:
+#line 1335 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2292 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2278 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1320 "dhcp6_parser.yy" // lalr1.cc:919
+  case 376:
+#line 1340 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2301 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2287 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1339 "dhcp6_parser.yy" // lalr1.cc:919
+  case 381:
+#line 1359 "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 2311 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2297 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1343 "dhcp6_parser.yy" // lalr1.cc:919
+  case 382:
+#line 1363 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2320 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:919
+  case 383:
+#line 1371 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2330 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2316 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1355 "dhcp6_parser.yy" // lalr1.cc:919
+  case 384:
+#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2339 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2325 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1388 "dhcp6_parser.yy" // lalr1.cc:919
+  case 399:
+#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2347 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2333 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1390 "dhcp6_parser.yy" // lalr1.cc:919
+  case 400:
+#line 1410 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2357 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2343 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1400 "dhcp6_parser.yy" // lalr1.cc:919
+  case 403:
+#line 1420 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2366 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2352 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 398:
-#line 1405 "dhcp6_parser.yy" // lalr1.cc:919
+  case 404:
+#line 1425 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2375 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2361 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1413 "dhcp6_parser.yy" // lalr1.cc:919
+  case 405:
+#line 1433 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2386 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2372 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1418 "dhcp6_parser.yy" // lalr1.cc:919
+  case 406:
+#line 1438 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2395 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2381 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1433 "dhcp6_parser.yy" // lalr1.cc:919
+  case 411:
+#line 1453 "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 2405 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1437 "dhcp6_parser.yy" // lalr1.cc:919
+  case 412:
+#line 1457 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2415 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2401 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1443 "dhcp6_parser.yy" // lalr1.cc:919
+  case 413:
+#line 1463 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2425 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2411 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1447 "dhcp6_parser.yy" // lalr1.cc:919
+  case 414:
+#line 1467 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2434 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2420 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:919
+  case 424:
+#line 1485 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2442 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1467 "dhcp6_parser.yy" // lalr1.cc:919
+  case 425:
+#line 1487 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2452 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1473 "dhcp6_parser.yy" // lalr1.cc:919
+  case 426:
+#line 1493 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2460 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1475 "dhcp6_parser.yy" // lalr1.cc:919
+  case 427:
+#line 1495 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
-    ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
     ConstElementPtr old = parent->get("user-context");
 
     // Handle already existing user context
@@ -2483,23 +2469,23 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2487 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2473 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1498 "dhcp6_parser.yy" // lalr1.cc:919
+  case 428:
+#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2495 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2481 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 423:
-#line 1500 "dhcp6_parser.yy" // lalr1.cc:919
+  case 429:
+#line 1520 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
-    ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     user_context->set("comment", comment);
 
     // Handle already existing user context
@@ -2520,41 +2506,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2524 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2510 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1528 "dhcp6_parser.yy" // lalr1.cc:919
+  case 430:
+#line 1548 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2535 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1533 "dhcp6_parser.yy" // lalr1.cc:919
+  case 431:
+#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2544 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2530 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1548 "dhcp6_parser.yy" // lalr1.cc:919
+  case 436:
+#line 1568 "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 2554 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1552 "dhcp6_parser.yy" // lalr1.cc:919
+  case 437:
+#line 1572 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2562,21 +2548,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2566 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2552 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1560 "dhcp6_parser.yy" // lalr1.cc:919
+  case 438:
+#line 1580 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2576 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2562 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1564 "dhcp6_parser.yy" // lalr1.cc:919
+  case 439:
+#line 1584 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2584,546 +2570,546 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2588 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2574 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1589 "dhcp6_parser.yy" // lalr1.cc:919
+  case 453:
+#line 1609 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2596 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2582 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1591 "dhcp6_parser.yy" // lalr1.cc:919
+  case 454:
+#line 1611 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2606 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2592 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1597 "dhcp6_parser.yy" // lalr1.cc:919
+  case 455:
+#line 1617 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2615 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2601 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1602 "dhcp6_parser.yy" // lalr1.cc:919
+  case 456:
+#line 1622 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2623 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2609 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1604 "dhcp6_parser.yy" // lalr1.cc:919
+  case 457:
+#line 1624 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 2633 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2619 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1610 "dhcp6_parser.yy" // lalr1.cc:919
+  case 458:
+#line 1630 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2642 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2628 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1615 "dhcp6_parser.yy" // lalr1.cc:919
+  case 459:
+#line 1635 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2651 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1623 "dhcp6_parser.yy" // lalr1.cc:919
+  case 460:
+#line 1643 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2662 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1628 "dhcp6_parser.yy" // lalr1.cc:919
+  case 461:
+#line 1648 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2671 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2657 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1641 "dhcp6_parser.yy" // lalr1.cc:919
+  case 466:
+#line 1661 "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 2681 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1645 "dhcp6_parser.yy" // lalr1.cc:919
+  case 467:
+#line 1665 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2690 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1650 "dhcp6_parser.yy" // lalr1.cc:919
+  case 468:
+#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2700 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1654 "dhcp6_parser.yy" // lalr1.cc:919
+  case 469:
+#line 1674 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2709 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2695 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1681 "dhcp6_parser.yy" // lalr1.cc:919
+  case 485:
+#line 1701 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2720 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1686 "dhcp6_parser.yy" // lalr1.cc:919
+  case 486:
+#line 1706 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2729 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2715 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1691 "dhcp6_parser.yy" // lalr1.cc:919
+  case 487:
+#line 1711 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2740 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2726 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1696 "dhcp6_parser.yy" // lalr1.cc:919
+  case 488:
+#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2749 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2735 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1701 "dhcp6_parser.yy" // lalr1.cc:919
+  case 489:
+#line 1721 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2757 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2743 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1703 "dhcp6_parser.yy" // lalr1.cc:919
+  case 490:
+#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2767 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2753 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1709 "dhcp6_parser.yy" // lalr1.cc:919
+  case 491:
+#line 1729 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2775 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2761 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1711 "dhcp6_parser.yy" // lalr1.cc:919
+  case 492:
+#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2785 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2771 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1717 "dhcp6_parser.yy" // lalr1.cc:919
+  case 493:
+#line 1737 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2793 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2779 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1719 "dhcp6_parser.yy" // lalr1.cc:919
+  case 494:
+#line 1739 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2803 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2789 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1725 "dhcp6_parser.yy" // lalr1.cc:919
+  case 495:
+#line 1745 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2811 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2797 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1727 "dhcp6_parser.yy" // lalr1.cc:919
+  case 496:
+#line 1747 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2821 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1733 "dhcp6_parser.yy" // lalr1.cc:919
+  case 497:
+#line 1753 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2832 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2818 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1738 "dhcp6_parser.yy" // lalr1.cc:919
+  case 498:
+#line 1758 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2841 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2827 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1746 "dhcp6_parser.yy" // lalr1.cc:919
+  case 499:
+#line 1766 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2852 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2838 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1751 "dhcp6_parser.yy" // lalr1.cc:919
+  case 500:
+#line 1771 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2861 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2847 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 497:
-#line 1760 "dhcp6_parser.yy" // lalr1.cc:919
+  case 503:
+#line 1780 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2869 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2855 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 498:
-#line 1762 "dhcp6_parser.yy" // lalr1.cc:919
+  case 504:
+#line 1782 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2879 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2865 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 499:
-#line 1771 "dhcp6_parser.yy" // lalr1.cc:919
+  case 505:
+#line 1791 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2890 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2876 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 500:
-#line 1776 "dhcp6_parser.yy" // lalr1.cc:919
+  case 506:
+#line 1796 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2899 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2885 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1785 "dhcp6_parser.yy" // lalr1.cc:919
+  case 509:
+#line 1805 "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 2909 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2895 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1789 "dhcp6_parser.yy" // lalr1.cc:919
+  case 510:
+#line 1809 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2919 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2905 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 517:
-#line 1814 "dhcp6_parser.yy" // lalr1.cc:919
+  case 523:
+#line 1834 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2927 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 518:
-#line 1816 "dhcp6_parser.yy" // lalr1.cc:919
+  case 524:
+#line 1836 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2937 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2923 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 519:
-#line 1822 "dhcp6_parser.yy" // lalr1.cc:919
+  case 525:
+#line 1842 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 2946 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2932 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1830 "dhcp6_parser.yy" // lalr1.cc:919
+  case 526:
+#line 1850 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 2957 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2943 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 521:
-#line 1835 "dhcp6_parser.yy" // lalr1.cc:919
+  case 527:
+#line 1855 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2968 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2954 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1857 "dhcp6_parser.yy" // lalr1.cc:919
+  case 539:
+#line 1877 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2976 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2962 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1859 "dhcp6_parser.yy" // lalr1.cc:919
+  case 540:
+#line 1879 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2985 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2971 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1864 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2991 "dhcp6_parser.cc" // lalr1.cc:919
+  case 541:
+#line 1884 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 2977 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 536:
-#line 1865 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2997 "dhcp6_parser.cc" // lalr1.cc:919
+  case 542:
+#line 1885 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 2983 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 537:
-#line 1866 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3003 "dhcp6_parser.cc" // lalr1.cc:919
+  case 543:
+#line 1886 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 538:
-#line 1869 "dhcp6_parser.yy" // lalr1.cc:919
+  case 544:
+#line 1889 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3012 "dhcp6_parser.cc" // lalr1.cc:919
+#line 2998 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 539:
-#line 1874 "dhcp6_parser.yy" // lalr1.cc:919
+  case 545:
+#line 1894 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3020 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3006 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 540:
-#line 1876 "dhcp6_parser.yy" // lalr1.cc:919
+  case 546:
+#line 1896 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3030 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3016 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 541:
-#line 1882 "dhcp6_parser.yy" // lalr1.cc:919
+  case 547:
+#line 1902 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3039 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3025 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 542:
-#line 1887 "dhcp6_parser.yy" // lalr1.cc:919
+  case 548:
+#line 1907 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3048 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3034 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 543:
-#line 1894 "dhcp6_parser.yy" // lalr1.cc:919
+  case 549:
+#line 1914 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3057 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3043 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 544:
-#line 1901 "dhcp6_parser.yy" // lalr1.cc:919
+  case 550:
+#line 1921 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3068 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3054 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 545:
-#line 1906 "dhcp6_parser.yy" // lalr1.cc:919
+  case 551:
+#line 1926 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3077 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3063 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 553:
-#line 1922 "dhcp6_parser.yy" // lalr1.cc:919
+  case 559:
+#line 1942 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3085 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3071 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 554:
-#line 1924 "dhcp6_parser.yy" // lalr1.cc:919
+  case 560:
+#line 1944 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3095 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3081 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 555:
-#line 1930 "dhcp6_parser.yy" // lalr1.cc:919
+  case 561:
+#line 1950 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3103 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3089 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 556:
-#line 1932 "dhcp6_parser.yy" // lalr1.cc:919
+  case 562:
+#line 1952 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr name(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)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3113 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3099 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 557:
-#line 1940 "dhcp6_parser.yy" // lalr1.cc:919
+  case 563:
+#line 1960 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3121 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3107 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 558:
-#line 1942 "dhcp6_parser.yy" // lalr1.cc:919
+  case 564:
+#line 1962 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
+    ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
 
     // Doing this manually, because dhcp-queue-control
@@ -3157,640 +3143,636 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3161 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3147 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 559:
-#line 1980 "dhcp6_parser.yy" // lalr1.cc:919
+  case 565:
+#line 2000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3172 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 560:
-#line 1985 "dhcp6_parser.yy" // lalr1.cc:919
+  case 566:
+#line 2005 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3183 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3169 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 561:
-#line 1992 "dhcp6_parser.yy" // lalr1.cc:919
+  case 567:
+#line 2012 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3193 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3179 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 562:
-#line 1996 "dhcp6_parser.yy" // lalr1.cc:919
+  case 568:
+#line 2016 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3203 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 583:
-#line 2026 "dhcp6_parser.yy" // lalr1.cc:919
+  case 589:
+#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3212 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3198 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 584:
-#line 2031 "dhcp6_parser.yy" // lalr1.cc:919
+  case 590:
+#line 2051 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3220 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3206 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 585:
-#line 2033 "dhcp6_parser.yy" // lalr1.cc:919
+  case 591:
+#line 2053 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3230 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3216 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2039 "dhcp6_parser.yy" // lalr1.cc:919
+  case 592:
+#line 2059 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3238 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 587:
-#line 2041 "dhcp6_parser.yy" // lalr1.cc:919
+  case 593:
+#line 2061 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3248 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3234 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 588:
-#line 2047 "dhcp6_parser.yy" // lalr1.cc:919
+  case 594:
+#line 2067 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3257 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3243 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 589:
-#line 2052 "dhcp6_parser.yy" // lalr1.cc:919
+  case 595:
+#line 2072 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3265 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3251 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 590:
-#line 2054 "dhcp6_parser.yy" // lalr1.cc:919
+  case 596:
+#line 2074 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3275 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3261 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 591:
-#line 2060 "dhcp6_parser.yy" // lalr1.cc:919
+  case 597:
+#line 2080 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3284 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3270 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 592:
-#line 2065 "dhcp6_parser.yy" // lalr1.cc:919
+  case 598:
+#line 2085 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3293 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3279 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 593:
-#line 2070 "dhcp6_parser.yy" // lalr1.cc:919
+  case 599:
+#line 2090 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3301 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3287 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 594:
-#line 2072 "dhcp6_parser.yy" // lalr1.cc:919
+  case 600:
+#line 2092 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3310 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3296 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 595:
-#line 2078 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3316 "dhcp6_parser.cc" // lalr1.cc:919
+  case 601:
+#line 2098 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3302 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 596:
-#line 2079 "dhcp6_parser.yy" // lalr1.cc:919
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3322 "dhcp6_parser.cc" // lalr1.cc:919
+  case 602:
+#line 2099 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3308 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 597:
-#line 2082 "dhcp6_parser.yy" // lalr1.cc:919
+  case 603:
+#line 2102 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3330 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3316 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 598:
-#line 2084 "dhcp6_parser.yy" // lalr1.cc:919
+  case 604:
+#line 2104 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3340 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3326 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 599:
-#line 2090 "dhcp6_parser.yy" // lalr1.cc:919
+  case 605:
+#line 2110 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3349 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3335 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 600:
-#line 2095 "dhcp6_parser.yy" // lalr1.cc:919
+  case 606:
+#line 2115 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3358 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3344 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 601:
-#line 2100 "dhcp6_parser.yy" // lalr1.cc:919
+  case 607:
+#line 2120 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3366 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3352 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 602:
-#line 2102 "dhcp6_parser.yy" // lalr1.cc:919
+  case 608:
+#line 2122 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3375 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3361 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 603:
-#line 2108 "dhcp6_parser.yy" // lalr1.cc:919
+  case 609:
+#line 2128 "dhcp6_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3383 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3369 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 604:
-#line 2111 "dhcp6_parser.yy" // lalr1.cc:919
+  case 610:
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3391 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3377 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 605:
-#line 2114 "dhcp6_parser.yy" // lalr1.cc:919
+  case 611:
+#line 2134 "dhcp6_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3399 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3385 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 606:
-#line 2117 "dhcp6_parser.yy" // lalr1.cc:919
+  case 612:
+#line 2137 "dhcp6_parser.yy" // lalr1.cc:859
     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3407 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3393 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 607:
-#line 2120 "dhcp6_parser.yy" // lalr1.cc:919
+  case 613:
+#line 2140 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3416 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3402 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 608:
-#line 2126 "dhcp6_parser.yy" // lalr1.cc:919
+  case 614:
+#line 2146 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3424 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 609:
-#line 2128 "dhcp6_parser.yy" // lalr1.cc:919
+  case 615:
+#line 2148 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3434 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3420 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 610:
-#line 2134 "dhcp6_parser.yy" // lalr1.cc:919
+  case 616:
+#line 2154 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3442 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 611:
-#line 2136 "dhcp6_parser.yy" // lalr1.cc:919
+  case 617:
+#line 2156 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3452 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 612:
-#line 2142 "dhcp6_parser.yy" // lalr1.cc:919
+  case 618:
+#line 2162 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3460 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 613:
-#line 2144 "dhcp6_parser.yy" // lalr1.cc:919
+  case 619:
+#line 2164 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3470 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3456 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 614:
-#line 2152 "dhcp6_parser.yy" // lalr1.cc:919
+  case 620:
+#line 2172 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3478 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3464 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 615:
-#line 2154 "dhcp6_parser.yy" // lalr1.cc:919
+  case 621:
+#line 2174 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3487 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3473 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 616:
-#line 2159 "dhcp6_parser.yy" // lalr1.cc:919
+  case 622:
+#line 2179 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3495 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3481 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 617:
-#line 2161 "dhcp6_parser.yy" // lalr1.cc:919
+  case 623:
+#line 2181 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3504 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3490 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 618:
-#line 2166 "dhcp6_parser.yy" // lalr1.cc:919
+  case 624:
+#line 2186 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3512 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3498 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 619:
-#line 2168 "dhcp6_parser.yy" // lalr1.cc:919
+  case 625:
+#line 2188 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
+    ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3521 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3507 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 620:
-#line 2175 "dhcp6_parser.yy" // lalr1.cc:919
+  case 626:
+#line 2195 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3532 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3518 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 621:
-#line 2180 "dhcp6_parser.yy" // lalr1.cc:919
+  case 627:
+#line 2200 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3542 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3528 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 622:
-#line 2186 "dhcp6_parser.yy" // lalr1.cc:919
+  case 628:
+#line 2206 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3552 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3538 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 623:
-#line 2190 "dhcp6_parser.yy" // lalr1.cc:919
+  case 629:
+#line 2210 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3561 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3547 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 627:
-#line 2204 "dhcp6_parser.yy" // lalr1.cc:919
+  case 633:
+#line 2224 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3572 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 628:
-#line 2209 "dhcp6_parser.yy" // lalr1.cc:919
+  case 634:
+#line 2229 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3581 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 629:
-#line 2219 "dhcp6_parser.yy" // lalr1.cc:919
+  case 635:
+#line 2239 "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 3592 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3578 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 630:
-#line 2224 "dhcp6_parser.yy" // lalr1.cc:919
+  case 636:
+#line 2244 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3601 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 631:
-#line 2229 "dhcp6_parser.yy" // lalr1.cc:919
+  case 637:
+#line 2249 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3611 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3597 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 632:
-#line 2233 "dhcp6_parser.yy" // lalr1.cc:919
+  case 638:
+#line 2253 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3619 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3605 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 636:
-#line 2249 "dhcp6_parser.yy" // lalr1.cc:919
+  case 642:
+#line 2269 "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 3630 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3616 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 637:
-#line 2254 "dhcp6_parser.yy" // lalr1.cc:919
+  case 643:
+#line 2274 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3639 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3625 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 640:
-#line 2266 "dhcp6_parser.yy" // lalr1.cc:919
+  case 646:
+#line 2286 "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 3649 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3635 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 641:
-#line 2270 "dhcp6_parser.yy" // lalr1.cc:919
+  case 647:
+#line 2290 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3657 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3643 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 651:
-#line 2287 "dhcp6_parser.yy" // lalr1.cc:919
+  case 657:
+#line 2307 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3666 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3652 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 652:
-#line 2292 "dhcp6_parser.yy" // lalr1.cc:919
+  case 658:
+#line 2312 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3674 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3660 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 653:
-#line 2294 "dhcp6_parser.yy" // lalr1.cc:919
+  case 659:
+#line 2314 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3684 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3670 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 654:
-#line 2300 "dhcp6_parser.yy" // lalr1.cc:919
+  case 660:
+#line 2320 "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 3695 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3681 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 655:
-#line 2305 "dhcp6_parser.yy" // lalr1.cc:919
+  case 661:
+#line 2325 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3704 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3690 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 658:
-#line 2314 "dhcp6_parser.yy" // lalr1.cc:919
+  case 664:
+#line 2334 "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 3714 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3700 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 659:
-#line 2318 "dhcp6_parser.yy" // lalr1.cc:919
+  case 665:
+#line 2338 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3722 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3708 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 666:
-#line 2332 "dhcp6_parser.yy" // lalr1.cc:919
+  case 672:
+#line 2352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3730 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 667:
-#line 2334 "dhcp6_parser.yy" // lalr1.cc:919
+  case 673:
+#line 2354 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3740 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3726 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 668:
-#line 2340 "dhcp6_parser.yy" // lalr1.cc:919
+  case 674:
+#line 2360 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3749 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3735 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 669:
-#line 2345 "dhcp6_parser.yy" // lalr1.cc:919
+  case 675:
+#line 2365 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3758 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3744 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 670:
-#line 2350 "dhcp6_parser.yy" // lalr1.cc:919
+  case 676:
+#line 2370 "dhcp6_parser.yy" // lalr1.cc:859
     {
-    ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3767 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3753 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3771 "dhcp6_parser.cc" // lalr1.cc:919
+#line 3757 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
         }
-#if YY_EXCEPTIONS
       catch (const syntax_error& yyexc)
         {
-          YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
           error (yyexc);
           YYERROR;
         }
-#endif // YY_EXCEPTIONS
       YY_SYMBOL_PRINT ("-> $$ =", yylhs);
       yypop_ (yylen);
       yylen = 0;
       YY_STACK_PRINT ();
 
       // Shift the result of the reduction.
-      yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
+      yypush_ (YY_NULLPTR, yylhs);
     }
     goto yynewstate;
 
-
   /*--------------------------------------.
   | yyerrlab -- here on detecting error.  |
   `--------------------------------------*/
@@ -3827,18 +3809,19 @@ namespace isc { namespace dhcp {
   | yyerrorlab -- error raised explicitly by YYERROR.  |
   `---------------------------------------------------*/
   yyerrorlab:
-    /* Pacify compilers when the user code never invokes YYERROR and
-       the label yyerrorlab therefore never appears in user code.  */
-    if (false)
-      YYERROR;
 
+    /* Pacify compilers like GCC when the user code never invokes
+       YYERROR and the label yyerrorlab therefore never appears in user
+       code.  */
+    if (false)
+      goto yyerrorlab;
+    yyerror_range[1].location = yystack_[yylen - 1].location;
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYERROR.  */
     yypop_ (yylen);
     yylen = 0;
     goto yyerrlab1;
 
-
   /*-------------------------------------------------------------.
   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   `-------------------------------------------------------------*/
@@ -3875,30 +3858,20 @@ namespace isc { namespace dhcp {
 
       // Shift the error token.
       error_token.state = yyn;
-      yypush_ ("Shifting", YY_MOVE (error_token));
+      yypush_ ("Shifting", error_token);
     }
     goto yynewstate;
 
-
-  /*-------------------------------------.
-  | yyacceptlab -- YYACCEPT comes here.  |
-  `-------------------------------------*/
+    // Accept.
   yyacceptlab:
     yyresult = 0;
     goto yyreturn;
 
-
-  /*-----------------------------------.
-  | yyabortlab -- YYABORT comes here.  |
-  `-----------------------------------*/
+    // Abort.
   yyabortlab:
     yyresult = 1;
     goto yyreturn;
 
-
-  /*-----------------------------------------------------.
-  | yyreturn -- parsing is finished, return the result.  |
-  `-----------------------------------------------------*/
   yyreturn:
     if (!yyla.empty ())
       yy_destroy_ ("Cleanup: discarding lookahead", yyla);
@@ -3914,12 +3887,12 @@ namespace isc { namespace dhcp {
 
     return yyresult;
   }
-#if YY_EXCEPTIONS
     catch (...)
       {
-        YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+                 << std::endl;
         // Do not try to display the values of the reclaimed symbols,
-        // as their printers might throw an exception.
+        // as their printer might throw an exception.
         if (!yyla.empty ())
           yy_destroy_ (YY_NULLPTR, yyla);
 
@@ -3930,13 +3903,12 @@ namespace isc { namespace dhcp {
           }
         throw;
       }
-#endif // YY_EXCEPTIONS
   }
 
   void
   Dhcp6Parser::error (const syntax_error& yyexc)
   {
-    error (yyexc.location, yyexc.what ());
+    error (yyexc.location, yyexc.what());
   }
 
   // Generate an error message.
@@ -4012,13 +3984,12 @@ namespace isc { namespace dhcp {
         case N:                               \
           yyformat = S;                       \
         break
-      default: // Avoid compiler warnings.
-        YYCASE_ (0, YY_("syntax error"));
-        YYCASE_ (1, YY_("syntax error, unexpected %s"));
-        YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
-        YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-        YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-        YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+        YYCASE_(0, YY_("syntax error"));
+        YYCASE_(1, YY_("syntax error, unexpected %s"));
+        YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+        YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+        YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+        YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 #undef YYCASE_
       }
 
@@ -4037,126 +4008,127 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -827;
+  const short int Dhcp6Parser::yypact_ninf_ = -833;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
-  const short
+  const short int
   Dhcp6Parser::yypact_[] =
   {
-     417,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,    44,    65,    50,    58,
-      66,    70,    78,   101,   111,   118,   122,   126,   138,   147,
-     158,   169,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,    65,  -120,    27,    69,    23,   237,   196,    36,
-     181,   137,    71,   200,   -37,   368,    54,   174,  -827,   197,
-     203,   224,   235,   242,  -827,  -827,  -827,  -827,  -827,   265,
-    -827,    42,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,   296,   298,   317,   319,   323,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   345,  -827,  -827,  -827,
-    -827,    68,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   355,  -827,   136,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   361,
-     364,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   165,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,   185,  -827,  -827,  -827,  -827,  -827,   365,  -827,   383,
-     387,  -827,  -827,  -827,  -827,  -827,  -827,   188,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,   334,   255,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,   343,  -827,  -827,   402,  -827,
-    -827,  -827,   405,  -827,  -827,   408,   328,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     414,   415,  -827,  -827,  -827,  -827,   412,   419,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     227,  -827,  -827,  -827,   421,  -827,  -827,   422,  -827,   424,
-     433,  -827,  -827,   444,   446,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   238,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     253,  -827,  -827,  -827,   256,  -827,  -827,  -827,    65,    65,
-    -827,   252,   447,   448,   449,   450,   451,  -827,    27,  -827,
-     454,   457,   460,   461,   462,   463,   297,   299,   300,   301,
-     304,   464,   466,   470,   473,   475,   476,   477,   478,   479,
-     480,   481,   483,   484,   485,   499,   500,   501,   336,   502,
-     503,   505,    69,  -827,   508,   339,    23,  -827,   510,   512,
-     513,   514,   515,   348,   349,   517,   520,   521,   237,  -827,
-     522,   196,  -827,   523,   356,   528,   362,   363,    36,  -827,
-     529,   532,   533,   536,   537,   538,   539,  -827,   181,  -827,
-     540,   541,   374,   545,   547,   548,   379,  -827,    71,   550,
-     381,   382,  -827,   200,   553,   554,   190,  -827,   386,   555,
-     558,   393,   563,   396,   398,   565,   567,   416,   418,   584,
-     585,   587,   589,   368,  -827,   590,    54,  -827,   591,   174,
-    -827,  -827,  -827,   592,   594,   595,    65,    65,    65,  -827,
-     428,   596,   597,   598,   599,   602,  -827,  -827,  -827,  -827,
-    -827,   437,   605,   606,   607,   608,   442,   366,   609,   611,
-     612,   613,   614,   615,   617,   618,   619,   620,  -827,   621,
-     608,   622,  -827,   625,  -827,  -827,   627,   628,   453,   465,
-     467,  -827,  -827,   625,   468,   630,  -827,   469,  -827,   471,
-    -827,   472,  -827,  -827,  -827,   625,   625,   625,   474,   482,
-     486,   487,  -827,   488,   489,  -827,   490,   491,   492,  -827,
-    -827,   493,  -827,  -827,  -827,   494,    65,  -827,  -827,   495,
-     496,  -827,   497,  -827,  -827,   176,   498,  -827,  -827,   -34,
-     504,   506,   507,  -827,   629,  -827,   636,  -827,    65,    69,
-      54,  -827,  -827,  -827,  -827,   174,    23,   184,   184,   637,
-    -827,   639,   640,   641,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   642,   -52,    65,   139,   542,   643,   644,   645,
-      57,   112,    12,  -827,   368,  -827,  -827,   647,   648,  -827,
-    -827,  -827,  -827,  -827,   -49,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   649,
-     637,  -827,   283,   284,   285,   293,  -827,  -827,  -827,  -827,
-     665,   666,   667,   668,   669,  -827,   670,   672,  -827,   675,
-     676,   677,  -827,   310,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   311,  -827,   678,   616,  -827,  -827,   679,   680,
-    -827,  -827,   681,   683,  -827,  -827,   682,   686,  -827,  -827,
-     684,   688,  -827,  -827,  -827,   140,  -827,  -827,  -827,   687,
-    -827,  -827,  -827,   163,  -827,  -827,  -827,  -827,   312,  -827,
-    -827,  -827,   189,  -827,  -827,   689,   691,  -827,  -827,   690,
-     694,  -827,   695,   696,   697,   698,   699,   700,   321,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   701,   702,
-     703,  -827,  -827,  -827,  -827,   327,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   331,  -827,  -827,
-    -827,   335,   511,  -827,   692,   705,  -827,  -827,   704,   706,
-    -827,  -827,  -827,   707,  -827,  -827,   254,  -827,   708,  -827,
-    -827,  -827,  -827,   709,   712,   713,   714,   549,   518,   551,
-     546,   552,   715,   556,   557,   718,   559,   560,   561,   184,
-    -827,  -827,   184,  -827,   637,   237,  -827,   639,    71,  -827,
-     640,   200,  -827,   641,   390,  -827,   642,   -52,  -827,  -827,
-     139,  -827,   721,   542,  -827,   250,   643,  -827,   181,  -827,
-     644,   -37,  -827,   645,   562,   564,   566,   568,   569,   570,
-      57,  -827,   722,   723,   571,   572,   573,   112,  -827,   726,
-     729,    12,  -827,  -827,  -827,   731,   736,   196,  -827,   647,
-      36,  -827,   648,   742,  -827,    26,   649,  -827,  -827,   423,
-     576,   577,   578,  -827,  -827,  -827,  -827,  -827,   579,  -827,
-    -827,   580,  -827,  -827,  -827,  -827,   337,  -827,   338,  -827,
-     744,  -827,   745,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   354,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   583,  -827,  -827,   751,
-    -827,  -827,  -827,  -827,  -827,   748,   754,  -827,  -827,  -827,
-    -827,  -827,   750,  -827,   358,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,   302,   588,  -827,  -827,  -827,  -827,   593,
-     601,  -827,  -827,   633,   378,  -827,   385,  -827,   634,  -827,
-     756,  -827,  -827,  -827,  -827,  -827,   395,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   390,  -827,  -827,   757,
-     624,  -827,   250,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   758,   604,   759,    26,
-    -827,  -827,   635,  -827,  -827,   760,  -827,   654,  -827,  -827,
-     761,  -827,  -827,   347,  -827,     5,   761,  -827,  -827,   762,
-     763,   765,   397,  -827,  -827,  -827,  -827,  -827,  -827,   766,
-     646,   656,   660,     5,  -827,   674,  -827,  -827,  -827,  -827,
-    -827
+     415,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,    71,    65,    68,    82,
+      83,    90,    98,    99,   116,   151,   163,   200,   230,   236,
+     238,   251,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,    65,    94,    27,    69,    23,   227,   107,    35,
+     167,   233,    73,   268,   -52,   366,   138,   266,  -833,   285,
+     302,   312,   298,   324,  -833,  -833,  -833,  -833,  -833,   335,
+    -833,    37,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,   339,   345,   347,   351,   355,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   357,  -833,  -833,  -833,
+    -833,    54,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   361,  -833,    70,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,   364,
+     365,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,    76,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,   131,  -833,  -833,  -833,  -833,  -833,   367,  -833,   383,
+     387,  -833,  -833,  -833,  -833,  -833,  -833,   132,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,   334,   350,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,   397,  -833,  -833,   405,  -833,
+    -833,  -833,   408,  -833,  -833,   411,   419,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+     422,   436,  -833,  -833,  -833,  -833,   435,   441,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+     159,  -833,  -833,  -833,   442,  -833,  -833,   443,  -833,   444,
+     446,  -833,  -833,   447,   448,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,   177,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+     187,  -833,  -833,  -833,   244,  -833,  -833,  -833,    65,    65,
+    -833,   280,   450,   451,   454,   457,   460,  -833,    27,  -833,
+     461,   462,   463,   464,   465,   466,   271,   297,   299,   300,
+     303,   468,   472,   475,   476,   477,   478,   479,   480,   481,
+     483,   484,   485,   499,   500,   501,   502,   503,   340,   504,
+     505,   508,    69,  -833,   509,   341,    23,  -833,   512,   514,
+     515,   516,   517,   352,   348,   519,   521,   523,   227,  -833,
+     524,   107,  -833,   528,   360,   529,   362,   363,    35,  -833,
+     531,   536,   537,   538,   539,   540,   541,  -833,   167,  -833,
+     542,   545,   377,   548,   549,   550,   379,  -833,    73,   552,
+     381,   382,  -833,   268,   555,   556,   -37,  -833,   386,   561,
+     563,   394,   565,   396,   414,   567,   585,   416,   418,   586,
+     587,   589,   591,   366,  -833,   592,   138,  -833,   595,   266,
+    -833,  -833,  -833,   597,   596,   598,    65,    65,    65,  -833,
+     429,   599,   600,   601,   603,   606,  -833,  -833,  -833,  -833,
+    -833,   431,   607,   608,   609,   610,   445,   178,   611,   614,
+     615,   616,   617,   618,   620,   621,   622,   623,  -833,   625,
+     610,   626,  -833,   629,  -833,  -833,   630,   631,   449,   455,
+     467,  -833,  -833,   629,   469,   632,  -833,   470,  -833,   471,
+    -833,   473,  -833,  -833,  -833,   629,   629,   629,   474,   482,
+     486,   487,  -833,   488,   489,  -833,   490,   491,   492,  -833,
+    -833,   493,  -833,  -833,  -833,   494,    65,  -833,  -833,   495,
+     496,  -833,   497,  -833,  -833,    40,   498,  -833,  -833,   -33,
+     506,   507,   510,  -833,   633,  -833,   636,  -833,    65,    69,
+     138,  -833,  -833,  -833,  -833,   266,    23,   193,   193,   638,
+    -833,   641,   642,   643,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,   644,   -53,    65,   104,   530,   645,   646,   647,
+     204,   134,     8,  -833,   366,  -833,  -833,   649,   650,  -833,
+    -833,  -833,  -833,  -833,   -48,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,   651,
+     638,  -833,   265,   278,   323,   326,  -833,  -833,  -833,  -833,
+     667,   668,   669,   670,   671,  -833,   672,   673,  -833,  -833,
+    -833,   674,   677,   678,  -833,   327,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   330,  -833,   679,   624,
+    -833,  -833,   680,   681,  -833,  -833,   682,   684,  -833,  -833,
+     683,   687,  -833,  -833,   685,   689,  -833,  -833,  -833,   130,
+    -833,  -833,  -833,   688,  -833,  -833,  -833,   153,  -833,  -833,
+    -833,  -833,   338,  -833,  -833,  -833,   168,  -833,  -833,   690,
+     692,  -833,  -833,   691,   695,  -833,   696,   697,   698,   699,
+     700,   701,   342,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,   702,   703,   704,  -833,  -833,  -833,  -833,   349,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,   359,  -833,  -833,  -833,   378,   520,  -833,   693,   706,
+    -833,  -833,   705,   707,  -833,  -833,  -833,   708,  -833,  -833,
+     183,  -833,   709,  -833,  -833,  -833,  -833,   710,   713,   714,
+     715,   546,   547,   551,   553,   554,   717,   557,   558,   718,
+     720,   722,   559,   560,   562,   193,  -833,  -833,   193,  -833,
+     638,   227,  -833,   641,    73,  -833,   642,   268,  -833,   643,
+     388,  -833,   644,   -53,  -833,  -833,   104,  -833,   723,   530,
+    -833,   215,   645,  -833,   167,  -833,   646,   -52,  -833,   647,
+     566,   568,   569,   570,   571,   572,   204,  -833,   726,   731,
+     573,   574,   575,   134,  -833,   732,   733,     8,  -833,  -833,
+    -833,   735,   736,   107,  -833,   649,    35,  -833,   650,   746,
+    -833,   142,   651,  -833,  -833,   124,   578,   579,   580,  -833,
+    -833,  -833,  -833,  -833,   581,  -833,  -833,   582,   583,   584,
+    -833,  -833,  -833,  -833,   390,  -833,   400,  -833,   750,  -833,
+     751,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,   403,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,   588,  -833,  -833,   756,  -833,  -833,
+    -833,  -833,  -833,   754,   760,  -833,  -833,  -833,  -833,  -833,
+     757,  -833,   410,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,   103,   593,  -833,  -833,  -833,  -833,   594,   602,  -833,
+    -833,   605,   413,  -833,   417,  -833,   612,  -833,   764,  -833,
+    -833,  -833,  -833,  -833,   420,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   388,  -833,  -833,   765,
+     619,  -833,   215,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   766,   590,   767,   142,
+    -833,  -833,   634,  -833,  -833,   768,  -833,   637,  -833,  -833,
+     769,  -833,  -833,   272,  -833,    12,   769,  -833,  -833,   770,
+     775,   778,   434,  -833,  -833,  -833,  -833,  -833,  -833,   788,
+     628,   648,   652,    12,  -833,   639,  -833,  -833,  -833,  -833,
+    -833
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp6Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
@@ -4164,605 +4136,609 @@ namespace isc { namespace dhcp {
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     1,    47,    40,    36,    35,    32,    33,    34,
       39,     3,    37,    38,    60,     5,    72,     7,   120,     9,
-     261,    11,   407,    13,   432,    15,   462,    17,   332,    19,
-     340,    21,   377,    23,   226,    25,   561,    27,   631,    29,
-     622,    31,    49,    43,     0,     0,     0,     0,     0,     0,
-     464,     0,   342,   379,     0,     0,     0,     0,    51,     0,
-      50,     0,     0,    44,    70,   629,   614,   616,   618,     0,
-      69,     0,    62,    64,    66,    67,    68,    65,   109,   620,
+     267,    11,   413,    13,   438,    15,   468,    17,   338,    19,
+     346,    21,   383,    23,   232,    25,   567,    27,   637,    29,
+     628,    31,    49,    43,     0,     0,     0,     0,     0,     0,
+     470,     0,   348,   385,     0,     0,     0,     0,    51,     0,
+      50,     0,     0,    44,    70,   635,   620,   622,   624,     0,
+      69,     0,    62,    64,    66,    67,    68,    65,   109,   626,
      118,   132,   134,   136,     0,     0,     0,     0,     0,   116,
-     253,   330,   369,   420,   422,   295,   303,   199,   216,   207,
-     192,   499,   454,   218,   237,   520,     0,   544,   557,   559,
+     259,   336,   375,   426,   428,   301,   309,   205,   222,   213,
+     198,   505,   460,   224,   243,   526,     0,   550,   563,   565,
      108,     0,    74,    76,    77,    78,    79,    80,    81,   106,
       84,    85,    86,    87,   103,    88,    90,    89,    94,    95,
       82,   107,    83,    92,    93,   101,   102,   104,    91,    96,
       97,    98,    99,   100,   105,   129,     0,   128,     0,   122,
-     124,   125,   126,   127,   399,   424,   285,   287,   289,     0,
-       0,   293,   291,   493,   284,   265,   266,   267,   268,     0,
-     263,   272,   273,   274,   277,   278,   280,   275,   276,   269,
-     270,   282,   283,   271,   279,   281,   418,   417,   413,   414,
-     412,     0,   409,   411,   415,   416,   447,     0,   450,     0,
-       0,   446,   440,   441,   439,   444,   445,     0,   434,   436,
-     437,   442,   443,   438,   491,   479,   481,   483,   485,   487,
-     489,   478,   475,   476,   477,     0,   465,   466,   470,   471,
-     468,   472,   473,   474,   469,     0,   359,   177,     0,   363,
-     361,   366,     0,   355,   356,     0,   343,   344,   346,   358,
-     347,   348,   349,   365,   350,   351,   352,   353,   354,   393,
-       0,     0,   391,   392,   395,   396,     0,   380,   381,   383,
-     384,   385,   386,   387,   388,   389,   390,   233,   235,   230,
-       0,   228,   231,   232,     0,   584,   586,     0,   589,     0,
-       0,   593,   597,     0,     0,   601,   608,   610,   612,   582,
-     580,   581,     0,   563,   565,   566,   567,   568,   569,   570,
-     571,   572,   573,   574,   575,   576,   577,   578,   579,   636,
-       0,   633,   635,   627,     0,   624,   626,    48,     0,     0,
+     124,   125,   126,   127,   405,   430,   291,   293,   295,     0,
+       0,   299,   297,   499,   290,   271,   272,   273,   274,     0,
+     269,   278,   279,   280,   283,   284,   286,   281,   282,   275,
+     276,   288,   289,   277,   285,   287,   424,   423,   419,   420,
+     418,     0,   415,   417,   421,   422,   453,     0,   456,     0,
+       0,   452,   446,   447,   445,   450,   451,     0,   440,   442,
+     443,   448,   449,   444,   497,   485,   487,   489,   491,   493,
+     495,   484,   481,   482,   483,     0,   471,   472,   476,   477,
+     474,   478,   479,   480,   475,     0,   365,   179,     0,   369,
+     367,   372,     0,   361,   362,     0,   349,   350,   352,   364,
+     353,   354,   355,   371,   356,   357,   358,   359,   360,   399,
+       0,     0,   397,   398,   401,   402,     0,   386,   387,   389,
+     390,   391,   392,   393,   394,   395,   396,   239,   241,   236,
+       0,   234,   237,   238,     0,   590,   592,     0,   595,     0,
+       0,   599,   603,     0,     0,   607,   614,   616,   618,   588,
+     586,   587,     0,   569,   571,   572,   573,   574,   575,   576,
+     577,   578,   579,   580,   581,   582,   583,   584,   585,   642,
+       0,   639,   641,   633,     0,   630,   632,    48,     0,     0,
       41,     0,     0,     0,     0,     0,     0,    59,     0,    61,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    73,     0,     0,     0,   121,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   262,
-       0,     0,   408,     0,     0,     0,     0,     0,     0,   433,
-       0,     0,     0,     0,     0,     0,     0,   463,     0,   333,
-       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
-       0,     0,   378,     0,     0,     0,     0,   227,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   268,
+       0,     0,   414,     0,     0,     0,     0,     0,     0,   439,
+       0,     0,     0,     0,     0,     0,     0,   469,     0,   339,
+       0,     0,     0,     0,     0,     0,     0,   347,     0,     0,
+       0,     0,   384,     0,     0,     0,     0,   233,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   562,     0,     0,   632,     0,     0,
-     623,    52,    45,     0,     0,     0,     0,     0,     0,    63,
+       0,     0,     0,     0,   568,     0,     0,   638,     0,     0,
+     629,    52,    45,     0,     0,     0,     0,     0,     0,    63,
        0,     0,     0,     0,     0,     0,   111,   112,   113,   114,
      115,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   543,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   549,     0,
        0,     0,    75,     0,   131,   123,     0,     0,     0,     0,
-       0,   301,   302,     0,     0,     0,   264,     0,   410,     0,
-     449,     0,   452,   453,   435,     0,     0,     0,     0,     0,
-       0,     0,   467,     0,     0,   357,     0,     0,     0,   368,
-     345,     0,   397,   398,   382,     0,     0,   229,   583,     0,
-       0,   588,     0,   591,   592,     0,     0,   599,   600,     0,
-       0,     0,     0,   564,     0,   634,     0,   625,     0,     0,
-       0,   615,   617,   619,   110,     0,     0,     0,     0,   138,
-     117,   255,   334,   371,    42,   421,   423,   297,   298,   299,
-     300,   296,   305,     0,    49,     0,     0,     0,   456,   220,
-       0,     0,     0,   558,     0,    53,   130,   401,   426,   286,
-     288,   290,   294,   292,     0,   419,   448,   451,   492,   480,
-     482,   484,   486,   488,   490,   360,   178,   364,   362,   367,
-     394,   234,   236,   585,   587,   590,   595,   596,   594,   598,
-     603,   604,   605,   606,   607,   602,   609,   611,   613,     0,
-     138,    46,     0,     0,     0,     0,   164,   170,   172,   174,
-       0,     0,     0,     0,     0,   187,     0,     0,   190,     0,
-       0,     0,   163,     0,   144,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   158,   159,   160,   161,   156,
-     157,   162,     0,   142,     0,   139,   140,   259,     0,   256,
-     257,   338,     0,   335,   336,   375,     0,   372,   373,   309,
-       0,   306,   307,   205,   206,     0,   201,   203,   204,     0,
-     214,   215,   211,     0,   209,   212,   213,   197,     0,   194,
-     196,   503,     0,   501,   460,     0,   457,   458,   224,     0,
-     221,   222,     0,     0,     0,     0,     0,     0,     0,   239,
-     241,   242,   243,   244,   245,   246,   533,   539,     0,     0,
-       0,   532,   529,   530,   531,     0,   522,   524,   527,   525,
-     526,   528,   553,   555,   552,   550,   551,     0,   546,   548,
-     549,     0,    55,   405,     0,   402,   403,   430,     0,   427,
-     428,   497,   496,     0,   495,   640,     0,   638,     0,    71,
-     630,   621,   119,     0,     0,     0,     0,     0,     0,     0,
+       0,   307,   308,     0,     0,     0,   270,     0,   416,     0,
+     455,     0,   458,   459,   441,     0,     0,     0,     0,     0,
+       0,     0,   473,     0,     0,   363,     0,     0,     0,   374,
+     351,     0,   403,   404,   388,     0,     0,   235,   589,     0,
+       0,   594,     0,   597,   598,     0,     0,   605,   606,     0,
+       0,     0,     0,   570,     0,   640,     0,   631,     0,     0,
+       0,   621,   623,   625,   110,     0,     0,     0,     0,   138,
+     117,   261,   340,   377,    42,   427,   429,   303,   304,   305,
+     306,   302,   311,     0,    49,     0,     0,     0,   462,   226,
+       0,     0,     0,   564,     0,    53,   130,   407,   432,   292,
+     294,   296,   300,   298,     0,   425,   454,   457,   498,   486,
+     488,   490,   492,   494,   496,   366,   180,   370,   368,   373,
+     400,   240,   242,   591,   593,   596,   601,   602,   600,   604,
+     609,   610,   611,   612,   613,   608,   615,   617,   619,     0,
+     138,    46,     0,     0,     0,     0,   166,   172,   174,   176,
+       0,     0,     0,     0,     0,   189,     0,     0,   192,   194,
+     196,     0,     0,     0,   165,     0,   144,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   158,   159,   160,
+     161,   156,   157,   162,   163,   164,     0,   142,     0,   139,
+     140,   265,     0,   262,   263,   344,     0,   341,   342,   381,
+       0,   378,   379,   315,     0,   312,   313,   211,   212,     0,
+     207,   209,   210,     0,   220,   221,   217,     0,   215,   218,
+     219,   203,     0,   200,   202,   509,     0,   507,   466,     0,
+     463,   464,   230,     0,   227,   228,     0,     0,     0,     0,
+       0,     0,     0,   245,   247,   248,   249,   250,   251,   252,
+     539,   545,     0,     0,     0,   538,   535,   536,   537,     0,
+     528,   530,   533,   531,   532,   534,   559,   561,   558,   556,
+     557,     0,   552,   554,   555,     0,    55,   411,     0,   408,
+     409,   436,     0,   433,   434,   503,   502,     0,   501,   646,
+       0,   644,     0,    71,   636,   627,   119,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     133,   135,     0,   137,     0,     0,   254,     0,   342,   331,
-       0,   379,   370,     0,     0,   304,     0,     0,   200,   217,
-       0,   208,     0,     0,   193,   505,     0,   500,   464,   455,
-       0,     0,   219,     0,     0,     0,     0,     0,     0,     0,
-       0,   238,     0,     0,     0,     0,     0,     0,   521,     0,
-       0,     0,   545,   560,    57,     0,    56,     0,   400,     0,
-       0,   425,     0,     0,   494,     0,     0,   637,   628,     0,
-       0,     0,     0,   176,   179,   180,   181,   182,     0,   189,
-     183,     0,   184,   185,   186,   145,     0,   141,     0,   258,
-       0,   337,     0,   374,   329,   324,   326,   317,   318,   313,
-     314,   315,   316,   322,   323,   321,   325,     0,   311,   319,
-     327,   328,   320,   308,   202,   210,     0,   195,   517,     0,
-     515,   516,   512,   513,   514,     0,   506,   507,   509,   510,
-     511,   502,     0,   459,     0,   223,   247,   248,   249,   250,
-     251,   252,   240,     0,     0,   538,   541,   542,   523,     0,
-       0,   547,    54,     0,     0,   404,     0,   429,     0,   654,
-       0,   652,   650,   644,   648,   649,     0,   642,   646,   647,
-     645,   639,   166,   167,   168,   169,   165,   171,   173,   175,
-     188,   191,   143,   260,   339,   376,     0,   310,   198,     0,
-       0,   504,     0,   461,   225,   535,   536,   537,   534,   540,
-     554,   556,    58,   406,   431,   498,     0,     0,     0,     0,
-     641,   312,     0,   519,   508,     0,   651,     0,   643,   518,
-       0,   653,   658,     0,   656,     0,     0,   655,   666,     0,
-       0,     0,     0,   660,   662,   663,   664,   665,   657,     0,
-       0,     0,     0,     0,   659,     0,   668,   669,   670,   661,
-     667
+       0,     0,     0,     0,     0,     0,   133,   135,     0,   137,
+       0,     0,   260,     0,   348,   337,     0,   385,   376,     0,
+       0,   310,     0,     0,   206,   223,     0,   214,     0,     0,
+     199,   511,     0,   506,   470,   461,     0,     0,   225,     0,
+       0,     0,     0,     0,     0,     0,     0,   244,     0,     0,
+       0,     0,     0,     0,   527,     0,     0,     0,   551,   566,
+      57,     0,    56,     0,   406,     0,     0,   431,     0,     0,
+     500,     0,     0,   643,   634,     0,     0,     0,     0,   178,
+     181,   182,   183,   184,     0,   191,   185,     0,     0,     0,
+     186,   187,   188,   145,     0,   141,     0,   264,     0,   343,
+       0,   380,   335,   330,   332,   323,   324,   319,   320,   321,
+     322,   328,   329,   327,   331,     0,   317,   325,   333,   334,
+     326,   314,   208,   216,     0,   201,   523,     0,   521,   522,
+     518,   519,   520,     0,   512,   513,   515,   516,   517,   508,
+       0,   465,     0,   229,   253,   254,   255,   256,   257,   258,
+     246,     0,     0,   544,   547,   548,   529,     0,     0,   553,
+      54,     0,     0,   410,     0,   435,     0,   660,     0,   658,
+     656,   650,   654,   655,     0,   648,   652,   653,   651,   645,
+     168,   169,   170,   171,   167,   173,   175,   177,   190,   193,
+     195,   197,   143,   266,   345,   382,     0,   316,   204,     0,
+       0,   510,     0,   467,   231,   541,   542,   543,   540,   546,
+     560,   562,    58,   412,   437,   504,     0,     0,     0,     0,
+     647,   318,     0,   525,   514,     0,   657,     0,   649,   524,
+       0,   659,   664,     0,   662,     0,     0,   661,   672,     0,
+       0,     0,     0,   666,   668,   669,   670,   671,   663,     0,
+       0,     0,     0,     0,   665,     0,   674,   675,   676,   667,
+     673
   };
 
-  const short
+  const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,    43,  -827,  -456,
-    -827,   191,  -827,  -827,  -827,  -827,    98,  -827,  -451,  -827,
-    -827,  -827,   -74,  -827,  -827,  -827,   411,  -827,  -827,  -827,
-    -827,   199,   371,  -827,  -827,   -62,   -46,   -45,   -43,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   193,   380,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   131,  -827,   -30,
-    -827,  -572,   -23,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,   -70,  -827,  -605,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,   -48,  -827,  -827,  -827,  -827,  -827,   -38,  -592,  -827,
-    -827,  -827,  -827,   -22,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   -33,  -827,  -827,  -827,   -35,   392,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,   -31,  -827,  -827,  -827,  -827,
-    -827,  -827,  -826,  -827,  -827,  -827,   -10,  -827,  -827,  -827,
-       1,   432,  -827,  -827,  -825,  -827,  -824,  -827,   -36,  -827,
-     -32,  -827,   -42,  -827,  -827,  -827,  -821,  -827,  -827,  -827,
-    -827,    -5,  -827,  -827,  -174,   772,  -827,  -827,  -827,  -827,
-    -827,     6,  -827,  -827,  -827,     7,  -827,   410,  -827,   -76,
-    -827,  -827,  -827,  -827,  -827,   -69,  -827,  -827,  -827,  -827,
-    -827,   -11,  -827,  -827,  -827,     9,  -827,  -827,  -827,     8,
-    -827,   407,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,   -29,  -827,  -827,  -827,   -28,   445,  -827,
-    -827,   -58,  -827,   -24,  -827,  -827,  -827,  -827,  -827,   -27,
-    -827,  -827,  -827,   -26,   443,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   -60,  -827,  -827,  -827,     2,  -827,  -827,  -827,
-      10,  -827,   439,   245,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -818,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,    14,  -827,  -827,  -827,  -150,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,    -4,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-      -7,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,   261,   420,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   292,
-     409,  -827,  -827,  -827,  -827,  -827,  -827,   305,   425,  -827,
-    -827,  -827,   -16,  -827,  -827,  -158,  -827,  -827,  -827,  -827,
-    -827,  -827,  -172,  -827,  -827,  -191,  -827,  -827,  -827,  -827,
-    -827
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,    43,  -833,  -457,
+    -833,   192,  -833,  -833,  -833,  -833,   158,  -833,  -451,  -833,
+    -833,  -833,   -74,  -833,  -833,  -833,   426,  -833,  -833,  -833,
+    -833,   222,   311,  -833,  -833,   -62,   -46,   -45,   -43,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   224,   425,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,   155,  -833,   -29,
+    -833,  -572,    -7,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,   -70,  -833,  -605,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,   -35,  -833,  -833,  -833,  -833,
+    -833,   -21,  -592,  -833,  -833,  -833,  -833,   -23,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   -28,  -833,  -833,  -833,
+     -31,   398,  -833,  -833,  -833,  -833,  -833,  -833,  -833,   -34,
+    -833,  -833,  -833,  -833,  -833,  -833,  -832,  -833,  -833,  -833,
+      -9,  -833,  -833,  -833,     4,   438,  -833,  -833,  -831,  -833,
+    -830,  -833,   -36,  -833,   -32,  -833,   -42,  -833,  -833,  -833,
+    -827,  -833,  -833,  -833,  -833,    -5,  -833,  -833,  -178,   780,
+    -833,  -833,  -833,  -833,  -833,     3,  -833,  -833,  -833,    10,
+    -833,   424,  -833,   -76,  -833,  -833,  -833,  -833,  -833,   -69,
+    -833,  -833,  -833,  -833,  -833,   -11,  -833,  -833,  -833,     6,
+    -833,  -833,  -833,     5,  -833,   423,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,   -39,  -833,  -833,
+    -833,   -26,   459,  -833,  -833,   -58,  -833,   -24,  -833,  -833,
+    -833,  -833,  -833,   -40,  -833,  -833,  -833,   -25,   456,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,   -60,  -833,  -833,  -833,
+      -1,  -833,  -833,  -833,     9,  -833,   440,   252,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -824,  -833,  -833,  -833,  -833,  -833,  -833,  -833,    13,
+    -833,  -833,  -833,  -154,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,    -4,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,    -6,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,   269,   421,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,  -833,
+    -833,  -833,  -833,   295,   427,  -833,  -833,  -833,  -833,  -833,
+    -833,   306,   428,  -833,  -833,  -833,   -15,  -833,  -833,  -161,
+    -833,  -833,  -833,  -833,  -833,  -833,  -177,  -833,  -833,  -193,
+    -833,  -833,  -833,  -833,  -833
   };
 
-  const short
+  const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    88,    41,    42,
-      73,   605,    92,    93,    43,    72,    89,    90,   626,   802,
-     895,   896,   692,    45,    74,   101,   102,   103,   362,    47,
+      73,   605,    92,    93,    43,    72,    89,    90,   626,   806,
+     901,   902,   694,    45,    74,   101,   102,   103,   362,    47,
       75,   141,   142,   143,   370,   144,   145,   146,   147,   148,
      149,   381,   150,   372,    49,    76,   178,   179,   180,   404,
-     181,   151,   373,   152,   374,   153,   375,   714,   715,   716,
-     842,   693,   694,   695,   823,  1016,   696,   824,   697,   825,
-     698,   826,   699,   700,   441,   701,   702,   703,   704,   705,
-     706,   707,   708,   709,   832,   710,   711,   835,   154,   392,
-     748,   749,   750,   862,   155,   389,   735,   736,   737,   738,
-     156,   391,   743,   744,   745,   746,   157,   390,   158,   395,
-     759,   760,   761,   871,    65,    84,   310,   311,   312,   454,
-     313,   455,   159,   396,   768,   769,   770,   771,   772,   773,
-     774,   775,   160,   382,   718,   719,   720,   845,    51,    77,
-     199,   200,   201,   410,   202,   411,   203,   412,   204,   416,
-     205,   415,   161,   387,   611,   207,   208,   162,   388,   730,
-     731,   732,   854,   947,   948,   163,   383,    59,    81,   722,
-     723,   724,   848,    61,    82,   275,   276,   277,   278,   279,
-     280,   281,   440,   282,   444,   283,   443,   284,   285,   445,
-     286,   164,   384,   726,   727,   728,   851,    63,    83,   296,
-     297,   298,   299,   300,   449,   301,   302,   303,   304,   210,
-     408,   804,   805,   806,   897,    53,    78,   221,   222,   223,
-     420,   165,   385,   166,   386,   213,   409,   808,   809,   810,
-     900,    55,    79,   237,   238,   239,   423,   240,   241,   425,
-     242,   243,   167,   394,   755,   756,   757,   868,    57,    80,
-     255,   256,   257,   258,   431,   259,   432,   260,   433,   261,
-     434,   262,   435,   263,   436,   264,   430,   215,   417,   813,
-     814,   903,   168,   393,   752,   753,   865,   965,   966,   967,
-     968,   969,  1029,   970,   169,   397,   785,   786,   787,   882,
-    1038,   788,   789,   883,   790,   791,   170,   171,   399,   797,
-     798,   799,   889,   800,   890,   172,   400,   173,   401,    67,
-      85,   332,   333,   334,   335,   459,   336,   460,   337,   338,
-     462,   339,   340,   341,   465,   658,   342,   466,   343,   344,
-     345,   469,   665,   346,   470,   347,   471,   348,   472,   104,
-     364,   105,   365,   106,   366,   174,   371,    71,    87,   354,
-     355,   356,   478,   107,   363,    69,    86,   350,   351,   352,
-     475,   816,   817,   905,  1006,  1007,  1008,  1009,  1048,  1010,
-    1046,  1063,  1064,  1065,  1072,  1073,  1074,  1079,  1075,  1076,
-    1077
+     181,   151,   373,   152,   374,   153,   375,   718,   719,   720,
+     848,   695,   696,   697,   827,  1024,   698,   828,   699,   829,
+     700,   830,   701,   702,   441,   703,   704,   705,   706,   707,
+     708,   709,   710,   711,   836,   712,   713,   839,   714,   840,
+     715,   841,   154,   392,   752,   753,   754,   868,   155,   389,
+     739,   740,   741,   742,   156,   391,   747,   748,   749,   750,
+     157,   390,   158,   395,   763,   764,   765,   877,    65,    84,
+     310,   311,   312,   454,   313,   455,   159,   396,   772,   773,
+     774,   775,   776,   777,   778,   779,   160,   382,   722,   723,
+     724,   851,    51,    77,   199,   200,   201,   410,   202,   411,
+     203,   412,   204,   416,   205,   415,   161,   387,   611,   207,
+     208,   162,   388,   734,   735,   736,   860,   955,   956,   163,
+     383,    59,    81,   726,   727,   728,   854,    61,    82,   275,
+     276,   277,   278,   279,   280,   281,   440,   282,   444,   283,
+     443,   284,   285,   445,   286,   164,   384,   730,   731,   732,
+     857,    63,    83,   296,   297,   298,   299,   300,   449,   301,
+     302,   303,   304,   210,   408,   808,   809,   810,   903,    53,
+      78,   221,   222,   223,   420,   165,   385,   166,   386,   213,
+     409,   812,   813,   814,   906,    55,    79,   237,   238,   239,
+     423,   240,   241,   425,   242,   243,   167,   394,   759,   760,
+     761,   874,    57,    80,   255,   256,   257,   258,   431,   259,
+     432,   260,   433,   261,   434,   262,   435,   263,   436,   264,
+     430,   215,   417,   817,   818,   909,   168,   393,   756,   757,
+     871,   973,   974,   975,   976,   977,  1039,   978,   169,   397,
+     789,   790,   791,   888,  1048,   792,   793,   889,   794,   795,
+     170,   171,   399,   801,   802,   803,   895,   804,   896,   172,
+     400,   173,   401,    67,    85,   332,   333,   334,   335,   459,
+     336,   460,   337,   338,   462,   339,   340,   341,   465,   658,
+     342,   466,   343,   344,   345,   469,   665,   346,   470,   347,
+     471,   348,   472,   104,   364,   105,   365,   106,   366,   174,
+     371,    71,    87,   354,   355,   356,   478,   107,   363,    69,
+      86,   350,   351,   352,   475,   820,   821,   911,  1014,  1015,
+    1016,  1017,  1058,  1018,  1056,  1073,  1074,  1075,  1082,  1083,
+    1084,  1089,  1085,  1086,  1087
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
      100,   140,   177,   194,   217,   231,   251,   294,   273,   292,
-     309,   329,   274,   293,   295,   195,   782,   214,   182,   211,
-     224,   235,   253,   742,   287,   305,   712,   330,   940,   941,
-     942,   196,   197,   946,   198,   206,   952,    94,   175,   176,
-     733,   245,   218,   232,    32,   368,   219,   233,   811,   604,
-     369,    91,   183,   212,   225,   236,   254,    44,   288,   306,
-      40,   331,   307,   308,   604,    46,   209,   220,   234,   252,
-      33,   402,    34,    48,    35,   267,   403,    50,   123,   124,
-     108,   109,   632,   110,   122,    52,   111,   112,   113,   123,
-     124,   266,   123,   124,   638,   639,   640,   226,   227,   228,
-     229,   230,   123,   124,   660,   661,   662,   663,    54,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,    56,   734,
-     267,   191,   268,   269,   192,    58,   270,   271,   272,    60,
-     792,   793,   776,    62,    99,   123,   124,   123,   124,   406,
-     664,   681,   125,   857,   407,    64,   858,   126,   127,   128,
-     129,   130,  1068,   131,    66,  1069,  1070,  1071,   132,   762,
-     763,   764,   765,   766,   767,    68,   860,   133,   418,   861,
-     134,    95,   999,   419,  1000,  1001,    70,   135,   123,   124,
-      96,    97,    98,    99,   121,   136,   137,   353,   421,   138,
-     139,   428,   866,   422,    99,   867,   429,    99,    99,   349,
-     940,   941,   942,   357,   676,   946,   358,    99,   952,   677,
-     678,   679,   680,   681,   682,   683,   684,   685,   686,   687,
-     688,   689,   690,   691,   777,   778,   779,   780,   359,   122,
-     456,   733,   740,   267,   741,   457,    36,    37,    38,    39,
-      99,   473,    99,   360,   122,   361,   474,   123,   124,   267,
-     289,   268,   269,   290,   291,   216,   476,   906,   438,   479,
-     907,   477,   123,   124,   480,   244,   123,   124,   742,   367,
-     926,   245,   246,   247,   248,   249,   250,   114,   115,   116,
-     117,   191,   782,    99,   192,   122,   402,   476,   479,   307,
-     308,   819,   820,   821,   100,   184,   406,   185,   122,   267,
-     376,   822,   377,   123,   124,   186,   187,   188,   189,   190,
-     125,   656,   657,   839,   839,   863,   123,   124,   840,   841,
-     864,   378,   191,   379,   880,   192,   132,   380,   140,   881,
-     887,   448,   177,   193,   891,   888,   958,   959,   473,   892,
-     839,   418,   437,   893,   194,  1022,  1023,   217,   182,   398,
-    1066,   439,    99,  1067,   231,    99,   195,  1026,   214,   405,
-     211,   456,  1027,   224,   251,   413,  1034,    99,   414,   424,
-     235,    99,   196,   197,   273,   198,   206,   294,   274,   292,
-     253,   421,   183,   293,   295,   218,  1043,   426,   428,   219,
-     287,   427,   232,  1044,   212,   305,   233,   225,  1049,   329,
-    1083,   481,   482,  1050,   236,  1084,   442,   209,    99,   446,
-     220,  1035,  1036,  1037,   254,   330,   447,   234,   450,   451,
-     452,    99,   453,   483,   288,   458,   461,   252,   463,   306,
-     114,   115,   116,   117,   123,   124,   120,   464,   122,   267,
-     607,   608,   609,   610,  1012,  1013,  1014,  1015,   467,   331,
-     468,   484,   485,   486,   487,   488,   123,   124,   490,   187,
-     188,   491,   190,   125,   492,   493,   494,   495,   501,   496,
-     502,   497,   498,   499,   503,   191,   500,   504,   192,   505,
-     506,   507,   508,   509,   510,   511,   193,   512,   513,   514,
+     309,   329,   274,   293,   295,   195,   786,   214,   182,   211,
+     224,   235,   253,   746,   287,   305,   716,   330,   948,   949,
+     950,   196,   197,   954,   198,   206,   960,    94,   175,   176,
+     368,   737,   218,   232,   245,   369,   219,   233,   604,   307,
+     308,   815,   183,   212,   225,   236,   254,   402,   288,   306,
+      40,   331,   403,   604,   307,   308,   209,   220,   234,   252,
+      33,    32,    34,   406,    35,    44,   123,   124,   407,   418,
+     108,   109,   632,   110,   419,   122,   111,   112,   113,    46,
+      48,   123,   124,   266,   638,   639,   640,    50,   226,   227,
+     228,   229,   230,   123,   124,    52,    54,   660,   661,   662,
+     663,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     738,    99,   191,    56,   267,   192,   268,   269,   796,   797,
+     270,   271,   272,   863,   421,   428,   864,   123,   124,   422,
+     429,   123,   124,   664,   125,  1020,  1021,  1022,  1023,   126,
+     127,   128,   129,   130,   780,   131,   866,   122,    58,   867,
+     132,  1078,   456,   681,  1079,  1080,  1081,   457,   216,   133,
+      60,   872,   134,    95,   873,   123,   124,   656,   657,   135,
+     473,    99,    96,    97,    98,   474,   912,   136,   137,   913,
+     476,   138,   139,   267,   191,   477,    99,   192,   737,   744,
+      99,   745,   123,   124,   948,   949,   950,    62,    99,   954,
+     123,   124,   960,   676,  1045,  1046,  1047,   122,   677,   678,
+     679,   680,   681,   682,   683,   684,   685,   686,   687,   688,
+     689,   690,   691,   692,   693,   123,   124,    64,    36,    37,
+      38,    39,    99,    66,   267,    68,    99,   479,   781,   782,
+     783,   784,   480,   244,   607,   608,   609,   610,    70,   245,
+     246,   247,   248,   249,   250,   122,   267,    91,   402,   114,
+     115,   116,   117,   823,   746,  1076,   934,   122,  1077,   353,
+      99,   476,   121,   123,   124,   349,   824,   184,   786,   185,
+    1007,   357,  1008,  1009,   100,   123,   124,   186,   187,   188,
+     189,   190,   125,   966,   967,   358,   360,    99,   766,   767,
+     768,   769,   770,   771,   191,    99,   359,   192,   132,   267,
+     289,   268,   269,   290,   291,   193,   479,   361,   140,   406,
+     845,   825,   177,   845,   826,   846,   123,   124,   847,   367,
+      99,   869,   437,   376,   194,   886,   870,   217,   182,   377,
+     887,   378,   893,   438,   231,   379,   195,   894,   214,   380,
+     211,   398,   897,   224,   251,   405,    99,   898,   413,   414,
+     235,   424,   196,   197,   273,   198,   206,   294,   274,   292,
+     253,   473,   183,   293,   295,   218,   899,   426,    99,   219,
+     287,   427,   232,   845,   212,   305,   233,   225,  1032,   329,
+      99,   481,   482,   418,   236,   439,  1036,   209,  1033,   442,
+     220,  1037,   446,   456,   254,   330,   421,   234,  1044,   447,
+     428,  1053,   448,  1059,   288,  1054,   450,   252,  1060,   306,
+     114,   115,   116,   117,   123,   124,   120,  1093,   122,   267,
+     451,    99,  1094,   452,   453,   496,   458,   461,   463,   331,
+     464,   467,   468,   483,   484,   485,   123,   124,   486,   187,
+     188,   487,   190,   125,   488,   490,   491,   492,   493,   494,
+     495,   497,   501,   498,   499,   191,   502,   500,   192,   503,
+     504,   505,   506,   507,   508,   509,   193,   510,   511,   512,
      314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   515,   516,   517,   519,   520,   518,   521,
-     327,   328,   523,   524,   526,   140,   527,   528,   529,   530,
-     531,   533,   177,   532,   534,   535,   537,   539,   540,   591,
-     592,   593,   541,   545,   542,   543,   546,   547,   182,    99,
-     548,   549,   550,   551,   553,   554,   555,   781,   794,   556,
-     329,   557,   558,   559,   561,   562,   563,   565,   566,   569,
-     568,    99,   570,   783,   795,   571,   330,   572,   573,   575,
-     574,   576,   183,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,   579,   580,
-     577,   581,   578,   582,   584,   586,   588,   784,   796,   594,
-     331,   589,   590,   595,   596,   597,   598,   599,   600,   652,
-     601,   602,   603,   606,   612,    34,   613,   614,   615,   844,
-     617,   616,   618,   619,   629,   747,   620,   621,   622,   624,
-     625,   671,   627,   628,   669,   659,   630,   634,   631,   633,
-     635,   670,   636,   637,   713,   641,   717,   721,   725,   729,
-     751,   754,   758,   642,   803,   807,   815,   643,   644,   645,
-     646,   647,   648,   649,   650,   651,   653,   654,   655,   827,
-     828,   829,   830,   831,   833,   666,   834,   667,   668,   836,
-     837,   838,   894,   847,   843,   846,   850,   849,   852,   853,
-     855,   856,   914,   859,   870,   869,   872,   873,   898,   874,
-     875,   876,   877,   878,   879,   884,   885,   886,   899,   902,
-     901,   623,   739,   909,   908,   904,   910,   911,   912,   918,
-     916,   913,   921,   915,   917,   956,   983,   984,   919,   920,
-     989,   922,   923,   990,   976,   924,   977,   992,   978,   993,
-     979,   980,   981,   985,   986,   987,   998,  1017,  1018,  1019,
-    1020,  1021,  1024,  1025,  1028,  1030,  1031,  1032,  1033,  1039,
-    1047,  1052,  1055,  1057,  1040,  1060,  1080,  1081,  1062,  1082,
-    1085,   194,  1041,   522,   273,   294,  1056,   292,   274,   489,
-     934,   293,   295,   195,   939,   214,   525,   211,   672,   675,
-     287,   960,   935,   305,   251,   961,   950,   309,  1053,   196,
-     197,   818,   198,   206,  1042,  1045,  1059,   963,   936,   937,
-     253,   938,   945,   781,   927,   957,   925,   794,   943,   954,
-    1086,   212,   944,   217,   288,  1061,   231,   306,  1087,   783,
-     951,  1002,  1088,   795,   209,  1003,   974,   929,   955,   224,
-     975,   964,   235,   949,   254,  1090,   928,  1004,   567,   982,
-     536,   953,  1051,   265,   962,   930,   931,   252,   560,   932,
-     564,   218,   933,   784,   232,   219,   538,   796,   233,   994,
-     995,   544,   973,   225,   996,   997,   236,   552,   972,   812,
-     971,  1005,  1054,   988,   991,   801,   220,   674,   587,   234,
-    1011,  1058,  1089,   583,  1078,   673,     0,     0,     0,     0,
-       0,   585,     0,     0,     0,     0,     0,     0,     0,     0,
+     324,   325,   326,   513,   514,   515,   516,   517,   519,   520,
+     327,   328,   521,   523,   518,   140,   526,   524,   527,   528,
+     529,   530,   177,   533,   532,   534,   531,   535,   537,   591,
+     592,   593,   539,   541,   540,   545,   542,   543,   182,    99,
+     546,   547,   548,   549,   550,   551,   553,   785,   798,   554,
+     329,   555,   556,   557,   558,   559,   561,   562,   563,   565,
+     566,    99,   568,   787,   799,   569,   330,   570,   571,   572,
+     573,   575,   183,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,   574,   576,
+     579,   580,   577,   581,   578,   582,   584,   788,   800,   586,
+     331,   588,   594,   589,   600,   590,   595,   596,   597,   652,
+     598,   599,   601,   602,   603,   751,   612,    34,   606,   613,
+     614,   615,   629,   617,   616,   618,   619,   850,   630,   620,
+     621,   671,   622,   624,   625,   627,   628,   659,   669,   634,
+     631,   670,   633,   635,   636,   717,   637,   641,   721,   725,
+     729,   733,   755,   758,   762,   642,   807,   811,   819,   643,
+     644,   645,   646,   647,   648,   649,   650,   651,   653,   654,
+     655,   831,   832,   833,   834,   835,   837,   838,   842,   666,
+     667,   843,   844,   668,   853,   849,   852,   856,   855,   858,
+     859,   861,   862,   900,   865,   876,   875,   878,   879,   904,
+     880,   881,   882,   883,   884,   885,   890,   891,   892,   905,
+     908,   907,   623,   522,   915,   914,   910,   916,   917,   918,
+     919,   924,   927,   920,   928,   921,   929,   964,   923,   922,
+     991,   925,   926,   930,   931,   992,   997,   998,   932,  1001,
+     984,  1000,   985,   986,   987,   988,   989,   993,   994,   995,
+    1006,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1034,  1035,
+    1040,  1038,  1041,  1042,  1066,  1043,  1049,  1050,  1057,  1062,
+    1065,  1067,   743,  1070,  1090,  1051,  1072,   194,  1052,  1091,
+     273,   294,  1092,   292,   274,  1055,   942,   293,   295,   195,
+     947,   214,  1095,   211,   489,  1063,   287,   968,   943,   305,
+     251,   969,   958,   309,  1096,   196,   197,  1069,   198,   206,
+    1071,   672,  1100,   971,   944,   945,   253,   946,   953,   785,
+     675,   935,  1097,   798,   951,   822,  1098,   212,   952,   217,
+     288,   525,   231,   306,   965,   787,   959,  1010,   933,   799,
+     209,  1011,   962,   963,   937,   224,   982,   972,   235,   957,
+     254,   983,   990,  1012,   567,   936,   536,   961,  1061,   939,
+     970,   265,   940,   252,   938,   941,  1003,   218,  1005,   788,
+     232,   219,   560,   800,   233,   981,   564,  1002,   552,   225,
+     538,  1004,   236,   980,   544,   979,   816,  1013,  1064,   996,
+     674,   999,   220,   805,   583,   234,   673,  1019,  1068,  1088,
+    1099,     0,     0,     0,   585,     0,   587,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   934,     0,     0,     0,   939,     0,   960,     0,
-       0,     0,   961,     0,   935,     0,     0,     0,   950,     0,
-       0,     0,     0,     0,   963,  1002,     0,     0,     0,  1003,
-     936,   937,     0,   938,   945,     0,     0,     0,     0,     0,
-     943,  1004,     0,     0,   944,     0,     0,     0,     0,     0,
-       0,     0,   951,     0,     0,     0,     0,     0,   964,     0,
-       0,     0,     0,     0,     0,   949,     0,     0,     0,     0,
-       0,   962,     0,     0,     0,  1005
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   942,     0,     0,     0,   947,     0,   968,     0,
+       0,     0,   969,     0,   943,     0,     0,     0,   958,     0,
+       0,     0,     0,     0,   971,  1010,     0,     0,     0,  1011,
+     944,   945,     0,   946,   953,     0,     0,     0,     0,     0,
+     951,  1012,     0,     0,   952,     0,     0,     0,     0,     0,
+       0,     0,   959,     0,     0,     0,     0,     0,   972,     0,
+       0,     0,     0,     0,     0,   957,     0,     0,     0,     0,
+       0,   970,     0,     0,     0,  1013
   };
 
-  const short
+  const short int
   Dhcp6Parser::yycheck_[] =
   {
       74,    75,    76,    77,    78,    79,    80,    83,    82,    83,
       84,    85,    82,    83,    83,    77,   621,    77,    76,    77,
-      78,    79,    80,   615,    82,    83,   598,    85,   854,   854,
-     854,    77,    77,   854,    77,    77,   854,    10,    15,    16,
-      92,    90,    78,    79,     0,     3,    78,    79,    97,   505,
-       8,   171,    76,    77,    78,    79,    80,     7,    82,    83,
-      17,    85,    99,   100,   520,     7,    77,    78,    79,    80,
-       5,     3,     7,     7,     9,    49,     8,     7,    66,    67,
-      11,    12,   533,    14,    48,     7,    17,    18,    19,    66,
-      67,    20,    66,    67,   545,   546,   547,    61,    62,    63,
-      64,    65,    66,    67,   138,   139,   140,   141,     7,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,     7,   171,
-      49,    85,    51,    52,    88,     7,    55,    56,    57,     7,
-     118,   119,    20,     7,   171,    66,    67,    66,    67,     3,
-     174,    29,    73,     3,     8,     7,     6,    78,    79,    80,
-      81,    82,   147,    84,     7,   150,   151,   152,    89,   102,
-     103,   104,   105,   106,   107,     7,     3,    98,     3,     6,
-     101,   144,   146,     8,   148,   149,     7,   108,    66,    67,
-     153,   154,   155,   171,    47,   116,   117,    13,     3,   120,
-     121,     3,     3,     8,   171,     6,     8,   171,   171,   145,
-    1026,  1026,  1026,     6,    20,  1026,     3,   171,  1026,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,   112,   113,   114,   115,     4,    48,
-       3,    92,    93,    49,    95,     8,   171,   172,   173,   174,
-     171,     3,   171,     8,    48,     3,     8,    66,    67,    49,
-      50,    51,    52,    53,    54,    59,     3,     3,     3,     3,
-       6,     8,    66,    67,     8,    84,    66,    67,   860,     4,
-     842,    90,    91,    92,    93,    94,    95,    40,    41,    42,
-      43,    85,   887,   171,    88,    48,     3,     3,     3,    99,
-     100,     8,     8,     8,   368,    58,     3,    60,    48,    49,
-       4,     8,     4,    66,    67,    68,    69,    70,    71,    72,
-      73,   135,   136,     3,     3,     3,    66,    67,     8,     8,
-       8,     4,    85,     4,     3,    88,    89,     4,   402,     8,
-       3,     3,   406,    96,     3,     8,    86,    87,     3,     8,
-       3,     3,     8,     8,   418,     8,     8,   421,   406,     4,
-       3,     8,   171,     6,   428,   171,   418,     3,   418,     4,
-     418,     3,     8,   421,   438,     4,     8,   171,     4,     4,
-     428,   171,   418,   418,   448,   418,   418,   453,   448,   453,
-     438,     3,   406,   453,   453,   421,     8,     4,     3,   421,
-     448,     4,   428,     8,   418,   453,   428,   421,     3,   473,
-       3,   358,   359,     8,   428,     8,     4,   418,   171,     4,
-     421,   109,   110,   111,   438,   473,     8,   428,     4,     4,
-       8,   171,     3,   171,   448,     4,     4,   438,     4,   453,
-      40,    41,    42,    43,    66,    67,    46,     4,    48,    49,
-      74,    75,    76,    77,    21,    22,    23,    24,     4,   473,
-       4,     4,     4,     4,     4,     4,    66,    67,     4,    69,
-      70,     4,    72,    73,     4,     4,     4,     4,     4,   172,
-       4,   172,   172,   172,     4,    85,   172,     4,    88,     4,
-       4,     4,     4,     4,     4,     4,    96,     4,     4,     4,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,     4,     4,     4,     4,     4,   172,     4,
-     142,   143,     4,   174,     4,   589,     4,     4,     4,     4,
-     172,     4,   596,   174,     4,     4,     4,     4,   172,   486,
-     487,   488,     4,     4,   172,   172,     4,     4,   596,   171,
-       4,     4,     4,     4,     4,     4,   172,   621,   622,     4,
-     624,     4,     4,   174,     4,   174,   174,     4,     4,     4,
-     174,   171,     4,   621,   622,   172,   624,     4,   172,     4,
-     172,     4,   596,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,     4,     4,
-     174,     4,   174,     4,     4,     4,     4,   621,   622,   171,
-     624,     7,     7,     7,     7,     7,     7,     5,   171,   566,
-       5,     5,     5,   171,     5,     7,     5,     5,     5,     3,
-       5,     7,     5,     5,   171,    83,     7,     7,     7,     7,
-       5,   588,     5,     5,     5,   137,   171,     7,   171,   171,
-     171,     5,   171,   171,     7,   171,     7,     7,     7,     7,
-       7,     7,     7,   171,     7,     7,     7,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,     4,
-       4,     4,     4,     4,     4,   171,     4,   171,   171,     4,
-       4,     4,   171,     3,     6,     6,     3,     6,     6,     3,
-       6,     3,   174,     6,     3,     6,     6,     3,     6,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     3,     3,
-       6,   520,   614,     4,     6,     8,     4,     4,     4,     4,
-     174,   172,     4,   172,   172,     4,     4,     4,   172,   172,
-       4,   172,   172,     4,   172,   174,   172,     6,   172,     3,
-     172,   172,   172,   172,   172,   172,     4,   171,   171,   171,
-     171,   171,     8,     8,   171,     4,     8,     3,     8,   171,
-       4,     4,     4,     4,   171,     5,     4,     4,     7,     4,
-       4,   845,   171,   402,   848,   851,   172,   851,   848,   368,
-     854,   851,   851,   845,   854,   845,   406,   845,   589,   596,
-     848,   865,   854,   851,   868,   865,   854,   871,   174,   845,
-     845,   670,   845,   845,   171,   171,   171,   865,   854,   854,
-     868,   854,   854,   887,   844,   863,   839,   891,   854,   857,
-     174,   845,   854,   897,   848,   171,   900,   851,   172,   887,
-     854,   905,   172,   891,   845,   905,   871,   847,   860,   897,
-     873,   865,   900,   854,   868,   171,   845,   905,   456,   880,
-     418,   856,  1026,    81,   865,   848,   850,   868,   448,   851,
-     453,   897,   853,   887,   900,   897,   421,   891,   900,   897,
-     899,   428,   870,   897,   900,   902,   900,   438,   868,   634,
-     866,   905,  1032,   887,   891,   624,   897,   595,   479,   900,
-     906,  1049,  1083,   473,  1066,   590,    -1,    -1,    -1,    -1,
-      -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      78,    79,    80,   615,    82,    83,   598,    85,   860,   860,
+     860,    77,    77,   860,    77,    77,   860,    10,    15,    16,
+       3,    94,    78,    79,    92,     8,    78,    79,   505,   101,
+     102,    99,    76,    77,    78,    79,    80,     3,    82,    83,
+      17,    85,     8,   520,   101,   102,    77,    78,    79,    80,
+       5,     0,     7,     3,     9,     7,    68,    69,     8,     3,
+      11,    12,   533,    14,     8,    50,    17,    18,    19,     7,
+       7,    68,    69,    20,   545,   546,   547,     7,    63,    64,
+      65,    66,    67,    68,    69,     7,     7,   140,   141,   142,
+     143,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+     173,   173,    87,     7,    51,    90,    53,    54,   120,   121,
+      57,    58,    59,     3,     3,     3,     6,    68,    69,     8,
+       8,    68,    69,   176,    75,    21,    22,    23,    24,    80,
+      81,    82,    83,    84,    20,    86,     3,    50,     7,     6,
+      91,   149,     3,    29,   152,   153,   154,     8,    61,   100,
+       7,     3,   103,   146,     6,    68,    69,   137,   138,   110,
+       3,   173,   155,   156,   157,     8,     3,   118,   119,     6,
+       3,   122,   123,    51,    87,     8,   173,    90,    94,    95,
+     173,    97,    68,    69,  1036,  1036,  1036,     7,   173,  1036,
+      68,    69,  1036,    20,   111,   112,   113,    50,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    68,    69,     7,   173,   174,
+     175,   176,   173,     7,    51,     7,   173,     3,   114,   115,
+     116,   117,     8,    86,    76,    77,    78,    79,     7,    92,
+      93,    94,    95,    96,    97,    50,    51,   173,     3,    42,
+      43,    44,    45,     8,   866,     3,   848,    50,     6,    13,
+     173,     3,    49,    68,    69,   147,     8,    60,   893,    62,
+     148,     6,   150,   151,   368,    68,    69,    70,    71,    72,
+      73,    74,    75,    88,    89,     3,     8,   173,   104,   105,
+     106,   107,   108,   109,    87,   173,     4,    90,    91,    51,
+      52,    53,    54,    55,    56,    98,     3,     3,   402,     3,
+       3,     8,   406,     3,     8,     8,    68,    69,     8,     4,
+     173,     3,     8,     4,   418,     3,     8,   421,   406,     4,
+       8,     4,     3,     3,   428,     4,   418,     8,   418,     4,
+     418,     4,     3,   421,   438,     4,   173,     8,     4,     4,
+     428,     4,   418,   418,   448,   418,   418,   453,   448,   453,
+     438,     3,   406,   453,   453,   421,     8,     4,   173,   421,
+     448,     4,   428,     3,   418,   453,   428,   421,     8,   473,
+     173,   358,   359,     3,   428,     8,     3,   418,     8,     4,
+     421,     8,     4,     3,   438,   473,     3,   428,     8,     8,
+       3,     8,     3,     3,   448,     8,     4,   438,     8,   453,
+      42,    43,    44,    45,    68,    69,    48,     3,    50,    51,
+       4,   173,     8,     8,     3,   174,     4,     4,     4,   473,
+       4,     4,     4,   173,     4,     4,    68,    69,     4,    71,
+      72,     4,    74,    75,     4,     4,     4,     4,     4,     4,
+       4,   174,     4,   174,   174,    87,     4,   174,    90,     4,
+       4,     4,     4,     4,     4,     4,    98,     4,     4,     4,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,     4,     4,     4,     4,     4,     4,     4,
+     144,   145,     4,     4,   174,   589,     4,   176,     4,     4,
+       4,     4,   596,     4,   176,     4,   174,     4,     4,   486,
+     487,   488,     4,     4,   174,     4,   174,   174,   596,   173,
+       4,     4,     4,     4,     4,     4,     4,   621,   622,     4,
+     624,   174,     4,     4,     4,   176,     4,   176,   176,     4,
+       4,   173,   176,   621,   622,     4,   624,     4,   174,     4,
+     174,     4,   596,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   174,     4,
+       4,     4,   176,     4,   176,     4,     4,   621,   622,     4,
+     624,     4,   173,     7,   173,     7,     7,     7,     7,   566,
+       7,     5,     5,     5,     5,    85,     5,     7,   173,     5,
+       5,     5,   173,     5,     7,     5,     5,     3,   173,     7,
+       7,   588,     7,     7,     5,     5,     5,   139,     5,     7,
+     173,     5,   173,   173,   173,     7,   173,   173,     7,     7,
+       7,     7,     7,     7,     7,   173,     7,     7,     7,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+     173,     4,     4,     4,     4,     4,     4,     4,     4,   173,
+     173,     4,     4,   173,     3,     6,     6,     3,     6,     6,
+       3,     6,     3,   173,     6,     3,     6,     6,     3,     6,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
+       3,     6,   520,   402,     4,     6,     8,     4,     4,     4,
+     174,     4,     4,   176,     4,   174,     4,     4,   174,   176,
+       4,   174,   174,   174,   174,     4,     4,     4,   176,     3,
+     174,     6,   174,   174,   174,   174,   174,   174,   174,   174,
+       4,   173,   173,   173,   173,   173,   173,   173,     8,     8,
+       4,   173,     8,     3,   174,     8,   173,   173,     4,     4,
+       4,     4,   614,     5,     4,   173,     7,   851,   173,     4,
+     854,   857,     4,   857,   854,   173,   860,   857,   857,   851,
+     860,   851,     4,   851,   368,   176,   854,   871,   860,   857,
+     874,   871,   860,   877,   176,   851,   851,   173,   851,   851,
+     173,   589,   173,   871,   860,   860,   874,   860,   860,   893,
+     596,   850,   174,   897,   860,   670,   174,   851,   860,   903,
+     854,   406,   906,   857,   869,   893,   860,   911,   845,   897,
+     851,   911,   863,   866,   853,   903,   877,   871,   906,   860,
+     874,   879,   886,   911,   456,   851,   418,   862,  1036,   856,
+     871,    81,   857,   874,   854,   859,   905,   903,   908,   893,
+     906,   903,   448,   897,   906,   876,   453,   903,   438,   903,
+     421,   906,   906,   874,   428,   872,   634,   911,  1042,   893,
+     595,   897,   903,   624,   473,   906,   590,   912,  1059,  1076,
+    1093,    -1,    -1,    -1,   476,    -1,   479,    -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,  1026,    -1,    -1,    -1,  1026,    -1,  1032,    -1,
-      -1,    -1,  1032,    -1,  1026,    -1,    -1,    -1,  1026,    -1,
-      -1,    -1,    -1,    -1,  1032,  1049,    -1,    -1,    -1,  1049,
-    1026,  1026,    -1,  1026,  1026,    -1,    -1,    -1,    -1,    -1,
-    1026,  1049,    -1,    -1,  1026,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1026,    -1,    -1,    -1,    -1,    -1,  1032,    -1,
-      -1,    -1,    -1,    -1,    -1,  1026,    -1,    -1,    -1,    -1,
-      -1,  1032,    -1,    -1,    -1,  1049
+      -1,    -1,  1036,    -1,    -1,    -1,  1036,    -1,  1042,    -1,
+      -1,    -1,  1042,    -1,  1036,    -1,    -1,    -1,  1036,    -1,
+      -1,    -1,    -1,    -1,  1042,  1059,    -1,    -1,    -1,  1059,
+    1036,  1036,    -1,  1036,  1036,    -1,    -1,    -1,    -1,    -1,
+    1036,  1059,    -1,    -1,  1036,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1036,    -1,    -1,    -1,    -1,    -1,  1042,    -1,
+      -1,    -1,    -1,    -1,    -1,  1036,    -1,    -1,    -1,    -1,
+      -1,  1042,    -1,    -1,    -1,  1059
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,     0,     5,     7,     9,   171,   172,   173,   174,
-     192,   193,   194,   199,     7,   208,     7,   214,     7,   229,
-       7,   323,     7,   400,     7,   416,     7,   433,     7,   352,
-       7,   358,     7,   382,     7,   299,     7,   494,     7,   540,
-       7,   532,   200,   195,   209,   215,   230,   324,   401,   417,
-     434,   353,   359,   383,   300,   495,   541,   533,   192,   201,
-     202,   171,   197,   198,    10,   144,   153,   154,   155,   171,
-     207,   210,   211,   212,   524,   526,   528,   538,    11,    12,
-      14,    17,    18,    19,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    66,    67,    73,    78,    79,    80,    81,
-      82,    84,    89,    98,   101,   108,   116,   117,   120,   121,
-     207,   216,   217,   218,   220,   221,   222,   223,   224,   225,
-     227,   236,   238,   240,   273,   279,   285,   291,   293,   307,
-     317,   337,   342,   350,   376,   406,   408,   427,   457,   469,
-     481,   482,   490,   492,   530,    15,    16,   207,   231,   232,
-     233,   235,   406,   408,    58,    60,    68,    69,    70,    71,
-      72,    85,    88,    96,   207,   220,   221,   222,   223,   325,
-     326,   327,   329,   331,   333,   335,   337,   340,   341,   376,
-     394,   406,   408,   410,   427,   452,    59,   207,   333,   335,
-     376,   402,   403,   404,   406,   408,    61,    62,    63,    64,
-      65,   207,   333,   335,   376,   406,   408,   418,   419,   420,
-     422,   423,   425,   426,    84,    90,    91,    92,    93,    94,
-      95,   207,   376,   406,   408,   435,   436,   437,   438,   440,
-     442,   444,   446,   448,   450,   350,    20,    49,    51,    52,
-      55,    56,    57,   207,   258,   360,   361,   362,   363,   364,
-     365,   366,   368,   370,   372,   373,   375,   406,   408,    50,
-      53,    54,   207,   258,   364,   370,   384,   385,   386,   387,
-     388,   390,   391,   392,   393,   406,   408,    99,   100,   207,
-     301,   302,   303,   305,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   142,   143,   207,
-     406,   408,   496,   497,   498,   499,   501,   503,   504,   506,
-     507,   508,   511,   513,   514,   515,   518,   520,   522,   145,
-     542,   543,   544,    13,   534,   535,   536,     6,     3,     4,
-       8,     3,   213,   539,   525,   527,   529,     4,     3,     8,
-     219,   531,   228,   237,   239,   241,     4,     4,     4,     4,
-       4,   226,   318,   351,   377,   407,   409,   338,   343,   280,
-     292,   286,   274,   458,   428,   294,   308,   470,     4,   483,
-     491,   493,     3,     8,   234,     4,     3,     8,   395,   411,
-     328,   330,   332,     4,     4,   336,   334,   453,     3,     8,
-     405,     3,     8,   421,     4,   424,     4,     4,     3,     8,
-     451,   439,   441,   443,   445,   447,   449,     8,     3,     8,
-     367,   259,     4,   371,   369,   374,     4,     8,     3,   389,
-       4,     4,     8,     3,   304,   306,     3,     8,     4,   500,
-     502,     4,   505,     4,     4,   509,   512,     4,     4,   516,
-     519,   521,   523,     3,     8,   545,     3,     8,   537,     3,
-       8,   192,   192,   171,     4,     4,     4,     4,     4,   211,
-       4,     4,     4,     4,     4,     4,   172,   172,   172,   172,
-     172,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   172,     4,
-       4,     4,   217,     4,   174,   232,     4,     4,     4,     4,
-       4,   172,   174,     4,     4,     4,   326,     4,   403,     4,
-     172,     4,   172,   172,   419,     4,     4,     4,     4,     4,
-       4,     4,   437,     4,     4,   172,     4,     4,     4,   174,
-     362,     4,   174,   174,   386,     4,     4,   302,   174,     4,
-       4,   172,     4,   172,   172,     4,     4,   174,   174,     4,
-       4,     4,     4,   497,     4,   543,     4,   535,     4,     7,
-       7,   192,   192,   192,   171,     7,     7,     7,     7,     5,
-     171,     5,     5,     5,   194,   196,   171,    74,    75,    76,
-      77,   339,     5,     5,     5,     5,     7,     5,     5,     5,
-       7,     7,     7,   196,     7,     5,   203,     5,     5,   171,
-     171,   171,   203,   171,     7,   171,   171,   171,   203,   203,
-     203,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   192,   171,   171,   171,   135,   136,   510,   137,
-     138,   139,   140,   141,   174,   517,   171,   171,   171,     5,
-       5,   192,   216,   542,   534,   231,    20,    25,    26,    27,
+       0,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,     0,     5,     7,     9,   173,   174,   175,   176,
+     194,   195,   196,   201,     7,   210,     7,   216,     7,   231,
+       7,   329,     7,   406,     7,   422,     7,   439,     7,   358,
+       7,   364,     7,   388,     7,   305,     7,   500,     7,   546,
+       7,   538,   202,   197,   211,   217,   232,   330,   407,   423,
+     440,   359,   365,   389,   306,   501,   547,   539,   194,   203,
+     204,   173,   199,   200,    10,   146,   155,   156,   157,   173,
+     209,   212,   213,   214,   530,   532,   534,   544,    11,    12,
+      14,    17,    18,    19,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    68,    69,    75,    80,    81,    82,    83,
+      84,    86,    91,   100,   103,   110,   118,   119,   122,   123,
+     209,   218,   219,   220,   222,   223,   224,   225,   226,   227,
+     229,   238,   240,   242,   279,   285,   291,   297,   299,   313,
+     323,   343,   348,   356,   382,   412,   414,   433,   463,   475,
+     487,   488,   496,   498,   536,    15,    16,   209,   233,   234,
+     235,   237,   412,   414,    60,    62,    70,    71,    72,    73,
+      74,    87,    90,    98,   209,   222,   223,   224,   225,   331,
+     332,   333,   335,   337,   339,   341,   343,   346,   347,   382,
+     400,   412,   414,   416,   433,   458,    61,   209,   339,   341,
+     382,   408,   409,   410,   412,   414,    63,    64,    65,    66,
+      67,   209,   339,   341,   382,   412,   414,   424,   425,   426,
+     428,   429,   431,   432,    86,    92,    93,    94,    95,    96,
+      97,   209,   382,   412,   414,   441,   442,   443,   444,   446,
+     448,   450,   452,   454,   456,   356,    20,    51,    53,    54,
+      57,    58,    59,   209,   260,   366,   367,   368,   369,   370,
+     371,   372,   374,   376,   378,   379,   381,   412,   414,    52,
+      55,    56,   209,   260,   370,   376,   390,   391,   392,   393,
+     394,   396,   397,   398,   399,   412,   414,   101,   102,   209,
+     307,   308,   309,   311,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   144,   145,   209,
+     412,   414,   502,   503,   504,   505,   507,   509,   510,   512,
+     513,   514,   517,   519,   520,   521,   524,   526,   528,   147,
+     548,   549,   550,    13,   540,   541,   542,     6,     3,     4,
+       8,     3,   215,   545,   531,   533,   535,     4,     3,     8,
+     221,   537,   230,   239,   241,   243,     4,     4,     4,     4,
+       4,   228,   324,   357,   383,   413,   415,   344,   349,   286,
+     298,   292,   280,   464,   434,   300,   314,   476,     4,   489,
+     497,   499,     3,     8,   236,     4,     3,     8,   401,   417,
+     334,   336,   338,     4,     4,   342,   340,   459,     3,     8,
+     411,     3,     8,   427,     4,   430,     4,     4,     3,     8,
+     457,   445,   447,   449,   451,   453,   455,     8,     3,     8,
+     373,   261,     4,   377,   375,   380,     4,     8,     3,   395,
+       4,     4,     8,     3,   310,   312,     3,     8,     4,   506,
+     508,     4,   511,     4,     4,   515,   518,     4,     4,   522,
+     525,   527,   529,     3,     8,   551,     3,     8,   543,     3,
+       8,   194,   194,   173,     4,     4,     4,     4,     4,   213,
+       4,     4,     4,     4,     4,     4,   174,   174,   174,   174,
+     174,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   174,     4,
+       4,     4,   219,     4,   176,   234,     4,     4,     4,     4,
+       4,   174,   176,     4,     4,     4,   332,     4,   409,     4,
+     174,     4,   174,   174,   425,     4,     4,     4,     4,     4,
+       4,     4,   443,     4,     4,   174,     4,     4,     4,   176,
+     368,     4,   176,   176,   392,     4,     4,   308,   176,     4,
+       4,   174,     4,   174,   174,     4,     4,   176,   176,     4,
+       4,     4,     4,   503,     4,   549,     4,   541,     4,     7,
+       7,   194,   194,   194,   173,     7,     7,     7,     7,     5,
+     173,     5,     5,     5,   196,   198,   173,    76,    77,    78,
+      79,   345,     5,     5,     5,     5,     7,     5,     5,     5,
+       7,     7,     7,   198,     7,     5,   205,     5,     5,   173,
+     173,   173,   205,   173,     7,   173,   173,   173,   205,   205,
+     205,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+     173,   173,   194,   173,   173,   173,   137,   138,   516,   139,
+     140,   141,   142,   143,   176,   523,   173,   173,   173,     5,
+       5,   194,   218,   548,   540,   233,    20,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,   207,   246,   247,   248,   251,   253,   255,   257,
-     258,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     270,   271,   246,     7,   242,   243,   244,     7,   319,   320,
-     321,     7,   354,   355,   356,     7,   378,   379,   380,     7,
-     344,   345,   346,    92,   171,   281,   282,   283,   284,   201,
-      93,    95,   283,   287,   288,   289,   290,    83,   275,   276,
-     277,     7,   459,   460,     7,   429,   430,   431,     7,   295,
-     296,   297,   102,   103,   104,   105,   106,   107,   309,   310,
-     311,   312,   313,   314,   315,   316,    20,   112,   113,   114,
-     115,   207,   260,   406,   408,   471,   472,   473,   476,   477,
-     479,   480,   118,   119,   207,   406,   408,   484,   485,   486,
-     488,   496,   204,     7,   396,   397,   398,     7,   412,   413,
-     414,    97,   438,   454,   455,     7,   546,   547,   242,     8,
-       8,     8,     8,   249,   252,   254,   256,     4,     4,     4,
-       4,     4,   269,     4,     4,   272,     4,     4,     4,     3,
-       8,     8,   245,     6,     3,   322,     6,     3,   357,     6,
-       3,   381,     6,     3,   347,     6,     3,     3,     6,     6,
-       3,     6,   278,     3,     8,   461,     3,     6,   432,     6,
-       3,   298,     6,     3,     4,     4,     4,     4,     4,     4,
-       3,     8,   474,   478,     4,     4,     4,     3,     8,   487,
-     489,     3,     8,     8,   171,   205,   206,   399,     6,     3,
-     415,     6,     3,   456,     8,   548,     3,     6,     6,     4,
-       4,     4,     4,   172,   174,   172,   174,   172,     4,   172,
-     172,     4,   172,   172,   174,   247,   246,   244,   325,   321,
-     360,   356,   384,   380,   207,   220,   221,   222,   223,   258,
-     317,   329,   331,   333,   335,   337,   341,   348,   349,   376,
-     406,   408,   452,   346,   282,   288,     4,   276,    86,    87,
-     207,   258,   376,   406,   408,   462,   463,   464,   465,   466,
-     468,   460,   435,   431,   301,   297,   172,   172,   172,   172,
-     172,   172,   310,     4,     4,   172,   172,   172,   472,     4,
-       4,   485,     6,     3,   402,   398,   418,   414,     4,   146,
-     148,   149,   207,   258,   406,   408,   549,   550,   551,   552,
-     554,   547,    21,    22,    23,    24,   250,   171,   171,   171,
-     171,   171,     8,     8,     8,     8,     3,     8,   171,   467,
-       4,     8,     3,     8,     8,   109,   110,   111,   475,   171,
-     171,   171,   171,     8,     8,   171,   555,     4,   553,     3,
-       8,   349,     4,   174,   464,     4,   172,     4,   550,   171,
-       5,   171,     7,   556,   557,   558,     3,     6,   147,   150,
-     151,   152,   559,   560,   561,   563,   564,   565,   557,   562,
-       4,     4,     4,     3,     8,     4,   174,   172,   172,   560,
-     171
+      38,    39,    40,    41,   209,   248,   249,   250,   253,   255,
+     257,   259,   260,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   272,   273,   275,   277,   248,     7,   244,   245,
+     246,     7,   325,   326,   327,     7,   360,   361,   362,     7,
+     384,   385,   386,     7,   350,   351,   352,    94,   173,   287,
+     288,   289,   290,   203,    95,    97,   289,   293,   294,   295,
+     296,    85,   281,   282,   283,     7,   465,   466,     7,   435,
+     436,   437,     7,   301,   302,   303,   104,   105,   106,   107,
+     108,   109,   315,   316,   317,   318,   319,   320,   321,   322,
+      20,   114,   115,   116,   117,   209,   262,   412,   414,   477,
+     478,   479,   482,   483,   485,   486,   120,   121,   209,   412,
+     414,   490,   491,   492,   494,   502,   206,     7,   402,   403,
+     404,     7,   418,   419,   420,    99,   444,   460,   461,     7,
+     552,   553,   244,     8,     8,     8,     8,   251,   254,   256,
+     258,     4,     4,     4,     4,     4,   271,     4,     4,   274,
+     276,   278,     4,     4,     4,     3,     8,     8,   247,     6,
+       3,   328,     6,     3,   363,     6,     3,   387,     6,     3,
+     353,     6,     3,     3,     6,     6,     3,     6,   284,     3,
+       8,   467,     3,     6,   438,     6,     3,   304,     6,     3,
+       4,     4,     4,     4,     4,     4,     3,     8,   480,   484,
+       4,     4,     4,     3,     8,   493,   495,     3,     8,     8,
+     173,   207,   208,   405,     6,     3,   421,     6,     3,   462,
+       8,   554,     3,     6,     6,     4,     4,     4,     4,   174,
+     176,   174,   176,   174,     4,   174,   174,     4,     4,     4,
+     174,   174,   176,   249,   248,   246,   331,   327,   366,   362,
+     390,   386,   209,   222,   223,   224,   225,   260,   323,   335,
+     337,   339,   341,   343,   347,   354,   355,   382,   412,   414,
+     458,   352,   288,   294,     4,   282,    88,    89,   209,   260,
+     382,   412,   414,   468,   469,   470,   471,   472,   474,   466,
+     441,   437,   307,   303,   174,   174,   174,   174,   174,   174,
+     316,     4,     4,   174,   174,   174,   478,     4,     4,   491,
+       6,     3,   408,   404,   424,   420,     4,   148,   150,   151,
+     209,   260,   412,   414,   555,   556,   557,   558,   560,   553,
+      21,    22,    23,    24,   252,   173,   173,   173,   173,   173,
+     173,   173,     8,     8,     8,     8,     3,     8,   173,   473,
+       4,     8,     3,     8,     8,   111,   112,   113,   481,   173,
+     173,   173,   173,     8,     8,   173,   561,     4,   559,     3,
+       8,   355,     4,   176,   470,     4,   174,     4,   556,   173,
+       5,   173,     7,   562,   563,   564,     3,     6,   149,   152,
+     153,   154,   565,   566,   567,   569,   570,   571,   563,   568,
+       4,     4,     4,     3,     8,     4,   176,   174,   174,   566,
+     173
   };
 
-  const unsigned short
+  const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   175,   177,   176,   178,   176,   179,   176,   180,   176,
-     181,   176,   182,   176,   183,   176,   184,   176,   185,   176,
-     186,   176,   187,   176,   188,   176,   189,   176,   190,   176,
-     191,   176,   192,   192,   192,   192,   192,   192,   192,   193,
-     195,   194,   196,   197,   197,   198,   198,   200,   199,   201,
-     201,   202,   202,   204,   203,   205,   205,   206,   206,   207,
-     209,   208,   210,   210,   211,   211,   211,   211,   211,   211,
-     213,   212,   215,   214,   216,   216,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   217,   217,   217,   219,
-     218,   220,   221,   222,   223,   224,   226,   225,   228,   227,
-     230,   229,   231,   231,   232,   232,   232,   232,   232,   234,
-     233,   235,   237,   236,   239,   238,   241,   240,   242,   242,
-     243,   243,   245,   244,   246,   246,   247,   247,   247,   247,
-     247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
-     247,   247,   247,   247,   249,   248,   250,   250,   250,   250,
-     252,   251,   254,   253,   256,   255,   257,   259,   258,   260,
-     261,   262,   263,   264,   265,   266,   267,   269,   268,   270,
-     272,   271,   274,   273,   275,   275,   276,   278,   277,   280,
-     279,   281,   281,   282,   282,   283,   284,   286,   285,   287,
-     287,   288,   288,   288,   289,   290,   292,   291,   294,   293,
-     295,   295,   296,   296,   298,   297,   300,   299,   301,   301,
-     301,   302,   302,   304,   303,   306,   305,   308,   307,   309,
-     309,   310,   310,   310,   310,   310,   310,   311,   312,   313,
-     314,   315,   316,   318,   317,   319,   319,   320,   320,   322,
-     321,   324,   323,   325,   325,   326,   326,   326,   326,   326,
-     326,   326,   326,   326,   326,   326,   326,   326,   326,   326,
-     326,   326,   326,   326,   326,   328,   327,   330,   329,   332,
-     331,   334,   333,   336,   335,   338,   337,   339,   339,   339,
-     339,   340,   341,   343,   342,   344,   344,   345,   345,   347,
-     346,   348,   348,   349,   349,   349,   349,   349,   349,   349,
-     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
-     351,   350,   353,   352,   354,   354,   355,   355,   357,   356,
-     359,   358,   360,   360,   361,   361,   362,   362,   362,   362,
-     362,   362,   362,   362,   362,   362,   363,   364,   365,   367,
-     366,   369,   368,   371,   370,   372,   374,   373,   375,   377,
-     376,   378,   378,   379,   379,   381,   380,   383,   382,   384,
-     384,   385,   385,   386,   386,   386,   386,   386,   386,   386,
-     386,   386,   387,   389,   388,   390,   391,   392,   393,   395,
-     394,   396,   396,   397,   397,   399,   398,   401,   400,   402,
-     402,   403,   403,   403,   403,   403,   403,   403,   405,   404,
-     407,   406,   409,   408,   411,   410,   412,   412,   413,   413,
-     415,   414,   417,   416,   418,   418,   419,   419,   419,   419,
-     419,   419,   419,   419,   419,   419,   419,   421,   420,   422,
-     424,   423,   425,   426,   428,   427,   429,   429,   430,   430,
-     432,   431,   434,   433,   435,   435,   436,   436,   437,   437,
-     437,   437,   437,   437,   437,   437,   437,   437,   437,   439,
-     438,   441,   440,   443,   442,   445,   444,   447,   446,   449,
-     448,   451,   450,   453,   452,   454,   454,   456,   455,   458,
-     457,   459,   459,   461,   460,   462,   462,   463,   463,   464,
-     464,   464,   464,   464,   464,   464,   465,   467,   466,   468,
-     470,   469,   471,   471,   472,   472,   472,   472,   472,   472,
-     472,   472,   472,   474,   473,   475,   475,   475,   476,   478,
-     477,   479,   480,   481,   483,   482,   484,   484,   485,   485,
-     485,   485,   485,   487,   486,   489,   488,   491,   490,   493,
-     492,   495,   494,   496,   496,   497,   497,   497,   497,   497,
-     497,   497,   497,   497,   497,   497,   497,   497,   497,   497,
-     497,   497,   497,   498,   500,   499,   502,   501,   503,   505,
-     504,   506,   507,   509,   508,   510,   510,   512,   511,   513,
-     514,   516,   515,   517,   517,   517,   517,   517,   519,   518,
-     521,   520,   523,   522,   525,   524,   527,   526,   529,   528,
-     531,   530,   533,   532,   534,   534,   535,   537,   536,   539,
-     538,   541,   540,   542,   542,   543,   545,   544,   546,   546,
-     548,   547,   549,   549,   550,   550,   550,   550,   550,   550,
-     550,   551,   553,   552,   555,   554,   556,   556,   558,   557,
-     559,   559,   560,   560,   560,   560,   562,   561,   563,   564,
-     565
+       0,   177,   179,   178,   180,   178,   181,   178,   182,   178,
+     183,   178,   184,   178,   185,   178,   186,   178,   187,   178,
+     188,   178,   189,   178,   190,   178,   191,   178,   192,   178,
+     193,   178,   194,   194,   194,   194,   194,   194,   194,   195,
+     197,   196,   198,   199,   199,   200,   200,   202,   201,   203,
+     203,   204,   204,   206,   205,   207,   207,   208,   208,   209,
+     211,   210,   212,   212,   213,   213,   213,   213,   213,   213,
+     215,   214,   217,   216,   218,   218,   219,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   219,   219,   221,
+     220,   222,   223,   224,   225,   226,   228,   227,   230,   229,
+     232,   231,   233,   233,   234,   234,   234,   234,   234,   236,
+     235,   237,   239,   238,   241,   240,   243,   242,   244,   244,
+     245,   245,   247,   246,   248,   248,   249,   249,   249,   249,
+     249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
+     249,   249,   249,   249,   249,   249,   251,   250,   252,   252,
+     252,   252,   254,   253,   256,   255,   258,   257,   259,   261,
+     260,   262,   263,   264,   265,   266,   267,   268,   269,   271,
+     270,   272,   274,   273,   276,   275,   278,   277,   280,   279,
+     281,   281,   282,   284,   283,   286,   285,   287,   287,   288,
+     288,   289,   290,   292,   291,   293,   293,   294,   294,   294,
+     295,   296,   298,   297,   300,   299,   301,   301,   302,   302,
+     304,   303,   306,   305,   307,   307,   307,   308,   308,   310,
+     309,   312,   311,   314,   313,   315,   315,   316,   316,   316,
+     316,   316,   316,   317,   318,   319,   320,   321,   322,   324,
+     323,   325,   325,   326,   326,   328,   327,   330,   329,   331,
+     331,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+     332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+     332,   334,   333,   336,   335,   338,   337,   340,   339,   342,
+     341,   344,   343,   345,   345,   345,   345,   346,   347,   349,
+     348,   350,   350,   351,   351,   353,   352,   354,   354,   355,
+     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
+     355,   355,   355,   355,   355,   355,   357,   356,   359,   358,
+     360,   360,   361,   361,   363,   362,   365,   364,   366,   366,
+     367,   367,   368,   368,   368,   368,   368,   368,   368,   368,
+     368,   368,   369,   370,   371,   373,   372,   375,   374,   377,
+     376,   378,   380,   379,   381,   383,   382,   384,   384,   385,
+     385,   387,   386,   389,   388,   390,   390,   391,   391,   392,
+     392,   392,   392,   392,   392,   392,   392,   392,   393,   395,
+     394,   396,   397,   398,   399,   401,   400,   402,   402,   403,
+     403,   405,   404,   407,   406,   408,   408,   409,   409,   409,
+     409,   409,   409,   409,   411,   410,   413,   412,   415,   414,
+     417,   416,   418,   418,   419,   419,   421,   420,   423,   422,
+     424,   424,   425,   425,   425,   425,   425,   425,   425,   425,
+     425,   425,   425,   427,   426,   428,   430,   429,   431,   432,
+     434,   433,   435,   435,   436,   436,   438,   437,   440,   439,
+     441,   441,   442,   442,   443,   443,   443,   443,   443,   443,
+     443,   443,   443,   443,   443,   445,   444,   447,   446,   449,
+     448,   451,   450,   453,   452,   455,   454,   457,   456,   459,
+     458,   460,   460,   462,   461,   464,   463,   465,   465,   467,
+     466,   468,   468,   469,   469,   470,   470,   470,   470,   470,
+     470,   470,   471,   473,   472,   474,   476,   475,   477,   477,
+     478,   478,   478,   478,   478,   478,   478,   478,   478,   480,
+     479,   481,   481,   481,   482,   484,   483,   485,   486,   487,
+     489,   488,   490,   490,   491,   491,   491,   491,   491,   493,
+     492,   495,   494,   497,   496,   499,   498,   501,   500,   502,
+     502,   503,   503,   503,   503,   503,   503,   503,   503,   503,
+     503,   503,   503,   503,   503,   503,   503,   503,   503,   504,
+     506,   505,   508,   507,   509,   511,   510,   512,   513,   515,
+     514,   516,   516,   518,   517,   519,   520,   522,   521,   523,
+     523,   523,   523,   523,   525,   524,   527,   526,   529,   528,
+     531,   530,   533,   532,   535,   534,   537,   536,   539,   538,
+     540,   540,   541,   543,   542,   545,   544,   547,   546,   548,
+     548,   549,   551,   550,   552,   552,   554,   553,   555,   555,
+     556,   556,   556,   556,   556,   556,   556,   557,   559,   558,
+     561,   560,   562,   562,   564,   563,   565,   565,   566,   566,
+     566,   566,   568,   567,   569,   570,   571
   };
 
   const unsigned char
@@ -4784,58 +4760,58 @@ namespace isc { namespace dhcp {
        4,     3,     0,     6,     0,     6,     0,     6,     0,     1,
        1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     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,     3,     3,     3,     3,     0,     4,     3,
-       0,     4,     0,     6,     1,     3,     1,     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,     0,     4,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     3,     0,
+       4,     3,     3,     3,     3,     3,     3,     3,     3,     0,
+       4,     3,     0,     4,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     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,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     1,     1,     1,
-       1,     3,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     1,     1,     1,     1,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     6,     0,     4,     0,     1,     1,     3,     0,     4,
-       0,     4,     0,     1,     1,     3,     1,     1,     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,
-       1,     1,     1,     0,     4,     1,     1,     3,     3,     0,
-       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     4,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     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,     0,     6,     0,     4,
+       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
+       1,     3,     1,     1,     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,     1,     1,     1,     0,
+       4,     1,     1,     3,     3,     0,     6,     0,     1,     1,
+       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     3,     1,     1,     1,     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,     1,     1,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     6,     1,     1,     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,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     1,     1,     3,     0,
-       4,     3,     3,     3,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     0,     4,     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,
-       1,     1,     1,     3,     0,     4,     0,     4,     3,     0,
-       4,     3,     3,     0,     4,     1,     1,     0,     4,     3,
-       3,     0,     4,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     6,     0,     4,     1,     3,     1,     0,     6,     0,
-       6,     0,     4,     1,     3,     1,     0,     6,     1,     3,
-       0,     4,     1,     3,     1,     1,     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
+       6,     1,     1,     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,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     1,     1,     1,     3,     0,     4,     3,     3,     3,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     0,
+       4,     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,     1,     1,     1,     3,
+       0,     4,     0,     4,     3,     0,     4,     3,     3,     0,
+       4,     1,     1,     0,     4,     3,     3,     0,     4,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
+       1,     3,     1,     0,     6,     0,     6,     0,     4,     1,
+       3,     1,     0,     6,     1,     3,     0,     4,     1,     3,
+       1,     1,     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
   };
 
 
@@ -4854,18 +4830,19 @@ namespace isc { namespace dhcp {
   "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
   "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
   "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", "\"keyspace\"",
-  "\"request-timeout\"", "\"tcp-keepalive\"", "\"tcp-nodelay\"",
-  "\"preferred-lifetime\"", "\"valid-lifetime\"", "\"renew-timer\"",
-  "\"rebind-timer\"", "\"decline-probation-period\"", "\"server-tag\"",
-  "\"subnet6\"", "\"option-def\"", "\"option-data\"", "\"name\"",
-  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"always-send\"",
-  "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
-  "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
-  "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
-  "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"",
-  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
-  "\"disabled\"", "\"out-of-pool\"", "\"global\"", "\"all\"",
-  "\"shared-networks\"", "\"mac-sources\"", "\"relay-supplied-options\"",
+  "\"consistency\"", "\"serial-consistency\"", "\"request-timeout\"",
+  "\"tcp-keepalive\"", "\"tcp-nodelay\"", "\"preferred-lifetime\"",
+  "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
+  "\"decline-probation-period\"", "\"server-tag\"", "\"subnet6\"",
+  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
+  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
+  "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
+  "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
+  "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
+  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
+  "\"out-of-pool\"", "\"global\"", "\"all\"", "\"shared-networks\"",
+  "\"mac-sources\"", "\"relay-supplied-options\"",
   "\"host-reservation-identifiers\"", "\"sanity-checks\"",
   "\"lease-checks\"", "\"client-classes\"", "\"require-client-classes\"",
   "\"test\"", "\"only-if-required\"", "\"client-class\"",
@@ -4913,153 +4890,153 @@ namespace isc { namespace dhcp {
   "name", "$@35", "persist", "lfc_interval", "readonly", "connect_timeout",
   "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
   "contact_points", "$@36", "max_reconnect_tries", "keyspace", "$@37",
-  "sanity_checks", "$@38", "sanity_checks_params", "sanity_checks_param",
-  "lease_checks", "$@39", "mac_sources", "$@40", "mac_sources_list",
-  "mac_sources_value", "duid_id", "string_id",
-  "host_reservation_identifiers", "$@41",
+  "consistency", "$@38", "serial_consistency", "$@39", "sanity_checks",
+  "$@40", "sanity_checks_params", "sanity_checks_param", "lease_checks",
+  "$@41", "mac_sources", "$@42", "mac_sources_list", "mac_sources_value",
+  "duid_id", "string_id", "host_reservation_identifiers", "$@43",
   "host_reservation_identifiers_list", "host_reservation_identifier",
-  "hw_address_id", "flex_id", "relay_supplied_options", "$@42",
-  "hooks_libraries", "$@43", "hooks_libraries_list",
-  "not_empty_hooks_libraries_list", "hooks_library", "$@44",
-  "sub_hooks_library", "$@45", "hooks_params", "hooks_param", "library",
-  "$@46", "parameters", "$@47", "expired_leases_processing", "$@48",
+  "hw_address_id", "flex_id", "relay_supplied_options", "$@44",
+  "hooks_libraries", "$@45", "hooks_libraries_list",
+  "not_empty_hooks_libraries_list", "hooks_library", "$@46",
+  "sub_hooks_library", "$@47", "hooks_params", "hooks_param", "library",
+  "$@48", "parameters", "$@49", "expired_leases_processing", "$@50",
   "expired_leases_params", "expired_leases_param",
   "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time",
   "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time",
-  "unwarned_reclaim_cycles", "subnet6_list", "$@49",
-  "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@50",
-  "sub_subnet6", "$@51", "subnet6_params", "subnet6_param", "subnet",
-  "$@52", "interface", "$@53", "interface_id", "$@54", "client_class",
-  "$@55", "require_client_classes", "$@56", "reservation_mode", "$@57",
-  "hr_mode", "id", "rapid_commit", "shared_networks", "$@58",
+  "unwarned_reclaim_cycles", "subnet6_list", "$@51",
+  "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@52",
+  "sub_subnet6", "$@53", "subnet6_params", "subnet6_param", "subnet",
+  "$@54", "interface", "$@55", "interface_id", "$@56", "client_class",
+  "$@57", "require_client_classes", "$@58", "reservation_mode", "$@59",
+  "hr_mode", "id", "rapid_commit", "shared_networks", "$@60",
   "shared_networks_content", "shared_networks_list", "shared_network",
-  "$@59", "shared_network_params", "shared_network_param",
-  "option_def_list", "$@60", "sub_option_def_list", "$@61",
+  "$@61", "shared_network_params", "shared_network_param",
+  "option_def_list", "$@62", "sub_option_def_list", "$@63",
   "option_def_list_content", "not_empty_option_def_list",
-  "option_def_entry", "$@62", "sub_option_def", "$@63",
+  "option_def_entry", "$@64", "sub_option_def", "$@65",
   "option_def_params", "not_empty_option_def_params", "option_def_param",
-  "option_def_name", "code", "option_def_code", "option_def_type", "$@64",
-  "option_def_record_types", "$@65", "space", "$@66", "option_def_space",
-  "option_def_encapsulate", "$@67", "option_def_array", "option_data_list",
-  "$@68", "option_data_list_content", "not_empty_option_data_list",
-  "option_data_entry", "$@69", "sub_option_data", "$@70",
+  "option_def_name", "code", "option_def_code", "option_def_type", "$@66",
+  "option_def_record_types", "$@67", "space", "$@68", "option_def_space",
+  "option_def_encapsulate", "$@69", "option_def_array", "option_data_list",
+  "$@70", "option_data_list_content", "not_empty_option_data_list",
+  "option_data_entry", "$@71", "sub_option_data", "$@72",
   "option_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@71",
+  "option_data_param", "option_data_name", "option_data_data", "$@73",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "option_data_always_send", "pools_list", "$@72", "pools_list_content",
-  "not_empty_pools_list", "pool_list_entry", "$@73", "sub_pool6", "$@74",
-  "pool_params", "pool_param", "pool_entry", "$@75", "user_context",
-  "$@76", "comment", "$@77", "pd_pools_list", "$@78",
+  "option_data_always_send", "pools_list", "$@74", "pools_list_content",
+  "not_empty_pools_list", "pool_list_entry", "$@75", "sub_pool6", "$@76",
+  "pool_params", "pool_param", "pool_entry", "$@77", "user_context",
+  "$@78", "comment", "$@79", "pd_pools_list", "$@80",
   "pd_pools_list_content", "not_empty_pd_pools_list", "pd_pool_entry",
-  "$@79", "sub_pd_pool", "$@80", "pd_pool_params", "pd_pool_param",
-  "pd_prefix", "$@81", "pd_prefix_len", "excluded_prefix", "$@82",
-  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@83",
+  "$@81", "sub_pd_pool", "$@82", "pd_pool_params", "pd_pool_param",
+  "pd_prefix", "$@83", "pd_prefix_len", "excluded_prefix", "$@84",
+  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@85",
   "reservations_list", "not_empty_reservations_list", "reservation",
-  "$@84", "sub_reservation", "$@85", "reservation_params",
+  "$@86", "sub_reservation", "$@87", "reservation_params",
   "not_empty_reservation_params", "reservation_param", "ip_addresses",
-  "$@86", "prefixes", "$@87", "duid", "$@88", "hw_address", "$@89",
-  "hostname", "$@90", "flex_id_value", "$@91",
-  "reservation_client_classes", "$@92", "relay", "$@93", "relay_map",
-  "ip_address", "$@94", "client_classes", "$@95", "client_classes_list",
-  "client_class_entry", "$@96", "client_class_params",
+  "$@88", "prefixes", "$@89", "duid", "$@90", "hw_address", "$@91",
+  "hostname", "$@92", "flex_id_value", "$@93",
+  "reservation_client_classes", "$@94", "relay", "$@95", "relay_map",
+  "ip_address", "$@96", "client_classes", "$@97", "client_classes_list",
+  "client_class_entry", "$@98", "client_class_params",
   "not_empty_client_class_params", "client_class_param",
-  "client_class_name", "client_class_test", "$@97", "only_if_required",
-  "server_id", "$@98", "server_id_params", "server_id_param",
-  "server_id_type", "$@99", "duid_type", "htype", "identifier", "$@100",
-  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@101",
-  "control_socket_params", "control_socket_param", "socket_type", "$@102",
-  "socket_name", "$@103", "dhcp_queue_control", "$@104", "dhcp_ddns",
-  "$@105", "sub_dhcp_ddns", "$@106", "dhcp_ddns_params", "dhcp_ddns_param",
-  "enable_updates", "qualifying_suffix", "$@107", "server_ip", "$@108",
-  "server_port", "sender_ip", "$@109", "sender_port", "max_queue_size",
-  "ncr_protocol", "$@110", "ncr_protocol_value", "ncr_format", "$@111",
+  "client_class_name", "client_class_test", "$@99", "only_if_required",
+  "server_id", "$@100", "server_id_params", "server_id_param",
+  "server_id_type", "$@101", "duid_type", "htype", "identifier", "$@102",
+  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@103",
+  "control_socket_params", "control_socket_param", "socket_type", "$@104",
+  "socket_name", "$@105", "dhcp_queue_control", "$@106", "dhcp_ddns",
+  "$@107", "sub_dhcp_ddns", "$@108", "dhcp_ddns_params", "dhcp_ddns_param",
+  "enable_updates", "qualifying_suffix", "$@109", "server_ip", "$@110",
+  "server_port", "sender_ip", "$@111", "sender_port", "max_queue_size",
+  "ncr_protocol", "$@112", "ncr_protocol_value", "ncr_format", "$@113",
   "override_no_update", "override_client_update", "replace_client_name",
-  "$@112", "replace_client_name_value", "generated_prefix", "$@113",
-  "hostname_char_set", "$@114", "hostname_char_replacement", "$@115",
-  "dhcp4_json_object", "$@116", "dhcpddns_json_object", "$@117",
-  "control_agent_json_object", "$@118", "config_control", "$@119",
-  "sub_config_control", "$@120", "config_control_params",
-  "config_control_param", "config_databases", "$@121", "logging_object",
-  "$@122", "sub_logging", "$@123", "logging_params", "logging_param",
-  "loggers", "$@124", "loggers_entries", "logger_entry", "$@125",
-  "logger_params", "logger_param", "debuglevel", "severity", "$@126",
-  "output_options_list", "$@127", "output_options_list_content",
-  "output_entry", "$@128", "output_params_list", "output_params", "output",
-  "$@129", "flush", "maxsize", "maxver", YY_NULLPTR
+  "$@114", "replace_client_name_value", "generated_prefix", "$@115",
+  "hostname_char_set", "$@116", "hostname_char_replacement", "$@117",
+  "dhcp4_json_object", "$@118", "dhcpddns_json_object", "$@119",
+  "control_agent_json_object", "$@120", "config_control", "$@121",
+  "sub_config_control", "$@122", "config_control_params",
+  "config_control_param", "config_databases", "$@123", "logging_object",
+  "$@124", "sub_logging", "$@125", "logging_params", "logging_param",
+  "loggers", "$@126", "loggers_entries", "logger_entry", "$@127",
+  "logger_params", "logger_param", "debuglevel", "severity", "$@128",
+  "output_options_list", "$@129", "output_options_list_content",
+  "output_entry", "$@130", "output_params_list", "output_params", "output",
+  "$@131", "flush", "maxsize", "maxver", YY_NULLPTR
   };
 
 #if PARSER6_DEBUG
-  const unsigned short
+  const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   258,   258,   258,   259,   259,   260,   260,   261,   261,
-     262,   262,   263,   263,   264,   264,   265,   265,   266,   266,
-     267,   267,   268,   268,   269,   269,   270,   270,   271,   271,
-     272,   272,   280,   281,   282,   283,   284,   285,   286,   289,
-     294,   294,   305,   308,   309,   312,   316,   323,   323,   330,
-     331,   334,   338,   345,   345,   352,   353,   356,   360,   371,
-     381,   381,   396,   397,   401,   402,   403,   404,   405,   406,
-     409,   409,   424,   424,   433,   434,   439,   440,   441,   442,
-     443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
-     453,   454,   455,   456,   457,   458,   459,   460,   461,   462,
-     463,   464,   465,   466,   467,   468,   469,   470,   471,   474,
-     474,   482,   487,   492,   497,   502,   507,   507,   515,   515,
-     526,   526,   535,   536,   539,   540,   541,   542,   543,   546,
-     546,   556,   562,   562,   574,   574,   586,   586,   596,   597,
-     600,   601,   604,   604,   614,   615,   618,   619,   620,   621,
-     622,   623,   624,   625,   626,   627,   628,   629,   630,   631,
-     632,   633,   634,   635,   638,   638,   645,   646,   647,   648,
-     651,   651,   659,   659,   667,   667,   675,   680,   680,   688,
-     693,   698,   703,   708,   713,   718,   723,   728,   728,   736,
-     741,   741,   749,   749,   759,   760,   762,   764,   764,   782,
-     782,   792,   793,   796,   797,   800,   805,   810,   810,   820,
-     821,   824,   825,   826,   829,   834,   841,   841,   851,   851,
-     861,   862,   865,   866,   869,   869,   879,   879,   889,   890,
-     891,   894,   895,   898,   898,   906,   906,   914,   914,   925,
-     926,   929,   930,   931,   932,   933,   934,   937,   942,   947,
-     952,   957,   962,   970,   970,   983,   984,   987,   988,   995,
-     995,  1021,  1021,  1032,  1033,  1037,  1038,  1039,  1040,  1041,
-    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,
-    1052,  1053,  1054,  1055,  1056,  1059,  1059,  1067,  1067,  1075,
-    1075,  1083,  1083,  1091,  1091,  1101,  1101,  1108,  1109,  1110,
-    1111,  1114,  1119,  1127,  1127,  1138,  1139,  1143,  1144,  1147,
-    1147,  1155,  1156,  1159,  1160,  1161,  1162,  1163,  1164,  1165,
-    1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,  1174,  1175,
-    1182,  1182,  1195,  1195,  1204,  1205,  1208,  1209,  1214,  1214,
-    1229,  1229,  1243,  1244,  1247,  1248,  1251,  1252,  1253,  1254,
-    1255,  1256,  1257,  1258,  1259,  1260,  1263,  1265,  1270,  1272,
-    1272,  1280,  1280,  1288,  1288,  1296,  1298,  1298,  1306,  1315,
-    1315,  1327,  1328,  1333,  1334,  1339,  1339,  1351,  1351,  1363,
-    1364,  1369,  1370,  1375,  1376,  1377,  1378,  1379,  1380,  1381,
-    1382,  1383,  1386,  1388,  1388,  1396,  1398,  1400,  1405,  1413,
-    1413,  1425,  1426,  1429,  1430,  1433,  1433,  1443,  1443,  1452,
-    1453,  1456,  1457,  1458,  1459,  1460,  1461,  1462,  1465,  1465,
-    1473,  1473,  1498,  1498,  1528,  1528,  1540,  1541,  1544,  1545,
-    1548,  1548,  1560,  1560,  1572,  1573,  1576,  1577,  1578,  1579,
-    1580,  1581,  1582,  1583,  1584,  1585,  1586,  1589,  1589,  1597,
-    1602,  1602,  1610,  1615,  1623,  1623,  1633,  1634,  1637,  1638,
-    1641,  1641,  1650,  1650,  1659,  1660,  1663,  1664,  1668,  1669,
-    1670,  1671,  1672,  1673,  1674,  1675,  1676,  1677,  1678,  1681,
-    1681,  1691,  1691,  1701,  1701,  1709,  1709,  1717,  1717,  1725,
-    1725,  1733,  1733,  1746,  1746,  1756,  1757,  1760,  1760,  1771,
-    1771,  1781,  1782,  1785,  1785,  1795,  1796,  1799,  1800,  1803,
-    1804,  1805,  1806,  1807,  1808,  1809,  1812,  1814,  1814,  1822,
-    1830,  1830,  1842,  1843,  1846,  1847,  1848,  1849,  1850,  1851,
-    1852,  1853,  1854,  1857,  1857,  1864,  1865,  1866,  1869,  1874,
-    1874,  1882,  1887,  1894,  1901,  1901,  1911,  1912,  1915,  1916,
-    1917,  1918,  1919,  1922,  1922,  1930,  1930,  1940,  1940,  1980,
-    1980,  1992,  1992,  2002,  2003,  2006,  2007,  2008,  2009,  2010,
-    2011,  2012,  2013,  2014,  2015,  2016,  2017,  2018,  2019,  2020,
-    2021,  2022,  2023,  2026,  2031,  2031,  2039,  2039,  2047,  2052,
-    2052,  2060,  2065,  2070,  2070,  2078,  2079,  2082,  2082,  2090,
-    2095,  2100,  2100,  2108,  2111,  2114,  2117,  2120,  2126,  2126,
-    2134,  2134,  2142,  2142,  2152,  2152,  2159,  2159,  2166,  2166,
-    2175,  2175,  2186,  2186,  2196,  2197,  2201,  2204,  2204,  2219,
-    2219,  2229,  2229,  2240,  2241,  2245,  2249,  2249,  2261,  2262,
-    2266,  2266,  2274,  2275,  2278,  2279,  2280,  2281,  2282,  2283,
-    2284,  2287,  2292,  2292,  2300,  2300,  2310,  2311,  2314,  2314,
-    2322,  2323,  2326,  2327,  2328,  2329,  2332,  2332,  2340,  2345,
-    2350
+       0,   260,   260,   260,   261,   261,   262,   262,   263,   263,
+     264,   264,   265,   265,   266,   266,   267,   267,   268,   268,
+     269,   269,   270,   270,   271,   271,   272,   272,   273,   273,
+     274,   274,   282,   283,   284,   285,   286,   287,   288,   291,
+     296,   296,   307,   310,   311,   314,   318,   325,   325,   332,
+     333,   336,   340,   347,   347,   354,   355,   358,   362,   373,
+     383,   383,   398,   399,   403,   404,   405,   406,   407,   408,
+     411,   411,   426,   426,   435,   436,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
+     465,   466,   467,   468,   469,   470,   471,   472,   473,   476,
+     476,   484,   489,   494,   499,   504,   509,   509,   517,   517,
+     528,   528,   537,   538,   541,   542,   543,   544,   545,   548,
+     548,   558,   564,   564,   576,   576,   588,   588,   598,   599,
+     602,   603,   606,   606,   616,   617,   620,   621,   622,   623,
+     624,   625,   626,   627,   628,   629,   630,   631,   632,   633,
+     634,   635,   636,   637,   638,   639,   642,   642,   649,   650,
+     651,   652,   655,   655,   663,   663,   671,   671,   679,   684,
+     684,   692,   697,   702,   707,   712,   717,   722,   727,   732,
+     732,   740,   745,   745,   753,   753,   761,   761,   769,   769,
+     779,   780,   782,   784,   784,   802,   802,   812,   813,   816,
+     817,   820,   825,   830,   830,   840,   841,   844,   845,   846,
+     849,   854,   861,   861,   871,   871,   881,   882,   885,   886,
+     889,   889,   899,   899,   909,   910,   911,   914,   915,   918,
+     918,   926,   926,   934,   934,   945,   946,   949,   950,   951,
+     952,   953,   954,   957,   962,   967,   972,   977,   982,   990,
+     990,  1003,  1004,  1007,  1008,  1015,  1015,  1041,  1041,  1052,
+    1053,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,
+    1066,  1067,  1068,  1069,  1070,  1071,  1072,  1073,  1074,  1075,
+    1076,  1079,  1079,  1087,  1087,  1095,  1095,  1103,  1103,  1111,
+    1111,  1121,  1121,  1128,  1129,  1130,  1131,  1134,  1139,  1147,
+    1147,  1158,  1159,  1163,  1164,  1167,  1167,  1175,  1176,  1179,
+    1180,  1181,  1182,  1183,  1184,  1185,  1186,  1187,  1188,  1189,
+    1190,  1191,  1192,  1193,  1194,  1195,  1202,  1202,  1215,  1215,
+    1224,  1225,  1228,  1229,  1234,  1234,  1249,  1249,  1263,  1264,
+    1267,  1268,  1271,  1272,  1273,  1274,  1275,  1276,  1277,  1278,
+    1279,  1280,  1283,  1285,  1290,  1292,  1292,  1300,  1300,  1308,
+    1308,  1316,  1318,  1318,  1326,  1335,  1335,  1347,  1348,  1353,
+    1354,  1359,  1359,  1371,  1371,  1383,  1384,  1389,  1390,  1395,
+    1396,  1397,  1398,  1399,  1400,  1401,  1402,  1403,  1406,  1408,
+    1408,  1416,  1418,  1420,  1425,  1433,  1433,  1445,  1446,  1449,
+    1450,  1453,  1453,  1463,  1463,  1472,  1473,  1476,  1477,  1478,
+    1479,  1480,  1481,  1482,  1485,  1485,  1493,  1493,  1518,  1518,
+    1548,  1548,  1560,  1561,  1564,  1565,  1568,  1568,  1580,  1580,
+    1592,  1593,  1596,  1597,  1598,  1599,  1600,  1601,  1602,  1603,
+    1604,  1605,  1606,  1609,  1609,  1617,  1622,  1622,  1630,  1635,
+    1643,  1643,  1653,  1654,  1657,  1658,  1661,  1661,  1670,  1670,
+    1679,  1680,  1683,  1684,  1688,  1689,  1690,  1691,  1692,  1693,
+    1694,  1695,  1696,  1697,  1698,  1701,  1701,  1711,  1711,  1721,
+    1721,  1729,  1729,  1737,  1737,  1745,  1745,  1753,  1753,  1766,
+    1766,  1776,  1777,  1780,  1780,  1791,  1791,  1801,  1802,  1805,
+    1805,  1815,  1816,  1819,  1820,  1823,  1824,  1825,  1826,  1827,
+    1828,  1829,  1832,  1834,  1834,  1842,  1850,  1850,  1862,  1863,
+    1866,  1867,  1868,  1869,  1870,  1871,  1872,  1873,  1874,  1877,
+    1877,  1884,  1885,  1886,  1889,  1894,  1894,  1902,  1907,  1914,
+    1921,  1921,  1931,  1932,  1935,  1936,  1937,  1938,  1939,  1942,
+    1942,  1950,  1950,  1960,  1960,  2000,  2000,  2012,  2012,  2022,
+    2023,  2026,  2027,  2028,  2029,  2030,  2031,  2032,  2033,  2034,
+    2035,  2036,  2037,  2038,  2039,  2040,  2041,  2042,  2043,  2046,
+    2051,  2051,  2059,  2059,  2067,  2072,  2072,  2080,  2085,  2090,
+    2090,  2098,  2099,  2102,  2102,  2110,  2115,  2120,  2120,  2128,
+    2131,  2134,  2137,  2140,  2146,  2146,  2154,  2154,  2162,  2162,
+    2172,  2172,  2179,  2179,  2186,  2186,  2195,  2195,  2206,  2206,
+    2216,  2217,  2221,  2224,  2224,  2239,  2239,  2249,  2249,  2260,
+    2261,  2265,  2269,  2269,  2281,  2282,  2286,  2286,  2294,  2295,
+    2298,  2299,  2300,  2301,  2302,  2303,  2304,  2307,  2312,  2312,
+    2320,  2320,  2330,  2331,  2334,  2334,  2342,  2343,  2346,  2347,
+    2348,  2349,  2352,  2352,  2360,  2365,  2370
   };
 
   // Print the state stack on the debug stream.
@@ -5072,18 +5049,18 @@ namespace isc { namespace dhcp {
            i_end = yystack_.end ();
          i != i_end; ++i)
       *yycdebug_ << ' ' << i->state;
-    *yycdebug_ << '\n';
+    *yycdebug_ << std::endl;
   }
 
   // Report on the debug stream that the rule \a yyrule is going to be reduced.
   void
   Dhcp6Parser::yy_reduce_print_ (int yyrule)
   {
-    unsigned yylno = yyrline_[yyrule];
+    unsigned int yylno = yyrline_[yyrule];
     int yynrhs = yyr2_[yyrule];
     // Print the symbols being reduced, and their result.
     *yycdebug_ << "Reducing stack by rule " << yyrule - 1
-               << " (line " << yylno << "):\n";
+               << " (line " << yylno << "):" << std::endl;
     // The symbols being reduced.
     for (int yyi = 0; yyi < yynrhs; yyi++)
       YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
@@ -5092,10 +5069,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER6_DEBUG
 
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:1242
+#line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 5098 "dhcp6_parser.cc" // lalr1.cc:1242
-#line 2355 "dhcp6_parser.yy" // lalr1.cc:1243
+#line 5075 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2375 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index 1821830ba1567bf53cb26af0b3d140805d08cf7c..6c7ea1b5ff8ba16cb851c66dfa1bd4be4ff36b82 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -30,7 +30,6 @@
 // This special exception was added by the Free Software Foundation in
 // version 2.2 of Bison.
 
-
 /**
  ** \file dhcp6_parser.h
  ** Define the isc::dhcp::parser class.
 
 // C++ LALR(1) parser skeleton written by Akim Demaille.
 
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details.  Do not rely on them.
-
 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 // //                    "%code requires" blocks.
-#line 17 "dhcp6_parser.yy" // lalr1.cc:401
+#line 17 "dhcp6_parser.yy" // lalr1.cc:377
 
 #include <string>
 #include <cc/data.h>
@@ -56,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 60 "dhcp6_parser.h" // lalr1.cc:401
+#line 56 "dhcp6_parser.h" // lalr1.cc:377
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -64,43 +60,7 @@ using namespace std;
 # include <stdexcept>
 # include <string>
 # include <vector>
-
-#if defined __cplusplus
-# define YY_CPLUSPLUS __cplusplus
-#else
-# define YY_CPLUSPLUS 199711L
-#endif
-
-// Support move semantics when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_MOVE           std::move
-# define YY_MOVE_OR_COPY   move
-# define YY_MOVE_REF(Type) Type&&
-# define YY_RVREF(Type)    Type&&
-# define YY_COPY(Type)     Type
-#else
-# define YY_MOVE
-# define YY_MOVE_OR_COPY   copy
-# define YY_MOVE_REF(Type) Type&
-# define YY_RVREF(Type)    const Type&
-# define YY_COPY(Type)     const Type&
-#endif
-
-// Support noexcept when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_NOEXCEPT noexcept
-# define YY_NOTHROW
-#else
-# define YY_NOEXCEPT
-# define YY_NOTHROW throw ()
-#endif
-
-// Support constexpr when possible.
-#if 201703 <= YY_CPLUSPLUS
-# define YY_CONSTEXPR constexpr
-#else
-# define YY_CONSTEXPR
-#endif
+# include "stack.hh"
 # include "location.hh"
 #include <typeinfo>
 #ifndef YYASSERT
@@ -127,6 +87,15 @@ using namespace std;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -134,7 +103,7 @@ using namespace std;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -153,18 +122,6 @@ using namespace std;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
 /* Debug traces.  */
 #ifndef PARSER6_DEBUG
 # if defined YYDEBUG
@@ -178,174 +135,120 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER6_DEBUG */
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:401
+#line 14 "dhcp6_parser.yy" // lalr1.cc:377
 namespace isc { namespace dhcp {
-#line 184 "dhcp6_parser.h" // lalr1.cc:401
+#line 141 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
-  /// A Bison parser.
-  class Dhcp6Parser
-  {
-  public:
-#ifndef PARSER6_STYPE
-  /// A buffer to store and retrieve objects.
+  /// A char[S] buffer to store and retrieve objects.
   ///
   /// Sort of a variant, but does not keep track of the nature
   /// of the stored data, since that knowledge is available
-  /// via the current parser state.
-  class semantic_type
+  /// via the current state.
+  template <size_t S>
+  struct variant
   {
-  public:
     /// Type of *this.
-    typedef semantic_type self_type;
+    typedef variant<S> self_type;
 
     /// Empty construction.
-    semantic_type () YY_NOEXCEPT
-      : yybuffer_ ()
-      , yytypeid_ (YY_NULLPTR)
+    variant ()
+      : yytypeid_ (YY_NULLPTR)
     {}
 
     /// Construct and fill.
     template <typename T>
-    semantic_type (YY_RVREF (T) t)
+    variant (const T& t)
       : yytypeid_ (&typeid (T))
     {
-      YYASSERT (sizeof (T) <= size);
-      new (yyas_<T> ()) T (YY_MOVE (t));
+      YYASSERT (sizeof (T) <= S);
+      new (yyas_<T> ()) T (t);
     }
 
     /// Destruction, allowed only if empty.
-    ~semantic_type () YY_NOEXCEPT
+    ~variant ()
     {
       YYASSERT (!yytypeid_);
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Instantiate a \a T in here from \a t.
-    template <typename T, typename... U>
-    T&
-    emplace (U&&... u)
-    {
-      YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
-      yytypeid_ = & typeid (T);
-      return *new (yyas_<T> ()) T (std::forward <U>(u)...);
-    }
-# else
     /// Instantiate an empty \a T in here.
     template <typename T>
     T&
-    emplace ()
+    build ()
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
-      return *new (yyas_<T> ()) T ();
+      return *new (yyas_<T> ()) T;
     }
 
     /// Instantiate a \a T in here from \a t.
     template <typename T>
     T&
-    emplace (const T& t)
+    build (const T& t)
     {
       YYASSERT (!yytypeid_);
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
-# endif
-
-    /// Instantiate an empty \a T in here.
-    /// Obsolete, use emplace.
-    template <typename T>
-    T&
-    build ()
-    {
-      return emplace<T> ();
-    }
-
-    /// Instantiate a \a T in here from \a t.
-    /// Obsolete, use emplace.
-    template <typename T>
-    T&
-    build (const T& t)
-    {
-      return emplace<T> (t);
-    }
 
     /// Accessor to a built \a T.
     template <typename T>
     T&
-    as () YY_NOEXCEPT
+    as ()
     {
-      YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
     /// Const accessor to a built \a T (for %printer).
     template <typename T>
     const T&
-    as () const YY_NOEXCEPT
+    as () const
     {
-      YYASSERT (yytypeid_);
       YYASSERT (*yytypeid_ == typeid (T));
-      YYASSERT (sizeof (T) <= size);
+      YYASSERT (sizeof (T) <= S);
       return *yyas_<T> ();
     }
 
-    /// Swap the content with \a that, of same type.
+    /// Swap the content with \a other, of same type.
     ///
     /// Both variants must be built beforehand, because swapping the actual
     /// data requires reading it (with as()), and this is not possible on
     /// unconstructed variants: it would require some dynamic testing, which
-    /// should not be the variant's responsibility.
+    /// should not be the variant's responsability.
     /// Swapping between built and (possibly) non-built is done with
-    /// self_type::move ().
+    /// variant::move ().
     template <typename T>
     void
-    swap (self_type& that) YY_NOEXCEPT
+    swap (self_type& other)
     {
       YYASSERT (yytypeid_);
-      YYASSERT (*yytypeid_ == *that.yytypeid_);
-      std::swap (as<T> (), that.as<T> ());
+      YYASSERT (*yytypeid_ == *other.yytypeid_);
+      std::swap (as<T> (), other.as<T> ());
     }
 
-    /// Move the content of \a that to this.
+    /// Move the content of \a other to this.
     ///
-    /// Destroys \a that.
-    template <typename T>
-    void
-    move (self_type& that)
-    {
-# if 201103L <= YY_CPLUSPLUS
-      emplace<T> (std::move (that.as<T> ()));
-# else
-      emplace<T> ();
-      swap<T> (that);
-# endif
-      that.destroy<T> ();
-    }
-
-# if 201103L <= YY_CPLUSPLUS
-    /// Move the content of \a that to this.
+    /// Destroys \a other.
     template <typename T>
     void
-    move (self_type&& that)
+    move (self_type& other)
     {
-      emplace<T> (std::move (that.as<T> ()));
-      that.destroy<T> ();
+      build<T> ();
+      swap<T> (other);
+      other.destroy<T> ();
     }
-#endif
 
-    /// Copy the content of \a that to this.
+    /// Copy the content of \a other to this.
     template <typename T>
     void
-    copy (const self_type& that)
+    copy (const self_type& other)
     {
-      emplace<T> (that.as<T> ());
+      build<T> (other.as<T> ());
     }
 
     /// Destroy the stored \a T.
@@ -359,13 +262,13 @@ namespace isc { namespace dhcp {
 
   private:
     /// Prohibit blind copies.
-    self_type& operator= (const self_type&);
-    semantic_type (const self_type&);
+    self_type& operator=(const self_type&);
+    variant (const self_type&);
 
     /// Accessor to raw memory as \a T.
     template <typename T>
     T*
-    yyas_ () YY_NOEXCEPT
+    yyas_ ()
     {
       void *yyp = yybuffer_.yyraw;
       return static_cast<T*> (yyp);
@@ -374,12 +277,30 @@ namespace isc { namespace dhcp {
     /// Const accessor to raw memory as \a T.
     template <typename T>
     const T*
-    yyas_ () const YY_NOEXCEPT
+    yyas_ () const
     {
       const void *yyp = yybuffer_.yyraw;
       return static_cast<const T*> (yyp);
      }
 
+    union
+    {
+      /// Strongest alignment constraints.
+      long double yyalign_me;
+      /// A buffer large enough to store any of the semantic values.
+      char yyraw[S];
+    } yybuffer_;
+
+    /// Whether the content is built: if defined, the name of the stored type.
+    const std::type_info *yytypeid_;
+  };
+
+
+  /// A Bison parser.
+  class Dhcp6Parser
+  {
+  public:
+#ifndef PARSER6_STYPE
     /// An auxiliary type to compute the largest semantic type.
     union union_type
     {
@@ -390,37 +311,23 @@ namespace isc { namespace dhcp {
       // duid_type
       // ncr_protocol_value
       // replace_client_name_value
-      char dummy1[sizeof (ElementPtr)];
+      char dummy1[sizeof(ElementPtr)];
 
       // "boolean"
-      char dummy2[sizeof (bool)];
+      char dummy2[sizeof(bool)];
 
       // "floating point"
-      char dummy3[sizeof (double)];
+      char dummy3[sizeof(double)];
 
       // "integer"
-      char dummy4[sizeof (int64_t)];
+      char dummy4[sizeof(int64_t)];
 
       // "constant string"
-      char dummy5[sizeof (std::string)];
-    };
-
-    /// The size of the largest semantic type.
-    enum { size = sizeof (union_type) };
-
-    /// A buffer to store semantic values.
-    union
-    {
-      /// Strongest alignment constraints.
-      long double yyalign_me;
-      /// A buffer large enough to store any of the semantic values.
-      char yyraw[size];
-    } yybuffer_;
-
-    /// Whether the content is built: if defined, the name of the stored type.
-    const std::type_info *yytypeid_;
-  };
+      char dummy5[sizeof(std::string)];
+};
 
+    /// Symbol semantic values.
+    typedef variant<sizeof(union_type)> semantic_type;
 #else
     typedef PARSER6_STYPE semantic_type;
 #endif
@@ -430,18 +337,7 @@ namespace isc { namespace dhcp {
     /// Syntax errors thrown from user actions.
     struct syntax_error : std::runtime_error
     {
-      syntax_error (const location_type& l, const std::string& m)
-        : std::runtime_error (m)
-        , location (l)
-      {}
-
-      syntax_error (const syntax_error& s)
-        : std::runtime_error (s.what ())
-        , location (s.location)
-      {}
-
-      ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
-
+      syntax_error (const location_type& l, const std::string& m);
       location_type location;
     };
 
@@ -485,144 +381,146 @@ namespace isc { namespace dhcp {
         TOKEN_MAX_RECONNECT_TRIES = 289,
         TOKEN_RECONNECT_WAIT_TIME = 290,
         TOKEN_KEYSPACE = 291,
-        TOKEN_REQUEST_TIMEOUT = 292,
-        TOKEN_TCP_KEEPALIVE = 293,
-        TOKEN_TCP_NODELAY = 294,
-        TOKEN_PREFERRED_LIFETIME = 295,
-        TOKEN_VALID_LIFETIME = 296,
-        TOKEN_RENEW_TIMER = 297,
-        TOKEN_REBIND_TIMER = 298,
-        TOKEN_DECLINE_PROBATION_PERIOD = 299,
-        TOKEN_SERVER_TAG = 300,
-        TOKEN_SUBNET6 = 301,
-        TOKEN_OPTION_DEF = 302,
-        TOKEN_OPTION_DATA = 303,
-        TOKEN_NAME = 304,
-        TOKEN_DATA = 305,
-        TOKEN_CODE = 306,
-        TOKEN_SPACE = 307,
-        TOKEN_CSV_FORMAT = 308,
-        TOKEN_ALWAYS_SEND = 309,
-        TOKEN_RECORD_TYPES = 310,
-        TOKEN_ENCAPSULATE = 311,
-        TOKEN_ARRAY = 312,
-        TOKEN_POOLS = 313,
-        TOKEN_POOL = 314,
-        TOKEN_PD_POOLS = 315,
-        TOKEN_PREFIX = 316,
-        TOKEN_PREFIX_LEN = 317,
-        TOKEN_EXCLUDED_PREFIX = 318,
-        TOKEN_EXCLUDED_PREFIX_LEN = 319,
-        TOKEN_DELEGATED_LEN = 320,
-        TOKEN_USER_CONTEXT = 321,
-        TOKEN_COMMENT = 322,
-        TOKEN_SUBNET = 323,
-        TOKEN_INTERFACE = 324,
-        TOKEN_INTERFACE_ID = 325,
-        TOKEN_ID = 326,
-        TOKEN_RAPID_COMMIT = 327,
-        TOKEN_RESERVATION_MODE = 328,
-        TOKEN_DISABLED = 329,
-        TOKEN_OUT_OF_POOL = 330,
-        TOKEN_GLOBAL = 331,
-        TOKEN_ALL = 332,
-        TOKEN_SHARED_NETWORKS = 333,
-        TOKEN_MAC_SOURCES = 334,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 335,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 336,
-        TOKEN_SANITY_CHECKS = 337,
-        TOKEN_LEASE_CHECKS = 338,
-        TOKEN_CLIENT_CLASSES = 339,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 340,
-        TOKEN_TEST = 341,
-        TOKEN_ONLY_IF_REQUIRED = 342,
-        TOKEN_CLIENT_CLASS = 343,
-        TOKEN_RESERVATIONS = 344,
-        TOKEN_IP_ADDRESSES = 345,
-        TOKEN_PREFIXES = 346,
-        TOKEN_DUID = 347,
-        TOKEN_HW_ADDRESS = 348,
-        TOKEN_HOSTNAME = 349,
-        TOKEN_FLEX_ID = 350,
-        TOKEN_RELAY = 351,
-        TOKEN_IP_ADDRESS = 352,
-        TOKEN_HOOKS_LIBRARIES = 353,
-        TOKEN_LIBRARY = 354,
-        TOKEN_PARAMETERS = 355,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 356,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 357,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 358,
-        TOKEN_HOLD_RECLAIMED_TIME = 359,
-        TOKEN_MAX_RECLAIM_LEASES = 360,
-        TOKEN_MAX_RECLAIM_TIME = 361,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 362,
-        TOKEN_SERVER_ID = 363,
-        TOKEN_LLT = 364,
-        TOKEN_EN = 365,
-        TOKEN_LL = 366,
-        TOKEN_IDENTIFIER = 367,
-        TOKEN_HTYPE = 368,
-        TOKEN_TIME = 369,
-        TOKEN_ENTERPRISE_ID = 370,
-        TOKEN_DHCP4O6_PORT = 371,
-        TOKEN_CONTROL_SOCKET = 372,
-        TOKEN_SOCKET_TYPE = 373,
-        TOKEN_SOCKET_NAME = 374,
-        TOKEN_DHCP_QUEUE_CONTROL = 375,
-        TOKEN_DHCP_DDNS = 376,
-        TOKEN_ENABLE_UPDATES = 377,
-        TOKEN_QUALIFYING_SUFFIX = 378,
-        TOKEN_SERVER_IP = 379,
-        TOKEN_SERVER_PORT = 380,
-        TOKEN_SENDER_IP = 381,
-        TOKEN_SENDER_PORT = 382,
-        TOKEN_MAX_QUEUE_SIZE = 383,
-        TOKEN_NCR_PROTOCOL = 384,
-        TOKEN_NCR_FORMAT = 385,
-        TOKEN_OVERRIDE_NO_UPDATE = 386,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 387,
-        TOKEN_REPLACE_CLIENT_NAME = 388,
-        TOKEN_GENERATED_PREFIX = 389,
-        TOKEN_UDP = 390,
-        TOKEN_TCP = 391,
-        TOKEN_JSON = 392,
-        TOKEN_WHEN_PRESENT = 393,
-        TOKEN_NEVER = 394,
-        TOKEN_ALWAYS = 395,
-        TOKEN_WHEN_NOT_PRESENT = 396,
-        TOKEN_HOSTNAME_CHAR_SET = 397,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 398,
-        TOKEN_LOGGING = 399,
-        TOKEN_LOGGERS = 400,
-        TOKEN_OUTPUT_OPTIONS = 401,
-        TOKEN_OUTPUT = 402,
-        TOKEN_DEBUGLEVEL = 403,
-        TOKEN_SEVERITY = 404,
-        TOKEN_FLUSH = 405,
-        TOKEN_MAXSIZE = 406,
-        TOKEN_MAXVER = 407,
-        TOKEN_DHCP4 = 408,
-        TOKEN_DHCPDDNS = 409,
-        TOKEN_CONTROL_AGENT = 410,
-        TOKEN_TOPLEVEL_JSON = 411,
-        TOKEN_TOPLEVEL_DHCP6 = 412,
-        TOKEN_SUB_DHCP6 = 413,
-        TOKEN_SUB_INTERFACES6 = 414,
-        TOKEN_SUB_SUBNET6 = 415,
-        TOKEN_SUB_POOL6 = 416,
-        TOKEN_SUB_PD_POOL = 417,
-        TOKEN_SUB_RESERVATION = 418,
-        TOKEN_SUB_OPTION_DEFS = 419,
-        TOKEN_SUB_OPTION_DEF = 420,
-        TOKEN_SUB_OPTION_DATA = 421,
-        TOKEN_SUB_HOOKS_LIBRARY = 422,
-        TOKEN_SUB_DHCP_DDNS = 423,
-        TOKEN_SUB_LOGGING = 424,
-        TOKEN_SUB_CONFIG_CONTROL = 425,
-        TOKEN_STRING = 426,
-        TOKEN_INTEGER = 427,
-        TOKEN_FLOAT = 428,
-        TOKEN_BOOLEAN = 429
+        TOKEN_CONSISTENCY = 292,
+        TOKEN_SERIAL_CONSISTENCY = 293,
+        TOKEN_REQUEST_TIMEOUT = 294,
+        TOKEN_TCP_KEEPALIVE = 295,
+        TOKEN_TCP_NODELAY = 296,
+        TOKEN_PREFERRED_LIFETIME = 297,
+        TOKEN_VALID_LIFETIME = 298,
+        TOKEN_RENEW_TIMER = 299,
+        TOKEN_REBIND_TIMER = 300,
+        TOKEN_DECLINE_PROBATION_PERIOD = 301,
+        TOKEN_SERVER_TAG = 302,
+        TOKEN_SUBNET6 = 303,
+        TOKEN_OPTION_DEF = 304,
+        TOKEN_OPTION_DATA = 305,
+        TOKEN_NAME = 306,
+        TOKEN_DATA = 307,
+        TOKEN_CODE = 308,
+        TOKEN_SPACE = 309,
+        TOKEN_CSV_FORMAT = 310,
+        TOKEN_ALWAYS_SEND = 311,
+        TOKEN_RECORD_TYPES = 312,
+        TOKEN_ENCAPSULATE = 313,
+        TOKEN_ARRAY = 314,
+        TOKEN_POOLS = 315,
+        TOKEN_POOL = 316,
+        TOKEN_PD_POOLS = 317,
+        TOKEN_PREFIX = 318,
+        TOKEN_PREFIX_LEN = 319,
+        TOKEN_EXCLUDED_PREFIX = 320,
+        TOKEN_EXCLUDED_PREFIX_LEN = 321,
+        TOKEN_DELEGATED_LEN = 322,
+        TOKEN_USER_CONTEXT = 323,
+        TOKEN_COMMENT = 324,
+        TOKEN_SUBNET = 325,
+        TOKEN_INTERFACE = 326,
+        TOKEN_INTERFACE_ID = 327,
+        TOKEN_ID = 328,
+        TOKEN_RAPID_COMMIT = 329,
+        TOKEN_RESERVATION_MODE = 330,
+        TOKEN_DISABLED = 331,
+        TOKEN_OUT_OF_POOL = 332,
+        TOKEN_GLOBAL = 333,
+        TOKEN_ALL = 334,
+        TOKEN_SHARED_NETWORKS = 335,
+        TOKEN_MAC_SOURCES = 336,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 337,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 338,
+        TOKEN_SANITY_CHECKS = 339,
+        TOKEN_LEASE_CHECKS = 340,
+        TOKEN_CLIENT_CLASSES = 341,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 342,
+        TOKEN_TEST = 343,
+        TOKEN_ONLY_IF_REQUIRED = 344,
+        TOKEN_CLIENT_CLASS = 345,
+        TOKEN_RESERVATIONS = 346,
+        TOKEN_IP_ADDRESSES = 347,
+        TOKEN_PREFIXES = 348,
+        TOKEN_DUID = 349,
+        TOKEN_HW_ADDRESS = 350,
+        TOKEN_HOSTNAME = 351,
+        TOKEN_FLEX_ID = 352,
+        TOKEN_RELAY = 353,
+        TOKEN_IP_ADDRESS = 354,
+        TOKEN_HOOKS_LIBRARIES = 355,
+        TOKEN_LIBRARY = 356,
+        TOKEN_PARAMETERS = 357,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 358,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 359,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 360,
+        TOKEN_HOLD_RECLAIMED_TIME = 361,
+        TOKEN_MAX_RECLAIM_LEASES = 362,
+        TOKEN_MAX_RECLAIM_TIME = 363,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 364,
+        TOKEN_SERVER_ID = 365,
+        TOKEN_LLT = 366,
+        TOKEN_EN = 367,
+        TOKEN_LL = 368,
+        TOKEN_IDENTIFIER = 369,
+        TOKEN_HTYPE = 370,
+        TOKEN_TIME = 371,
+        TOKEN_ENTERPRISE_ID = 372,
+        TOKEN_DHCP4O6_PORT = 373,
+        TOKEN_CONTROL_SOCKET = 374,
+        TOKEN_SOCKET_TYPE = 375,
+        TOKEN_SOCKET_NAME = 376,
+        TOKEN_DHCP_QUEUE_CONTROL = 377,
+        TOKEN_DHCP_DDNS = 378,
+        TOKEN_ENABLE_UPDATES = 379,
+        TOKEN_QUALIFYING_SUFFIX = 380,
+        TOKEN_SERVER_IP = 381,
+        TOKEN_SERVER_PORT = 382,
+        TOKEN_SENDER_IP = 383,
+        TOKEN_SENDER_PORT = 384,
+        TOKEN_MAX_QUEUE_SIZE = 385,
+        TOKEN_NCR_PROTOCOL = 386,
+        TOKEN_NCR_FORMAT = 387,
+        TOKEN_OVERRIDE_NO_UPDATE = 388,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 389,
+        TOKEN_REPLACE_CLIENT_NAME = 390,
+        TOKEN_GENERATED_PREFIX = 391,
+        TOKEN_UDP = 392,
+        TOKEN_TCP = 393,
+        TOKEN_JSON = 394,
+        TOKEN_WHEN_PRESENT = 395,
+        TOKEN_NEVER = 396,
+        TOKEN_ALWAYS = 397,
+        TOKEN_WHEN_NOT_PRESENT = 398,
+        TOKEN_HOSTNAME_CHAR_SET = 399,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 400,
+        TOKEN_LOGGING = 401,
+        TOKEN_LOGGERS = 402,
+        TOKEN_OUTPUT_OPTIONS = 403,
+        TOKEN_OUTPUT = 404,
+        TOKEN_DEBUGLEVEL = 405,
+        TOKEN_SEVERITY = 406,
+        TOKEN_FLUSH = 407,
+        TOKEN_MAXSIZE = 408,
+        TOKEN_MAXVER = 409,
+        TOKEN_DHCP4 = 410,
+        TOKEN_DHCPDDNS = 411,
+        TOKEN_CONTROL_AGENT = 412,
+        TOKEN_TOPLEVEL_JSON = 413,
+        TOKEN_TOPLEVEL_DHCP6 = 414,
+        TOKEN_SUB_DHCP6 = 415,
+        TOKEN_SUB_INTERFACES6 = 416,
+        TOKEN_SUB_SUBNET6 = 417,
+        TOKEN_SUB_POOL6 = 418,
+        TOKEN_SUB_PD_POOL = 419,
+        TOKEN_SUB_RESERVATION = 420,
+        TOKEN_SUB_OPTION_DEFS = 421,
+        TOKEN_SUB_OPTION_DEF = 422,
+        TOKEN_SUB_OPTION_DATA = 423,
+        TOKEN_SUB_HOOKS_LIBRARY = 424,
+        TOKEN_SUB_DHCP_DDNS = 425,
+        TOKEN_SUB_LOGGING = 426,
+        TOKEN_SUB_CONFIG_CONTROL = 427,
+        TOKEN_STRING = 428,
+        TOKEN_INTEGER = 429,
+        TOKEN_FLOAT = 430,
+        TOKEN_BOOLEAN = 431
       };
     };
 
@@ -641,7 +539,7 @@ namespace isc { namespace dhcp {
     /// A complete symbol.
     ///
     /// Expects its Base type to provide access to the symbol type
-    /// via type_get ().
+    /// via type_get().
     ///
     /// Provide access to semantic value and location.
     template <typename Base>
@@ -651,154 +549,39 @@ namespace isc { namespace dhcp {
       typedef Base super_type;
 
       /// Default constructor.
-      basic_symbol ()
-        : value ()
-        , location ()
-      {}
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      basic_symbol (basic_symbol&& that);
-#endif
+      basic_symbol ();
 
       /// Copy constructor.
-      basic_symbol (const basic_symbol& that);
+      basic_symbol (const basic_symbol& other);
 
       /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, location_type&& l)
-        : Base (t)
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const location_type& l)
-        : Base (t)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
-        : Base (t)
-        , value (std::move (v))
-        , location (std::move (l))
-      {}
-#else
-      basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
-        : Base (t)
-        , value (v)
-        , location (l)
-      {}
-#endif
 
-      /// Destroy the symbol.
-      ~basic_symbol ()
-      {
-        clear ();
-      }
+  basic_symbol (typename Base::kind_type t, const location_type& l);
 
-      /// Destroy contents, and record that is empty.
-      void clear ()
-      {
-        // User destructor.
-        symbol_number_type yytype = this->type_get ();
-        basic_symbol<Base>& yysym = *this;
-        (void) yysym;
-        switch (yytype)
-        {
-       default:
-          break;
-        }
-
-        // Type destructor.
-switch (yytype)
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.template destroy< ElementPtr > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
 
-      case 174: // "boolean"
-        value.template destroy< bool > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
 
-      case 173: // "floating point"
-        value.template destroy< double > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
 
-      case 172: // "integer"
-        value.template destroy< int64_t > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
 
-      case 171: // "constant string"
-        value.template destroy< std::string > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
 
-      default:
-        break;
-    }
 
-        Base::clear ();
-      }
+      /// Constructor for symbols with semantic value.
+      basic_symbol (typename Base::kind_type t,
+                    const semantic_type& v,
+                    const location_type& l);
+
+      /// Destroy the symbol.
+      ~basic_symbol ();
+
+      /// Destroy contents, and record that is empty.
+      void clear ();
 
       /// Whether empty.
-      bool empty () const YY_NOEXCEPT;
+      bool empty () const;
 
       /// Destructive move, \a s is emptied into this.
       void move (basic_symbol& s);
@@ -810,10 +593,8 @@ switch (yytype)
       location_type location;
 
     private:
-#if YY_CPLUSPLUS < 201103L
       /// Assignment operator.
-      basic_symbol& operator= (const basic_symbol& that);
-#endif
+      basic_symbol& operator= (const basic_symbol& other);
     };
 
     /// Type access provider for token (enum) based symbols.
@@ -822,13 +603,8 @@ switch (yytype)
       /// Default constructor.
       by_type ();
 
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      by_type (by_type&& that);
-#endif
-
       /// Copy constructor.
-      by_type (const by_type& that);
+      by_type (const by_type& other);
 
       /// The symbol type as needed by the constructor.
       typedef token_type kind_type;
@@ -844,10 +620,10 @@ switch (yytype)
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+      symbol_number_type type_get () const;
 
       /// The token.
-      token_type token () const YY_NOEXCEPT;
+      token_type token () const;
 
       /// The symbol type.
       /// \a empty_symbol when empty.
@@ -856,3310 +632,2365 @@ switch (yytype)
     };
 
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_type>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_type> super_type;
+    typedef basic_symbol<by_type> symbol_type;
 
-      /// Empty symbol.
-      symbol_type () {}
+    // Symbol constructors declarations.
+    static inline
+    symbol_type
+    make_END (const location_type& l);
 
-      /// Constructor for valueless symbols, and symbols from each type.
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, location_type l)
-        : super_type(token_type (tok), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#else
-      symbol_type (int tok, const location_type& l)
-        : super_type(token_type (tok), l)
-      {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, bool v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#else
-      symbol_type (int tok, const bool& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, double v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#else
-      symbol_type (int tok, const double& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_FLOAT);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, int64_t v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#else
-      symbol_type (int tok, const int64_t& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_INTEGER);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      symbol_type (int tok, std::string v, location_type l)
-        : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#else
-      symbol_type (int tok, const std::string& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YYASSERT (tok == token::TOKEN_STRING);
-      }
-#endif
-    };
+    static inline
+    symbol_type
+    make_COMMA (const location_type& l);
 
-    /// Build a parser object.
-    Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
-    virtual ~Dhcp6Parser ();
+    static inline
+    symbol_type
+    make_COLON (const location_type& l);
 
-    /// Parse.  An alias for parse ().
-    /// \returns  0 iff parsing succeeded.
-    int operator() ();
+    static inline
+    symbol_type
+    make_LSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.
-    /// \returns  0 iff parsing succeeded.
-    virtual int parse ();
+    static inline
+    symbol_type
+    make_RSQUARE_BRACKET (const location_type& l);
 
-#if PARSER6_DEBUG
-    /// The current debugging stream.
-    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
-    /// Set the current debugging stream.
-    void set_debug_stream (std::ostream &);
+    static inline
+    symbol_type
+    make_LCURLY_BRACKET (const location_type& l);
 
-    /// Type for debugging levels.
-    typedef int debug_level_type;
-    /// The current debugging level.
-    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
-    /// Set the current debugging level.
-    void set_debug_level (debug_level_type l);
-#endif
+    static inline
+    symbol_type
+    make_RCURLY_BRACKET (const location_type& l);
 
-    /// Report a syntax error.
-    /// \param loc    where the syntax error is found.
-    /// \param msg    a description of the syntax error.
-    virtual void error (const location_type& loc, const std::string& msg);
+    static inline
+    symbol_type
+    make_NULL_TYPE (const location_type& l);
 
-    /// Report a syntax error.
-    void error (const syntax_error& err);
+    static inline
+    symbol_type
+    make_DHCP6 (const location_type& l);
 
-    // Implementation of make_symbol for each symbol type.
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_END (location_type l)
-      {
-        return symbol_type (token::TOKEN_END, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_END (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_END, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMA (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COLON (location_type l)
-      {
-        return symbol_type (token::TOKEN_COLON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COLON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COLON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RSQUARE_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RCURLY_BRACKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RCURLY_BRACKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NULL_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NULL_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NULL_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DATA_DIRECTORY (location_type l)
-      {
-        return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DATA_DIRECTORY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONFIG_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES_CONFIG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACES (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RE_DETECT (location_type l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RE_DETECT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RE_DETECT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASE (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTS_DATABASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTS_DATABASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MEMFILE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MEMFILE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MEMFILE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MYSQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MYSQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MYSQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POSTGRESQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POSTGRESQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POSTGRESQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CQL (location_type l)
-      {
-        return symbol_type (token::TOKEN_CQL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CQL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CQL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PASSWORD (location_type l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PASSWORD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PASSWORD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PERSIST (location_type l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PERSIST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PERSIST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LFC_INTERVAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LFC_INTERVAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LFC_INTERVAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_READONLY (location_type l)
-      {
-        return symbol_type (token::TOKEN_READONLY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_READONLY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_READONLY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONNECT_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTACT_POINTS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTACT_POINTS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTACT_POINTS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECONNECT_TRIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECONNECT_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_KEYSPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_KEYSPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_KEYSPACE, l);
-      }
+    static inline
+    symbol_type
+    make_DATA_DIRECTORY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONFIG_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONFIG_DATABASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACES_CONFIG (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RE_DETECT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LEASE_DATABASE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTS_DATABASE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTS_DATABASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MEMFILE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MYSQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POSTGRESQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CQL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_USER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PASSWORD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PERSIST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LFC_INTERVAL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_READONLY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONNECT_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONTACT_POINTS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECONNECT_TRIES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECONNECT_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_KEYSPACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONSISTENCY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERIAL_CONSISTENCY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUEST_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_KEEPALIVE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_NODELAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PREFERRED_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RENEW_TIMER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REBIND_TIMER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DECLINE_PROBATION_PERIOD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_TAG (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OPTION_DEF (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OPTION_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CODE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SPACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CSV_FORMAT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALWAYS_SEND (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECORD_TYPES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENCAPSULATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ARRAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POOLS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PD_POOLS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PREFIX_LEN (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EXCLUDED_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EXCLUDED_PREFIX_LEN (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DELEGATED_LEN (const location_type& l);
+
+    static inline
+    symbol_type
+    make_USER_CONTEXT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_COMMENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUBNET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTERFACE_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RAPID_COMMIT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RESERVATION_MODE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DISABLED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUT_OF_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_GLOBAL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SHARED_NETWORKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAC_SOURCES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RELAY_SUPPLIED_OPTIONS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SANITY_CHECKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LEASE_CHECKS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CLIENT_CLASSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUIRE_CLIENT_CLASSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TEST (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ONLY_IF_REQUIRED (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CLIENT_CLASS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RESERVATIONS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_IP_ADDRESSES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PREFIXES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DUID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HW_ADDRESS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLEX_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RELAY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_IP_ADDRESS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOOKS_LIBRARIES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LIBRARY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PARAMETERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EXPIRED_LEASES_PROCESSING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOLD_RECLAIMED_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECLAIM_LEASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_RECLAIM_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LLT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EN (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_IDENTIFIER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HTYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENTERPRISE_ID (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP4O6_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONTROL_SOCKET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SOCKET_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SOCKET_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_QUEUE_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_DDNS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENABLE_UPDATES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_QUALIFYING_SUFFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_IP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SERVER_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SENDER_IP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SENDER_PORT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_QUEUE_SIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NCR_PROTOCOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NCR_FORMAT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OVERRIDE_NO_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REPLACE_CLIENT_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_GENERATED_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_UDP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP (const location_type& l);
+
+    static inline
+    symbol_type
+    make_JSON (const location_type& l);
+
+    static inline
+    symbol_type
+    make_WHEN_PRESENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_NEVER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ALWAYS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_WHEN_NOT_PRESENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME_CHAR_SET (const location_type& l);
+
+    static inline
+    symbol_type
+    make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LOGGING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LOGGERS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUTPUT_OPTIONS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_OUTPUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DEBUGLEVEL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SEVERITY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLUSH (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXSIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAXVER (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP4 (const location_type& l);
+
+    static inline
+    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);
+
+    static inline
+    symbol_type
+    make_TOPLEVEL_DHCP6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_DHCP6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_INTERFACES6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_SUBNET6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_POOL6 (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_PD_POOL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_RESERVATION (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DEFS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DEF (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_OPTION_DATA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_HOOKS_LIBRARY (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_DHCP_DDNS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_LOGGING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_SUB_CONFIG_CONTROL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STRING (const std::string& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_INTEGER (const int64_t& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_FLOAT (const double& v, const location_type& l);
+
+    static inline
+    symbol_type
+    make_BOOLEAN (const bool& v, const location_type& l);
+
+
+    /// Build a parser object.
+    Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
+    virtual ~Dhcp6Parser ();
+
+    /// Parse.
+    /// \returns  0 iff parsing succeeded.
+    virtual int parse ();
+
+#if PARSER6_DEBUG
+    /// The current debugging stream.
+    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging stream.
+    void set_debug_stream (std::ostream &);
+
+    /// Type for debugging levels.
+    typedef int debug_level_type;
+    /// The current debugging level.
+    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging level.
+    void set_debug_level (debug_level_type l);
 #endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUEST_TIMEOUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_KEEPALIVE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP_NODELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP_NODELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP_NODELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RENEW_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RENEW_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RENEW_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REBIND_TIMER (location_type l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REBIND_TIMER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REBIND_TIMER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (location_type l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DECLINE_PROBATION_PERIOD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_TAG (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_TAG (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_TAG, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_CODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SPACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SPACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SPACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SPACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CSV_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CSV_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CSV_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS_SEND (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS_SEND (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS_SEND, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECORD_TYPES (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECORD_TYPES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECORD_TYPES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENCAPSULATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENCAPSULATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENCAPSULATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ARRAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ARRAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ARRAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOLS (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOLS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOLS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOLS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PD_POOLS (location_type l)
-      {
-        return symbol_type (token::TOKEN_PD_POOLS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PD_POOLS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PD_POOLS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIX_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIX_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIX_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXCLUDED_PREFIX_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DELEGATED_LEN (location_type l)
-      {
-        return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DELEGATED_LEN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DELEGATED_LEN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_USER_CONTEXT (location_type l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_USER_CONTEXT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_USER_CONTEXT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_COMMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_COMMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_COMMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUBNET (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUBNET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUBNET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACE (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTERFACE_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTERFACE_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTERFACE_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RAPID_COMMIT (location_type l)
-      {
-        return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RAPID_COMMIT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RAPID_COMMIT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATION_MODE (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATION_MODE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATION_MODE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DISABLED (location_type l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DISABLED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DISABLED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUT_OF_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUT_OF_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUT_OF_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GLOBAL (location_type l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GLOBAL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GLOBAL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALL (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SHARED_NETWORKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SHARED_NETWORKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAC_SOURCES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAC_SOURCES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAC_SOURCES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RELAY_SUPPLIED_OPTIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SANITY_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SANITY_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SANITY_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LEASE_CHECKS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LEASE_CHECKS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LEASE_CHECKS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REQUIRE_CLIENT_CLASSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TEST (location_type l)
-      {
-        return symbol_type (token::TOKEN_TEST, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TEST (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TEST, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (location_type l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ONLY_IF_REQUIRED (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CLIENT_CLASS (location_type l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CLIENT_CLASS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CLIENT_CLASS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RESERVATIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RESERVATIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RESERVATIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESSES (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESSES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESSES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PREFIXES (location_type l)
-      {
-        return symbol_type (token::TOKEN_PREFIXES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PREFIXES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PREFIXES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DUID (location_type l)
-      {
-        return symbol_type (token::TOKEN_DUID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DUID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DUID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HW_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HW_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HW_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLEX_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLEX_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLEX_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RELAY (location_type l)
-      {
-        return symbol_type (token::TOKEN_RELAY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RELAY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RELAY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IP_ADDRESS (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_ADDRESS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_ADDRESS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOOKS_LIBRARIES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARAMETERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARAMETERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARAMETERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (location_type l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EXPIRED_LEASES_PROCESSING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOLD_RECLAIMED_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_LEASES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_RECLAIM_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (location_type l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LLT (location_type l)
-      {
-        return symbol_type (token::TOKEN_LLT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LLT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LLT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_EN (location_type l)
-      {
-        return symbol_type (token::TOKEN_EN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_EN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_EN, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LL (location_type l)
-      {
-        return symbol_type (token::TOKEN_LL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_IDENTIFIER (location_type l)
-      {
-        return symbol_type (token::TOKEN_IDENTIFIER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IDENTIFIER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IDENTIFIER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HTYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_HTYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HTYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HTYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENTERPRISE_ID (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENTERPRISE_ID (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4O6_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4O6_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_SOCKET (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_SOCKET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SOCKET_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SOCKET_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SOCKET_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_QUEUE_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENABLE_UPDATES (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_UPDATES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_QUALIFYING_SUFFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERVER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERVER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERVER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_IP (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_IP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_IP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SENDER_PORT (location_type l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SENDER_PORT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SENDER_PORT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_QUEUE_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_PROTOCOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_PROTOCOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NCR_FORMAT (location_type l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NCR_FORMAT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NCR_FORMAT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_NO_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_REPLACE_CLIENT_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_GENERATED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_GENERATED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_UDP (location_type l)
-      {
-        return symbol_type (token::TOKEN_UDP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_UDP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_UDP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TCP (location_type l)
-      {
-        return symbol_type (token::TOKEN_TCP, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TCP (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TCP, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_NEVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_NEVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_NEVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_NEVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ALWAYS (location_type l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ALWAYS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ALWAYS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_WHEN_NOT_PRESENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_SET (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_LOGGERS (location_type l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_LOGGERS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_LOGGERS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT_OPTIONS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_OUTPUT (location_type l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_OUTPUT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_OUTPUT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DEBUGLEVEL (location_type l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DEBUGLEVEL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DEBUGLEVEL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SEVERITY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SEVERITY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SEVERITY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLUSH (location_type l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLUSH (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLUSH, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXSIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXSIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXSIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAXVER (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAXVER (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAXVER, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCP4 (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP4 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP4, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DHCPDDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCPDDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCPDDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONTROL_AGENT (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONTROL_AGENT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONTROL_AGENT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_JSON (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_TOPLEVEL_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_INTERFACES6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_INTERFACES6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_SUBNET6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_SUBNET6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_SUBNET6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_POOL6 (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL6, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_POOL6 (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_POOL6, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_PD_POOL (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_PD_POOL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_PD_POOL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_RESERVATION (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_RESERVATION (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_RESERVATION, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEFS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_OPTION_DATA (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_HOOKS_LIBRARY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_DHCP_DDNS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_LOGGING (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_LOGGING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_LOGGING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (location_type l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SUB_CONFIG_CONTROL (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STRING (std::string v, location_type l)
-      {
-        return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STRING (const std::string& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STRING, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_INTEGER (int64_t v, location_type l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_INTEGER (const int64_t& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_INTEGER, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_FLOAT (double v, location_type l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_FLOAT (const double& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_FLOAT, v, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_BOOLEAN (bool v, location_type l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_BOOLEAN (const bool& v, const location_type& l)
-      {
-        return symbol_type (token::TOKEN_BOOLEAN, v, l);
-      }
+
+    /// Report a syntax error.
+    /// \param loc    where the syntax error is found.
+    /// \param msg    a description of the syntax error.
+    virtual void error (const location_type& loc, const std::string& msg);
+
+    /// Report a syntax error.
+    void error (const syntax_error& err);
+
+  private:
+    /// This class is not copyable.
+    Dhcp6Parser (const Dhcp6Parser&);
+    Dhcp6Parser& operator= (const Dhcp6Parser&);
+
+    /// State numbers.
+    typedef int state_type;
+
+    /// Generate an error message.
+    /// \param yystate   the state where the error occurred.
+    /// \param yyla      the lookahead token.
+    virtual std::string yysyntax_error_ (state_type yystate,
+                                         const symbol_type& yyla) const;
+
+    /// Compute post-reduction state.
+    /// \param yystate   the current state
+    /// \param yysym     the nonterminal to push on the stack
+    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+
+    /// Whether the given \c yypact_ value indicates a defaulted state.
+    /// \param yyvalue   the value to check
+    static bool yy_pact_value_is_default_ (int yyvalue);
+
+    /// Whether the given \c yytable_ value indicates a syntax error.
+    /// \param yyvalue   the value to check
+    static bool yy_table_value_is_error_ (int yyvalue);
+
+    static const short int yypact_ninf_;
+    static const signed char yytable_ninf_;
+
+    /// Convert a scanner token number \a t to a symbol number.
+    static token_number_type yytranslate_ (token_type t);
+
+    // Tables.
+  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+  // STATE-NUM.
+  static const short int yypact_[];
+
+  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+  // Performed when YYTABLE does not specify something else to do.  Zero
+  // means the default is an error.
+  static const unsigned short int yydefact_[];
+
+  // YYPGOTO[NTERM-NUM].
+  static const short int yypgoto_[];
+
+  // YYDEFGOTO[NTERM-NUM].
+  static const short int yydefgoto_[];
+
+  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+  // positive, shift that token.  If negative, reduce the rule whose
+  // number is the opposite.  If YYTABLE_NINF, syntax error.
+  static const unsigned short int yytable_[];
+
+  static const short int yycheck_[];
+
+  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+  // symbol of state STATE-NUM.
+  static const unsigned short int yystos_[];
+
+  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+  static const unsigned short int yyr1_[];
+
+  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+  static const unsigned char yyr2_[];
+
+
+    /// Convert the symbol name \a n to a form suitable for a diagnostic.
+    static std::string yytnamerr_ (const char *n);
+
+
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
+#if PARSER6_DEBUG
+  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+  static const unsigned short int yyrline_[];
+    /// Report on the debug stream that the rule \a r is going to be reduced.
+    virtual void yy_reduce_print_ (int r);
+    /// Print the state stack on the debug stream.
+    virtual void yystack_print_ ();
+
+    // Debugging.
+    int yydebug_;
+    std::ostream* yycdebug_;
+
+    /// \brief Display a symbol type, value and location.
+    /// \param yyo    The output stream.
+    /// \param yysym  The symbol.
+    template <typename Base>
+    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
 #endif
 
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg     Why this token is reclaimed.
+    ///                  If null, print nothing.
+    /// \param yysym     The symbol.
+    template <typename Base>
+    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+
+  private:
+    /// Type access provider for state based symbols.
+    struct by_state
+    {
+      /// Default constructor.
+      by_state ();
+
+      /// The symbol type as needed by the constructor.
+      typedef state_type kind_type;
+
+      /// Constructor.
+      by_state (kind_type s);
+
+      /// Copy constructor.
+      by_state (const by_state& other);
+
+      /// Record that this symbol is empty.
+      void clear ();
+
+      /// Steal the symbol type from \a that.
+      void move (by_state& that);
+
+      /// The (internal) type number (corresponding to \a state).
+      /// \a empty_symbol when empty.
+      symbol_number_type type_get () const;
+
+      /// The state number used to denote an empty symbol.
+      enum { empty_state = -1 };
+
+      /// The state.
+      /// \a empty when empty.
+      state_type state;
+    };
+
+    /// "Internal" symbol: element of the stack.
+    struct stack_symbol_type : basic_symbol<by_state>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_state> super_type;
+      /// Construct an empty symbol.
+      stack_symbol_type ();
+      /// Steal the contents from \a sym to build this.
+      stack_symbol_type (state_type s, symbol_type& sym);
+      /// Assignment, needed by push_back.
+      stack_symbol_type& operator= (const stack_symbol_type& that);
+    };
+
+    /// Stack type.
+    typedef stack<stack_symbol_type> stack_type;
+
+    /// The stack.
+    stack_type yystack_;
+
+    /// Push a new state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the symbol
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, stack_symbol_type& s);
+
+    /// Push a new look ahead token on the state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the state
+    /// \param sym  the symbol (for its value and location).
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, state_type s, symbol_type& sym);
+
+    /// Pop \a n symbols the three stacks.
+    void yypop_ (unsigned int n = 1);
+
+    /// Constants.
+    enum
+    {
+      yyeof_ = 0,
+      yylast_ = 1035,     ///< Last index in yytable_.
+      yynnts_ = 395,  ///< Number of nonterminal symbols.
+      yyfinal_ = 32, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 177  ///< Number of tokens.
+    };
+
+
+    // User arguments.
+    isc::dhcp::Parser6Context& ctx;
+  };
+
+  // Symbol number corresponding to token number t.
+  inline
+  Dhcp6Parser::token_number_type
+  Dhcp6Parser::yytranslate_ (token_type t)
+  {
+    static
+    const token_number_type
+    translate_table[] =
+    {
+     0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176
+    };
+    const unsigned int user_token_number_max_ = 431;
+    const token_number_type undef_token_ = 2;
+
+    if (static_cast<int>(t) <= yyeof_)
+      return yyeof_;
+    else if (static_cast<unsigned int> (t) <= user_token_number_max_)
+      return translate_table[t];
+    else
+      return undef_token_;
+  }
+
+  inline
+  Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
+    : std::runtime_error (m)
+    , location (l)
+  {}
+
+  // basic_symbol.
+  template <typename Base>
+  inline
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol ()
+    : value ()
+  {}
+
+  template <typename Base>
+  inline
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
+    : Base (other)
+    , value ()
+    , location (other.location)
+  {
+      switch (other.type_get ())
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.copy< ElementPtr > (other.value);
+        break;
+
+      case 176: // "boolean"
+        value.copy< bool > (other.value);
+        break;
+
+      case 175: // "floating point"
+        value.copy< double > (other.value);
+        break;
+
+      case 174: // "integer"
+        value.copy< int64_t > (other.value);
+        break;
+
+      case 173: // "constant string"
+        value.copy< std::string > (other.value);
+        break;
+
+      default:
+        break;
+    }
+
+  }
+
+
+  template <typename Base>
+  inline
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
+    : Base (t)
+    , value ()
+    , location (l)
+  {
+    (void) v;
+      switch (this->type_get ())
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.copy< ElementPtr > (v);
+        break;
+
+      case 176: // "boolean"
+        value.copy< bool > (v);
+        break;
+
+      case 175: // "floating point"
+        value.copy< double > (v);
+        break;
+
+      case 174: // "integer"
+        value.copy< int64_t > (v);
+        break;
+
+      case 173: // "constant string"
+        value.copy< std::string > (v);
+        break;
+
+      default:
+        break;
+    }
+}
+
+
+  // Implementation of basic_symbol constructor for each type.
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
+    : Base (t)
+    , value ()
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+  template <typename Base>
+  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
+    : Base (t)
+    , value (v)
+    , location (l)
+  {}
+
+
+  template <typename Base>
+  inline
+  Dhcp6Parser::basic_symbol<Base>::~basic_symbol ()
+  {
+    clear ();
+  }
+
+  template <typename Base>
+  inline
+  void
+  Dhcp6Parser::basic_symbol<Base>::clear ()
+  {
+    // User destructor.
+    symbol_number_type yytype = this->type_get ();
+    basic_symbol<Base>& yysym = *this;
+    (void) yysym;
+    switch (yytype)
+    {
+   default:
+      break;
+    }
+
+    // Type destructor.
+    switch (yytype)
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.template destroy< ElementPtr > ();
+        break;
+
+      case 176: // "boolean"
+        value.template destroy< bool > ();
+        break;
+
+      case 175: // "floating point"
+        value.template destroy< double > ();
+        break;
+
+      case 174: // "integer"
+        value.template destroy< int64_t > ();
+        break;
+
+      case 173: // "constant string"
+        value.template destroy< std::string > ();
+        break;
+
+      default:
+        break;
+    }
+
+    Base::clear ();
+  }
+
+  template <typename Base>
+  inline
+  bool
+  Dhcp6Parser::basic_symbol<Base>::empty () const
+  {
+    return Base::type_get () == empty_symbol;
+  }
+
+  template <typename Base>
+  inline
+  void
+  Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
+  {
+    super_type::move(s);
+      switch (this->type_get ())
+    {
+      case 194: // value
+      case 198: // map_value
+      case 252: // db_type
+      case 345: // hr_mode
+      case 481: // duid_type
+      case 516: // ncr_protocol_value
+      case 523: // replace_client_name_value
+        value.move< ElementPtr > (s.value);
+        break;
+
+      case 176: // "boolean"
+        value.move< bool > (s.value);
+        break;
+
+      case 175: // "floating point"
+        value.move< double > (s.value);
+        break;
+
+      case 174: // "integer"
+        value.move< int64_t > (s.value);
+        break;
+
+      case 173: // "constant string"
+        value.move< std::string > (s.value);
+        break;
+
+      default:
+        break;
+    }
+
+    location = s.location;
+  }
+
+  // by_type.
+  inline
+  Dhcp6Parser::by_type::by_type ()
+    : type (empty_symbol)
+  {}
+
+  inline
+  Dhcp6Parser::by_type::by_type (const by_type& other)
+    : type (other.type)
+  {}
+
+  inline
+  Dhcp6Parser::by_type::by_type (token_type t)
+    : type (yytranslate_ (t))
+  {}
+
+  inline
+  void
+  Dhcp6Parser::by_type::clear ()
+  {
+    type = empty_symbol;
+  }
+
+  inline
+  void
+  Dhcp6Parser::by_type::move (by_type& that)
+  {
+    type = that.type;
+    that.clear ();
+  }
+
+  inline
+  int
+  Dhcp6Parser::by_type::type_get () const
+  {
+    return type;
+  }
+
+  inline
+  Dhcp6Parser::token_type
+  Dhcp6Parser::by_type::token () const
+  {
+    // YYTOKNUM[NUM] -- (External) token number corresponding to the
+    // (internal) symbol number NUM (which must be that of a token).  */
+    static
+    const unsigned short int
+    yytoken_number_[] =
+    {
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431
+    };
+    return static_cast<token_type> (yytoken_number_[type]);
+  }
+  // Implementation of make_symbol for each symbol type.
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_END (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_END, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COMMA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMA, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COLON (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COLON, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LSQUARE_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RSQUARE_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LCURLY_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RCURLY_BRACKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NULL_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NULL_TYPE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP6, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DATA_DIRECTORY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONFIG_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONFIG_DATABASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACES_CONFIG (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RE_DETECT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RE_DETECT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LEASE_DATABASE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTS_DATABASE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTS_DATABASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TYPE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MEMFILE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MEMFILE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MYSQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MYSQL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POSTGRESQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POSTGRESQL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CQL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_USER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USER, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PASSWORD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PASSWORD, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOST, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PORT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PERSIST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PERSIST, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LFC_INTERVAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_READONLY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_READONLY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONNECT_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTACT_POINTS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_KEYSPACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_KEYSPACE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONSISTENCY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONSISTENCY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERIAL_CONSISTENCY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUEST_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_KEEPALIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_NODELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFERRED_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RENEW_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RENEW_TIMER, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REBIND_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REBIND_TIMER, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_TAG (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_TAG, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUBNET6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET6, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DEF, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DATA, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NAME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DATA, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CODE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SPACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SPACE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CSV_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CSV_FORMAT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALWAYS_SEND (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECORD_TYPES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECORD_TYPES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENCAPSULATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENCAPSULATE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ARRAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ARRAY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOLS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOLS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PD_POOLS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PD_POOLS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIX, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIX_LEN, l);
+  }
 
-  private:
-    /// This class is not copyable.
-    Dhcp6Parser (const Dhcp6Parser&);
-    Dhcp6Parser& operator= (const Dhcp6Parser&);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
+  }
 
-    /// State numbers.
-    typedef int state_type;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
+  }
 
-    /// Generate an error message.
-    /// \param yystate   the state where the error occurred.
-    /// \param yyla      the lookahead token.
-    virtual std::string yysyntax_error_ (state_type yystate,
-                                         const symbol_type& yyla) const;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DELEGATED_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DELEGATED_LEN, l);
+  }
 
-    /// Compute post-reduction state.
-    /// \param yystate   the current state
-    /// \param yysym     the nonterminal to push on the stack
-    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_USER_CONTEXT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USER_CONTEXT, l);
+  }
 
-    /// Whether the given \c yypact_ value indicates a defaulted state.
-    /// \param yyvalue   the value to check
-    static bool yy_pact_value_is_default_ (int yyvalue);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COMMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMENT, l);
+  }
 
-    /// Whether the given \c yytable_ value indicates a syntax error.
-    /// \param yyvalue   the value to check
-    static bool yy_table_value_is_error_ (int yyvalue);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET, l);
+  }
 
-    static const short yypact_ninf_;
-    static const signed char yytable_ninf_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE, l);
+  }
 
-    /// Convert a scanner token number \a t to a symbol number.
-    static token_number_type yytranslate_ (token_type t);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACE_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE_ID, l);
+  }
 
-    // Tables.
-  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-  // STATE-NUM.
-  static const short yypact_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ID, l);
+  }
 
-  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-  // Performed when YYTABLE does not specify something else to do.  Zero
-  // means the default is an error.
-  static const unsigned short yydefact_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RAPID_COMMIT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RAPID_COMMIT, l);
+  }
 
-  // YYPGOTO[NTERM-NUM].
-  static const short yypgoto_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATION_MODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+  }
 
-  // YYDEFGOTO[NTERM-NUM].
-  static const short yydefgoto_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
 
-  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-  // positive, shift that token.  If negative, reduce the rule whose
-  // number is the opposite.  If YYTABLE_NINF, syntax error.
-  static const unsigned short yytable_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
 
-  static const short yycheck_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GLOBAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, l);
+  }
 
-  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-  // symbol of state STATE-NUM.
-  static const unsigned short yystos_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
 
-  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-  static const unsigned short yyr1_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SHARED_NETWORKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+  }
 
-  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-  static const unsigned char yyr2_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAC_SOURCES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAC_SOURCES, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
+  }
 
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *n);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SANITY_CHECKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+  }
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
-#if PARSER6_DEBUG
-  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-  static const unsigned short yyrline_[];
-    /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r);
-    /// Print the state stack on the debug stream.
-    virtual void yystack_print_ ();
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LEASE_CHECKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+  }
 
-    /// Debugging level.
-    int yydebug_;
-    /// Debug stream.
-    std::ostream* yycdebug_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+  }
 
-    /// \brief Display a symbol type, value and location.
-    /// \param yyo    The output stream.
-    /// \param yysym  The symbol.
-    template <typename Base>
-    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
-#endif
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+  }
 
-    /// \brief Reclaim the memory associated to a symbol.
-    /// \param yymsg     Why this token is reclaimed.
-    ///                  If null, print nothing.
-    /// \param yysym     The symbol.
-    template <typename Base>
-    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TEST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TEST, l);
+  }
 
-  private:
-    /// Type access provider for state based symbols.
-    struct by_state
-    {
-      /// Default constructor.
-      by_state () YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ONLY_IF_REQUIRED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+  }
 
-      /// The symbol type as needed by the constructor.
-      typedef state_type kind_type;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+  }
 
-      /// Constructor.
-      by_state (kind_type s) YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATIONS, l);
+  }
 
-      /// Copy constructor.
-      by_state (const by_state& that) YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+  }
 
-      /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIXES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIXES, l);
+  }
 
-      /// Steal the symbol type from \a that.
-      void move (by_state& that);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DUID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DUID, l);
+  }
 
-      /// The (internal) type number (corresponding to \a state).
-      /// \a empty_symbol when empty.
-      symbol_number_type type_get () const YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HW_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HW_ADDRESS, l);
+  }
 
-      /// The state number used to denote an empty symbol.
-      enum { empty_state = -1 };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME, l);
+  }
 
-      /// The state.
-      /// \a empty when empty.
-      state_type state;
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLEX_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLEX_ID, l);
+  }
 
-    /// "Internal" symbol: element of the stack.
-    struct stack_symbol_type : basic_symbol<by_state>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_state> super_type;
-      /// Construct an empty symbol.
-      stack_symbol_type ();
-      /// Move or copy construction.
-      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
-      /// Steal the contents from \a sym to build this.
-      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if YY_CPLUSPLUS < 201103L
-      /// Assignment, needed by push_back by some old implementations.
-      /// Moves the contents of that.
-      stack_symbol_type& operator= (stack_symbol_type& that);
-#endif
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RELAY, l);
+  }
 
-    /// A stack with random access from its top.
-    template <typename T, typename S = std::vector<T> >
-    class stack
-    {
-    public:
-      // Hide our reversed order.
-      typedef typename S::reverse_iterator iterator;
-      typedef typename S::const_reverse_iterator const_iterator;
-      typedef typename S::size_type size_type;
-
-      stack (size_type n = 200)
-        : seq_ (n)
-      {}
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (size_type i)
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (int i)
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (size_type i) const
-      {
-        return seq_[size () - 1 - i];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (int i) const
-      {
-        return operator[] (size_type (i));
-      }
-
-      /// Steal the contents of \a t.
-      ///
-      /// Close to move-semantics.
-      void
-      push (YY_MOVE_REF (T) t)
-      {
-        seq_.push_back (T ());
-        operator[] (0).move (t);
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESS, l);
+  }
 
-      /// Pop elements from the stack.
-      void
-      pop (int n = 1) YY_NOEXCEPT
-      {
-        for (; 0 < n; --n)
-          seq_.pop_back ();
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOOKS_LIBRARIES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LIBRARY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LIBRARY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PARAMETERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PARAMETERS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_RECLAIM_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_ID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LLT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LLT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EN, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IDENTIFIER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IDENTIFIER, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HTYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HTYPE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENTERPRISE_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP4O6_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTROL_SOCKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_NAME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_DDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_DDNS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENABLE_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_IP, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SERVER_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_PORT, l);
+  }
 
-      /// Pop all elements from the stack.
-      void
-      clear () YY_NOEXCEPT
-      {
-        seq_.clear ();
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SENDER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SENDER_IP, l);
+  }
 
-      /// Number of elements on the stack.
-      size_type
-      size () const YY_NOEXCEPT
-      {
-        return seq_.size ();
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SENDER_PORT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SENDER_PORT, l);
+  }
 
-      /// Iterator on top of the stack (going downwards).
-      const_iterator
-      begin () const YY_NOEXCEPT
-      {
-        return seq_.rbegin ();
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_QUEUE_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+  }
 
-      /// Bottom of the stack.
-      const_iterator
-      end () const YY_NOEXCEPT
-      {
-        return seq_.rend ();
-      }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NCR_PROTOCOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+  }
 
-      /// Present a slice of the top of a stack.
-      class slice
-      {
-      public:
-        slice (const stack& stack, int range)
-          : stack_ (stack)
-          , range_ (range)
-        {}
-
-        const T&
-        operator[] (int i) const
-        {
-          return stack_[range_ - i];
-        }
-
-      private:
-        const stack& stack_;
-        int range_;
-      };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NCR_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_FORMAT, l);
+  }
 
-    private:
-      stack (const stack&);
-      stack& operator= (const stack&);
-      /// The wrapped container.
-      S seq_;
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+  }
 
-    /// Stack type.
-    typedef stack<stack_symbol_type> stack_type;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+  }
 
-    /// The stack.
-    stack_type yystack_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GENERATED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+  }
 
-    /// Push a new state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param sym  the symbol
-    /// \warning the contents of \a s.value is stolen.
-    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_UDP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_UDP, l);
+  }
 
-    /// Push a new look ahead token on the state on the stack.
-    /// \param m    a debug message to display
-    ///             if null, no trace is output.
-    /// \param s    the state
-    /// \param sym  the symbol (for its value and location).
-    /// \warning the contents of \a sym.value is stolen.
-    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP, l);
+  }
 
-    /// Pop \a n symbols from the stack.
-    void yypop_ (int n = 1);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_JSON (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_JSON, l);
+  }
 
-    /// Constants.
-    enum
-    {
-      yyeof_ = 0,
-      yylast_ = 1025,     ///< Last index in yytable_.
-      yynnts_ = 391,  ///< Number of nonterminal symbols.
-      yyfinal_ = 32, ///< Termination state number.
-      yyterror_ = 1,
-      yyerrcode_ = 256,
-      yyntokens_ = 175  ///< Number of tokens.
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_WHEN_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NEVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NEVER, l);
+  }
 
-    // User arguments.
-    isc::dhcp::Parser6Context& ctx;
-  };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALWAYS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS, l);
+  }
 
-  inline
-  Dhcp6Parser::token_number_type
-  Dhcp6Parser::yytranslate_ (token_type t)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_WHEN_NOT_PRESENT (const location_type& l)
   {
-    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
-    // TOKEN-NUM as returned by yylex.
-    static
-    const token_number_type
-    translate_table[] =
-    {
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174
-    };
-    const unsigned user_token_number_max_ = 429;
-    const token_number_type undef_token_ = 2;
+    return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+  }
 
-    if (static_cast<int> (t) <= yyeof_)
-      return yyeof_;
-    else if (static_cast<unsigned> (t) <= user_token_number_max_)
-      return translate_table[t];
-    else
-      return undef_token_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
   }
 
-  // basic_symbol.
-#if 201103L <= YY_CPLUSPLUS
-  template <typename Base>
-  Dhcp6Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
-    : Base (std::move (that))
-    , value ()
-    , location (std::move (that.location))
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
   {
-    switch (this->type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+  }
 
-      case 174: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LOGGING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LOGGING, l);
+  }
 
-      case 173: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LOGGERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LOGGERS, l);
+  }
 
-      case 172: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT_OPTIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+  }
 
-      case 171: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DEBUGLEVEL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SEVERITY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SEVERITY, l);
   }
-#endif
 
-  template <typename Base>
-  Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
-    : Base (that)
-    , value ()
-    , location (that.location)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH (const location_type& l)
   {
-    switch (this->type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.copy< ElementPtr > (YY_MOVE (that.value));
-        break;
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
 
-      case 174: // "boolean"
-        value.copy< bool > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
 
-      case 173: // "floating point"
-        value.copy< double > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
 
-      case 172: // "integer"
-        value.copy< int64_t > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP4, l);
+  }
 
-      case 171: // "constant string"
-        value.copy< std::string > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCPDDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCPDDNS, l);
+  }
 
-      default:
-        break;
-    }
+  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)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TOPLEVEL_DHCP6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_DHCP6, l);
+  }
 
-  template <typename Base>
-  bool
-  Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_INTERFACES6 (const location_type& l)
   {
-    return Base::type_get () == empty_symbol;
+    return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
   }
 
-  template <typename Base>
-  void
-  Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_SUBNET6 (const location_type& l)
   {
-    super_type::move (s);
-    switch (this->type_get ())
-    {
-      case 192: // value
-      case 196: // map_value
-      case 250: // db_type
-      case 339: // hr_mode
-      case 475: // duid_type
-      case 510: // ncr_protocol_value
-      case 517: // replace_client_name_value
-        value.move< ElementPtr > (YY_MOVE (s.value));
-        break;
+    return symbol_type (token::TOKEN_SUB_SUBNET6, l);
+  }
 
-      case 174: // "boolean"
-        value.move< bool > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_POOL6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_POOL6, l);
+  }
 
-      case 173: // "floating point"
-        value.move< double > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_PD_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_PD_POOL, l);
+  }
 
-      case 172: // "integer"
-        value.move< int64_t > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_RESERVATION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+  }
 
-      case 171: // "constant string"
-        value.move< std::string > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEFS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+  }
 
-    location = YY_MOVE (s.location);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
   }
 
-  // by_type.
-  inline
-  Dhcp6Parser::by_type::by_type ()
-    : type (empty_symbol)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+  }
 
-#if 201103L <= YY_CPLUSPLUS
-  inline
-  Dhcp6Parser::by_type::by_type (by_type&& that)
-    : type (that.type)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP_DDNS (const location_type& l)
   {
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
   }
-#endif
 
-  inline
-  Dhcp6Parser::by_type::by_type (const by_type& that)
-    : type (that.type)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_LOGGING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_LOGGING, l);
+  }
 
-  inline
-  Dhcp6Parser::by_type::by_type (token_type t)
-    : type (yytranslate_ (t))
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+  }
 
-  inline
-  void
-  Dhcp6Parser::by_type::clear ()
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_STRING (const std::string& v, const location_type& l)
   {
-    type = empty_symbol;
+    return symbol_type (token::TOKEN_STRING, v, l);
   }
 
-  inline
-  void
-  Dhcp6Parser::by_type::move (by_type& that)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTEGER (const int64_t& v, const location_type& l)
   {
-    type = that.type;
-    that.clear ();
+    return symbol_type (token::TOKEN_INTEGER, v, l);
   }
 
-  inline
-  int
-  Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLOAT (const double& v, const location_type& l)
   {
-    return type;
+    return symbol_type (token::TOKEN_FLOAT, v, l);
   }
 
-  inline
-  Dhcp6Parser::token_type
-  Dhcp6Parser::by_type::token () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_BOOLEAN (const bool& v, const location_type& l)
   {
-    // YYTOKNUM[NUM] -- (External) token number corresponding to the
-    // (internal) symbol number NUM (which must be that of a token).  */
-    static
-    const unsigned short
-    yytoken_number_[] =
-    {
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429
-    };
-    return token_type (yytoken_number_[type]);
+    return symbol_type (token::TOKEN_BOOLEAN, v, l);
   }
 
-#line 14 "dhcp6_parser.yy" // lalr1.cc:401
+
+#line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 4163 "dhcp6_parser.h" // lalr1.cc:401
+#line 2994 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 85811619ae616d5872e95903d5251d8678e952e5..239704683c8fa2193dfd7c1bd8641c8df96d8a39 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 201903152328
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 #ifndef YY_PARSER6_LOCATION_HH_INCLUDED
 # define YY_PARSER6_LOCATION_HH_INCLUDED
 
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
+# include "position.hh"
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
-#line 14 "dhcp6_parser.yy" // location.cc:339
+#line 14 "dhcp6_parser.yy" // location.cc:296
 namespace isc { namespace dhcp {
-#line 60 "location.hh" // location.cc:339
-  /// A point in a source file.
-  class position
-  {
-  public:
-    /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
-      : filename (f)
-      , line (l)
-      , column (c)
-    {}
-
-
-    /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
-    {
-      filename = fn;
-      line = l;
-      column = c;
-    }
-
-    /** \name Line and Column related manipulators
-     ** \{ */
-    /// (line related) Advance to the COUNT next lines.
-    void lines (int count = 1)
-    {
-      if (count)
-        {
-          column = 1u;
-          line = add_ (line, count, 1);
-        }
-    }
-
-    /// (column related) Advance to the COUNT next columns.
-    void columns (int count = 1)
-    {
-      column = add_ (column, count, 1);
-    }
-    /** \} */
-
-    /// File name to which this position refers.
-    std::string* filename;
-    /// Current line number.
-    unsigned line;
-    /// Current column number.
-    unsigned column;
-
-  private:
-    /// Compute max (min, lhs+rhs).
-    static unsigned add_ (unsigned lhs, int rhs, int min)
-    {
-      return static_cast<unsigned> (std::max (min,
-                                              static_cast<int> (lhs) + rhs));
-    }
-  };
-
-  /// Add \a width columns, in place.
-  inline position&
-  operator+= (position& res, int width)
-  {
-    res.columns (width);
-    return res;
-  }
-
-  /// Add \a width columns.
-  inline position
-  operator+ (position res, int width)
-  {
-    return res += width;
-  }
-
-  /// Subtract \a width columns, in place.
-  inline position&
-  operator-= (position& res, int width)
-  {
-    return res += -width;
-  }
-
-  /// Subtract \a width columns.
-  inline position
-  operator- (position res, int width)
-  {
-    return res -= width;
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
-  /** \brief Intercept output stream redirection.
-   ** \param ostr the destination output stream
-   ** \param pos a reference to the position to redirect
-   */
-  template <typename YYChar>
-  std::basic_ostream<YYChar>&
-  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
-  {
-    if (pos.filename)
-      ostr << *pos.filename << ':';
-    return ostr << pos.line << '.' << pos.column;
-  }
-
-  /// Two points in a source file.
+#line 46 "location.hh" // location.cc:296
+  /// Abstract a location.
   class location
   {
   public:
@@ -186,27 +52,30 @@ namespace isc { namespace dhcp {
     location (const position& b, const position& e)
       : begin (b)
       , end (e)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a p.
     explicit location (const position& p = position ())
       : begin (p)
       , end (p)
-    {}
+    {
+    }
 
     /// Construct a 0-width location in \a f, \a l, \a c.
     explicit location (std::string* f,
-                       unsigned l = 1u,
-                       unsigned c = 1u)
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
-    {}
+    {
+    }
 
 
     /// Initialization.
     void initialize (std::string* f = YY_NULLPTR,
-                     unsigned l = 1u,
-                     unsigned c = 1u)
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -301,10 +170,10 @@ namespace isc { namespace dhcp {
    ** Avoid duplicate information.
    */
   template <typename YYChar>
-  std::basic_ostream<YYChar>&
+  inline std::basic_ostream<YYChar>&
   operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
-    unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+    unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
     ostr << loc.begin;
     if (loc.end.filename
         && (!loc.begin.filename
@@ -317,7 +186,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp6_parser.yy" // location.cc:339
+#line 14 "dhcp6_parser.yy" // location.cc:296
 } } // isc::dhcp
-#line 322 "location.hh" // location.cc:339
+#line 192 "location.hh" // location.cc:296
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index 033cbe447c8098a7bc730660c6af72f46b91ebaa..2ee80e6d0a22726887dabd52d10789130b8e5d56 100644 (file)
-// Generated 201903152328
-// A Bison parser, made by GNU Bison 3.3.2.
-
-// Starting with Bison 3.2, this file is useless: the structure it
-// used to define is now defined in "location.hh".
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system
-// 3. if you used to include it, include "location.hh" instead.
-
-#include "location.hh"
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Positions for Bison parsers in C++
+
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file position.hh
+ ** Define the isc::dhcp::position class.
+ */
+
+#ifndef YY_PARSER6_POSITION_HH_INCLUDED
+# define YY_PARSER6_POSITION_HH_INCLUDED
+
+# include <algorithm> // std::max
+# include <iostream>
+# include <string>
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
+
+#line 14 "dhcp6_parser.yy" // location.cc:296
+namespace isc { namespace dhcp {
+#line 56 "position.hh" // location.cc:296
+  /// Abstract a position.
+  class position
+  {
+  public:
+    /// Construct a position.
+    explicit position (std::string* f = YY_NULLPTR,
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
+      : filename (f)
+      , line (l)
+      , column (c)
+    {
+    }
+
+
+    /// Initialization.
+    void initialize (std::string* fn = YY_NULLPTR,
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
+    {
+      filename = fn;
+      line = l;
+      column = c;
+    }
+
+    /** \name Line and Column related manipulators
+     ** \{ */
+    /// (line related) Advance to the COUNT next lines.
+    void lines (int count = 1)
+    {
+      if (count)
+        {
+          column = 1u;
+          line = add_ (line, count, 1);
+        }
+    }
+
+    /// (column related) Advance to the COUNT next columns.
+    void columns (int count = 1)
+    {
+      column = add_ (column, count, 1);
+    }
+    /** \} */
+
+    /// File name to which this position refers.
+    std::string* filename;
+    /// Current line number.
+    unsigned int line;
+    /// Current column number.
+    unsigned int column;
+
+  private:
+    /// Compute max(min, lhs+rhs) (provided min <= lhs).
+    static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
+    {
+      return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
+              ? rhs + lhs
+              : min);
+    }
+  };
+
+  /// Add \a width columns, in place.
+  inline position&
+  operator+= (position& res, int width)
+  {
+    res.columns (width);
+    return res;
+  }
+
+  /// Add \a width columns.
+  inline position
+  operator+ (position res, int width)
+  {
+    return res += width;
+  }
+
+  /// Subtract \a width columns, in place.
+  inline position&
+  operator-= (position& res, int width)
+  {
+    return res += -width;
+  }
+
+  /// Subtract \a width columns.
+  inline position
+  operator- (position res, int width)
+  {
+    return res -= width;
+  }
+
+  /// Compare two position objects.
+  inline bool
+  operator== (const position& pos1, const position& pos2)
+  {
+    return (pos1.line == pos2.line
+            && pos1.column == pos2.column
+            && (pos1.filename == pos2.filename
+                || (pos1.filename && pos2.filename
+                    && *pos1.filename == *pos2.filename)));
+  }
+
+  /// Compare two position objects.
+  inline bool
+  operator!= (const position& pos1, const position& pos2)
+  {
+    return !(pos1 == pos2);
+  }
+
+  /** \brief Intercept output stream redirection.
+   ** \param ostr the destination output stream
+   ** \param pos a reference to the position to redirect
+   */
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+  {
+    if (pos.filename)
+      ostr << *pos.filename << ':';
+    return ostr << pos.line << '.' << pos.column;
+  }
+
+#line 14 "dhcp6_parser.yy" // location.cc:296
+} } // isc::dhcp
+#line 180 "position.hh" // location.cc:296
+#endif // !YY_PARSER6_POSITION_HH_INCLUDED
index 38e16cfbb73a1e7d5701e9b1221972c4bc836946..db2863a06ef4a89243bf39cc72557573857e8cf7 100644 (file)
@@ -1,9 +1,157 @@
-// Generated 201903152328
-// A Bison parser, made by GNU Bison 3.3.2.
-
-// Starting with Bison 3.2, this file is useless: the structure it
-// used to define is now defined with the parser itself.
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system.
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Stack handling for Bison parsers in C++
+
+// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file stack.hh
+ ** Define the isc::dhcp::stack class.
+ */
+
+#ifndef YY_PARSER6_STACK_HH_INCLUDED
+# define YY_PARSER6_STACK_HH_INCLUDED
+
+# include <vector>
+
+#line 14 "dhcp6_parser.yy" // stack.hh:132
+namespace isc { namespace dhcp {
+#line 46 "stack.hh" // stack.hh:132
+  template <class T, class S = std::vector<T> >
+  class stack
+  {
+  public:
+    // Hide our reversed order.
+    typedef typename S::reverse_iterator iterator;
+    typedef typename S::const_reverse_iterator const_iterator;
+
+    stack ()
+      : seq_ ()
+    {
+      seq_.reserve (200);
+    }
+
+    stack (unsigned int n)
+      : seq_ (n)
+    {}
+
+    inline
+    T&
+    operator[] (unsigned int i)
+    {
+      return seq_[seq_.size () - 1 - i];
+    }
+
+    inline
+    const T&
+    operator[] (unsigned int i) const
+    {
+      return seq_[seq_.size () - 1 - i];
+    }
+
+    /// Steal the contents of \a t.
+    ///
+    /// Close to move-semantics.
+    inline
+    void
+    push (T& t)
+    {
+      seq_.push_back (T());
+      operator[](0).move (t);
+    }
+
+    inline
+    void
+    pop (unsigned int n = 1)
+    {
+      for (; n; --n)
+        seq_.pop_back ();
+    }
+
+    void
+    clear ()
+    {
+      seq_.clear ();
+    }
+
+    inline
+    typename S::size_type
+    size () const
+    {
+      return seq_.size ();
+    }
+
+    inline
+    const_iterator
+    begin () const
+    {
+      return seq_.rbegin ();
+    }
+
+    inline
+    const_iterator
+    end () const
+    {
+      return seq_.rend ();
+    }
+
+  private:
+    stack (const stack&);
+    stack& operator= (const stack&);
+    /// The wrapped container.
+    S seq_;
+  };
+
+  /// Present a slice of the top of a stack.
+  template <class T, class S = stack<T> >
+  class slice
+  {
+  public:
+    slice (const S& stack, unsigned int range)
+      : stack_ (stack)
+      , range_ (range)
+    {}
+
+    inline
+    const T&
+    operator [] (unsigned int i) const
+    {
+      return stack_[range_ - i];
+    }
+
+  private:
+    const S& stack_;
+    unsigned int range_;
+  };
+
+#line 14 "dhcp6_parser.yy" // stack.hh:132
+} } // isc::dhcp
+#line 156 "stack.hh" // stack.hh:132
+
+#endif // !YY_PARSER6_STACK_HH_INCLUDED