]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1386] kea-dhcp4/6 now parse ddns-use-conflict-resolution
authorThomas Markwalder <tmark@isc.org>
Tue, 20 Oct 2020 12:35:51 +0000 (08:35 -0400)
committerThomas Markwalder <tmark@isc.org>
Wed, 21 Oct 2020 18:19:52 +0000 (14:19 -0400)
Both servers parse and store ddns-use-conflict-resolution but
do nothing with it.

doc/examples/kea4/all-keys.json
doc/examples/kea4/with-ddns.json
doc/examples/kea6/all-keys.json
doc/examples/kea6/with-ddns.json
    Added entries for ddns-use-conflict-resolution

src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/tests/get_config_unittest.cc
    Added support for ddns-use-conflict-resolution

src/bin/dhcp4/tests/get_config_unittest.cc.skel
    Changed important calls to ASSERT_NO_THROW_LOG to ease debugging

src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/tests/get_config_unittest.cc
    Added support for ddns-use-conflict-resolution

src/bin/dhcp6/tests/get_config_unittest.cc.skel
    Changed important calls to ASSERT_NO_THROW_LOG to ease debugging

src/lib/dhcpsrv/parsers/base_network_parser.cc
    Fixed copy/paste error

28 files changed:
doc/examples/kea4/all-keys.json
doc/examples/kea4/with-ddns.json
doc/examples/kea6/all-keys.json
doc/examples/kea6/with-ddns.json
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp4/tests/get_config_unittest.cc
src/bin/dhcp4/tests/get_config_unittest.cc.skel
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh
src/bin/dhcp6/tests/get_config_unittest.cc
src/bin/dhcp6/tests/get_config_unittest.cc.skel
src/lib/dhcpsrv/parsers/base_network_parser.cc
src/lib/dhcpsrv/parsers/simple_parser4.cc

index 719d82373001e3bfbddea45841e4714de14d643d..38dce67a61a6321e71f616be3a6f4e4ed0ea3820 100644 (file)
         // may be specified at the global, shared-network and subnet levels.
         "ddns-update-on-renew": true,
 
+        // Boolean flag, which is passed to kea-dhcp-ddns with each DDNS
+        // udpate request to indicate whether or not DNS update conflict 
+        // resolution as described in RFC 4703 should be employed for the
+        // given update request.  The default value for this flag is true.  
+        // It may be specified at the global, shared-network and subnet levels.
+        "ddns-use-conflict-resolution": true,
+
         // Time in seconds specifying how long a declined lease should be
         // excluded from DHCP assignments. The default value is 24 hours.
         "decline-probation-period": 86400,
                 // Shared network level value. See description at the global level.
                 "ddns-update-on-renew": true,
 
+                // Shared network level value. See description at the global level.
+                "ddns-use-conflict-resolution": true,
+
                 // Shared network level value. See description at the global level.
                 "hostname-char-replacement": "x",
 
                         // Subnet level value. See description at the global level.
                         "ddns-update-on-renew": true,
 
+                        // Subnet level value. See description at the global level.
+                        "ddns-use-conflict-resolution": true,
+
                         // Subnet level value. See description at the global level.
                         "hostname-char-replacement": "x",
 
index 769c7d64e3fbf5f6e09725868cca49b49f190112..8ca16d68afa813d78eda42c1470d6883c166d6a7 100644 (file)
@@ -59,6 +59,8 @@
   "ddns-replace-client-name" : "when-present",
   "ddns-generated-prefix" : "test.prefix",
   "ddns-qualifying-suffix" : "test.suffix.",
+  "ddns-update-on-renew" : false,
+  "ddns-use-conflict-resolution" : true,
   "hostname-char-set": "[^A-Za-z0-9.-]",
   "hostname-char-replacement": "x",
 
index c70d8a6ddf854af5479d0f43d7ddb725a84abbdd..68b26a940de103ba8a9f8714cc30ba8d3262daff 100644 (file)
         // may be specified at the global, shared-network and subnet levels.
         "ddns-update-on-renew": true,
 
+        // Boolean flag, which is passed to kea-dhcp-ddns with each DDNS
+        // udpate request to indicate whether or not DNS update conflict 
+        // resolution as described in RFC 4703 should be employed for the
+        // given update request.  The default value for this flag is true.  
+        // It may be specified at the global, shared-network and subnet levels.
+        "ddns-use-conflict-resolution": true,
+
         // Time in seconds specifying how long a declined lease should be
         // excluded from DHCP assignments. The default value is 24 hours.
         "decline-probation-period": 86400,
                 // Shared network level value. See description at the global level.
                 "ddns-update-on-renew": true,
 
+                // Shared network level value. See description at the global level.
+                "ddns-use-conflict-resolution": true,
+
                 // Shared network level value. See description at the global level.
                 "hostname-char-replacement": "x",
 
                         // Subnet level value. See description at the global level.
                         "ddns-update-on-renew": true,
 
+                        // Subnet level value. See description at the global level.
+                        "ddns-use-conflict-resolution": true,
+
                         // Subnet level value. See description at the global level.
                         "hostname-char-replacement": "x",
 
index f87dfbb3c36abe567c52c0283c528ef5800aad48..64d7528cf95a6d5a54f83f64a6f0a3ce8ec0bfbb 100644 (file)
@@ -62,6 +62,8 @@
   "ddns-replace-client-name" : "when-present",
   "ddns-generated-prefix" : "test.prefix",
   "ddns-qualifying-suffix" : "test.suffix.",
+  "ddns-update-on-renew" : false,
+  "ddns-use-conflict-resolution" : true,
   "hostname-char-set": "[^A-Za-z0-9.-]",
   "hostname-char-replacement": "x",
 
index 684855314f5c966955c26b3237ad2ec1e201e0d1..9669c1d3f3030e4cb92ecffdd519a18dfcec0b36 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 201
-#define YY_END_OF_BUFFER 202
+#define YY_NUM_RULES 202
+#define YY_END_OF_BUFFER 203
 /* 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[1868] =
+static const flex_int16_t yy_accept[1891] =
     {   0,
-      194,  194,    0,    0,    0,    0,    0,    0,    0,    0,
-      202,  200,   10,   11,  200,    1,  194,  191,  194,  194,
-      200,  193,  192,  200,  200,  200,  200,  200,  187,  188,
-      200,  200,  200,  189,  190,    5,    5,    5,  200,  200,
-      200,   10,   11,    0,    0,  183,    0,    0,    0,    0,
+      195,  195,    0,    0,    0,    0,    0,    0,    0,    0,
+      203,  201,   10,   11,  201,    1,  195,  192,  195,  195,
+      201,  194,  193,  201,  201,  201,  201,  201,  188,  189,
+      201,  201,  201,  190,  191,    5,    5,    5,  201,  201,
+      201,   10,   11,    0,    0,  184,    0,    0,    0,    0,
         0,    0,    0,    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,  194,  194,
-        0,  193,  194,    3,    2,    6,    0,  194,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  184,
+        0,    0,    0,    0,    0,    0,    0,    1,  195,  195,
+        0,  194,  195,    3,    2,    6,    0,  195,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  185,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  186,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  187,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,10 +724,10 @@ static const flex_int16_t yy_accept[1868] =
         0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
         8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  185,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  186,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
+        0,    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,    0,    0,    0,    0,
@@ -735,178 +735,180 @@ static const flex_int16_t yy_accept[1868] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  199,  197,    0,  196,  195,    0,    0,
-        0,    0,    0,    0,    0,    0,  165,    0,  164,    0,
-        0,   89,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  200,  198,    0,  197,  196,    0,    0,
+        0,    0,    0,    0,    0,    0,  166,    0,  165,    0,
+        0,   90,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   35,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,    0,   87,    0,    0,
         0,    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,    0,    0,
-        0,    0,    0,   18,    0,    0,    0,    0,  198,  195,
-        0,    0,    0,    0,    0,    0,    0,  166,    0,  168,
+        0,    0,    0,   18,    0,    0,    0,    0,  199,  196,
+        0,    0,    0,    0,    0,    0,    0,  167,    0,  169,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   90,    0,    0,    0,    0,    0,    0,    0,   75,
-        0,    0,    0,    0,    0,    0,  112,    0,    0,    0,
+        0,   91,    0,    0,    0,    0,    0,    0,    0,   76,
+        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   38,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-       74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   78,    0,   39,    0,    0,
+       75,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   79,    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,    0,    0,    0,    0,    0,  109,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  110,
         0,   31,    0,    0,   36,    0,    0,    0,    0,    0,
-        0,    0,   12,  170,  169,    0,    0,    0,  122,    0,
+        0,    0,   12,  171,  170,    0,    0,    0,  123,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  101,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   33,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   77,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  123,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  118,    0,
+        0,    0,    0,    0,   78,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  124,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  119,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    7,    0,    0,  171,    0,    0,    0,    0,    0,
+        0,    7,    0,    0,  172,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   88,    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,  103,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   99,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  104,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   81,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   80,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   81,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  116,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  128,   97,    0,
-        0,    0,    0,    0,    0,  102,   32,    0,    0,    0,
+        0,    0,    0,  117,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  129,
+       98,    0,    0,    0,    0,    0,    0,  103,   32,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  104,   40,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  105,   40,    0,    0,    0,    0,    0,
         0,    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,    0,    0,   70,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  147,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  148,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  117,    0,
-        0,    0,    0,    0,    0,   43,    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,    0,    0,   37,
-
-        0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
+        0,  118,    0,    0,    0,    0,    0,    0,   43,    0,
         0,    0,    0,    0,    0,    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,   37,    0,    0,    0,    0,   30,    0,    0,
         0,    0,    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,  148,    0,    0,
+        0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   82,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
+        0,    0,    0,  115,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  153,    0,
-        0,    0,  151,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      175,    0,    0,    0,    0,    0,    0,    0,    0,  115,
-        0,    0,    0,    0,    0,    0,    0,    0,  119,    0,
-        0,    0,    0,    0,    0,  100,    0,    0,    0,    0,
+        0,  149,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  113,   22,    0,  124,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      157,    0,    0,    0,    0,   72,    0,    0,    0,    0,
-        0,    0,  127,   34,    0,  146,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   59,    0,    0,    0,    0,    0,   93,   94,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   76,
+       23,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  154,    0,    0,    0,  152,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  121,    0,    0,
+        0,    0,    0,    0,  176,    0,    0,    0,    0,    0,
+        0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
+        0,    0,  120,    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,  114,   22,
+
+        0,  125,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  158,    0,    0,    0,    0,
+       73,    0,    0,    0,    0,    0,    0,  128,   34,    0,
+      147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   59,    0,    0,    0,
+        0,    0,   94,   95,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   77,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   44,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  122,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  179,    0,   73,   87,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   56,    0,    0,    0,    0,
-        0,    0,    0,  154,    0,    0,  152,    0,  143,  142,
-        0,    0,    0,   49,    0,    0,   21,    0,    0,    0,
-        0,  167,    0,    0,    0,    0,    0,  108,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  136,    0,    0,  145,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  125,    0,
-       15,    0,   41,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,  156,    0,    0,    0,    0,    0,    0,    0,
-       57,    0,    0,  120,    0,    0,    0,    0,  111,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   79,
-        0,  173,    0,    0,  178,    0,   96,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  180,    0,   74,
+       88,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   56,    0,    0,    0,    0,    0,    0,    0,  155,
+        0,    0,  153,    0,  144,  143,    0,    0,    0,   49,
+        0,    0,   21,    0,    0,    0,    0,  168,    0,    0,
+        0,    0,    0,  109,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  137,    0,    0,  146,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  126,    0,   15,    0,   41,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  157,
+        0,    0,    0,    0,    0,    0,    0,   57,    0,    0,
+      121,    0,    0,    0,    0,  112,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   80,    0,  174,    0,
+        0,  179,    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,   14,    0,    0,    0,    0,    0,   48,    0,
-
-        0,    0,    0,    0,  181,    0,    0,  106,   27,    0,
-        0,    0,   50,  141,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  176,    0,  149,    0,    0,    0,
-        0,    0,    0,    0,    0,   25,    0,    0,    0,   24,
-        0,  155,    0,    0,    0,   52,    0,    0,    0,    0,
-        0,   98,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       53,    0,    0,   95,    0,    0,    0,   42,    0,    0,
+
+       14,    0,    0,    0,    0,    0,   48,    0,    0,    0,
+        0,    0,  182,    0,    0,  107,   27,    0,    0,    0,
+       50,  142,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  177,    0,  150,    0,    0,    0,    0,
+        0,    0,    0,    0,   25,    0,    0,    0,   24,    0,
+      156,    0,    0,    0,   52,    0,    0,    0,    0,    0,
+       99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   53,
+        0,    0,   96,    0,    0,    0,   42,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  126,    0,    0,    0,   26,    0,    0,
 
-      177,    0,    0,    0,    0,    0,  137,    0,    0,    0,
+        0,    0,    0,  127,    0,    0,    0,   26,    0,    0,
+      178,    0,    0,    0,    0,    0,  138,    0,    0,    0,
         0,    0,    0,    0,    0,    0,   47,    0,    0,   20,
-        0,  180,   71,    0,    0,    0,    0,  174,  172,    0,
+        0,  181,   72,    0,    0,    0,    0,  175,  173,    0,
        28,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   16,    0,    0,    0,  161,    0,    0,    0,    0,
-        0,    0,    0,  134,    0,    0,    0,  110,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   84,    0,    0,
-        0,  139,    0,    0,    0,    0,    0,    0,    0,    0,
-       62,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      162,   13,    0,    0,    0,    0,    0,    0,    0,    0,
-
-      140,  150,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  144,
-        0,    0,    0,    0,    0,    0,    0,  133,    0,   55,
-       54,   19,    0,  158,    0,    0,    0,    0,   45,    0,
-        0,    0,   92,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  132,    0,    0,    0,   51,    0,
-        0,   46,  160,    0,    0,   70,    0,    0,    0,    0,
-        0,    0,    0,   68,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   66,    0,    0,
+        0,    0,   16,    0,    0,    0,  162,    0,    0,    0,
+        0,    0,    0,    0,  135,    0,    0,    0,  111,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
+        0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
+        0,   62,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  163,   13,    0,    0,    0,    0,    0,    0,
+        0,    0,  141,  151,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  145,    0,    0,    0,    0,    0,    0,    0,
+      134,    0,   55,   54,   19,    0,  159,    0,    0,    0,
+        0,   45,    0,    0,    0,   93,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  133,    0,
+        0,    0,   51,    0,    0,   46,  161,    0,    0,   71,
+        0,    0,    0,    0,    0,    0,    0,   68,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,   29,    0,    0,   67,    0,    0,
-      138,    0,    0,    0,    0,  182,  159,    0,  107,    0,
-        0,    0,   63,    0,    0,    0,    0,    0,    0,  130,
-        0,  135,    0,   65,   58,    0,    0,    0,    0,    0,
-        0,  129,    0,    0,  163,    0,    0,    0,    0,    0,
-        0,    0,   64,    0,    0,    0,    0,    0,   91,   61,
-        0,    0,    0,    0,   60,  131,    0
+        0,    0,   66,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       29,    0,    0,   67,    0,    0,    0,  139,    0,    0,
+        0,    0,  183,  160,    0,  108,    0,    0,    0,   63,
+        0,    0,    0,    0,    0,    0,    0,  131,    0,  136,
+        0,   65,    0,   58,    0,    0,    0,    0,    0,    0,
+        0,  130,    0,    0,  164,    0,    0,    0,    0,    0,
+        0,    0,    0,   64,    0,    0,    0,    0,    0,   69,
+        0,   92,   61,    0,    0,    0,    0,   60,  132,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -953,244 +955,248 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1880] =
+static const flex_int16_t yy_base[1903] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2268, 2269,   34, 2264,  145,    0,  207, 2269,  214,  221,
-       13,  228, 2269, 2244,  118,   25,    2,    6, 2269, 2269,
-       73,   11,   17, 2269, 2269, 2269,  104, 2252, 2205,    0,
-     2242,  108, 2259,   24,  262, 2269, 2201,   67, 2207,   84,
-       75,   88,  224,   91,   89,  290,  220, 2199,  206,  285,
-      206,  204,  212,   60,  232, 2208,  247,  294,  315,  307,
-      286, 2191,  230,  325,  354,  328, 2210,    0,  366,  382,
-      397,  411,  404, 2269,    0, 2269,  419,  425,  216,  225,
-      229,  227,  319,  329, 2269, 2207, 2248, 2269,  300, 2269,
-
-      438, 2235,  390, 2204,  331,   10,  406,  311,  408,  414,
-      420, 2245,    0,  491,  409, 2187, 2184, 2188,  402, 2184,
-     2192,  406, 2188, 2177, 2178, 2183,   78, 2193, 2176, 2185,
-     2185,   95, 2176,  239, 2177, 2175,  396, 2223, 2227, 2167,
-     2220, 2160, 2183, 2180, 2180, 2174,  336, 2167, 2165, 2166,
-     2158, 2163, 2157,  413, 2168, 2161, 2152, 2151, 2165,  423,
-     2151,  430,  422, 2145,  465,  420,  432, 2166, 2163, 2164,
-      423, 2162, 2197, 2196,  423, 2142, 2142, 2143,  462, 2135,
-     2152, 2144,    0,  456,  471,  471,  489,  479,  504, 2143,
-     2269,    0, 2188,  509, 2137,  494,  501,  507, 2191,  516,
-
-     2190,  503, 2189, 2269,  553, 2188,  526, 2147, 2139, 2126,
-     2137, 2141, 2142, 2139, 2136, 2135, 2126,  500, 2177, 2171,
-     2135, 2116, 2113, 2121, 2116, 2130, 2126, 2114, 2126, 2126,
-     2117, 2101, 2105, 2118, 2120, 2117, 2109, 2099, 2117, 2269,
-     2112,  498, 2097, 2096, 2148, 2095, 2105, 2108,  541, 2104,
-     2143, 2088, 2090, 2101, 2139, 2084, 2142, 2077, 2092,  535,
-     2082, 2088, 2097, 2078, 2076, 2076, 2082, 2073, 2072, 2079,
-     2069, 2128, 2084, 2083, 2077,  488, 2084, 2079, 2071, 2061,
-     2076, 2075, 2070, 2074,  166, 2072, 2058, 2064, 2071, 2053,
-     2054, 2057, 2054, 2053,  341, 2048, 2062, 2061, 2104, 2063,
-
-      399, 2054,  523, 2269, 2269,  536, 2269, 2269, 2041,    0,
-      520,  515, 2089,  548, 2099,  548, 2269, 2098, 2269, 2092,
-      598, 2269,  547, 2032, 2041, 2089, 2049, 2032, 2049, 2030,
-     2036, 2088, 2043, 2038, 2041, 2036,  543, 2269, 2038, 2082,
-     2076, 2034, 2031,  576, 2037, 2077, 2071, 2024, 2019, 2016,
-     2067, 2024, 2013, 2029, 2063, 2009,  621, 2023, 2008, 2021,
-     2019, 2007, 2017, 2012, 2019, 2014, 2010,  528, 2008, 2011,
-     2006, 1992, 2004, 2000, 2050,  546, 2044, 2269, 2043, 1993,
-     1992, 1991, 1984, 1986, 1998, 1989, 1978, 1995, 1990,  586,
-     2037, 1990, 1987, 1990, 2269, 1989, 1978, 1978, 1990,  570,
-
-     1965, 1966, 1987,  580, 1969, 2020, 1965, 1979, 1982, 1977,
-     1963, 1975, 1974, 1973, 1968, 1971, 1970, 1969, 1968,  572,
-     2011, 1970, 2009, 2269, 1951, 1950,  629, 1963, 2269, 2269,
-     1962,    0, 1951, 1943,  573, 2002, 2001, 2269, 2000, 2269,
-      604,  672,  603, 1999, 1941, 1952, 1991, 1944, 1946, 1945,
-     1933, 2269, 1938, 1944, 1947, 1930, 1945, 1932, 1931, 2269,
-      591, 1933, 1930,  607, 1928, 1930, 2269, 1938, 1935, 1920,
-     1933, 1928,  653, 1935, 1923, 1916, 1967, 2269, 1914, 1930,
-     1964, 1925, 1922, 1923, 1907, 1924, 1958, 1909, 1904, 1903,
-     1954, 1898,  560, 1917, 1891, 1898, 1903, 1913, 1947, 1951,
-
-     2269, 1896, 1892, 1890, 1899, 1893, 1900, 1884, 1884, 1894,
-     1882, 1896, 1885, 1881, 1879, 2269, 1936, 2269, 1878, 1889,
-     1928, 1873, 1878, 1887, 1881, 1875, 1884, 1926, 1920, 1882,
-     1865, 1865, 1860, 1880, 1855, 1861, 1866, 1859, 1867, 1871,
-     1854, 1912, 1853, 1905, 1850, 1851, 1850, 1862, 1851, 2269,
-     1861, 2269, 1850, 1848, 2269, 1859, 1895, 1855,    0, 1839,
-     1856, 1896, 2269, 2269, 2269,  608,  607,  655, 2269, 1847,
-     1846,  614, 1853, 1833, 1832, 1885, 1830, 1883, 1828, 1827,
-     1826, 1833, 1826, 1838, 1820, 1820, 1835, 1834, 1822, 1832,
-     1831, 1831, 1813, 1818, 1859, 1826, 1818, 1863, 1807, 1823,
-
-     1822, 2269, 1807, 1804, 1862, 1817, 1809, 1815, 1806, 1814,
-     1799, 1815, 1797, 1809, 1810,  570, 1792, 1786, 1791, 1806,
-     1803, 1804, 1783, 1793, 1799, 1842, 1797, 1789, 1780, 2269,
-     1781, 1783, 1792, 1790, 1829, 1828, 1779,   16, 1788, 1825,
-     1770, 1771, 1774, 1767, 2269, 1781, 1760, 1764, 1778, 1770,
-     1815, 1767, 1774, 1812, 2269, 1757, 1771, 1755, 1769, 1772,
-     1753, 1805, 1804, 1803, 1802, 1747, 1800, 1799, 2269, 1744,
-     1758,  656, 1759, 1758, 1755, 1755, 1792, 1752, 1735, 1740,
-     1742, 2269, 1748, 1738, 2269,  637,  625, 1732, 1730, 1737,
-     1747, 1739, 1726, 1720, 1778,  628, 1782,  643, 1776, 1736,
-
-     1774, 1773, 1725, 1723, 1731, 1734, 1718, 1719, 1728, 1709,
-     1764, 1715, 1723, 1724, 1760, 1721,  199,  643,  217,  293,
-      351,  309,  353, 2269,  419,  446,  483,  544,  612,  610,
-      629,  628,  618,  633,  631,  647,  653,  698,  700,  650,
-      642,  653,  700,  658,  708, 2269,  709,  662,  664,  666,
-      660,  663,  716,  679,  668,  681, 2269,  671,  682,  671,
-      684,  686,  730,  731,  674,  685,  670,  693,  672,  678,
-      733,  697,  681,  693,  737,  738,  739,  686,  741,  705,
-      700,  707,  703,  688,  700,  701,  708,  694, 2269,  759,
-      717,  719,  709,  721,  711,  724,  709,  716,  722,  714,
-
-      728,  768,  744,  731,  736,  733,  715,  722,  736,  781,
-      734,  732,  741, 2269,  731,  746,  743,  729,  736,  735,
-      733,  752,  749,  737,  744,  745,  754,  758,  755,  745,
-      743,  743,  754,  750,  806,  763,  748,  749,  755,  771,
-      761, 2269,  771,  771,  764,  775,  773,  818,  760,  762,
-      777,  764,  763,  825,  782,  768,  771, 2269, 2269,  781,
-      786,  791,  779,  789,  791, 2269, 2269,  792,  779,  797,
-      784,  778,  783,  801,  788,  838,  789,  841,  787,  791,
-      849, 2269, 2269,  794,  798,  797,  794,  854,  807,  797,
-      798,  794,  807,  818,  802,  820,  815,  816,  818,  811,
-
-      813,  814,  815,  815,  817,  832,  873,  830,  835,  812,
-      835,  819, 2269,  826,  827,  841,  831,  829,  879,  837,
-      827,  842,  843,  830,  862,  870,  839,  834,  889,  890,
-      852,  892, 2269,  855,  859,  900,  848,  843,  844,  856,
-      863,  852,  853,  849,  852,  853,  863,  872,  908,  856,
-      865,  861,  919,  876,  877,  868, 2269,  870,  873,  881,
-      883,  868,  884,  878,  925,  891,  875,  876, 2269,  892,
-      895,  878,  937,  880,  899, 2269,  898,  901,  881,  899,
-      939,  897,  893,  890,  943,  944,  906,  892,  910,  909,
-      910,  896,  911,  903,  910,  900,  918,  917,  904, 2269,
-
-      912,  918,  921,  966, 2269,  915,  920,  964,  915,  928,
-      922,  926,  924,  922,  924,  934,  979,  923,  928,  924,
-      983,  927,  939, 2269,  927,  935,  933,  984,  946,  932,
-      933,  942,  954,  942,  940,  945,  955,  956,  961, 1002,
-      974,  979,  961,  958,  954,  968,  951,  951, 1011,  954,
-     2269,  954,  974,  973,  964,  953,  970,  977, 1020,  981,
-      974,  978,  982,  965,  982, 1027,  974, 2269, 1024,  971,
-      976,  975,  976,  976,  997,  994,  999, 1000,  986,  994,
-     1003,  983,  998, 1005, 1047, 2269, 1048, 1049,  991, 1001,
-     1011, 1014, 1002,  998, 1005, 1014, 1002, 1009, 1010, 1022,
-
-     1063, 1010, 1008, 1010, 1027, 1068, 1018, 1017, 1023, 1021,
-     1019, 1014, 1075, 1076, 1072, 1078, 2269, 1035, 1028, 1019,
-     1038, 1026, 1036, 1033, 1038, 1034, 1047, 1047, 2269, 1031,
-     1033, 1033, 2269, 1035, 1095, 1034, 1053, 1054, 1056, 1047,
-     1101, 1102, 1055, 1040, 1054, 1062, 1061, 1045, 1050, 1068,
-     2269, 1090, 1081, 1113, 1053, 1075, 1070, 1070, 1074, 2269,
-     1061, 1063, 1080, 1075, 1079, 1124, 1072, 1076, 2269, 1068,
-     1085, 1065, 1086, 1076, 1127, 2269, 1092, 1093, 1131, 1078,
-     1133, 1091, 1097, 1083, 1143, 1086, 1097, 1089, 1095, 1091,
-     1109, 1110, 1111, 2269, 2269, 1110, 2269, 1095, 1106, 1097,
-
-     1116, 1106, 1099, 1111, 1155, 1119, 1108, 1115, 1116, 1122,
-     2269, 1115, 1167, 1108, 1169, 2269, 1170, 1112, 1118, 1125,
-     1169, 1131, 2269, 2269, 1118, 2269, 1120, 1134, 1139, 1122,
-     1181, 1138, 1139, 1140, 1180, 1132, 1137, 1188, 1141, 1137,
-     1191, 2269, 1138, 1193, 1194, 1151, 1153, 2269, 2269, 1136,
-     1198, 1194, 1158, 1201, 1143, 1155, 1160, 1175, 1206, 2269,
-     1163, 1156, 1165, 1156, 1167, 1212, 1159, 1174, 1210, 1162,
-     2269, 1158, 1174, 1175, 1176, 1173, 1217, 1180, 1170, 1185,
-     1172, 1168, 1228, 1181, 1225, 1231, 1188, 2269, 1190, 1183,
-     1192, 1193, 1191, 1181, 1184, 1184, 1189, 1244, 1191, 1246,
-
-     1189, 1248, 1244, 1185, 1200, 1193, 1196, 1209, 1210, 1209,
-     1258, 2269, 1212, 2269, 2269, 1217, 1209, 1219, 1204, 1260,
-     1206, 1267, 1211, 1221, 1270, 2269, 1218, 1218, 1220, 1222,
-     1275, 1216, 1219, 2269, 1220, 1239, 2269, 1223, 2269, 2269,
-     1236, 1238, 1239, 2269, 1226, 1234, 2269, 1286, 1235, 1288,
-     1268, 2269, 1290, 1247, 1292, 1243, 1290, 2269, 1238, 1246,
-     1240, 1237, 1240, 1243, 1243, 1260, 1299, 1252, 1264, 1267,
-     1255, 1250, 1257, 1247, 2269, 1270, 1255, 2269, 1257, 1258,
-     1273, 1273, 1276, 1276, 1273, 1317, 1279, 1271, 2269, 1272,
-     2269, 1282, 2269, 1279, 1284, 1285, 1282, 1326, 1274, 1289,
-
-     1290, 1282, 2269, 1279, 1280, 1280, 1286, 1285, 1283, 1297,
-     2269, 1338, 1285, 2269, 1286, 1286, 1288, 1294, 2269, 1296,
-     1350, 1292, 1300, 1303, 1314, 1312, 1356, 1309, 1318, 2269,
-     1315, 2269, 1312, 1335, 2269, 1362, 2269, 1320, 1305, 1365,
-     1366, 1323, 1328, 1310, 1370, 1371, 1367, 1331, 1328, 1324,
-     1317, 1372, 1330, 1320, 1325, 1381, 1335, 1383, 1380, 1343,
-     1339, 1384, 1332, 1337, 1335, 1394, 1350, 1338, 1397, 1355,
-     1399, 1360, 1349, 1343, 1403, 1345, 1346, 1360, 1363, 1363,
-     1409, 1351, 1368, 1364, 1368, 1352, 1410, 1411, 1358, 1413,
-     1376, 1377, 2269, 1377, 1378, 1365, 1364, 1420, 2269, 1361,
-
-     1379, 1428, 1386, 1399, 2269, 1431, 1384, 2269, 2269, 1375,
-     1386, 1435, 2269, 2269, 1381, 1386, 1384, 1434, 1392, 1397,
-     1385, 1389, 1387, 1401, 2269, 1389, 2269, 1392, 1443, 1386,
-     1391, 1451, 1400, 1410, 1411, 2269, 1456, 1409, 1454, 2269,
-     1460, 2269, 1403, 1418, 1406, 2269, 1416, 1417, 1466, 1424,
-     1428, 2269, 1464, 1430, 1406, 1424, 1433, 1415, 1422, 1476,
-     1435, 1434, 1479, 1427, 1481, 1482, 1432, 1436, 1441, 1434,
-     2269, 1487, 1488, 2269, 1437, 1490, 1432, 2269, 1435, 1445,
-     1489, 1437, 1452, 1439, 1454, 1446, 1446, 1501, 1458, 1446,
-     1445, 1505, 1458, 2269, 1502, 1453, 1450, 2269, 1464, 1451,
-
-     2269, 1468, 1513, 1466, 1463, 1464, 2269, 1517, 1476, 1459,
-     1461, 1477, 1459, 1475, 1476, 1485, 2269, 1475, 1527, 2269,
-     1486, 2269, 2269, 1470, 1477, 1531, 1527, 2269, 2269, 1489,
-     2269, 1529, 1491, 1492, 1477, 1478, 1486, 1540, 1488, 1537,
-     1492, 2269, 1504, 1491, 1498, 2269, 1495, 1500, 1498, 1550,
-     1551, 1499, 1495, 2269, 1510, 1511, 1512, 2269, 1513, 1503,
-     1515, 1560, 1561, 1503, 1511, 1512, 1525, 2269, 1502, 1562,
-     1523, 2269, 1527, 1512, 1512, 1527, 1520, 1519, 1530, 1517,
-     2269, 1533, 1523, 1579, 1537, 1539, 1530, 1539, 1541, 1545,
-     2269, 2269, 1538, 1587, 1530, 1589, 1590, 1591, 1549, 1593,
-
-     2269, 2269, 1589, 1551, 1552, 1539, 1598, 1541, 1546, 1537,
-     1602, 1555, 1556, 1546, 1563, 1562, 1603, 1547, 1566, 2269,
-     1563, 1568, 1569, 1614, 1571, 1574, 1561, 2269, 1618, 2269,
-     2269, 2269, 1579, 2269, 1561, 1621, 1622, 1565, 2269, 1584,
-     1625, 1584, 2269, 1575, 1565, 1624, 1590, 1583, 1579, 1633,
-     1577, 1582, 1578, 1580, 2269, 1585, 1595, 1580, 2269, 1582,
-     1594, 2269, 2269, 1599, 1592, 2269, 1594, 1602, 1647, 1588,
-     1590, 1587, 1611, 2269, 1604, 1607, 1596, 1650, 1597, 1605,
-     1614, 1615, 1608, 1603, 1607, 1619, 1664, 2269, 1610, 1622,
-     1667, 1616, 1615, 1670, 1623, 1610, 1625, 1630, 1675, 1676,
-
-     1633, 1678, 1628, 1622, 2269, 1638, 1682, 2269, 1639, 1641,
-     2269, 1632, 1646, 1642, 1635, 2269, 2269, 1689, 2269, 1646,
-     1691, 1652, 2269, 1693, 1694, 1649, 1648, 1649, 1639, 2269,
-     1694, 2269, 1641, 2269, 2269, 1701, 1643, 1659, 1704, 1665,
-     1662, 2269, 1703, 1652, 2269, 1664, 1657, 1712, 1654, 1656,
-     1671, 1656, 2269, 1669, 1718, 1719, 1667, 1669, 2269, 2269,
-     1663, 1679, 1724, 1725, 2269, 2269, 2269, 1731, 1736, 1741,
-     1746, 1751, 1756, 1761, 1764, 1738, 1743, 1745, 1758
+     2291, 2292,   34, 2287,  145,    0,  207, 2292,  214,  221,
+       13,  228, 2292, 2267,  118,   25,    2,    6, 2292, 2292,
+       73,   11,   17, 2292, 2292, 2292,  104, 2275, 2228,    0,
+     2265,  108, 2282,   24,  262, 2292, 2224,   67, 2230,   84,
+       75,   88,  224,   91,   89,  290,  220, 2222,  206,  285,
+      206,  204,  212,   60,  232, 2231,  247,  294,  315,  307,
+      286, 2214,  230,  325,  354,  328, 2233,    0,  366,  382,
+      397,  411,  404, 2292,    0, 2292,  419,  425,  216,  225,
+      229,  227,  319,  329, 2292, 2230, 2271, 2292,  300, 2292,
+
+      438, 2258,  390, 2227,  331,   10,  406,  311,  408,  414,
+      420, 2268,    0,  491,  409, 2210, 2207, 2211,  402, 2207,
+     2215,  406, 2211, 2200, 2201, 2206,   78, 2216, 2199, 2208,
+     2208,   95, 2199,  239, 2200, 2198,  396, 2246, 2250, 2190,
+     2243, 2183, 2206, 2203, 2203, 2197,  336, 2190, 2188, 2189,
+     2181, 2186, 2180,  413, 2191, 2184, 2175, 2174, 2188,  423,
+     2174,  430,  422, 2168,  465,  420,  432, 2189, 2186, 2187,
+      423, 2185, 2220, 2219,  423, 2165, 2165, 2166,  462, 2158,
+     2175, 2167,    0,  456,  471,  471,  489,  479,  504, 2166,
+     2292,    0, 2211,  509, 2160,  494,  501,  507, 2214,  516,
+
+     2213,  503, 2212, 2292,  553, 2211,  526, 2170, 2162, 2149,
+     2160, 2164, 2165, 2162, 2159, 2158, 2149,  500, 2200, 2194,
+     2158, 2139, 2136, 2144, 2139, 2153, 2149, 2137, 2149, 2149,
+     2140, 2124, 2128, 2141, 2143, 2140, 2132, 2122, 2140, 2292,
+     2135,  498, 2120, 2119, 2171, 2118, 2128, 2131,  541, 2127,
+     2166, 2111, 2113, 2124, 2162, 2107, 2165, 2100, 2115,  535,
+     2105, 2111, 2120, 2101, 2099, 2099, 2105, 2096, 2095, 2102,
+     2092, 2151, 2107, 2106, 2100,  488, 2107, 2102, 2094, 2084,
+     2099, 2098, 2093, 2097,  166, 2095, 2081, 2087, 2094, 2076,
+     2077, 2080, 2077, 2076,  341, 2071, 2085, 2084, 2127, 2086,
+
+      399, 2077,  523, 2292, 2292,  536, 2292, 2292, 2064,    0,
+      520,  515, 2112,  548, 2122,  548, 2292, 2121, 2292, 2115,
+      598, 2292,  547, 2055, 2064, 2112, 2072, 2055, 2072, 2053,
+     2059, 2111, 2066, 2061, 2064, 2059,  543, 2292, 2061, 2105,
+     2099, 2057, 2054,  576, 2060, 2100, 2094, 2047, 2042, 2039,
+     2090, 2047, 2036, 2052, 2086, 2032,  621, 2046, 2031, 2044,
+     2042, 2030, 2040, 2035, 2042, 2037, 2033,  528, 2031, 2034,
+     2029, 2015, 2027, 2023, 2073,  546, 2067, 2292, 2066, 2016,
+     2015, 2014, 2007, 2009, 2021, 2012, 2001, 2018, 2013,  586,
+     2060, 2013, 2010, 2013, 2292, 2012, 2001, 2001, 2013,  570,
+
+     1988, 1989, 2010,  580, 1992, 2043, 1988, 2002, 2005, 2000,
+     1986, 1998, 1997, 1996, 1991, 1994, 1993, 1992, 1991,  572,
+     2034, 1993, 2032, 2292, 1974, 1973,  629, 1986, 2292, 2292,
+     1985,    0, 1974, 1966,  573, 2025, 2024, 2292, 2023, 2292,
+      604,  672,  603, 2022, 1964, 1975, 2014, 1967, 1969, 1968,
+     1956, 2292, 1961, 1967, 1970, 1953, 1968, 1955, 1954, 2292,
+      591, 1956, 1953,  607, 1951, 1953, 2292, 1961, 1958, 1943,
+     1956, 1951,  653, 1958, 1946, 1939, 1990, 2292, 1937, 1953,
+     1987, 1948, 1945, 1946, 1930, 1947, 1981, 1932, 1927, 1926,
+     1977, 1921,  560, 1940, 1914, 1921, 1926, 1936, 1970, 1974,
+
+     2292, 1919, 1915, 1913, 1922, 1916, 1923, 1907, 1907, 1917,
+     1905, 1919, 1908, 1904, 1902, 2292, 1959, 2292, 1901, 1912,
+     1951, 1896, 1901, 1910, 1904, 1898, 1907, 1949, 1943, 1905,
+     1888, 1888, 1883, 1903, 1878, 1884, 1889, 1882, 1890, 1894,
+     1877, 1935, 1876, 1928, 1873, 1874, 1873, 1885, 1874, 2292,
+     1884, 2292, 1873, 1871, 2292, 1882, 1918, 1878,    0, 1862,
+     1879, 1919, 2292, 2292, 2292,  608,  607,  655, 2292, 1870,
+     1869,  614, 1876, 1856, 1855, 1908, 1853, 1906, 1851, 1850,
+     1849, 1856, 1849, 1861, 1843, 1843, 1858, 1857,  612, 1856,
+     1855, 1855, 1837, 1842, 1883, 1850, 1842, 1887, 1831, 1847,
+
+     1846, 2292, 1831, 1828, 1886, 1841, 1833, 1839, 1830, 1838,
+     1823, 1839, 1821, 1833, 1834,  570, 1816, 1810, 1815, 1830,
+     1827, 1828, 1807, 1817, 1823, 1866, 1821, 1813, 1804, 2292,
+     1805, 1807, 1816, 1814, 1853, 1852, 1803,   16, 1812, 1849,
+     1794, 1795, 1798, 1791, 2292, 1805, 1784, 1788, 1802, 1794,
+     1839, 1791, 1798, 1836, 2292, 1781, 1795, 1779, 1793, 1796,
+     1777, 1829, 1828, 1827, 1826, 1771, 1824, 1823, 2292, 1768,
+     1782,  675, 1783, 1782, 1779, 1779, 1816, 1776, 1759, 1764,
+     1766, 2292, 1772, 1762, 2292,  637,  625, 1756, 1754, 1761,
+     1771, 1763, 1750, 1744, 1802,  629, 1806,  655, 1800, 1760,
+
+     1798, 1797, 1749, 1747, 1755, 1758, 1742, 1743, 1752, 1750,
+     1732, 1787, 1738, 1746, 1747, 1783, 1744,  199,  643,  217,
+      293,  351,  309,  353, 2292,  419,  446,  483,  544,  612,
+      610,  614,  628,  619,  634,  638,  647,  644,  701,  702,
+      653,  645,  655,  702,  660,  710, 2292,  711,  670,  672,
+      668,  662,  665,  718,  681,  670,  683, 2292,  673,  684,
+      673,  686,  688,  732,  733,  676,  687,  672,  695,  674,
+      680,  735,  699,  683,  695,  739,  740,  741,  688,  743,
+      707,  702,  709,  705,  690,  702,  703,  710,  696, 2292,
+      761,  719,  721,  711,  723,  713,  726,  711,  718,  724,
+
+      716,  730,  770,  746,  733,  738,  735,  717,  724,  738,
+      783,  736,  734,  743, 2292,  733,  748,  745,  731,  738,
+      737,  735,  754,  751,  739,  746,  747,  756,  760,  796,
+      758,  748,  747,  746,  757,  753,  809,  766,  751,  752,
+      758,  774,  764, 2292,  774,  774,  767,  778,  776,  821,
+      763,  765,  780,  767,  766,  828,  785,  771,  774, 2292,
+     2292,  784,  789,  794,  782,  792,  794, 2292, 2292,  795,
+      782,  800,  787,  781,  786,  804,  791,  841,  792,  844,
+      790,  794,  852, 2292, 2292,  797,  801,  800,  797,  857,
+      810,  800,  801,  797,  810,  821,  805,  823,  818,  819,
+
+      821,  814,  816,  817,  818,  818,  820,  835,  876,  833,
+      838,  815,  838,  822, 2292,  829,  830,  844,  834,  832,
+      882,  840,  830,  845,  846,  833,  865,  873,  842,  837,
+      892,  893,  855,  895, 2292,  858,  862,  903,  851,  846,
+      847,  859,  866,  855,  856,  852,  855,  856,  866,  875,
+      911,  859,  877,  870,  865,  923,  880,  881,  872, 2292,
+      874,  877,  885,  887,  872,  888,  882,  929,  895,  879,
+      880, 2292,  896,  899,  882,  941,  884,  903, 2292,  902,
+      905,  885,  903,  943,  901,  897,  894,  947,  948,  910,
+      896,  914,  913,  914,  900,  915,  907,  914,  904,  922,
+
+      921,  908, 2292,  916,  922,  925,  970, 2292,  919,  924,
+      968,  919,  932,  926,  930,  928,  926,  928,  938,  983,
+      927,  932,  928,  987,  931,  943, 2292,  931,  939,  937,
+      988,  950,  936,  937,  946,  958,  946,  944,  949,  959,
+      960,  965, 1006,  978,  983,  965,  962,  958,  972,  955,
+      955, 1015,  958, 2292,  958,  978,  977,  968,  957,  974,
+      981, 1024,  985,  978,  982,  986,  969,  986,  977, 1032,
+      979, 2292, 1029,  978,  981,  980,  981,  981, 1002,  999,
+     1004, 1005,  991,  999, 1008,  988, 1003, 1010, 1052, 2292,
+     1053, 1054,  996, 1006, 1016, 1019, 1007, 1003, 1010, 1019,
+
+     1007, 1014, 1015, 1027, 1068, 1015, 1013, 1015, 1032, 1073,
+     1023, 1022, 1028, 1026, 1024, 1019, 1080, 1081, 1077, 1083,
+     2292, 1040, 1033, 1024, 1043, 1031, 1041, 1038, 1043, 1039,
+     1052, 1052, 2292, 1036, 1038, 1038, 2292, 1040, 1100, 1039,
+     1058, 1059, 1061, 1052, 1106, 1107, 1060, 1045, 1059, 1067,
+     1066, 1050, 1055, 1073, 2292, 1095, 1086, 1118, 1058, 1080,
+     1075, 1075, 1079, 2292, 1066, 1068, 1085, 1080, 1084, 1129,
+     1077, 1081, 2292, 1073, 1090, 1070, 1091, 1081, 1132, 1085,
+     2292, 1099, 1099, 1137, 1084, 1139, 1098, 1103, 1089, 1149,
+     1092, 1103, 1095, 1101, 1097, 1115, 1116, 1117, 2292, 2292,
+
+     1116, 2292, 1101, 1112, 1103, 1122, 1112, 1105, 1117, 1161,
+     1125, 1114, 1121, 1122, 1128, 2292, 1121, 1173, 1114, 1175,
+     2292, 1176, 1118, 1124, 1131, 1175, 1137, 2292, 2292, 1124,
+     2292, 1126, 1140, 1145, 1128, 1187, 1144, 1145, 1146, 1186,
+     1138, 1143, 1194, 1147, 1143, 1197, 2292, 1144, 1199, 1200,
+     1157, 1159, 2292, 2292, 1142, 1204, 1200, 1164, 1207, 1149,
+     1161, 1166, 1181, 1212, 2292, 1169, 1162, 1171, 1162, 1173,
+     1218, 1165, 1180, 1216, 1168, 2292, 1164, 1180, 1181, 1182,
+     1179, 1223, 1186, 1176, 1186, 1192, 1179, 1175, 1235, 1188,
+     1232, 1238, 1196, 2292, 1197, 1190, 1199, 1201, 1198, 1188,
+
+     1191, 1191, 1196, 1251, 1198, 1253, 1196, 1255, 1251, 1192,
+     1207, 1200, 1203, 1216, 1218, 1216, 1265, 2292, 1219, 2292,
+     2292, 1224, 1216, 1226, 1211, 1267, 1213, 1274, 1218, 1228,
+     1277, 2292, 1225, 1225, 1227, 1229, 1282, 1223, 1226, 2292,
+     1227, 1246, 2292, 1230, 2292, 2292, 1243, 1245, 1246, 2292,
+     1233, 1241, 2292, 1293, 1242, 1295, 1275, 2292, 1297, 1254,
+     1299, 1250, 1297, 2292, 1245, 1253, 1247, 1244, 1247, 1250,
+     1250, 1267, 1306, 1259, 1271, 1274, 1262, 1265, 1258, 1265,
+     1256, 2292, 1278, 1263, 2292, 1265, 1266, 1281, 1281, 1284,
+     1284, 1281, 1325, 1287, 1279, 2292, 1280, 2292, 1290, 2292,
+
+     1287, 1292, 1293, 1290, 1334, 1282, 1297, 1298, 1290, 2292,
+     1287, 1288, 1288, 1294, 1293, 1291, 1305, 2292, 1346, 1293,
+     2292, 1294, 1294, 1296, 1302, 2292, 1304, 1358, 1300, 1308,
+     1311, 1322, 1320, 1364, 1317, 1326, 2292, 1323, 2292, 1320,
+     1343, 2292, 1370, 2292, 1328, 1313, 1373, 1374, 1331, 1336,
+     1318, 1378, 1379, 1375, 1339, 1336, 1332, 1325, 1380, 1338,
+     1339, 1329, 1334, 1390, 1344, 1393, 1389, 1352, 1349, 1393,
+     1341, 1346, 1344, 1403, 1359, 1347, 1406, 1364, 1408, 1369,
+     1358, 1352, 1412, 1354, 1355, 1369, 1372, 1372, 1418, 1360,
+     1377, 1373, 1377, 1361, 1419, 1420, 1367, 1422, 1385, 1386,
+
+     2292, 1386, 1387, 1374, 1373, 1429, 2292, 1370, 1388, 1437,
+     1395, 1408, 2292, 1440, 1393, 2292, 2292, 1384, 1395, 1444,
+     2292, 2292, 1390, 1395, 1393, 1443, 1401, 1406, 1394, 1410,
+     1399, 1397, 1411, 2292, 1399, 2292, 1402, 1453, 1396, 1401,
+     1462, 1410, 1420, 1421, 2292, 1466, 1420, 1464, 2292, 1470,
+     2292, 1413, 1428, 1416, 2292, 1426, 1427, 1476, 1434, 1438,
+     2292, 1474, 1440, 1416, 1434, 1443, 1425, 1432, 1486, 1445,
+     1444, 1489, 1437, 1491, 1492, 1442, 1446, 1451, 1444, 2292,
+     1497, 1498, 2292, 1447, 1500, 1442, 2292, 1445, 1455, 1499,
+     1447, 1462, 1449, 1464, 1450, 1457, 1457, 1512, 1469, 1457,
+
+     1456, 1516, 1469, 2292, 1513, 1464, 1461, 2292, 1475, 1462,
+     2292, 1479, 1524, 1477, 1474, 1475, 2292, 1528, 1487, 1470,
+     1472, 1488, 1470, 1486, 1487, 1496, 2292, 1486, 1538, 2292,
+     1497, 2292, 2292, 1481, 1488, 1542, 1538, 2292, 2292, 1500,
+     2292, 1540, 1502, 1503, 1488, 1489, 1497, 1551, 1499, 1548,
+     1549, 1504, 2292, 1516, 1503, 1510, 2292, 1507, 1512, 1510,
+     1562, 1563, 1511, 1507, 2292, 1522, 1523, 1524, 2292, 1525,
+     1515, 1527, 1572, 1573, 1515, 1523, 1524, 1537, 2292, 1514,
+     1574, 1535, 2292, 1539, 1524, 1524, 1539, 1532, 1531, 1542,
+     1529, 2292, 1545, 1533, 1536, 1592, 1550, 1552, 1543, 1552,
+
+     1554, 1558, 2292, 2292, 1551, 1600, 1543, 1602, 1603, 1604,
+     1562, 1606, 2292, 2292, 1602, 1564, 1565, 1552, 1611, 1554,
+     1559, 1550, 1615, 1568, 1569, 1559, 1576, 1575, 1616, 1560,
+     1579, 1580, 2292, 1577, 1582, 1583, 1628, 1585, 1588, 1575,
+     2292, 1632, 2292, 2292, 2292, 1593, 2292, 1575, 1635, 1636,
+     1579, 2292, 1598, 1639, 1598, 2292, 1589, 1579, 1638, 1604,
+     1597, 1593, 1647, 1590, 1592, 1597, 1593, 1595, 2292, 1600,
+     1610, 1595, 2292, 1597, 1609, 2292, 2292, 1614, 1607, 2292,
+     1609, 1617, 1662, 1603, 1605, 1602, 1626, 2292, 1613, 1620,
+     1623, 1612, 1666, 1613, 1621, 1630, 1631, 1624, 1619, 1623,
+
+     1635, 1680, 2292, 1626, 1638, 1683, 1632, 1634, 1632, 1687,
+     1640, 1627, 1642, 1647, 1692, 1693, 1650, 1695, 1645, 1639,
+     2292, 1655, 1699, 2292, 1656, 1641, 1659, 2292, 1650, 1664,
+     1660, 1653, 2292, 2292, 1707, 2292, 1664, 1709, 1670, 2292,
+     1711, 1653, 1713, 1668, 1667, 1668, 1658, 2292, 1713, 2292,
+     1660, 2292, 1672, 2292, 1721, 1663, 1679, 1724, 1685, 1682,
+     1674, 2292, 1724, 1673, 2292, 1685, 1678, 1733, 1681, 1676,
+     1678, 1693, 1678, 2292, 1739, 1692, 1741, 1742, 1690, 2292,
+     1692, 2292, 2292, 1686, 1702, 1747, 1748, 2292, 2292, 2292,
+     1754, 1759, 1764, 1769, 1774, 1779, 1784, 1787, 1761, 1766,
+
+     1768, 1781
     } ;
 
-static const flex_int16_t yy_def[1880] =
+static const flex_int16_t yy_def[1903] =
     {   0,
-     1868, 1868, 1869, 1869, 1868, 1868, 1868, 1868, 1868, 1868,
-     1867, 1867, 1867, 1867, 1867, 1870, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1871,
-     1867, 1867, 1867, 1872,   15, 1867,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1873,   45,   45,   45,   45,
+     1891, 1891, 1892, 1892, 1891, 1891, 1891, 1891, 1891, 1891,
+     1890, 1890, 1890, 1890, 1890, 1893, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1894,
+     1890, 1890, 1890, 1895,   15, 1890,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1896,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1870, 1867, 1867,
-     1867, 1867, 1867, 1867, 1874, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1871, 1867, 1872, 1867,
+       45,   45,   45,   45,   45,   45,   45, 1893, 1890, 1890,
+     1890, 1890, 1890, 1890, 1897, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1894, 1890, 1895, 1890,
 
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1875,   45, 1873,   45,   45,   45,   45,   45,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1898,   45, 1896,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1874, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1876,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1897, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1899,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1875, 1867, 1873,   45,   45,   45,   45,   45,
+       45,   45, 1898, 1890, 1896,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1198,190 +1204,194 @@ static const flex_int16_t yy_def[1880] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1877,
-       45,   45,   45,   45,   45,   45, 1867,   45, 1867,   45,
-     1873, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1900,
+       45,   45,   45,   45,   45,   45, 1890,   45, 1890,   45,
+     1896, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45,   45, 1867, 1867,
-     1867, 1878,   45,   45,   45,   45,   45, 1867,   45, 1867,
-       45, 1873,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45,   45,   45, 1867,
-       45,   45,   45,   45,   45,   45, 1867,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45, 1890, 1890,
+     1890, 1901,   45,   45,   45,   45,   45, 1890,   45, 1890,
+       45, 1896,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45,   45, 1890,
+       45,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1867,   45, 1867,   45,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1890,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
-       45, 1867,   45,   45, 1867,   45,   45, 1867, 1879,   45,
-       45,   45, 1867, 1867, 1867,   45,   45,   45, 1867,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
+       45, 1890,   45,   45, 1890,   45,   45, 1890, 1902,   45,
+       45,   45, 1890, 1890, 1890,   45,   45,   45, 1890,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1890,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45, 1867,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1867,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867, 1867,   45,
-       45,   45,   45,   45,   45, 1867, 1867,   45,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
+     1890,   45,   45,   45,   45,   45,   45, 1890, 1890,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867, 1867,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1867,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
-
-       45,   45,   45,   45, 1867,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45, 1890,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+
+       45,   45, 1890,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1867,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867, 1867,   45, 1867,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45, 1867, 1867,   45, 1867,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45, 1867, 1867,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1890,   45,   45,   45, 1890,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45,   45,
+       45,   45, 1890,   45,   45,   45,   45,   45,   45,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1890, 1890,
+
+       45, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1890,   45,   45,   45,   45,
+     1890,   45,   45,   45,   45,   45,   45, 1890, 1890,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45, 1890, 1890,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1890,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45, 1867, 1867,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45, 1867,   45, 1867, 1867,
-       45,   45,   45, 1867,   45,   45, 1867,   45,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45, 1890,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45,   45, 1890,
+       45,   45, 1890,   45, 1890, 1890,   45,   45,   45, 1890,
+       45,   45, 1890,   45,   45,   45,   45, 1890,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45,   45, 1867,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1867,   45,
-     1867,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45, 1867,   45,   45,   45,   45, 1867,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
-       45, 1867,   45,   45, 1867,   45, 1867,   45,   45,   45,
+       45, 1890,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1890,   45, 1890,   45, 1890,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
+     1890,   45,   45,   45,   45, 1890,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1890,   45, 1890,   45,
+       45, 1890,   45, 1890,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45, 1867,   45,
-
-       45,   45,   45,   45, 1867,   45,   45, 1867, 1867,   45,
-       45,   45, 1867, 1867,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45, 1867,   45,   45,   45,
-       45,   45,   45,   45,   45, 1867,   45,   45,   45, 1867,
-       45, 1867,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
+
+     1890,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45, 1890,   45,   45, 1890, 1890,   45,   45,   45,
+     1890, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890,   45, 1890,   45,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45, 1890,   45,
+     1890,   45,   45,   45, 1890,   45,   45,   45,   45,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1890,
+       45,   45, 1890,   45,   45,   45, 1890,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45, 1867,   45,   45,   45, 1867,   45,   45,
+
+       45,   45,   45, 1890,   45,   45,   45, 1890,   45,   45,
+     1890,   45,   45,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1890,   45,   45, 1890,
+       45, 1890, 1890,   45,   45,   45,   45, 1890, 1890,   45,
+     1890,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1890,   45,   45,   45, 1890,   45,   45,   45,
+       45,   45,   45,   45, 1890,   45,   45,   45, 1890,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1890,   45,
+       45,   45, 1890,   45,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1890, 1890,   45,   45,   45,   45,   45,   45,
+       45,   45, 1890, 1890,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45, 1867,   45,   45,
-
-     1867,   45,   45,   45,   45,   45, 1867,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1867,   45,   45, 1867,
-       45, 1867, 1867,   45,   45,   45,   45, 1867, 1867,   45,
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45, 1867,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
-       45, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1867, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
-
-     1867, 1867,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1867,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45, 1867,
-     1867, 1867,   45, 1867,   45,   45,   45,   45, 1867,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1867,   45,   45,   45, 1867,   45,
-       45, 1867, 1867,   45,   45, 1867,   45,   45,   45,   45,
-       45,   45,   45, 1867,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1867,   45,   45,
+       45,   45, 1890,   45,   45,   45,   45,   45,   45,   45,
+     1890,   45, 1890, 1890, 1890,   45, 1890,   45,   45,   45,
+       45, 1890,   45,   45,   45, 1890,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1890,   45,
+       45,   45, 1890,   45,   45, 1890, 1890,   45,   45, 1890,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 1867,   45,   45, 1867,   45,   45,
-     1867,   45,   45,   45,   45, 1867, 1867,   45, 1867,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45,   45, 1867,
-       45, 1867,   45, 1867, 1867,   45,   45,   45,   45,   45,
-       45, 1867,   45,   45, 1867,   45,   45,   45,   45,   45,
-       45,   45, 1867,   45,   45,   45,   45,   45, 1867, 1867,
-       45,   45,   45,   45, 1867, 1867,    0, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867
+       45,   45, 1890,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1890,   45,   45, 1890,   45,   45,   45, 1890,   45,   45,
+       45,   45, 1890, 1890,   45, 1890,   45,   45,   45, 1890,
+       45,   45,   45,   45,   45,   45,   45, 1890,   45, 1890,
+       45, 1890,   45, 1890,   45,   45,   45,   45,   45,   45,
+       45, 1890,   45,   45, 1890,   45,   45,   45,   45,   45,
+       45,   45,   45, 1890,   45,   45,   45,   45,   45, 1890,
+       45, 1890, 1890,   45,   45,   45,   45, 1890, 1890,    0,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+
+     1890, 1890
     } ;
 
-static const flex_int16_t yy_nxt[2343] =
+static const flex_int16_t yy_nxt[2366] =
     {   0,
-     1867,   13,   14,   13, 1867,   15,   16, 1867,   17,   18,
+     1890,   13,   14,   13, 1890,   15,   16, 1890,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  757,   37,   14,   37,   85,   25,   26,   38,  100,
-     1867,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  758,   37,   14,   37,   85,   25,   26,   38,  100,
+     1890,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      758,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      759,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  103,   25,   26,
@@ -1402,141 +1412,141 @@ static const flex_int16_t yy_nxt[2343] =
        80,   80,   80,   80,   80,   79,  105,   82,   82,   82,
        82,   82,  410,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  184,   81,  108,  105,
-      103,  119,  836,  131,   81,  185,   81,  184,  109,  120,
+      103,  119,  838,  131,   81,  185,   81,  184,  109,  120,
       134,  135,  121,   81,  132,  122,  186,  123,  136,  124,
-       81,  108,  184,  840,  133,  164,  115,   81,   45,  165,
+       81,  108,  184,  842,  133,  164,  115,   81,   45,  165,
       139,  185,  116,  187,   45,  117,  109,   45,  232,   45,
       140,   45,  141,   45,  186,  113,  143,  144,   45,   45,
 
-      145,   45,   45,  841,  233,  100,  146,   45,   45,   45,
+      145,   45,   45,  843,  233,  100,  146,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
       125,  160,   45,  126,  127,  161,   45,  128,  129,  147,
        45,  107,  101,  148,  199,  162,  317,  149,   45,  185,
-      130,  420,   45,  110,   45,  114,  842,  155,  843,  150,
+      130,  420,   45,  110,   45,  114,  844,  155,  845,  150,
       152,  196,  153,  151,  154,  156,  186,  157,  173,  174,
       166,  199,  158,  159,  167,  188,  179,  168,  108,   83,
        83,   83,   83,   83,  169,  170,  180,  196,  109,  171,
       172,  181,   81,   79,  189,   80,   80,   80,   80,   80,
 
-      248,  175,  844,  176,  249,   87,  177,   87,   81,  426,
+      248,  175,  846,  176,  249,   87,  177,   87,   81,  426,
        88,   88,   88,   88,   88,   81,  109,   83,   83,   83,
        83,   83,   79,  178,   82,   82,   82,   82,   82,  194,
        81,   81,   88,   88,   88,   88,   88,   81,   88,   88,
        88,   88,   88,   99,  198,  200,  202,  201,  194,  211,
        99,  198,  236,   81,  216,  237,  199,  194,  212,  238,
-       81,  427,  213,  217,  218,  206,  845,  270,  290,  202,
+       81,  427,  213,  217,  218,  206,  847,  270,  290,  202,
       262,  271,  198,  200,  201,  273,  207,  282,  283,  198,
        99,  256,  291,  295,   99,  263,  264,  265,   99,  267,
-      284,  303,  268,  269,  285,  201,   99,  305,  286,  846,
+      284,  303,  268,  269,  285,  201,   99,  305,  286,  848,
 
        99,  304,   99,  192,  205,  205,  205,  205,  205,  304,
       274,  275,  276,  205,  205,  205,  205,  205,  205,  303,
       305,  277,  299,  278,  303,  279,  280,  304,  281,  314,
       305,  312,  315,  316,  320,  307,  205,  205,  205,  205,
-      205,  205,  318,  360,  399,  381,  847,  400,  312,  429,
+      205,  205,  318,  360,  399,  381,  849,  400,  312,  429,
       334,  368,  306,  308,  312,  435,  316,  314,  335,  315,
       361,  320,  429,  336,  337,  318,  321,  321,  321,  321,
       321,  323,  429,  433,  437,  321,  321,  321,  321,  321,
       321,  382,  439,  434,  435,  430,  464,  435,  457,  492,
-      493,  516,  465,  848,  494,  383,  502,  437,  321,  321,
+      493,  516,  465,  850,  494,  383,  502,  437,  321,  321,
 
       321,  321,  321,  321,  369,  458,  503,  370,  562,  622,
-      439,  442,  442,  442,  442,  442,  443,  735,  736,  623,
+      439,  442,  442,  442,  442,  442,  443,  736,  737,  623,
       442,  442,  442,  442,  442,  442,  478,  548,  526,  531,
       549,  479,  527,  532,  555,  566,  562,  567,  562,  556,
       686,  687,  584,  442,  442,  442,  442,  442,  442,  517,
-      585,  803,  586,  587,  588,  592,  589,  849,  602,  850,
-      685,  789,  566,  603,  567,  688,  568,  686,  593,  687,
-      594,  691,  790,  802,  803,  812,  851,  852,  692,  480,
-      853,  813,  854,  855,  481,   45,   45,   45,   45,   45,
-      815,  816,  856,  817,   45,   45,   45,   45,   45,   45,
-
-      837,  802,  857,  858,  838,  859,  860,  861,  839,  862,
-      864,  865,  863,  866,  867,  868,  869,   45,   45,   45,
+      585,  804,  586,  587,  588,  592,  589,  851,  602,  852,
+      685,  853,  566,  603,  567,  688,  568,  686,  593,  687,
+      594,  691,  709,  803,  804,  710,  813,  854,  692,  480,
+      790,  855,  814,  856,  481,   45,   45,   45,   45,   45,
+      857,  791,  858,  859,   45,   45,   45,   45,   45,   45,
+
+      839,  803,  816,  817,  840,  818,  860,  861,  841,  862,
+      863,  864,  866,  867,  865,  868,  869,   45,   45,   45,
        45,   45,   45,  870,  871,  872,  873,  874,  875,  876,
       877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
       887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
-      897,  898,  899,  900,  902,  903,  904,  907,  908,  909,
-      901,  911,  912,  905,  913,  910,  914,  906,  915,  916,
+      897,  898,  899,  900,  901,  902,  904,  905,  906,  909,
+      910,  911,  903,  913,  914,  907,  915,  912,  916,  908,
       917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
       927,  928,  929,  930,  931,  932,  933,  934,  935,  936,
       937,  938,  939,  940,  941,  942,  943,  944,  945,  946,
 
-      947,  948,  949,  950,  951,  952,  953,  926,  954,  955,
+      947,  948,  949,  950,  951,  952,  953,  954,  955,  928,
       956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  969,  971,  972,  973,  974,  970,  975,
-      976,  977,  978,  979,  980,  981,  982,  983,  984,  985,
-      986,  987,  988,  989,  990,  991,  992,  994,  995,  996,
-      993,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+      966,  967,  968,  969,  970,  971,  972,  974,  975,  976,
+      977,  973,  978,  979,  980,  981,  982,  983,  984,  985,
+      986,  987,  988,  989,  990,  991,  992,  993,  994,  995,
+      997,  998,  999,  996, 1000, 1001, 1002, 1003, 1004, 1005,
      1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
      1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
      1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
      1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
 
      1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1042,
-     1065, 1066, 1041, 1067, 1068, 1069, 1070, 1071, 1072, 1073,
+     1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
+     1066, 1067, 1045, 1068, 1069, 1044, 1070, 1071, 1072, 1073,
      1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
-     1084, 1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
+     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1092, 1093, 1094,
      1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1114, 1115,
-     1116, 1117, 1118, 1119, 1120, 1121, 1111, 1122, 1123, 1124,
-     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
+     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+     1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125,
+     1115, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
      1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
 
-     1087, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1154,
-     1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1145, 1146, 1147, 1148, 1091, 1149, 1150, 1151, 1152, 1153,
+     1154, 1155, 1156, 1158, 1157, 1159, 1160, 1161, 1162, 1163,
      1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
-     1174, 1175, 1176, 1177, 1178, 1179, 1152, 1153, 1180, 1181,
-     1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1197, 1199, 1200, 1201, 1196, 1202,
-     1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212,
+     1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+     1156, 1157, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
+     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1202,
+     1204, 1205, 1206, 1201, 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, 1198, 1241,
+     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
 
-     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
+     1243, 1244, 1245, 1203, 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, 1258,
-     1281, 1282, 1283, 1284, 1285, 1259, 1286, 1287, 1288, 1289,
-     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
+     1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281,
+     1282, 1283, 1284, 1285, 1263, 1286, 1287, 1288, 1289, 1290,
+     1264, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
      1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
      1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
      1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
-     1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340,
+     1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339, 1340,
 
      1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
-     1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1360, 1361,
-     1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371,
-     1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1351, 1380,
-     1381, 1382, 1383, 1331, 1384, 1385, 1386, 1387, 1388, 1389,
-     1390, 1391, 1392, 1393, 1394, 1395, 1396, 1398, 1399, 1400,
-     1401, 1359, 1402, 1403, 1397, 1404, 1405, 1406, 1407, 1408,
-     1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
+     1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
+     1361, 1362, 1363, 1364, 1366, 1367, 1368, 1369, 1370, 1371,
+     1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
+     1382, 1383, 1384, 1385, 1357, 1386, 1387, 1388, 1389, 1337,
+     1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399,
+     1400, 1401, 1402, 1403, 1405, 1406, 1407, 1365, 1408, 1409,
+     1410, 1404, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
      1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428,
-     1429, 1430, 1431, 1432, 1434, 1435, 1436, 1437, 1433, 1438,
+     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, 1434, 1456, 1457,
-     1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467,
+     1439, 1441, 1442, 1443, 1444, 1440, 1445, 1446, 1447, 1448,
+     1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458,
+     1459, 1460, 1461, 1462, 1441, 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,
      1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497,
      1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
-     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1518,
-     1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1517,
-     1528, 1529, 1530, 1504, 1531, 1532, 1533, 1534, 1535, 1536,
+     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517,
+     1518, 1519, 1520, 1521, 1522, 1523, 1524, 1526, 1527, 1528,
+     1529, 1530, 1531, 1532, 1533, 1534, 1535, 1525, 1536, 1537,
 
-     1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547,
+     1538, 1512, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1547,
      1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
      1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
      1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
      1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
-     1588, 1589, 1590, 1591, 1592, 1593, 1594, 1537, 1595, 1596,
-     1597, 1598, 1599, 1573, 1600, 1601, 1602, 1603, 1604, 1605,
-     1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
+     1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597,
+     1598, 1599, 1600, 1601, 1602, 1603, 1546, 1604, 1605, 1606,
+     1607, 1608, 1582, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
      1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625,
      1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
 
@@ -1563,79 +1573,81 @@ static const flex_int16_t yy_nxt[2343] =
      1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835,
 
      1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845,
-     1846, 1848, 1847, 1849, 1850, 1851, 1852, 1853, 1854, 1855,
+     1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855,
      1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865,
-     1866,   12,   12,   12,   12,   12,   36,   36,   36,   36,
-       36,   78,  310,   78,   78,   78,   97,  432,   97,  559,
-       97,   99,   99,   99,   99,   99,  112,  112,  112,  112,
-      112,  183,   99,  183,  183,  183,  203,  203,  203,  835,
-      834,  833,  832,  831,  830,  829,  828,  827,  826,  825,
-      824,  823,  822,  821,  820,  819,  818,  814,  811,  810,
-      809,  808,  807,  806,  805,  804,  801,  800,  799,  798,
-
-      797,  796,  795,  794,  793,  792,  791,  788,  787,  786,
-      785,  784,  783,  782,  781,  780,  779,  778,  777,  776,
-      775,  774,  773,  772,  771,  770,  769,  768,  767,  766,
-      765,  764,  763,  762,  761,  760,  759,  756,  755,  754,
-      753,  752,  751,  750,  749,  748,  747,  746,  745,  744,
-      743,  742,  741,  740,  739,  738,  737,  734,  733,  732,
-      731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
-      721,  720,  719,  718,  717,  716,  715,  714,  713,  712,
-      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
-      701,  700,  699,  698,  697,  696,  695,  694,  693,  690,
-
-      689,  685,  684,  683,  682,  681,  680,  679,  678,  677,
-      676,  675,  674,  673,  672,  671,  670,  669,  668,  667,
-      666,  665,  664,  663,  662,  661,  660,  659,  658,  657,
-      656,  655,  654,  653,  652,  651,  650,  649,  648,  647,
-      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
-      626,  625,  624,  621,  620,  619,  618,  617,  616,  615,
-      614,  613,  612,  611,  610,  609,  608,  607,  606,  605,
-      604,  601,  600,  599,  598,  597,  596,  595,  591,  590,
-      583,  582,  581,  580,  579,  578,  577,  576,  575,  574,
-
-      573,  572,  571,  570,  569,  565,  564,  563,  561,  560,
-      558,  557,  554,  553,  552,  551,  550,  547,  546,  545,
-      544,  543,  542,  541,  540,  539,  538,  537,  536,  535,
-      534,  533,  530,  529,  528,  525,  524,  523,  522,  521,
-      520,  519,  518,  515,  514,  513,  512,  511,  510,  509,
-      508,  507,  506,  505,  504,  501,  500,  499,  498,  497,
-      496,  495,  491,  490,  489,  488,  487,  486,  485,  484,
-      483,  482,  477,  476,  475,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  463,  462,  461,  460,  459,  456,
-      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
-
-      445,  444,  441,  440,  438,  436,  431,  428,  425,  424,
-      423,  422,  421,  419,  418,  417,  416,  415,  414,  413,
-      412,  411,  408,  407,  406,  405,  404,  403,  402,  401,
-      398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
-      388,  387,  386,  385,  384,  380,  379,  378,  377,  376,
-      375,  374,  373,  372,  371,  367,  366,  365,  364,  363,
-      362,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
-      340,  339,  338,  333,  332,  331,  330,  329,  328,  327,
-      326,  325,  324,  322,  204,  319,  317,  313,  311,  309,
-
-      302,  301,  300,  298,  297,  296,  294,  293,  292,  289,
-      288,  287,  272,  266,  261,  260,  259,  258,  257,  255,
-      254,  253,  252,  251,  250,  247,  246,  245,  244,  243,
-      242,  241,  240,  239,  235,  234,  231,  228,  227,  226,
-      225,  222,  221,  220,  219,  215,  214,  210,  209,  208,
-      204,  195,  193,  191,  190,  182,  163,  142,  118,  104,
-      102,   43,   98,   96,   95,   86,   43, 1867,   11, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867
+     1866, 1868, 1867, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
+     1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
+     1886, 1887, 1888, 1889,   12,   12,   12,   12,   12,   36,
+       36,   36,   36,   36,   78,  310,   78,   78,   78,   97,
+      432,   97,  559,   97,   99,   99,   99,   99,   99,  112,
+      112,  112,  112,  112,  183,   99,  183,  183,  183,  203,
+      203,  203,  837,  836,  835,  834,  833,  832,  831,  830,
+
+      829,  828,  827,  826,  825,  824,  823,  822,  821,  820,
+      819,  815,  812,  811,  810,  809,  808,  807,  806,  805,
+      802,  801,  800,  799,  798,  797,  796,  795,  794,  793,
+      792,  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,  757,  756,  755,  754,  753,  752,  751,  750,  749,
+      748,  747,  746,  745,  744,  743,  742,  741,  740,  739,
+      738,  735,  734,  733,  732,  731,  730,  729,  728,  727,
+      726,  725,  724,  723,  722,  721,  720,  719,  718,  717,
+
+      716,  715,  714,  713,  712,  711,  708,  707,  706,  705,
+      704,  703,  702,  701,  700,  699,  698,  697,  696,  695,
+      694,  693,  690,  689,  685,  684,  683,  682,  681,  680,
+      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
+      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
+      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
+      639,  638,  637,  636,  635,  634,  633,  632,  631,  630,
+      629,  628,  627,  626,  625,  624,  621,  620,  619,  618,
+      617,  616,  615,  614,  613,  612,  611,  610,  609,  608,
+
+      607,  606,  605,  604,  601,  600,  599,  598,  597,  596,
+      595,  591,  590,  583,  582,  581,  580,  579,  578,  577,
+      576,  575,  574,  573,  572,  571,  570,  569,  565,  564,
+      563,  561,  560,  558,  557,  554,  553,  552,  551,  550,
+      547,  546,  545,  544,  543,  542,  541,  540,  539,  538,
+      537,  536,  535,  534,  533,  530,  529,  528,  525,  524,
+      523,  522,  521,  520,  519,  518,  515,  514,  513,  512,
+      511,  510,  509,  508,  507,  506,  505,  504,  501,  500,
+      499,  498,  497,  496,  495,  491,  490,  489,  488,  487,
+      486,  485,  484,  483,  482,  477,  476,  475,  474,  473,
+
+      472,  471,  470,  469,  468,  467,  466,  463,  462,  461,
+      460,  459,  456,  455,  454,  453,  452,  451,  450,  449,
+      448,  447,  446,  445,  444,  441,  440,  438,  436,  431,
+      428,  425,  424,  423,  422,  421,  419,  418,  417,  416,
+      415,  414,  413,  412,  411,  408,  407,  406,  405,  404,
+      403,  402,  401,  398,  397,  396,  395,  394,  393,  392,
+      391,  390,  389,  388,  387,  386,  385,  384,  380,  379,
+      378,  377,  376,  375,  374,  373,  372,  371,  367,  366,
+      365,  364,  363,  362,  359,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
+
+      343,  342,  341,  340,  339,  338,  333,  332,  331,  330,
+      329,  328,  327,  326,  325,  324,  322,  204,  319,  317,
+      313,  311,  309,  302,  301,  300,  298,  297,  296,  294,
+      293,  292,  289,  288,  287,  272,  266,  261,  260,  259,
+      258,  257,  255,  254,  253,  252,  251,  250,  247,  246,
+      245,  244,  243,  242,  241,  240,  239,  235,  234,  231,
+      228,  227,  226,  225,  222,  221,  220,  219,  215,  214,
+      210,  209,  208,  204,  195,  193,  191,  190,  182,  163,
+      142,  118,  104,  102,   43,   98,   96,   95,   86,   43,
+     1890,   11, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890
     } ;
 
-static const flex_int16_t yy_chk[2343] =
+static const flex_int16_t yy_chk[2366] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1664,237 +1676,239 @@ static const flex_int16_t yy_chk[2343] =
        17,   17,   17,   17,   17,   19,   62,   19,   19,   19,
        19,   19,  285,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   89,   20,   53,   62,
-       57,   59,  717,   61,   22,   90,   17,   92,   53,   59,
+       57,   59,  718,   61,   22,   90,   17,   92,   53,   59,
        62,   63,   59,   19,   61,   59,   91,   59,   63,   59,
-       20,   53,   89,  719,   61,   73,   57,   22,   45,   73,
+       20,   53,   89,  720,   61,   73,   57,   22,   45,   73,
        65,   90,   57,   92,   45,   57,   53,   45,  134,   45,
        65,   45,   65,   45,   91,   56,   67,   67,   45,   45,
 
-       67,   45,   56,  720,  134,   99,   67,   45,   45,   45,
+       67,   45,   56,  721,  134,   99,   67,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        60,   71,   56,   60,   60,   71,   56,   60,   60,   68,
        56,   69,   99,   68,  108,   71,  295,   68,   56,   93,
-       60,  295,   56,   76,   56,   56,  721,   70,  722,   68,
+       60,  295,   56,   76,   56,   56,  722,   70,  723,   68,
        69,  105,   69,   68,   69,   70,   94,   70,   75,   75,
        74,  108,   70,   70,   74,   93,   76,   74,   75,   79,
        79,   79,   79,   79,   74,   74,   76,  105,   75,   74,
        74,   76,   79,   80,   94,   80,   80,   80,   80,   80,
 
-      147,   75,  723,   75,  147,   81,   75,   81,   80,  301,
+      147,   75,  724,   75,  147,   81,   75,   81,   80,  301,
        81,   81,   81,   81,   81,   79,   75,   83,   83,   83,
        83,   83,   82,   75,   82,   82,   82,   82,   82,  103,
        83,   80,   87,   87,   87,   87,   87,   82,   88,   88,
        88,   88,   88,  101,  107,  109,  111,  110,  115,  119,
       101,  154,  137,   83,  122,  137,  175,  103,  119,  137,
-       82,  301,  119,  122,  122,  115,  725,  163,  171,  111,
+       82,  301,  119,  122,  122,  115,  726,  163,  171,  111,
       160,  163,  107,  109,  110,  165,  115,  166,  166,  154,
       101,  154,  171,  175,  101,  160,  160,  160,  101,  162,
-      167,  184,  162,  162,  167,  179,  101,  186,  167,  726,
+      167,  184,  162,  162,  167,  179,  101,  186,  167,  727,
 
       101,  185,  101,  101,  114,  114,  114,  114,  114,  188,
       165,  165,  165,  114,  114,  114,  114,  114,  114,  184,
       186,  165,  179,  165,  187,  165,  165,  185,  165,  196,
       189,  194,  197,  198,  202,  188,  114,  114,  114,  114,
-      114,  114,  200,  242,  276,  260,  727,  276,  207,  303,
+      114,  114,  200,  242,  276,  260,  728,  276,  207,  303,
       218,  249,  187,  189,  194,  312,  198,  196,  218,  197,
       242,  202,  306,  218,  218,  200,  205,  205,  205,  205,
       205,  207,  303,  311,  314,  205,  205,  205,  205,  205,
       205,  260,  316,  311,  312,  306,  344,  323,  337,  368,
-      368,  390,  344,  728,  368,  260,  376,  314,  205,  205,
+      368,  390,  344,  729,  368,  260,  376,  314,  205,  205,
 
       205,  205,  205,  205,  249,  337,  376,  249,  435,  493,
       316,  321,  321,  321,  321,  321,  323,  616,  616,  493,
       321,  321,  321,  321,  321,  321,  357,  420,  400,  404,
       420,  357,  400,  404,  427,  441,  435,  441,  443,  427,
       566,  567,  461,  321,  321,  321,  321,  321,  321,  390,
-      461,  687,  461,  461,  461,  464,  461,  729,  473,  730,
-      568,  672,  441,  473,  441,  568,  443,  566,  464,  567,
-      464,  572,  672,  686,  687,  696,  731,  732,  572,  357,
-      733,  696,  734,  735,  357,  442,  442,  442,  442,  442,
-      698,  698,  736,  698,  442,  442,  442,  442,  442,  442,
-
-      718,  686,  737,  738,  718,  739,  740,  741,  718,  742,
-      743,  744,  742,  745,  747,  748,  749,  442,  442,  442,
-      442,  442,  442,  750,  751,  752,  753,  754,  755,  756,
-      758,  759,  760,  761,  762,  763,  764,  765,  766,  767,
-      768,  769,  770,  771,  772,  773,  774,  775,  776,  777,
-      778,  779,  780,  781,  782,  783,  783,  784,  785,  786,
-      781,  787,  788,  783,  790,  786,  791,  783,  792,  793,
-      794,  795,  796,  797,  798,  799,  800,  801,  802,  803,
-      804,  805,  806,  807,  808,  809,  810,  811,  812,  813,
-      815,  816,  817,  818,  819,  820,  821,  822,  823,  824,
-
-      825,  826,  827,  828,  829,  830,  831,  803,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  841,  843,  844,
-      845,  846,  847,  848,  849,  850,  851,  852,  848,  853,
-      854,  855,  856,  857,  860,  861,  862,  863,  864,  865,
-      868,  869,  870,  871,  872,  873,  874,  875,  876,  877,
-      874,  878,  879,  880,  881,  884,  885,  886,  887,  888,
-      889,  890,  891,  892,  893,  894,  895,  896,  897,  898,
-      899,  900,  901,  902,  903,  904,  905,  906,  907,  908,
-      909,  910,  911,  912,  914,  915,  916,  917,  918,  919,
-      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
-
-      930,  931,  932,  934,  935,  936,  937,  938,  939,  940,
-      941,  942,  943,  944,  945,  946,  947,  948,  949,  926,
-      950,  951,  925,  952,  953,  954,  955,  956,  958,  959,
-      960,  961,  962,  963,  964,  965,  966,  967,  968,  970,
-      971,  972,  973,  974,  975,  977,  978,  979,  980,  981,
-      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999, 1001, 1002,
-     1003, 1004, 1006, 1007, 1008, 1009,  997, 1010, 1011, 1012,
-     1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
-     1023, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
-
-      973, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1043,
-     1042, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
-     1064, 1065, 1066, 1067, 1069, 1070, 1041, 1042, 1071, 1072,
-     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1087, 1088, 1089, 1090, 1091, 1087, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
-     1113, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1123,
-     1124, 1125, 1126, 1127, 1128, 1130, 1131, 1132, 1088, 1134,
+      461,  687,  461,  461,  461,  464,  461,  730,  473,  731,
+      568,  732,  441,  473,  441,  568,  443,  566,  464,  567,
+      464,  572,  589,  686,  687,  589,  696,  733,  572,  357,
+      672,  734,  696,  735,  357,  442,  442,  442,  442,  442,
+      736,  672,  737,  738,  442,  442,  442,  442,  442,  442,
+
+      719,  686,  698,  698,  719,  698,  739,  740,  719,  741,
+      742,  743,  744,  745,  743,  746,  748,  442,  442,  442,
+      442,  442,  442,  749,  750,  751,  752,  753,  754,  755,
+      756,  757,  759,  760,  761,  762,  763,  764,  765,  766,
+      767,  768,  769,  770,  771,  772,  773,  774,  775,  776,
+      777,  778,  779,  780,  781,  782,  783,  784,  784,  785,
+      786,  787,  782,  788,  789,  784,  791,  787,  792,  784,
+      793,  794,  795,  796,  797,  798,  799,  800,  801,  802,
+      803,  804,  805,  806,  807,  808,  809,  810,  811,  812,
+      813,  814,  816,  817,  818,  819,  820,  821,  822,  823,
+
+      824,  825,  826,  827,  828,  829,  830,  831,  832,  804,
+      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      843,  845,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  850,  855,  856,  857,  858,  859,  862,  863,  864,
+      865,  866,  867,  870,  871,  872,  873,  874,  875,  876,
+      877,  878,  879,  876,  880,  881,  882,  883,  886,  887,
+      888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
+      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
+      908,  909,  910,  911,  912,  913,  914,  916,  917,  918,
+      919,  920,  921,  922,  923,  924,  925,  926,  927,  928,
+
+      929,  930,  931,  932,  933,  934,  936,  937,  938,  939,
+      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      950,  951,  928,  952,  953,  927,  954,  955,  956,  957,
+      958,  959,  961,  962,  963,  964,  965,  966,  967,  968,
+      969,  970,  971,  973,  974,  975,  976,  977,  978,  980,
+      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
+     1001, 1002, 1004, 1005, 1006, 1007, 1009, 1010, 1011, 1012,
+     1000, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
+     1022, 1023, 1024, 1025, 1026, 1028, 1029, 1030, 1031, 1032,
+
+     1033, 1034, 1035, 1036,  976, 1037, 1038, 1039, 1040, 1041,
+     1042, 1043, 1044, 1046, 1045, 1047, 1048, 1049, 1050, 1051,
+     1052, 1053, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
+     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1073,
+     1044, 1045, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
+     1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092,
+     1093, 1094, 1095, 1091, 1096, 1097, 1098, 1099, 1100, 1101,
+     1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1122,
+     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
+
+     1134, 1135, 1136, 1092, 1138, 1139, 1140, 1141, 1142, 1143,
+     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
+     1154, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165,
+     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1174, 1175, 1176,
+     1177, 1178, 1179, 1180, 1156, 1182, 1183, 1184, 1185, 1186,
+     1157, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
+     1196, 1197, 1198, 1201, 1203, 1204, 1205, 1206, 1207, 1208,
+     1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1218, 1219,
+     1220, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1232, 1233,
+     1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
+
+     1244, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1255, 1256,
+     1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1266, 1267,
+     1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278,
+     1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288,
+     1289, 1290, 1291, 1292, 1263, 1293, 1295, 1296, 1297, 1240,
+     1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
+     1308, 1309, 1310, 1311, 1312, 1313, 1314, 1271, 1315, 1316,
+     1317, 1311, 1319, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
+     1329, 1330, 1331, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
+     1341, 1342, 1344, 1347, 1348, 1349, 1351, 1352, 1354, 1355,
+
+     1356, 1357, 1359, 1360, 1361, 1356, 1362, 1363, 1365, 1366,
+     1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376,
+     1377, 1378, 1379, 1380, 1357, 1381, 1383, 1384, 1386, 1387,
+     1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1397, 1399,
+     1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1411,
+     1412, 1413, 1414, 1415, 1416, 1417, 1419, 1420, 1422, 1423,
+     1424, 1425, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
+     1435, 1436, 1438, 1440, 1441, 1443, 1445, 1446, 1447, 1448,
+     1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458,
+     1459, 1460, 1461, 1462, 1463, 1464, 1465, 1455, 1466, 1467,
+
+     1468, 1441, 1469, 1470, 1471, 1472, 1473, 1473, 1474, 1475,
+     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, 1502, 1503, 1504, 1505, 1506,
+     1508, 1509, 1510, 1511, 1512, 1514, 1515, 1518, 1519, 1520,
+     1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532,
+     1533, 1535, 1537, 1538, 1539, 1540, 1474, 1541, 1542, 1543,
+     1544, 1546, 1512, 1547, 1548, 1550, 1552, 1553, 1554, 1556,
+     1557, 1558, 1559, 1560, 1562, 1563, 1564, 1565, 1566, 1567,
+     1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
 
-     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
-     1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, 1155,
-     1156, 1157, 1158, 1159, 1161, 1162, 1163, 1164, 1165, 1166,
-     1167, 1168, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1152,
-     1178, 1179, 1180, 1181, 1182, 1153, 1183, 1184, 1185, 1186,
-     1187, 1188, 1189, 1190, 1191, 1192, 1193, 1196, 1198, 1199,
-     1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
-     1210, 1212, 1213, 1214, 1215, 1217, 1218, 1219, 1220, 1221,
-     1222, 1225, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
-     1235, 1236, 1237, 1238, 1239, 1240, 1241, 1243, 1244, 1245,
-
-     1246, 1247, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
-     1258, 1259, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
-     1269, 1270, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
-     1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1258, 1289,
-     1290, 1291, 1292, 1235, 1293, 1294, 1295, 1296, 1297, 1298,
-     1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
-     1309, 1266, 1310, 1311, 1305, 1313, 1316, 1317, 1318, 1319,
-     1320, 1321, 1322, 1323, 1324, 1325, 1327, 1328, 1329, 1330,
-     1331, 1332, 1333, 1335, 1336, 1338, 1341, 1342, 1343, 1345,
-     1346, 1348, 1349, 1350, 1351, 1353, 1354, 1355, 1350, 1356,
-
-     1357, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
-     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1351, 1376, 1377,
-     1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
-     1390, 1392, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401,
-     1402, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1412, 1413,
-     1415, 1416, 1417, 1418, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1431, 1433, 1434, 1436, 1438, 1439,
-     1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449,
-     1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1448,
-     1459, 1460, 1461, 1434, 1462, 1463, 1464, 1465, 1465, 1466,
-
-     1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
-     1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486,
-     1487, 1488, 1489, 1490, 1491, 1492, 1494, 1495, 1496, 1497,
-     1498, 1500, 1501, 1502, 1503, 1504, 1506, 1507, 1510, 1511,
-     1512, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523,
-     1524, 1526, 1528, 1529, 1530, 1531, 1532, 1466, 1533, 1534,
-     1535, 1537, 1538, 1504, 1539, 1541, 1543, 1544, 1545, 1547,
-     1548, 1549, 1550, 1551, 1553, 1554, 1555, 1556, 1557, 1558,
-     1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568,
-     1569, 1570, 1572, 1573, 1575, 1576, 1577, 1579, 1580, 1581,
-
-     1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
-     1592, 1593, 1595, 1596, 1597, 1599, 1600, 1602, 1603, 1604,
-     1605, 1606, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
-     1616, 1618, 1619, 1621, 1624, 1625, 1626, 1627, 1630, 1632,
-     1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1643,
-     1644, 1645, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1655,
-     1656, 1657, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666,
-     1667, 1669, 1670, 1671, 1673, 1674, 1675, 1676, 1677, 1678,
-     1679, 1680, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689,
-     1690, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1703,
-
-     1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
-     1714, 1715, 1716, 1717, 1718, 1719, 1721, 1722, 1723, 1724,
-     1725, 1726, 1727, 1729, 1733, 1735, 1736, 1737, 1738, 1740,
-     1741, 1742, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751,
-     1752, 1753, 1754, 1756, 1757, 1758, 1760, 1761, 1764, 1765,
-     1767, 1768, 1769, 1770, 1771, 1772, 1773, 1775, 1776, 1777,
-     1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787,
-     1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798,
-     1799, 1800, 1801, 1802, 1803, 1804, 1806, 1807, 1809, 1810,
-     1812, 1813, 1814, 1815, 1818, 1820, 1821, 1822, 1824, 1825,
-
-     1826, 1827, 1828, 1829, 1831, 1833, 1836, 1837, 1838, 1839,
-     1840, 1841, 1840, 1843, 1844, 1846, 1847, 1848, 1849, 1850,
-     1851, 1852, 1854, 1855, 1856, 1857, 1858, 1861, 1862, 1863,
-     1864, 1868, 1868, 1868, 1868, 1868, 1869, 1869, 1869, 1869,
-     1869, 1870, 1876, 1870, 1870, 1870, 1871, 1877, 1871, 1878,
-     1871, 1872, 1872, 1872, 1872, 1872, 1873, 1873, 1873, 1873,
-     1873, 1874, 1879, 1874, 1874, 1874, 1875, 1875, 1875,  716,
-      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
-      705,  704,  703,  702,  701,  700,  699,  697,  695,  694,
-      693,  692,  691,  690,  689,  688,  684,  683,  681,  680,
-
-      679,  678,  677,  676,  675,  674,  673,  671,  670,  668,
-      667,  666,  665,  664,  663,  662,  661,  660,  659,  658,
-      657,  656,  654,  653,  652,  651,  650,  649,  648,  647,
-      646,  644,  643,  642,  641,  640,  639,  637,  636,  635,
-      634,  633,  632,  631,  629,  628,  627,  626,  625,  624,
-      623,  622,  621,  620,  619,  618,  617,  615,  614,  613,
-      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      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,  571,
-
-      570,  562,  561,  560,  558,  557,  556,  554,  553,  551,
-      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
-      519,  517,  515,  514,  513,  512,  511,  510,  509,  508,
-      507,  506,  505,  504,  503,  502,  500,  499,  498,  497,
-      496,  495,  494,  492,  491,  490,  489,  488,  487,  486,
-      485,  484,  483,  482,  481,  480,  479,  477,  476,  475,
-      474,  472,  471,  470,  469,  468,  466,  465,  463,  462,
-      459,  458,  457,  456,  455,  454,  453,  451,  450,  449,
-
-      448,  447,  446,  445,  444,  439,  437,  436,  434,  433,
-      431,  428,  426,  425,  423,  422,  421,  419,  418,  417,
-      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
-      406,  405,  403,  402,  401,  399,  398,  397,  396,  394,
-      393,  392,  391,  389,  388,  387,  386,  385,  384,  383,
-      382,  381,  380,  379,  377,  375,  374,  373,  372,  371,
-      370,  369,  367,  366,  365,  364,  363,  362,  361,  360,
-      359,  358,  356,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  346,  345,  343,  342,  341,  340,  339,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-
-      325,  324,  320,  318,  315,  313,  309,  302,  300,  299,
-      298,  297,  296,  294,  293,  292,  291,  290,  289,  288,
-      287,  286,  284,  283,  282,  281,  280,  279,  278,  277,
-      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  259,  258,  257,  256,  255,
-      254,  253,  252,  251,  250,  248,  247,  246,  245,  244,
-      243,  241,  239,  238,  237,  236,  235,  234,  233,  232,
-      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
-      221,  220,  219,  217,  216,  215,  214,  213,  212,  211,
-      210,  209,  208,  206,  203,  201,  199,  195,  193,  190,
-
-      182,  181,  180,  178,  177,  176,  174,  173,  172,  170,
-      169,  168,  164,  161,  159,  158,  157,  156,  155,  153,
-      152,  151,  150,  149,  148,  146,  145,  144,  143,  142,
-      141,  140,  139,  138,  136,  135,  133,  131,  130,  129,
-      128,  126,  125,  124,  123,  121,  120,  118,  117,  116,
-      112,  104,  102,   97,   96,   77,   72,   66,   58,   49,
-       47,   43,   41,   39,   38,   24,   14,   11, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
-     1867, 1867
+     1578, 1579, 1581, 1582, 1584, 1585, 1586, 1588, 1589, 1590,
+     1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600,
+     1601, 1602, 1603, 1605, 1606, 1607, 1609, 1610, 1612, 1613,
+     1614, 1615, 1616, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
+     1625, 1626, 1628, 1629, 1631, 1634, 1635, 1636, 1637, 1640,
+     1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651,
+     1652, 1654, 1655, 1656, 1658, 1659, 1660, 1661, 1662, 1663,
+     1664, 1666, 1667, 1668, 1670, 1671, 1672, 1673, 1674, 1675,
+     1676, 1677, 1678, 1680, 1681, 1682, 1684, 1685, 1686, 1687,
+     1688, 1689, 1690, 1691, 1693, 1694, 1695, 1696, 1697, 1698,
+
+     1699, 1700, 1701, 1702, 1705, 1706, 1707, 1708, 1709, 1710,
+     1711, 1712, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722,
+     1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
+     1734, 1735, 1736, 1737, 1738, 1739, 1740, 1742, 1746, 1748,
+     1749, 1750, 1751, 1753, 1754, 1755, 1757, 1758, 1759, 1760,
+     1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1770, 1771,
+     1772, 1774, 1775, 1778, 1779, 1781, 1782, 1783, 1784, 1785,
+     1786, 1787, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796,
+     1797, 1798, 1799, 1800, 1801, 1802, 1804, 1805, 1806, 1807,
+     1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817,
+
+     1818, 1819, 1820, 1822, 1823, 1825, 1826, 1827, 1829, 1830,
+     1831, 1832, 1835, 1837, 1838, 1839, 1841, 1842, 1843, 1844,
+     1845, 1846, 1847, 1849, 1851, 1853, 1855, 1856, 1857, 1858,
+     1859, 1860, 1859, 1861, 1863, 1864, 1866, 1867, 1868, 1869,
+     1870, 1871, 1872, 1873, 1875, 1876, 1877, 1878, 1879, 1881,
+     1884, 1885, 1886, 1887, 1891, 1891, 1891, 1891, 1891, 1892,
+     1892, 1892, 1892, 1892, 1893, 1899, 1893, 1893, 1893, 1894,
+     1900, 1894, 1901, 1894, 1895, 1895, 1895, 1895, 1895, 1896,
+     1896, 1896, 1896, 1896, 1897, 1902, 1897, 1897, 1897, 1898,
+     1898, 1898,  717,  716,  715,  714,  713,  712,  711,  710,
+
+      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
+      699,  697,  695,  694,  693,  692,  691,  690,  689,  688,
+      684,  683,  681,  680,  679,  678,  677,  676,  675,  674,
+      673,  671,  670,  668,  667,  666,  665,  664,  663,  662,
+      661,  660,  659,  658,  657,  656,  654,  653,  652,  651,
+      650,  649,  648,  647,  646,  644,  643,  642,  641,  640,
+      639,  637,  636,  635,  634,  633,  632,  631,  629,  628,
+      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
+      617,  615,  614,  613,  612,  611,  610,  609,  608,  607,
+      606,  605,  604,  603,  601,  600,  599,  598,  597,  596,
+
+      595,  594,  593,  592,  591,  590,  588,  587,  586,  585,
+      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
+      574,  573,  571,  570,  562,  561,  560,  558,  557,  556,
+      554,  553,  551,  549,  548,  547,  546,  545,  544,  543,
+      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
+      532,  531,  530,  529,  528,  527,  526,  525,  524,  523,
+      522,  521,  520,  519,  517,  515,  514,  513,  512,  511,
+      510,  509,  508,  507,  506,  505,  504,  503,  502,  500,
+      499,  498,  497,  496,  495,  494,  492,  491,  490,  489,
+      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
+
+      477,  476,  475,  474,  472,  471,  470,  469,  468,  466,
+      465,  463,  462,  459,  458,  457,  456,  455,  454,  453,
+      451,  450,  449,  448,  447,  446,  445,  444,  439,  437,
+      436,  434,  433,  431,  428,  426,  425,  423,  422,  421,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  408,  407,  406,  405,  403,  402,  401,  399,  398,
+      397,  396,  394,  393,  392,  391,  389,  388,  387,  386,
+      385,  384,  383,  382,  381,  380,  379,  377,  375,  374,
+      373,  372,  371,  370,  369,  367,  366,  365,  364,  363,
+      362,  361,  360,  359,  358,  356,  355,  354,  353,  352,
+
+      351,  350,  349,  348,  347,  346,  345,  343,  342,  341,
+      340,  339,  336,  335,  334,  333,  332,  331,  330,  329,
+      328,  327,  326,  325,  324,  320,  318,  315,  313,  309,
+      302,  300,  299,  298,  297,  296,  294,  293,  292,  291,
+      290,  289,  288,  287,  286,  284,  283,  282,  281,  280,
+      279,  278,  277,  275,  274,  273,  272,  271,  270,  269,
+      268,  267,  266,  265,  264,  263,  262,  261,  259,  258,
+      257,  256,  255,  254,  253,  252,  251,  250,  248,  247,
+      246,  245,  244,  243,  241,  239,  238,  237,  236,  235,
+      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+
+      224,  223,  222,  221,  220,  219,  217,  216,  215,  214,
+      213,  212,  211,  210,  209,  208,  206,  203,  201,  199,
+      195,  193,  190,  182,  181,  180,  178,  177,  176,  174,
+      173,  172,  170,  169,  168,  164,  161,  159,  158,  157,
+      156,  155,  153,  152,  151,  150,  149,  148,  146,  145,
+      144,  143,  142,  141,  140,  139,  138,  136,  135,  133,
+      131,  130,  129,  128,  126,  125,  124,  123,  121,  120,
+      118,  117,  116,  112,  104,  102,   97,   96,   77,   72,
+       66,   58,   49,   47,   43,   41,   39,   38,   24,   14,
+       11, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+     1890, 1890, 1890, 1890, 1890
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1903,7 +1917,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[201] =
+static const flex_int16_t yy_rule_linenum[202] =
     {   0,
       145,  147,  149,  154,  155,  160,  161,  162,  174,  177,
       182,  189,  198,  207,  216,  225,  234,  243,  253,  262,
@@ -1911,22 +1925,23 @@ static const flex_int16_t yy_rule_linenum[201] =
       361,  373,  382,  391,  400,  409,  420,  431,  442,  453,
       464,  475,  486,  497,  508,  519,  530,  541,  552,  563,
       574,  585,  594,  605,  616,  627,  638,  649,  658,  667,
-      676,  685,  696,  707,  718,  729,  740,  751,  762,  772,
-      783,  792,  802,  816,  832,  841,  850,  859,  868,  890,
-      912,  921,  931,  940,  951,  960,  969,  978,  987,  996,
-     1006, 1015, 1026, 1037, 1048, 1059, 1071, 1080, 1089, 1098,
-
-     1107, 1116, 1125, 1134, 1143, 1152, 1162, 1173, 1185, 1194,
-     1203, 1213, 1223, 1233, 1243, 1253, 1263, 1272, 1282, 1291,
-     1300, 1309, 1318, 1328, 1338, 1347, 1357, 1366, 1375, 1384,
-     1393, 1402, 1411, 1420, 1429, 1438, 1447, 1456, 1465, 1474,
-     1483, 1492, 1501, 1510, 1519, 1528, 1537, 1546, 1555, 1564,
-     1573, 1582, 1591, 1600, 1609, 1618, 1627, 1636, 1645, 1654,
-     1663, 1672, 1684, 1696, 1706, 1716, 1726, 1736, 1746, 1756,
-     1766, 1776, 1786, 1795, 1804, 1813, 1822, 1833, 1844, 1857,
-     1870, 1883, 1892, 1991, 1996, 2001, 2006, 2007, 2008, 2009,
-     2010, 2011, 2013, 2031, 2044, 2049, 2053, 2055, 2057, 2059
-
+      676,  685,  696,  707,  718,  729,  740,  751,  762,  773,
+      783,  794,  803,  813,  827,  843,  852,  861,  870,  879,
+      901,  923,  932,  942,  951,  962,  971,  980,  989,  998,
+     1007, 1017, 1026, 1037, 1048, 1059, 1070, 1082, 1091, 1100,
+
+     1109, 1118, 1127, 1136, 1145, 1154, 1163, 1173, 1184, 1196,
+     1205, 1214, 1224, 1234, 1244, 1254, 1264, 1274, 1283, 1293,
+     1302, 1311, 1320, 1329, 1339, 1349, 1358, 1368, 1377, 1386,
+     1395, 1404, 1413, 1422, 1431, 1440, 1449, 1458, 1467, 1476,
+     1485, 1494, 1503, 1512, 1521, 1530, 1539, 1548, 1557, 1566,
+     1575, 1584, 1593, 1602, 1611, 1620, 1629, 1638, 1647, 1656,
+     1665, 1674, 1683, 1695, 1707, 1717, 1727, 1737, 1747, 1757,
+     1767, 1777, 1787, 1797, 1806, 1815, 1824, 1833, 1844, 1855,
+     1868, 1881, 1894, 1903, 2002, 2007, 2012, 2017, 2018, 2019,
+     2020, 2021, 2022, 2024, 2042, 2055, 2060, 2064, 2066, 2068,
+
+     2070
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1979,7 +1994,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1982 "dhcp4_lexer.cc"
+#line 1997 "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
@@ -2005,8 +2020,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 2008 "dhcp4_lexer.cc"
-#line 2009 "dhcp4_lexer.cc"
+#line 2023 "dhcp4_lexer.cc"
+#line 2024 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2334,7 +2349,7 @@ YY_DECL
     }
 
 
-#line 2337 "dhcp4_lexer.cc"
+#line 2352 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2363,13 +2378,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 >= 1868 )
+                               if ( yy_current_state >= 1891 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1867 );
+               while ( yy_current_state != 1890 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2388,13 +2403,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 < 201 )
+                       else if ( yy_act < 202 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 201 )
+                       else if ( yy_act == 202 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 202 )
+                       else if ( yy_act == 203 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3245,6 +3260,20 @@ YY_RULE_SETUP
 case 69:
 YY_RULE_SETUP
 #line 762 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 773 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3255,9 +3284,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 772 "dhcp4_lexer.ll"
+#line 783 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3269,9 +3298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 783 "dhcp4_lexer.ll"
+#line 794 "dhcp4_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3281,9 +3310,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 792 "dhcp4_lexer.ll"
+#line 803 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3294,9 +3323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 802 "dhcp4_lexer.ll"
+#line 813 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3311,9 +3340,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 816 "dhcp4_lexer.ll"
+#line 827 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -3330,9 +3359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 832 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3342,9 +3371,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 841 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3354,9 +3383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 850 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3366,9 +3395,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 859 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -3378,9 +3407,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 868 "dhcp4_lexer.ll"
+#line 879 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3403,9 +3432,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 890 "dhcp4_lexer.ll"
+#line 901 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3428,9 +3457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 912 "dhcp4_lexer.ll"
+#line 923 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3440,9 +3469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 921 "dhcp4_lexer.ll"
+#line 932 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3453,9 +3482,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 931 "dhcp4_lexer.ll"
+#line 942 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3465,9 +3494,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 940 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3479,9 +3508,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 962 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3491,9 +3520,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 960 "dhcp4_lexer.ll"
+#line 971 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3503,9 +3532,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 969 "dhcp4_lexer.ll"
+#line 980 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3515,9 +3544,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 978 "dhcp4_lexer.ll"
+#line 989 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3527,9 +3556,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 987 "dhcp4_lexer.ll"
+#line 998 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3539,9 +3568,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 996 "dhcp4_lexer.ll"
+#line 1007 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3552,9 +3581,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 1006 "dhcp4_lexer.ll"
+#line 1017 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3564,9 +3593,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 1015 "dhcp4_lexer.ll"
+#line 1026 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3578,9 +3607,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 1026 "dhcp4_lexer.ll"
+#line 1037 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3592,9 +3621,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 1037 "dhcp4_lexer.ll"
+#line 1048 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3606,9 +3635,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 1048 "dhcp4_lexer.ll"
+#line 1059 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3620,9 +3649,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 1059 "dhcp4_lexer.ll"
+#line 1070 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3634,9 +3663,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 1071 "dhcp4_lexer.ll"
+#line 1082 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3646,9 +3675,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 1080 "dhcp4_lexer.ll"
+#line 1091 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3658,9 +3687,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1089 "dhcp4_lexer.ll"
+#line 1100 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3670,9 +3699,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1098 "dhcp4_lexer.ll"
+#line 1109 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3682,9 +3711,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1107 "dhcp4_lexer.ll"
+#line 1118 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3694,9 +3723,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1116 "dhcp4_lexer.ll"
+#line 1127 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3706,9 +3735,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1125 "dhcp4_lexer.ll"
+#line 1136 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3718,9 +3747,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1134 "dhcp4_lexer.ll"
+#line 1145 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3730,9 +3759,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1143 "dhcp4_lexer.ll"
+#line 1154 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3742,9 +3771,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1152 "dhcp4_lexer.ll"
+#line 1163 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3755,9 +3784,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1162 "dhcp4_lexer.ll"
+#line 1173 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3769,9 +3798,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1173 "dhcp4_lexer.ll"
+#line 1184 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3784,9 +3813,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1185 "dhcp4_lexer.ll"
+#line 1196 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3796,9 +3825,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1194 "dhcp4_lexer.ll"
+#line 1205 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3808,9 +3837,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1203 "dhcp4_lexer.ll"
+#line 1214 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3821,9 +3850,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1213 "dhcp4_lexer.ll"
+#line 1224 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3834,9 +3863,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1223 "dhcp4_lexer.ll"
+#line 1234 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3847,9 +3876,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1233 "dhcp4_lexer.ll"
+#line 1244 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3860,9 +3889,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1243 "dhcp4_lexer.ll"
+#line 1254 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3873,9 +3902,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1253 "dhcp4_lexer.ll"
+#line 1264 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3886,9 +3915,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1263 "dhcp4_lexer.ll"
+#line 1274 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3898,9 +3927,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1272 "dhcp4_lexer.ll"
+#line 1283 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3911,9 +3940,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1282 "dhcp4_lexer.ll"
+#line 1293 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3923,9 +3952,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1291 "dhcp4_lexer.ll"
+#line 1302 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3935,9 +3964,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1300 "dhcp4_lexer.ll"
+#line 1311 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3947,9 +3976,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1320 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3959,9 +3988,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1318 "dhcp4_lexer.ll"
+#line 1329 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3972,9 +4001,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1328 "dhcp4_lexer.ll"
+#line 1339 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3985,9 +4014,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1338 "dhcp4_lexer.ll"
+#line 1349 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3997,9 +4026,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1347 "dhcp4_lexer.ll"
+#line 1358 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4009,9 +4038,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1357 "dhcp4_lexer.ll"
+#line 1368 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -4021,9 +4050,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1366 "dhcp4_lexer.ll"
+#line 1377 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -4033,9 +4062,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1375 "dhcp4_lexer.ll"
+#line 1386 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4045,9 +4074,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1384 "dhcp4_lexer.ll"
+#line 1395 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4057,9 +4086,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1393 "dhcp4_lexer.ll"
+#line 1404 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4069,9 +4098,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1402 "dhcp4_lexer.ll"
+#line 1413 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4081,9 +4110,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1411 "dhcp4_lexer.ll"
+#line 1422 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4093,9 +4122,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1420 "dhcp4_lexer.ll"
+#line 1431 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4105,9 +4134,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1429 "dhcp4_lexer.ll"
+#line 1440 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4117,9 +4146,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1438 "dhcp4_lexer.ll"
+#line 1449 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4129,9 +4158,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1447 "dhcp4_lexer.ll"
+#line 1458 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4141,9 +4170,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1456 "dhcp4_lexer.ll"
+#line 1467 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4153,9 +4182,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1465 "dhcp4_lexer.ll"
+#line 1476 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4165,9 +4194,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1474 "dhcp4_lexer.ll"
+#line 1485 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4177,9 +4206,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1483 "dhcp4_lexer.ll"
+#line 1494 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4189,9 +4218,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1492 "dhcp4_lexer.ll"
+#line 1503 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4201,9 +4230,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1501 "dhcp4_lexer.ll"
+#line 1512 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4213,9 +4242,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1510 "dhcp4_lexer.ll"
+#line 1521 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4225,9 +4254,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1519 "dhcp4_lexer.ll"
+#line 1530 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4237,9 +4266,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1528 "dhcp4_lexer.ll"
+#line 1539 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4249,9 +4278,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1537 "dhcp4_lexer.ll"
+#line 1548 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4261,9 +4290,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1546 "dhcp4_lexer.ll"
+#line 1557 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4273,9 +4302,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1555 "dhcp4_lexer.ll"
+#line 1566 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4285,9 +4314,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1564 "dhcp4_lexer.ll"
+#line 1575 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4297,9 +4326,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1573 "dhcp4_lexer.ll"
+#line 1584 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4309,9 +4338,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1582 "dhcp4_lexer.ll"
+#line 1593 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4321,9 +4350,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1591 "dhcp4_lexer.ll"
+#line 1602 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4333,9 +4362,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1600 "dhcp4_lexer.ll"
+#line 1611 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4345,9 +4374,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1609 "dhcp4_lexer.ll"
+#line 1620 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4357,9 +4386,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1618 "dhcp4_lexer.ll"
+#line 1629 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4369,9 +4398,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1627 "dhcp4_lexer.ll"
+#line 1638 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4381,9 +4410,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1636 "dhcp4_lexer.ll"
+#line 1647 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4393,9 +4422,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 1645 "dhcp4_lexer.ll"
+#line 1656 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4405,9 +4434,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 1654 "dhcp4_lexer.ll"
+#line 1665 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4417,9 +4446,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 1663 "dhcp4_lexer.ll"
+#line 1674 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4429,9 +4458,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 1672 "dhcp4_lexer.ll"
+#line 1683 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4444,9 +4473,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 1684 "dhcp4_lexer.ll"
+#line 1695 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4459,9 +4488,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 1696 "dhcp4_lexer.ll"
+#line 1707 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4472,9 +4501,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 1706 "dhcp4_lexer.ll"
+#line 1717 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4485,9 +4514,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 1716 "dhcp4_lexer.ll"
+#line 1727 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -4498,9 +4527,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 1726 "dhcp4_lexer.ll"
+#line 1737 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4511,9 +4540,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 1736 "dhcp4_lexer.ll"
+#line 1747 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4524,9 +4553,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 1746 "dhcp4_lexer.ll"
+#line 1757 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4537,9 +4566,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 1756 "dhcp4_lexer.ll"
+#line 1767 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4550,9 +4579,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 1766 "dhcp4_lexer.ll"
+#line 1777 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4563,9 +4592,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 1776 "dhcp4_lexer.ll"
+#line 1787 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4576,9 +4605,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 1786 "dhcp4_lexer.ll"
+#line 1797 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4588,9 +4617,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 1795 "dhcp4_lexer.ll"
+#line 1806 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4600,9 +4629,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1804 "dhcp4_lexer.ll"
+#line 1815 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4612,9 +4641,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1813 "dhcp4_lexer.ll"
+#line 1824 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4624,9 +4653,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1822 "dhcp4_lexer.ll"
+#line 1833 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4638,9 +4667,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1833 "dhcp4_lexer.ll"
+#line 1844 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4652,9 +4681,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1844 "dhcp4_lexer.ll"
+#line 1855 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4668,9 +4697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1857 "dhcp4_lexer.ll"
+#line 1868 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4684,9 +4713,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1870 "dhcp4_lexer.ll"
+#line 1881 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4700,9 +4729,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1883 "dhcp4_lexer.ll"
+#line 1894 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4712,9 +4741,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1892 "dhcp4_lexer.ll"
+#line 1903 "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.
@@ -4814,65 +4843,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 184:
-/* rule 184 can match eol */
+case 185:
+/* rule 185 can match eol */
 YY_RULE_SETUP
-#line 1991 "dhcp4_lexer.ll"
+#line 2002 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 185:
-/* rule 185 can match eol */
+case 186:
+/* rule 186 can match eol */
 YY_RULE_SETUP
-#line 1996 "dhcp4_lexer.ll"
+#line 2007 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 2001 "dhcp4_lexer.ll"
+#line 2012 "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 187:
+case 188:
 YY_RULE_SETUP
-#line 2006 "dhcp4_lexer.ll"
+#line 2017 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 2007 "dhcp4_lexer.ll"
+#line 2018 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 2008 "dhcp4_lexer.ll"
+#line 2019 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 2009 "dhcp4_lexer.ll"
+#line 2020 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 2010 "dhcp4_lexer.ll"
+#line 2021 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 192:
+case 193:
 YY_RULE_SETUP
-#line 2011 "dhcp4_lexer.ll"
+#line 2022 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 2013 "dhcp4_lexer.ll"
+#line 2024 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4891,9 +4920,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 2031 "dhcp4_lexer.ll"
+#line 2042 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4907,43 +4936,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 2044 "dhcp4_lexer.ll"
+#line 2055 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 2049 "dhcp4_lexer.ll"
+#line 2060 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 2053 "dhcp4_lexer.ll"
+#line 2064 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 2055 "dhcp4_lexer.ll"
+#line 2066 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 199:
+case 200:
 YY_RULE_SETUP
-#line 2057 "dhcp4_lexer.ll"
+#line 2068 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 200:
+case 201:
 YY_RULE_SETUP
-#line 2059 "dhcp4_lexer.ll"
+#line 2070 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2061 "dhcp4_lexer.ll"
+#line 2072 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4967,12 +4996,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 201:
+case 202:
 YY_RULE_SETUP
-#line 2084 "dhcp4_lexer.ll"
+#line 2095 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4975 "dhcp4_lexer.cc"
+#line 5004 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5291,7 +5320,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 >= 1868 )
+                       if ( yy_current_state >= 1891 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5324,11 +5353,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 >= 1868 )
+               if ( yy_current_state >= 1891 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1867);
+       yy_is_jam = (yy_current_state == 1890);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6077,7 +6106,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2084 "dhcp4_lexer.ll"
+#line 2095 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 449a4e927a2b9c0cf21e3a72dacbcbd7d29354ff..456dc003d3e1f3abc76593da824d5865e4383745 100644 (file)
@@ -758,6 +758,17 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"ddns-use-conflict-resolution\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+
 \"subnet4\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
index b84f940bc51f90784f5b25ae77713b86d9539187..65ca29f5e06e214e29edfda1a3f89afe011b61a5 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.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-2020 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.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
-
-
 // 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"
+#line 34 "dhcp4_parser.yy" // lalr1.cc:413
 
 #include <dhcp4/parser_context.h>
 
-#line 52 "dhcp4_parser.cc"
+#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
         {                                                               \
           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
         }                                                               \
-    while (false)
+    while (/*CONSTCOND*/ false)
 # endif
 
 
+// Suppress unused-variable warnings by "using" E.
+#define YYUSE(E) ((void) (E))
+
 // Enable debugging if requested.
 #if PARSER4_DEBUG
 
     {                                           \
       *yycdebug_ << Title << ' ';               \
       yy_print_ (*yycdebug_, Symbol);           \
-      *yycdebug_ << '\n';                       \
+      *yycdebug_ << std::endl;                  \
     }                                           \
   } while (false)
 
 # define YY_STACK_PRINT()               \
   do {                                  \
     if (yydebug_)                       \
-      yy_stack_print_ ();                \
+      yystack_print_ ();                \
   } 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"
+#line 14 "dhcp4_parser.yy" // lalr1.cc:479
 namespace isc { namespace dhcp {
-#line 145 "dhcp4_parser.cc"
+#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
+     that double-quoting is unnecessary unless the string contains an
+     apostrophe, a comma, or backslash (other than backslash-backslash).
+     YYSTR is taken from yytname.  */
+  std::string
+  Dhcp4Parser::yytnamerr_ (const char *yystr)
+  {
+    if (*yystr == '"')
+      {
+        std::string yyr = "";
+        char const *yyp = yystr;
+
+        for (;;)
+          switch (*++yyp)
+            {
+            case '\'':
+            case ',':
+              goto do_not_strip_quotes;
+
+            case '\\':
+              if (*++yyp != '\\')
+                goto do_not_strip_quotes;
+              // Fall through.
+            default:
+              yyr += *yyp;
+              break;
+
+            case '"':
+              return yyr;
+            }
+      do_not_strip_quotes: ;
+      }
+
+    return yystr;
+  }
+
 
   /// Build a parser object.
   Dhcp4Parser::Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg)
+    :
 #if PARSER4_DEBUG
-    : yydebug_ (false),
+      yydebug_ (false),
       yycdebug_ (&std::cerr),
-#else
-    :
 #endif
       ctx (ctx_yyarg)
   {}
@@ -157,30 +194,32 @@ namespace isc { namespace dhcp {
   Dhcp4Parser::~Dhcp4Parser ()
   {}
 
-  Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
-  {}
 
   /*---------------.
-  | symbol kinds.  |
+  | Symbol types.  |
   `---------------*/
 
 
 
   // 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)
   {
@@ -188,94 +227,57 @@ 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)
   {}
 
-  Dhcp4Parser::symbol_kind_type
-  Dhcp4Parser::by_state::kind () const YY_NOEXCEPT
+  inline
+  Dhcp4Parser::symbol_number_type
+  Dhcp4Parser::by_state::type_get () const
   {
     if (state == empty_state)
-      return symbol_kind::S_YYEMPTY;
+      return empty_symbol;
     else
-      return YY_CAST (symbol_kind_type, yystos_[+state]);
+      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.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_STRING: // "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.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (YY_MOVE (that.value));
+      switch (that.type_get ())
+    {
+      case 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        value.move< ElementPtr > (that.value);
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (YY_MOVE (that.value));
+      case 194: // "boolean"
+        value.move< bool > (that.value);
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (YY_MOVE (that.value));
+      case 193: // "floating point"
+        value.move< double > (that.value);
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (YY_MOVE (that.value));
+      case 192: // "integer"
+        value.move< int64_t > (that.value);
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (YY_MOVE (that.value));
+      case 191: // "constant string"
+        value.move< std::string > (that.value);
         break;
 
       default:
@@ -283,40 +285,40 @@ namespace isc { namespace dhcp {
     }
 
     // that is emptied.
-    that.kind_ = symbol_kind::S_YYEMPTY;
+    that.type = empty_symbol;
   }
 
-#if YY_CPLUSPLUS < 201103L
+  inline
   Dhcp4Parser::stack_symbol_type&
   Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      switch (that.type_get ())
+    {
+      case 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 194: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 193: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 192: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 191: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -328,51 +330,9 @@ namespace isc { namespace dhcp {
     return *this;
   }
 
-  Dhcp4Parser::stack_symbol_type&
-  Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that)
-  {
-    state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (that.value);
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (that.value);
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (that.value);
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (that.value);
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (that.value);
-        break;
-
-      default:
-        break;
-    }
-
-    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
   {
@@ -383,121 +343,133 @@ namespace isc { namespace dhcp {
 #if PARSER4_DEBUG
   template <typename Base>
   void
-  Dhcp4Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
+  Dhcp4Parser::yy_print_ (std::ostream& yyo,
+                                     const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
+    symbol_number_type yytype = yysym.type_get ();
+    // Avoid a (spurious) G++ 4.8 warning about "array subscript is
+    // below array bounds".
     if (yysym.empty ())
-      yyo << "empty symbol";
-    else
-      {
-        symbol_kind_type yykind = yysym.kind ();
-        yyo << (yykind < YYNTOKENS ? "token" : "nterm")
-            << ' ' << yysym.name () << " ("
-            << yysym.location << ": ";
-        switch (yykind)
-    {
-      case symbol_kind::S_STRING: // "constant string"
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < std::string > (); }
-#line 404 "dhcp4_parser.cc"
+      std::abort ();
+    yyo << (yytype < yyntokens_ ? "token" : "nterm")
+        << ' ' << yytname_[yytype] << " ("
+        << yysym.location << ": ";
+    switch (yytype)
+    {
+            case 191: // "constant string"
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< std::string > (); }
+#line 366 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < int64_t > (); }
-#line 410 "dhcp4_parser.cc"
+      case 192: // "integer"
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< int64_t > (); }
+#line 373 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < double > (); }
-#line 416 "dhcp4_parser.cc"
+      case 193: // "floating point"
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< double > (); }
+#line 380 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < bool > (); }
-#line 422 "dhcp4_parser.cc"
+      case 194: // "boolean"
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< bool > (); }
+#line 387 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_value: // value
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "dhcp4_parser.cc"
+      case 210: // value
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 394 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_map_value: // map_value
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 434 "dhcp4_parser.cc"
+      case 214: // map_value
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 401 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 440 "dhcp4_parser.cc"
+      case 255: // ddns_replace_client_name_value
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 408 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_socket_type: // socket_type
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 446 "dhcp4_parser.cc"
+      case 280: // socket_type
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 415 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 452 "dhcp4_parser.cc"
+      case 283: // outbound_interface_value
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 422 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_db_type: // db_type
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 458 "dhcp4_parser.cc"
+      case 305: // db_type
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 429 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_hr_mode: // hr_mode
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 464 "dhcp4_parser.cc"
+      case 399: // hr_mode
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 436 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 272 "dhcp4_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 470 "dhcp4_parser.cc"
+      case 554: // ncr_protocol_value
+
+#line 273 "dhcp4_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 443 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
+
       default:
         break;
     }
-        yyo << ')';
-      }
+    yyo << ')';
   }
 #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);
   }
@@ -529,37 +501,32 @@ 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;
+    int yyr = yypgoto_[yysym - yyntokens_] + yystate;
     if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
       return yytable_[yyr];
     else
-      return yydefgoto_[yysym - YYNTOKENS];
+      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 ()
   {
+    // State.
     int yyn;
     /// Length of the RHS of the rule being reduced.
     int yylen = 0;
@@ -577,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
@@ -589,70 +556,48 @@ 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 " << int (yystack_[0].state) << '\n';
-    YY_STACK_PRINT ();
+    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];
+    yyn = yypact_[yystack_[0].state];
     if (yy_pact_value_is_default_ (yyn))
       goto yydefault;
 
     // Read a lookahead token.
     if (yyla.empty ())
       {
-        YYCDEBUG << "Reading a token\n";
-#if YY_EXCEPTIONS
+        YYCDEBUG << "Reading a token: ";
         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);
 
-    if (yyla.kind () == symbol_kind::S_YYerror)
-    {
-      // The scanner already issued an error message, process directly
-      // to error recovery.  But do not keep the error token as
-      // lookahead, it is too special and may lead us to an endless
-      // loop in error recovery. */
-      yyla.kind_ = symbol_kind::S_YYUNDEF;
-      goto yyerrlab1;
-    }
-
     /* If the proper action on seeing token YYLA.TYPE is to reduce or
        to detect an error, take that action.  */
-    yyn += yyla.kind ();
-    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
-      {
-        goto yydefault;
-      }
+    yyn += yyla.type_get ();
+    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
+      goto yydefault;
 
     // Reduce or error.
     yyn = yytable_[yyn];
@@ -669,58 +614,56 @@ namespace isc { namespace dhcp {
       --yyerrstatus_;
 
     // Shift the lookahead token.
-    yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
+    yypush_ ("Shifting", yyn, yyla);
     goto yynewstate;
 
-
   /*-----------------------------------------------------------.
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
   yydefault:
-    yyn = yydefact_[+yystack_[0].state];
+    yyn = yydefact_[yystack_[0].state];
     if (yyn == 0)
       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 symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        yylhs.value.emplace< ElementPtr > ();
+        switch (yyr1_[yyn])
+    {
+      case 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        yylhs.value.build< ElementPtr > ();
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        yylhs.value.emplace< bool > ();
+      case 194: // "boolean"
+        yylhs.value.build< bool > ();
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        yylhs.value.emplace< double > ();
+      case 193: // "floating point"
+        yylhs.value.build< double > ();
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-        yylhs.value.emplace< int64_t > ();
+      case 192: // "integer"
+        yylhs.value.build< int64_t > ();
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
-        yylhs.value.emplace< std::string > ();
+      case 191: // "constant string"
+        yylhs.value.build< std::string > ();
         break;
 
       default:
@@ -728,293 +671,290 @@ 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: // $@1: %empty
-#line 281 "dhcp4_parser.yy"
-                     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 750 "dhcp4_parser.cc"
+  case 2:
+#line 282 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.NO_KEYWORD; }
+#line 690 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 4: // $@2: %empty
-#line 282 "dhcp4_parser.yy"
-                      { ctx.ctx_ = ctx.CONFIG; }
-#line 756 "dhcp4_parser.cc"
+  case 4:
+#line 283 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG; }
+#line 696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 6: // $@3: %empty
-#line 283 "dhcp4_parser.yy"
-                 { ctx.ctx_ = ctx.DHCP4; }
-#line 762 "dhcp4_parser.cc"
+  case 6:
+#line 284 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP4; }
+#line 702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 8: // $@4: %empty
-#line 284 "dhcp4_parser.yy"
-                       { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 768 "dhcp4_parser.cc"
+  case 8:
+#line 285 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
+#line 708 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 10: // $@5: %empty
-#line 285 "dhcp4_parser.yy"
-                   { ctx.ctx_ = ctx.SUBNET4; }
-#line 774 "dhcp4_parser.cc"
+  case 10:
+#line 286 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.SUBNET4; }
+#line 714 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 12: // $@6: %empty
-#line 286 "dhcp4_parser.yy"
-                 { ctx.ctx_ = ctx.POOLS; }
-#line 780 "dhcp4_parser.cc"
+  case 12:
+#line 287 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.POOLS; }
+#line 720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 14: // $@7: %empty
-#line 287 "dhcp4_parser.yy"
-                       { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 786 "dhcp4_parser.cc"
+  case 14:
+#line 288 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.RESERVATIONS; }
+#line 726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 16: // $@8: %empty
-#line 288 "dhcp4_parser.yy"
-                       { ctx.ctx_ = ctx.DHCP4; }
-#line 792 "dhcp4_parser.cc"
+  case 16:
+#line 289 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP4; }
+#line 732 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 18: // $@9: %empty
-#line 289 "dhcp4_parser.yy"
-                      { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 798 "dhcp4_parser.cc"
+  case 18:
+#line 290 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.OPTION_DEF; }
+#line 738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 20: // $@10: %empty
-#line 290 "dhcp4_parser.yy"
-                       { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 804 "dhcp4_parser.cc"
+  case 20:
+#line 291 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.OPTION_DATA; }
+#line 744 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 22: // $@11: %empty
-#line 291 "dhcp4_parser.yy"
-                         { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 810 "dhcp4_parser.cc"
+  case 22:
+#line 292 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
+#line 750 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 24: // $@12: %empty
-#line 292 "dhcp4_parser.yy"
-                     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 816 "dhcp4_parser.cc"
+  case 24:
+#line 293 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP_DDNS; }
+#line 756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 26: // $@13: %empty
-#line 293 "dhcp4_parser.yy"
-                          { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 822 "dhcp4_parser.cc"
+  case 26:
+#line 294 "dhcp4_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 762 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 28: // value: "integer"
-#line 301 "dhcp4_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 828 "dhcp4_parser.cc"
+  case 28:
+#line 302 "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 768 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 29: // value: "floating point"
-#line 302 "dhcp4_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 834 "dhcp4_parser.cc"
+  case 29:
+#line 303 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 30: // value: "boolean"
-#line 303 "dhcp4_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 840 "dhcp4_parser.cc"
+  case 30:
+#line 304 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 780 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 31: // value: "constant string"
-#line 304 "dhcp4_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 846 "dhcp4_parser.cc"
+  case 31:
+#line 305 "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 786 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 32: // value: "null"
-#line 305 "dhcp4_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 852 "dhcp4_parser.cc"
+  case 32:
+#line 306 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 792 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 33: // value: map2
-#line 306 "dhcp4_parser.yy"
-            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 858 "dhcp4_parser.cc"
+  case 33:
+#line 307 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 798 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 34: // value: list_generic
-#line 307 "dhcp4_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 864 "dhcp4_parser.cc"
+  case 34:
+#line 308 "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 35: // sub_json: value
-#line 310 "dhcp4_parser.yy"
-                {
+  case 35:
+#line 311 "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 873 "dhcp4_parser.cc"
+#line 813 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 36: // $@14: %empty
-#line 315 "dhcp4_parser.yy"
-                     {
+  case 36:
+#line 316 "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 884 "dhcp4_parser.cc"
+#line 824 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 37: // map2: "{" $@14 map_content "}"
-#line 320 "dhcp4_parser.yy"
-                             {
+  case 37:
+#line 321 "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 894 "dhcp4_parser.cc"
+#line 834 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 38: // map_value: map2
-#line 326 "dhcp4_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 900 "dhcp4_parser.cc"
+  case 38:
+#line 327 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 41: // not_empty_map: "constant string" ":" value
-#line 333 "dhcp4_parser.yy"
-                                  {
+  case 41:
+#line 334 "dhcp4_parser.yy" // lalr1.cc:859
+    {
                   // map containing a single entry
-                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location));
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 910 "dhcp4_parser.cc"
+#line 850 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 338 "dhcp4_parser.yy"
-                                                      {
+  case 42:
+#line 339 "dhcp4_parser.yy" // lalr1.cc:859
+    {
                   // map consisting of a shorter map followed by
                   // comma and string:value
-                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location));
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 921 "dhcp4_parser.cc"
+#line 861 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 43: // $@15: %empty
-#line 346 "dhcp4_parser.yy"
-                              {
+  case 43:
+#line 347 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 930 "dhcp4_parser.cc"
+#line 870 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 44: // list_generic: "[" $@15 list_content "]"
-#line 349 "dhcp4_parser.yy"
-                               {
+  case 44:
+#line 350 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // list parsing complete. Put any sanity checking here
 }
-#line 938 "dhcp4_parser.cc"
+#line 878 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 47: // not_empty_list: value
-#line 357 "dhcp4_parser.yy"
-                      {
+  case 47:
+#line 358 "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 947 "dhcp4_parser.cc"
+#line 887 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 48: // not_empty_list: not_empty_list "," value
-#line 361 "dhcp4_parser.yy"
-                                           {
+  case 48:
+#line 362 "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 956 "dhcp4_parser.cc"
+#line 896 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 49: // $@16: %empty
-#line 368 "dhcp4_parser.yy"
-                              {
+  case 49:
+#line 369 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // List parsing about to start
 }
-#line 964 "dhcp4_parser.cc"
+#line 904 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 50: // list_strings: "[" $@16 list_strings_content "]"
-#line 370 "dhcp4_parser.yy"
-                                       {
+  case 50:
+#line 371 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 973 "dhcp4_parser.cc"
+#line 913 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 53: // not_empty_list_strings: "constant string"
-#line 379 "dhcp4_parser.yy"
-                               {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 53:
+#line 380 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 982 "dhcp4_parser.cc"
+#line 922 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 383 "dhcp4_parser.yy"
-                                                            {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 54:
+#line 384 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 991 "dhcp4_parser.cc"
+#line 931 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 55: // unknown_map_entry: "constant string" ":"
-#line 394 "dhcp4_parser.yy"
-                                {
+  case 55:
+#line 395 "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 1002 "dhcp4_parser.cc"
+#line 942 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 56: // $@17: %empty
-#line 403 "dhcp4_parser.yy"
-                           {
+  case 56:
+#line 404 "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 1013 "dhcp4_parser.cc"
+#line 953 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 57: // syntax_map: "{" $@17 global_object "}"
-#line 408 "dhcp4_parser.yy"
-                               {
+  case 57:
+#line 409 "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.
@@ -1022,12 +962,12 @@ namespace isc { namespace dhcp {
     // Dhcp4 is required
     ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1026 "dhcp4_parser.cc"
+#line 966 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 58: // $@18: %empty
-#line 418 "dhcp4_parser.yy"
-                     {
+  case 58:
+#line 419 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // This code is executed when we're about to start parsing
     // the content of the map
     // Prevent against duplicate.
@@ -1037,1322 +977,1332 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP4);
 }
-#line 1041 "dhcp4_parser.cc"
+#line 981 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 59: // global_object: "Dhcp4" $@18 ":" "{" global_params "}"
-#line 427 "dhcp4_parser.yy"
-                                                    {
+  case 59:
+#line 428 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1051 "dhcp4_parser.cc"
+#line 991 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 60: // $@19: %empty
-#line 435 "dhcp4_parser.yy"
-                          {
+  case 60:
+#line 436 "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 1061 "dhcp4_parser.cc"
+#line 1001 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 61: // sub_dhcp4: "{" $@19 global_params "}"
-#line 439 "dhcp4_parser.yy"
-                               {
+  case 61:
+#line 440 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No global parameter is required
     // parsing completed
 }
-#line 1070 "dhcp4_parser.cc"
+#line 1010 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 120: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 508 "dhcp4_parser.yy"
-                                             {
+  case 121:
+#line 510 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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 1080 "dhcp4_parser.cc"
+#line 1020 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 121: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 514 "dhcp4_parser.yy"
-                                                     {
+  case 122:
+#line 516 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("min-valid-lifetime", prf);
 }
-#line 1090 "dhcp4_parser.cc"
+#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 122: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 520 "dhcp4_parser.yy"
-                                                     {
+  case 123:
+#line 522 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("max-valid-lifetime", prf);
 }
-#line 1100 "dhcp4_parser.cc"
+#line 1040 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 123: // renew_timer: "renew-timer" ":" "integer"
-#line 526 "dhcp4_parser.yy"
-                                       {
+  case 124:
+#line 528 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
-    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 1110 "dhcp4_parser.cc"
+#line 1050 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 124: // rebind_timer: "rebind-timer" ":" "integer"
-#line 532 "dhcp4_parser.yy"
-                                         {
+  case 125:
+#line 534 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
-    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 1120 "dhcp4_parser.cc"
+#line 1060 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 125: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 538 "dhcp4_parser.yy"
-                                                       {
+  case 126:
+#line 540 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
-    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 1130 "dhcp4_parser.cc"
+#line 1070 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 126: // t1_percent: "t1-percent" ":" "floating point"
-#line 544 "dhcp4_parser.yy"
-                                   {
+  case 127:
+#line 546 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
-    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 1140 "dhcp4_parser.cc"
+#line 1080 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 127: // t2_percent: "t2-percent" ":" "floating point"
-#line 550 "dhcp4_parser.yy"
-                                   {
+  case 128:
+#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
-    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 1150 "dhcp4_parser.cc"
+#line 1090 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 128: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 556 "dhcp4_parser.yy"
-                                             {
+  case 129:
+#line 558 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
-    ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ct(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cache-threshold", ct);
 }
-#line 1160 "dhcp4_parser.cc"
+#line 1100 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 129: // cache_max_age: "cache-max-age" ":" "integer"
-#line 562 "dhcp4_parser.yy"
-                                           {
+  case 130:
+#line 564 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location));
-    ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cm(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cache-max-age", cm);
 }
-#line 1170 "dhcp4_parser.cc"
+#line 1110 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 130: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 568 "dhcp4_parser.yy"
-                                                                 {
+  case 131:
+#line 570 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
-    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 1180 "dhcp4_parser.cc"
+#line 1120 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 131: // $@20: %empty
-#line 574 "dhcp4_parser.yy"
-                       {
+  case 132:
+#line 576 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1189 "dhcp4_parser.cc"
+#line 1129 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 132: // server_tag: "server-tag" $@20 ":" "constant string"
-#line 577 "dhcp4_parser.yy"
-               {
-    ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 133:
+#line 579 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    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 1199 "dhcp4_parser.cc"
+#line 1139 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 133: // echo_client_id: "echo-client-id" ":" "boolean"
-#line 583 "dhcp4_parser.yy"
-                                             {
+  case 134:
+#line 585 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location));
-    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 1209 "dhcp4_parser.cc"
+#line 1149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 134: // match_client_id: "match-client-id" ":" "boolean"
-#line 589 "dhcp4_parser.yy"
-                                               {
+  case 135:
+#line 591 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location));
-    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 1219 "dhcp4_parser.cc"
+#line 1159 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 135: // authoritative: "authoritative" ":" "boolean"
-#line 595 "dhcp4_parser.yy"
-                                           {
+  case 136:
+#line 597 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location));
-    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 1229 "dhcp4_parser.cc"
+#line 1169 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 136: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 601 "dhcp4_parser.yy"
-                                                   {
+  case 137:
+#line 603 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
-    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("ddns-send-updates", b);
 }
-#line 1239 "dhcp4_parser.cc"
+#line 1179 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 137: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 607 "dhcp4_parser.yy"
-                                                               {
+  case 138:
+#line 609 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
-    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("ddns-override-no-update", b);
 }
-#line 1249 "dhcp4_parser.cc"
+#line 1189 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 138: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 613 "dhcp4_parser.yy"
-                                                                       {
+  case 139:
+#line 615 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
-    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("ddns-override-client-update", b);
 }
-#line 1259 "dhcp4_parser.cc"
+#line 1199 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 139: // $@21: %empty
-#line 619 "dhcp4_parser.yy"
-                                                   {
+  case 140:
+#line 621 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
 }
-#line 1268 "dhcp4_parser.cc"
+#line 1208 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 140: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
-#line 622 "dhcp4_parser.yy"
-                                       {
-    ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
+  case 141:
+#line 624 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1277 "dhcp4_parser.cc"
+#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 141: // ddns_replace_client_name_value: "when-present"
-#line 628 "dhcp4_parser.yy"
-                 {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+  case 142:
+#line 630 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1285 "dhcp4_parser.cc"
+#line 1225 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 142: // ddns_replace_client_name_value: "never"
-#line 631 "dhcp4_parser.yy"
-          {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+  case 143:
+#line 633 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1293 "dhcp4_parser.cc"
+#line 1233 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 143: // ddns_replace_client_name_value: "always"
-#line 634 "dhcp4_parser.yy"
-           {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+  case 144:
+#line 636 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1301 "dhcp4_parser.cc"
+#line 1241 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 144: // ddns_replace_client_name_value: "when-not-present"
-#line 637 "dhcp4_parser.yy"
-                     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+  case 145:
+#line 639 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1309 "dhcp4_parser.cc"
+#line 1249 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 145: // ddns_replace_client_name_value: "boolean"
-#line 640 "dhcp4_parser.yy"
-            {
+  case 146:
+#line 642 "dhcp4_parser.yy" // lalr1.cc:859
+    {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 1318 "dhcp4_parser.cc"
+#line 1258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 146: // $@22: %empty
-#line 646 "dhcp4_parser.yy"
-                                             {
+  case 147:
+#line 648 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1327 "dhcp4_parser.cc"
+#line 1267 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 147: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
-#line 649 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 148:
+#line 651 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
     ctx.leave();
 }
-#line 1337 "dhcp4_parser.cc"
+#line 1277 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 148: // $@23: %empty
-#line 655 "dhcp4_parser.yy"
-                                               {
+  case 149:
+#line 657 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1346 "dhcp4_parser.cc"
+#line 1286 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 149: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
-#line 658 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 150:
+#line 660 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
     ctx.leave();
 }
-#line 1356 "dhcp4_parser.cc"
+#line 1296 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 150: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 664 "dhcp4_parser.yy"
-                                                         {
+  case 151:
+#line 666 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
-    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("ddns-update-on-renew", b);
 }
-#line 1366 "dhcp4_parser.cc"
+#line 1306 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 152:
+#line 672 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+}
+#line 1316 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 151: // $@24: %empty
-#line 670 "dhcp4_parser.yy"
-                                     {
+  case 153:
+#line 678 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1375 "dhcp4_parser.cc"
+#line 1325 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 152: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
-#line 673 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 154:
+#line 681 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 1385 "dhcp4_parser.cc"
+#line 1335 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 153: // $@25: %empty
-#line 679 "dhcp4_parser.yy"
-                                                     {
+  case 155:
+#line 687 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1394 "dhcp4_parser.cc"
+#line 1344 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 154: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
-#line 682 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 156:
+#line 690 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 1404 "dhcp4_parser.cc"
+#line 1354 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 155: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 688 "dhcp4_parser.yy"
-                                                       {
+  case 157:
+#line 696 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
-    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("store-extended-info", b);
 }
-#line 1414 "dhcp4_parser.cc"
+#line 1364 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 156: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 694 "dhcp4_parser.yy"
-                                                                             {
+  case 158:
+#line 702 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
-    ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1424 "dhcp4_parser.cc"
+#line 1374 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 157: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 700 "dhcp4_parser.yy"
-                                                                         {
+  case 159:
+#line 708 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
-    ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1434 "dhcp4_parser.cc"
+#line 1384 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 158: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 706 "dhcp4_parser.yy"
-                                                             {
+  case 160:
+#line 714 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
-    ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr unique(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-reservations-unique", unique);
 }
-#line 1444 "dhcp4_parser.cc"
+#line 1394 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 159: // $@26: %empty
-#line 712 "dhcp4_parser.yy"
-                                     {
+  case 161:
+#line 720 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     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 1456 "dhcp4_parser.cc"
+#line 1406 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 160: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
-#line 718 "dhcp4_parser.yy"
-                                                               {
+  case 162:
+#line 726 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1466 "dhcp4_parser.cc"
+#line 1416 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 170: // $@27: %empty
-#line 737 "dhcp4_parser.yy"
-                                {
+  case 172:
+#line 745 "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 1476 "dhcp4_parser.cc"
+#line 1426 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 171: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
-#line 741 "dhcp4_parser.yy"
-                                          {
+  case 173:
+#line 749 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1485 "dhcp4_parser.cc"
+#line 1435 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 172: // $@28: %empty
-#line 746 "dhcp4_parser.yy"
-                            {
+  case 174:
+#line 754 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     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 1497 "dhcp4_parser.cc"
+#line 1447 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 173: // interfaces_list: "interfaces" $@28 ":" list_strings
-#line 752 "dhcp4_parser.yy"
-                     {
+  case 175:
+#line 760 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1506 "dhcp4_parser.cc"
+#line 1456 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 174: // $@29: %empty
-#line 757 "dhcp4_parser.yy"
-                                   {
+  case 176:
+#line 765 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1515 "dhcp4_parser.cc"
+#line 1465 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 175: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
-#line 760 "dhcp4_parser.yy"
-                    {
-    ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
+  case 177:
+#line 768 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1524 "dhcp4_parser.cc"
+#line 1474 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 176: // socket_type: "raw"
-#line 765 "dhcp4_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1530 "dhcp4_parser.cc"
+  case 178:
+#line 773 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
+#line 1480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 177: // socket_type: "udp"
-#line 766 "dhcp4_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1536 "dhcp4_parser.cc"
+  case 179:
+#line 774 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
+#line 1486 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 178: // $@30: %empty
-#line 769 "dhcp4_parser.yy"
-                                       {
+  case 180:
+#line 777 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1545 "dhcp4_parser.cc"
+#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 179: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
-#line 772 "dhcp4_parser.yy"
-                                 {
-    ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
+  case 181:
+#line 780 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1554 "dhcp4_parser.cc"
+#line 1504 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 180: // outbound_interface_value: "same-as-inbound"
-#line 777 "dhcp4_parser.yy"
-                                          {
-    yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
+  case 182:
+#line 785 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1562 "dhcp4_parser.cc"
+#line 1512 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 181: // outbound_interface_value: "use-routing"
-#line 779 "dhcp4_parser.yy"
-                {
-    yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
+  case 183:
+#line 787 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1570 "dhcp4_parser.cc"
+#line 1520 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 182: // re_detect: "re-detect" ":" "boolean"
-#line 783 "dhcp4_parser.yy"
-                                   {
+  case 184:
+#line 791 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
-    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 1580 "dhcp4_parser.cc"
+#line 1530 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 183: // $@31: %empty
-#line 790 "dhcp4_parser.yy"
-                               {
+  case 185:
+#line 798 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     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 1592 "dhcp4_parser.cc"
+#line 1542 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 184: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
-#line 796 "dhcp4_parser.yy"
-                                                          {
+  case 186:
+#line 804 "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 1603 "dhcp4_parser.cc"
+#line 1553 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 185: // $@32: %empty
-#line 803 "dhcp4_parser.yy"
-                             {
+  case 187:
+#line 811 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     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 1615 "dhcp4_parser.cc"
+#line 1565 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 186: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
-#line 809 "dhcp4_parser.yy"
-                                                           {
+  case 188:
+#line 817 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1624 "dhcp4_parser.cc"
+#line 1574 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 190: // $@33: %empty
-#line 819 "dhcp4_parser.yy"
-                           {
+  case 192:
+#line 827 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1633 "dhcp4_parser.cc"
+#line 1583 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 191: // lease_checks: "lease-checks" $@33 ":" "constant string"
-#line 822 "dhcp4_parser.yy"
-               {
+  case 193:
+#line 830 "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 1653 "dhcp4_parser.cc"
+#line 1603 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 192: // $@34: %empty
-#line 838 "dhcp4_parser.yy"
-                               {
+  case 194:
+#line 846 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     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 1665 "dhcp4_parser.cc"
+#line 1615 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 193: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
-#line 844 "dhcp4_parser.yy"
-                                                          {
+  case 195:
+#line 852 "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 1676 "dhcp4_parser.cc"
+#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 194: // $@35: %empty
-#line 851 "dhcp4_parser.yy"
-                                 {
+  case 196:
+#line 859 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     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 1688 "dhcp4_parser.cc"
+#line 1638 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 195: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
-#line 857 "dhcp4_parser.yy"
-                                                      {
+  case 197:
+#line 865 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1697 "dhcp4_parser.cc"
+#line 1647 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200: // $@36: %empty
-#line 870 "dhcp4_parser.yy"
-                         {
+  case 202:
+#line 878 "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 1707 "dhcp4_parser.cc"
+#line 1657 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201: // database: "{" $@36 database_map_params "}"
-#line 874 "dhcp4_parser.yy"
-                                     {
+  case 203:
+#line 882 "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 1717 "dhcp4_parser.cc"
+#line 1667 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 225: // $@37: %empty
-#line 907 "dhcp4_parser.yy"
-                    {
+  case 227:
+#line 915 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1726 "dhcp4_parser.cc"
+#line 1676 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 226: // database_type: "type" $@37 ":" db_type
-#line 910 "dhcp4_parser.yy"
-                {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+  case 228:
+#line 918 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1735 "dhcp4_parser.cc"
+#line 1685 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 227: // db_type: "memfile"
-#line 915 "dhcp4_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1741 "dhcp4_parser.cc"
+  case 229:
+#line 923 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1691 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 228: // db_type: "mysql"
-#line 916 "dhcp4_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1747 "dhcp4_parser.cc"
+  case 230:
+#line 924 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1697 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 229: // db_type: "postgresql"
-#line 917 "dhcp4_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1753 "dhcp4_parser.cc"
+  case 231:
+#line 925 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1703 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 230: // db_type: "cql"
-#line 918 "dhcp4_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1759 "dhcp4_parser.cc"
+  case 232:
+#line 926 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1709 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 231: // $@38: %empty
-#line 921 "dhcp4_parser.yy"
-           {
+  case 233:
+#line 929 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1768 "dhcp4_parser.cc"
+#line 1718 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 232: // user: "user" $@38 ":" "constant string"
-#line 924 "dhcp4_parser.yy"
-               {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 234:
+#line 932 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1778 "dhcp4_parser.cc"
+#line 1728 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 233: // $@39: %empty
-#line 930 "dhcp4_parser.yy"
-                   {
+  case 235:
+#line 938 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1787 "dhcp4_parser.cc"
+#line 1737 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 234: // password: "password" $@39 ":" "constant string"
-#line 933 "dhcp4_parser.yy"
-               {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 236:
+#line 941 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1797 "dhcp4_parser.cc"
+#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 235: // $@40: %empty
-#line 939 "dhcp4_parser.yy"
-           {
+  case 237:
+#line 947 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1806 "dhcp4_parser.cc"
+#line 1756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 236: // host: "host" $@40 ":" "constant string"
-#line 942 "dhcp4_parser.yy"
-               {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 238:
+#line 950 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1816 "dhcp4_parser.cc"
+#line 1766 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 237: // port: "port" ":" "integer"
-#line 948 "dhcp4_parser.yy"
-                         {
+  case 239:
+#line 956 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
-    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 1826 "dhcp4_parser.cc"
+#line 1776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 238: // $@41: %empty
-#line 954 "dhcp4_parser.yy"
-           {
+  case 240:
+#line 962 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1835 "dhcp4_parser.cc"
+#line 1785 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 239: // name: "name" $@41 ":" "constant string"
-#line 957 "dhcp4_parser.yy"
-               {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 241:
+#line 965 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1845 "dhcp4_parser.cc"
+#line 1795 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 240: // persist: "persist" ":" "boolean"
-#line 963 "dhcp4_parser.yy"
-                               {
+  case 242:
+#line 971 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
-    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 1855 "dhcp4_parser.cc"
+#line 1805 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 241: // lfc_interval: "lfc-interval" ":" "integer"
-#line 969 "dhcp4_parser.yy"
-                                         {
+  case 243:
+#line 977 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
-    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 1865 "dhcp4_parser.cc"
+#line 1815 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 242: // readonly: "readonly" ":" "boolean"
-#line 975 "dhcp4_parser.yy"
-                                 {
+  case 244:
+#line 983 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
-    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 1875 "dhcp4_parser.cc"
+#line 1825 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 243: // connect_timeout: "connect-timeout" ":" "integer"
-#line 981 "dhcp4_parser.yy"
-                                               {
+  case 245:
+#line 989 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
-    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 1885 "dhcp4_parser.cc"
+#line 1835 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 244: // request_timeout: "request-timeout" ":" "integer"
-#line 987 "dhcp4_parser.yy"
-                                               {
+  case 246:
+#line 995 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location));
-    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 1895 "dhcp4_parser.cc"
+#line 1845 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 245: // tcp_keepalive: "tcp-keepalive" ":" "integer"
-#line 993 "dhcp4_parser.yy"
-                                           {
+  case 247:
+#line 1001 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location));
-    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 1905 "dhcp4_parser.cc"
+#line 1855 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
-#line 999 "dhcp4_parser.yy"
-                                       {
+  case 248:
+#line 1007 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location));
-    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 1915 "dhcp4_parser.cc"
+#line 1865 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247: // $@42: %empty
-#line 1005 "dhcp4_parser.yy"
-                               {
+  case 249:
+#line 1013 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1924 "dhcp4_parser.cc"
+#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248: // contact_points: "contact-points" $@42 ":" "constant string"
-#line 1008 "dhcp4_parser.yy"
-               {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 250:
+#line 1016 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1934 "dhcp4_parser.cc"
+#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 249: // $@43: %empty
-#line 1014 "dhcp4_parser.yy"
-                   {
+  case 251:
+#line 1022 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1943 "dhcp4_parser.cc"
+#line 1893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 250: // keyspace: "keyspace" $@43 ":" "constant string"
-#line 1017 "dhcp4_parser.yy"
-               {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 252:
+#line 1025 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1953 "dhcp4_parser.cc"
+#line 1903 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 251: // $@44: %empty
-#line 1023 "dhcp4_parser.yy"
-                         {
+  case 253:
+#line 1031 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1962 "dhcp4_parser.cc"
+#line 1912 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 252: // consistency: "consistency" $@44 ":" "constant string"
-#line 1026 "dhcp4_parser.yy"
-               {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 254:
+#line 1034 "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 1972 "dhcp4_parser.cc"
+#line 1922 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 253: // $@45: %empty
-#line 1032 "dhcp4_parser.yy"
-                                       {
+  case 255:
+#line 1040 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1981 "dhcp4_parser.cc"
+#line 1931 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 254: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
-#line 1035 "dhcp4_parser.yy"
-               {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 256:
+#line 1043 "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 1991 "dhcp4_parser.cc"
+#line 1941 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 255: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1041 "dhcp4_parser.yy"
-                                                       {
+  case 257:
+#line 1049 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
-    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 2001 "dhcp4_parser.cc"
+#line 1951 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 256: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1047 "dhcp4_parser.yy"
-                                                       {
+  case 258:
+#line 1055 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 2011 "dhcp4_parser.cc"
+#line 1961 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 257: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1053 "dhcp4_parser.yy"
-                                             {
+  case 259:
+#line 1061 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
-    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-row-errors", n);
 }
-#line 2021 "dhcp4_parser.cc"
+#line 1971 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 258: // $@46: %empty
-#line 1060 "dhcp4_parser.yy"
-                                                           {
+  case 260:
+#line 1068 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     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 2033 "dhcp4_parser.cc"
+#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 259: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
-#line 1066 "dhcp4_parser.yy"
-                                                                          {
+  case 261:
+#line 1074 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2042 "dhcp4_parser.cc"
+#line 1992 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 267: // duid_id: "duid"
-#line 1082 "dhcp4_parser.yy"
-               {
+  case 269:
+#line 1090 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2051 "dhcp4_parser.cc"
+#line 2001 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 268: // hw_address_id: "hw-address"
-#line 1087 "dhcp4_parser.yy"
-                           {
+  case 270:
+#line 1095 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 2060 "dhcp4_parser.cc"
+#line 2010 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 269: // circuit_id: "circuit-id"
-#line 1092 "dhcp4_parser.yy"
-                        {
+  case 271:
+#line 1100 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 2069 "dhcp4_parser.cc"
+#line 2019 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 270: // client_id: "client-id"
-#line 1097 "dhcp4_parser.yy"
-                      {
+  case 272:
+#line 1105 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 2078 "dhcp4_parser.cc"
+#line 2028 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 271: // flex_id: "flex-id"
-#line 1102 "dhcp4_parser.yy"
-                 {
+  case 273:
+#line 1110 "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 2087 "dhcp4_parser.cc"
+#line 2037 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 272: // $@47: %empty
-#line 1109 "dhcp4_parser.yy"
-                                           {
+  case 274:
+#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("multi-threading", mt);
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2099 "dhcp4_parser.cc"
+#line 2049 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 273: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
-#line 1115 "dhcp4_parser.yy"
-                                                             {
+  case 275:
+#line 1123 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2110 "dhcp4_parser.cc"
+#line 2060 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 282: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1134 "dhcp4_parser.yy"
-                                                             {
+  case 284:
+#line 1142 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
-    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-multi-threading", b);
 }
-#line 2120 "dhcp4_parser.cc"
+#line 2070 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1140 "dhcp4_parser.yy"
-                                                 {
+  case 285:
+#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
-    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("thread-pool-size", prf);
 }
-#line 2130 "dhcp4_parser.cc"
+#line 2080 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 284: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1146 "dhcp4_parser.yy"
-                                                   {
+  case 286:
+#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
-    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("packet-queue-size", prf);
 }
-#line 2140 "dhcp4_parser.cc"
+#line 2090 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 285: // $@48: %empty
-#line 1152 "dhcp4_parser.yy"
-                                 {
+  case 287:
+#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     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 2152 "dhcp4_parser.cc"
+#line 2102 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 286: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
-#line 1158 "dhcp4_parser.yy"
-                                                             {
+  case 288:
+#line 1166 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2161 "dhcp4_parser.cc"
+#line 2111 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 291: // $@49: %empty
-#line 1171 "dhcp4_parser.yy"
-                              {
+  case 293:
+#line 1179 "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 2171 "dhcp4_parser.cc"
+#line 2121 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 292: // hooks_library: "{" $@49 hooks_params "}"
-#line 1175 "dhcp4_parser.yy"
-                              {
+  case 294:
+#line 1183 "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 2181 "dhcp4_parser.cc"
+#line 2131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 293: // $@50: %empty
-#line 1181 "dhcp4_parser.yy"
-                                  {
+  case 295:
+#line 1189 "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 2191 "dhcp4_parser.cc"
+#line 2141 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 294: // sub_hooks_library: "{" $@50 hooks_params "}"
-#line 1185 "dhcp4_parser.yy"
-                              {
+  case 296:
+#line 1193 "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 2201 "dhcp4_parser.cc"
+#line 2151 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 300: // $@51: %empty
-#line 1200 "dhcp4_parser.yy"
-                 {
+  case 302:
+#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2210 "dhcp4_parser.cc"
+#line 2160 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 301: // library: "library" $@51 ":" "constant string"
-#line 1203 "dhcp4_parser.yy"
-               {
-    ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 303:
+#line 1211 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 2220 "dhcp4_parser.cc"
+#line 2170 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 302: // $@52: %empty
-#line 1209 "dhcp4_parser.yy"
-                       {
+  case 304:
+#line 1217 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2229 "dhcp4_parser.cc"
+#line 2179 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 303: // parameters: "parameters" $@52 ":" map_value
-#line 1212 "dhcp4_parser.yy"
-                  {
-    ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
+  case 305:
+#line 1220 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2238 "dhcp4_parser.cc"
+#line 2188 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 304: // $@53: %empty
-#line 1218 "dhcp4_parser.yy"
-                                                     {
+  case 306:
+#line 1226 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     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 2250 "dhcp4_parser.cc"
+#line 2200 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 305: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
-#line 1224 "dhcp4_parser.yy"
-                                                            {
+  case 307:
+#line 1232 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2260 "dhcp4_parser.cc"
+#line 2210 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1242 "dhcp4_parser.yy"
-                                                               {
+  case 316:
+#line 1250 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 2270 "dhcp4_parser.cc"
+#line 2220 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 315: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1248 "dhcp4_parser.yy"
-                                                                               {
+  case 317:
+#line 1256 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 2280 "dhcp4_parser.cc"
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 316: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1254 "dhcp4_parser.yy"
-                                                       {
+  case 318:
+#line 1262 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
-    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 2290 "dhcp4_parser.cc"
+#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 317: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1260 "dhcp4_parser.yy"
-                                                     {
+  case 319:
+#line 1268 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
-    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 2300 "dhcp4_parser.cc"
+#line 2250 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 318: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1266 "dhcp4_parser.yy"
-                                                 {
+  case 320:
+#line 1274 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
-    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 2310 "dhcp4_parser.cc"
+#line 2260 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 319: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1272 "dhcp4_parser.yy"
-                                                               {
+  case 321:
+#line 1280 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
-    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 2320 "dhcp4_parser.cc"
+#line 2270 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 320: // $@54: %empty
-#line 1281 "dhcp4_parser.yy"
-                      {
+  case 322:
+#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location));
     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 2332 "dhcp4_parser.cc"
+#line 2282 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
-#line 1287 "dhcp4_parser.yy"
-                                                             {
+  case 323:
+#line 1295 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2341 "dhcp4_parser.cc"
+#line 2291 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 326: // $@55: %empty
-#line 1307 "dhcp4_parser.yy"
-                        {
+  case 328:
+#line 1315 "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 2351 "dhcp4_parser.cc"
+#line 2301 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 327: // subnet4: "{" $@55 subnet4_params "}"
-#line 1311 "dhcp4_parser.yy"
-                                {
+  case 329:
+#line 1319 "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.
     // In particular we can do things like this:
@@ -2373,624 +2323,624 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2377 "dhcp4_parser.cc"
+#line 2327 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 328: // $@56: %empty
-#line 1333 "dhcp4_parser.yy"
-                            {
+  case 330:
+#line 1341 "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 2387 "dhcp4_parser.cc"
+#line 2337 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329: // sub_subnet4: "{" $@56 subnet4_params "}"
-#line 1337 "dhcp4_parser.yy"
-                                {
+  case 331:
+#line 1345 "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 2397 "dhcp4_parser.cc"
+#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373: // $@57: %empty
-#line 1392 "dhcp4_parser.yy"
-               {
+  case 376:
+#line 1401 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2406 "dhcp4_parser.cc"
+#line 2356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374: // subnet: "subnet" $@57 ":" "constant string"
-#line 1395 "dhcp4_parser.yy"
-               {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 377:
+#line 1404 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2416 "dhcp4_parser.cc"
+#line 2366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375: // $@58: %empty
-#line 1401 "dhcp4_parser.yy"
-                                           {
+  case 378:
+#line 1410 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2425 "dhcp4_parser.cc"
+#line 2375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
-#line 1404 "dhcp4_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 379:
+#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 2435 "dhcp4_parser.cc"
+#line 2385 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377: // $@59: %empty
-#line 1410 "dhcp4_parser.yy"
-                                                 {
+  case 380:
+#line 1419 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2444 "dhcp4_parser.cc"
+#line 2394 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
-#line 1413 "dhcp4_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 381:
+#line 1422 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 2454 "dhcp4_parser.cc"
+#line 2404 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379: // $@60: %empty
-#line 1419 "dhcp4_parser.yy"
-                                     {
+  case 382:
+#line 1428 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2463 "dhcp4_parser.cc"
+#line 2413 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
-#line 1422 "dhcp4_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 383:
+#line 1431 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 2473 "dhcp4_parser.cc"
+#line 2423 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381: // $@61: %empty
-#line 1428 "dhcp4_parser.yy"
-                     {
+  case 384:
+#line 1437 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2482 "dhcp4_parser.cc"
+#line 2432 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382: // interface: "interface" $@61 ":" "constant string"
-#line 1431 "dhcp4_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 385:
+#line 1440 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2492 "dhcp4_parser.cc"
+#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383: // $@62: %empty
-#line 1437 "dhcp4_parser.yy"
-                           {
+  case 386:
+#line 1446 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2501 "dhcp4_parser.cc"
+#line 2451 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384: // client_class: "client-class" $@62 ":" "constant string"
-#line 1440 "dhcp4_parser.yy"
-               {
-    ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 387:
+#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2511 "dhcp4_parser.cc"
+#line 2461 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385: // $@63: %empty
-#line 1446 "dhcp4_parser.yy"
-                                               {
+  case 388:
+#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     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 2523 "dhcp4_parser.cc"
+#line 2473 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386: // require_client_classes: "require-client-classes" $@63 ":" list_strings
-#line 1452 "dhcp4_parser.yy"
-                     {
+  case 389:
+#line 1461 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2532 "dhcp4_parser.cc"
+#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 387: // $@64: %empty
-#line 1457 "dhcp4_parser.yy"
-                                   {
+  case 390:
+#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2541 "dhcp4_parser.cc"
+#line 2491 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
-#line 1460 "dhcp4_parser.yy"
-                {
-    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
+  case 391:
+#line 1469 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2550 "dhcp4_parser.cc"
+#line 2500 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389: // hr_mode: "disabled"
-#line 1465 "dhcp4_parser.yy"
-                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2556 "dhcp4_parser.cc"
+  case 392:
+#line 1474 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2506 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 390: // hr_mode: "out-of-pool"
-#line 1466 "dhcp4_parser.yy"
-                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2562 "dhcp4_parser.cc"
+  case 393:
+#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2512 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 391: // hr_mode: "global"
-#line 1467 "dhcp4_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2568 "dhcp4_parser.cc"
+  case 394:
+#line 1476 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392: // hr_mode: "all"
-#line 1468 "dhcp4_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2574 "dhcp4_parser.cc"
+  case 395:
+#line 1477 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2524 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393: // id: "id" ":" "integer"
-#line 1471 "dhcp4_parser.yy"
-                     {
+  case 396:
+#line 1480 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
-    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 2584 "dhcp4_parser.cc"
+#line 2534 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 394: // $@65: %empty
-#line 1479 "dhcp4_parser.yy"
-                                 {
+  case 397:
+#line 1488 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     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 2596 "dhcp4_parser.cc"
+#line 2546 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 395: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
-#line 1485 "dhcp4_parser.yy"
-                                                                {
+  case 398:
+#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2605 "dhcp4_parser.cc"
+#line 2555 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 400: // $@66: %empty
-#line 1500 "dhcp4_parser.yy"
-                               {
+  case 403:
+#line 1509 "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 2615 "dhcp4_parser.cc"
+#line 2565 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 401: // shared_network: "{" $@66 shared_network_params "}"
-#line 1504 "dhcp4_parser.yy"
-                                       {
+  case 404:
+#line 1513 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 2623 "dhcp4_parser.cc"
+#line 2573 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440: // $@67: %empty
-#line 1554 "dhcp4_parser.yy"
-                            {
+  case 444:
+#line 1564 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     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 2635 "dhcp4_parser.cc"
+#line 2585 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
-#line 1560 "dhcp4_parser.yy"
-                                                                {
+  case 445:
+#line 1570 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2644 "dhcp4_parser.cc"
+#line 2594 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442: // $@68: %empty
-#line 1568 "dhcp4_parser.yy"
-                                    {
+  case 446:
+#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2653 "dhcp4_parser.cc"
+#line 2603 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443: // sub_option_def_list: "{" $@68 option_def_list "}"
-#line 1571 "dhcp4_parser.yy"
-                                 {
+  case 447:
+#line 1581 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // parsing completed
 }
-#line 2661 "dhcp4_parser.cc"
+#line 2611 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448: // $@69: %empty
-#line 1587 "dhcp4_parser.yy"
-                                 {
+  case 452:
+#line 1597 "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 2671 "dhcp4_parser.cc"
+#line 2621 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449: // option_def_entry: "{" $@69 option_def_params "}"
-#line 1591 "dhcp4_parser.yy"
-                                   {
+  case 453:
+#line 1601 "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));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2683 "dhcp4_parser.cc"
+#line 2633 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450: // $@70: %empty
-#line 1602 "dhcp4_parser.yy"
-                               {
+  case 454:
+#line 1612 "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 2693 "dhcp4_parser.cc"
+#line 2643 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451: // sub_option_def: "{" $@70 option_def_params "}"
-#line 1606 "dhcp4_parser.yy"
-                                   {
+  case 455:
+#line 1616 "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));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2705 "dhcp4_parser.cc"
+#line 2655 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 467: // code: "code" ":" "integer"
-#line 1638 "dhcp4_parser.yy"
-                         {
+  case 471:
+#line 1648 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
-    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 2715 "dhcp4_parser.cc"
+#line 2665 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 469: // $@71: %empty
-#line 1646 "dhcp4_parser.yy"
-                      {
+  case 473:
+#line 1656 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2724 "dhcp4_parser.cc"
+#line 2674 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 470: // option_def_type: "type" $@71 ":" "constant string"
-#line 1649 "dhcp4_parser.yy"
-               {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 474:
+#line 1659 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2734 "dhcp4_parser.cc"
+#line 2684 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 471: // $@72: %empty
-#line 1655 "dhcp4_parser.yy"
-                                      {
+  case 475:
+#line 1665 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2743 "dhcp4_parser.cc"
+#line 2693 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 472: // option_def_record_types: "record-types" $@72 ":" "constant string"
-#line 1658 "dhcp4_parser.yy"
-               {
-    ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 476:
+#line 1668 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2753 "dhcp4_parser.cc"
+#line 2703 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 473: // $@73: %empty
-#line 1664 "dhcp4_parser.yy"
-             {
+  case 477:
+#line 1674 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2762 "dhcp4_parser.cc"
+#line 2712 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 474: // space: "space" $@73 ":" "constant string"
-#line 1667 "dhcp4_parser.yy"
-               {
-    ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 478:
+#line 1677 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2772 "dhcp4_parser.cc"
+#line 2722 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 476: // $@74: %empty
-#line 1675 "dhcp4_parser.yy"
-                                    {
+  case 480:
+#line 1685 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2781 "dhcp4_parser.cc"
+#line 2731 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 477: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
-#line 1678 "dhcp4_parser.yy"
-               {
-    ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 481:
+#line 1688 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2791 "dhcp4_parser.cc"
+#line 2741 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 478: // option_def_array: "array" ":" "boolean"
-#line 1684 "dhcp4_parser.yy"
-                                      {
+  case 482:
+#line 1694 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
-    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 2801 "dhcp4_parser.cc"
+#line 2751 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 479: // $@75: %empty
-#line 1694 "dhcp4_parser.yy"
-                              {
+  case 483:
+#line 1704 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     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 2813 "dhcp4_parser.cc"
+#line 2763 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 480: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
-#line 1700 "dhcp4_parser.yy"
-                                                                 {
+  case 484:
+#line 1710 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2822 "dhcp4_parser.cc"
+#line 2772 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 485: // $@76: %empty
-#line 1719 "dhcp4_parser.yy"
-                                  {
+  case 489:
+#line 1729 "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 2832 "dhcp4_parser.cc"
+#line 2782 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 486: // option_data_entry: "{" $@76 option_data_params "}"
-#line 1723 "dhcp4_parser.yy"
-                                    {
+  case 490:
+#line 1733 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2841 "dhcp4_parser.cc"
+#line 2791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 487: // $@77: %empty
-#line 1731 "dhcp4_parser.yy"
-                                {
+  case 491:
+#line 1741 "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 2851 "dhcp4_parser.cc"
+#line 2801 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 488: // sub_option_data: "{" $@77 option_data_params "}"
-#line 1735 "dhcp4_parser.yy"
-                                    {
+  case 492:
+#line 1745 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2860 "dhcp4_parser.cc"
+#line 2810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 503: // $@78: %empty
-#line 1768 "dhcp4_parser.yy"
-                       {
+  case 507:
+#line 1778 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2869 "dhcp4_parser.cc"
+#line 2819 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 504: // option_data_data: "data" $@78 ":" "constant string"
-#line 1771 "dhcp4_parser.yy"
-               {
-    ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 508:
+#line 1781 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2879 "dhcp4_parser.cc"
+#line 2829 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 507: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1781 "dhcp4_parser.yy"
-                                                 {
+  case 511:
+#line 1791 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
-    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 2889 "dhcp4_parser.cc"
+#line 2839 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 508: // option_data_always_send: "always-send" ":" "boolean"
-#line 1787 "dhcp4_parser.yy"
-                                                   {
+  case 512:
+#line 1797 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
-    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 2899 "dhcp4_parser.cc"
+#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 509: // $@79: %empty
-#line 1796 "dhcp4_parser.yy"
-                  {
+  case 513:
+#line 1806 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     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 2911 "dhcp4_parser.cc"
+#line 2861 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 510: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
-#line 1802 "dhcp4_parser.yy"
-                                                           {
+  case 514:
+#line 1812 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2920 "dhcp4_parser.cc"
+#line 2870 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 515: // $@80: %empty
-#line 1817 "dhcp4_parser.yy"
-                                {
+  case 519:
+#line 1827 "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 2930 "dhcp4_parser.cc"
+#line 2880 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 516: // pool_list_entry: "{" $@80 pool_params "}"
-#line 1821 "dhcp4_parser.yy"
-                             {
+  case 520:
+#line 1831 "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 2940 "dhcp4_parser.cc"
+#line 2890 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 517: // $@81: %empty
-#line 1827 "dhcp4_parser.yy"
-                          {
+  case 521:
+#line 1837 "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 2950 "dhcp4_parser.cc"
+#line 2900 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 518: // sub_pool4: "{" $@81 pool_params "}"
-#line 1831 "dhcp4_parser.yy"
-                             {
+  case 522:
+#line 1841 "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 2960 "dhcp4_parser.cc"
+#line 2910 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 528: // $@82: %empty
-#line 1850 "dhcp4_parser.yy"
-                 {
+  case 532:
+#line 1860 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2969 "dhcp4_parser.cc"
+#line 2919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 529: // pool_entry: "pool" $@82 ":" "constant string"
-#line 1853 "dhcp4_parser.yy"
-               {
-    ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 533:
+#line 1863 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2979 "dhcp4_parser.cc"
+#line 2929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 530: // $@83: %empty
-#line 1859 "dhcp4_parser.yy"
-                           {
+  case 534:
+#line 1869 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2987 "dhcp4_parser.cc"
+#line 2937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 531: // user_context: "user-context" $@83 ":" map_value
-#line 1861 "dhcp4_parser.yy"
-                  {
+  case 535:
+#line 1871 "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
@@ -3010,23 +2960,23 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3014 "dhcp4_parser.cc"
+#line 2964 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 532: // $@84: %empty
-#line 1884 "dhcp4_parser.yy"
-                 {
+  case 536:
+#line 1894 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3022 "dhcp4_parser.cc"
+#line 2972 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 533: // comment: "comment" $@84 ":" "constant string"
-#line 1886 "dhcp4_parser.yy"
-               {
+  case 537:
+#line 1896 "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
@@ -3047,1096 +2997,1092 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3051 "dhcp4_parser.cc"
+#line 3001 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 534: // $@85: %empty
-#line 1914 "dhcp4_parser.yy"
-                           {
+  case 538:
+#line 1924 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     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 3063 "dhcp4_parser.cc"
+#line 3013 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 535: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
-#line 1920 "dhcp4_parser.yy"
-                                                          {
+  case 539:
+#line 1930 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3072 "dhcp4_parser.cc"
+#line 3022 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 540: // $@86: %empty
-#line 1933 "dhcp4_parser.yy"
-                            {
+  case 544:
+#line 1943 "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 3082 "dhcp4_parser.cc"
+#line 3032 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 541: // reservation: "{" $@86 reservation_params "}"
-#line 1937 "dhcp4_parser.yy"
-                                    {
+  case 545:
+#line 1947 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3091 "dhcp4_parser.cc"
+#line 3041 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 542: // $@87: %empty
-#line 1942 "dhcp4_parser.yy"
-                                {
+  case 546:
+#line 1952 "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 3101 "dhcp4_parser.cc"
+#line 3051 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 543: // sub_reservation: "{" $@87 reservation_params "}"
-#line 1946 "dhcp4_parser.yy"
-                                    {
+  case 547:
+#line 1956 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3110 "dhcp4_parser.cc"
+#line 3060 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 563: // $@88: %empty
-#line 1977 "dhcp4_parser.yy"
-                         {
+  case 567:
+#line 1987 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("next-server", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3119 "dhcp4_parser.cc"
+#line 3069 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 564: // next_server: "next-server" $@88 ":" "constant string"
-#line 1980 "dhcp4_parser.yy"
-               {
-    ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 568:
+#line 1990 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 3129 "dhcp4_parser.cc"
+#line 3079 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 565: // $@89: %empty
-#line 1986 "dhcp4_parser.yy"
-                                 {
+  case 569:
+#line 1996 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3138 "dhcp4_parser.cc"
+#line 3088 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 566: // server_hostname: "server-hostname" $@89 ":" "constant string"
-#line 1989 "dhcp4_parser.yy"
-               {
-    ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 570:
+#line 1999 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 3148 "dhcp4_parser.cc"
+#line 3098 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 567: // $@90: %empty
-#line 1995 "dhcp4_parser.yy"
-                               {
+  case 571:
+#line 2005 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3157 "dhcp4_parser.cc"
+#line 3107 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 568: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
-#line 1998 "dhcp4_parser.yy"
-               {
-    ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 572:
+#line 2008 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 3167 "dhcp4_parser.cc"
+#line 3117 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 569: // $@91: %empty
-#line 2004 "dhcp4_parser.yy"
-                       {
+  case 573:
+#line 2014 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3176 "dhcp4_parser.cc"
+#line 3126 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 570: // ip_address: "ip-address" $@91 ":" "constant string"
-#line 2007 "dhcp4_parser.yy"
-               {
-    ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 574:
+#line 2017 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 3186 "dhcp4_parser.cc"
+#line 3136 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 571: // $@92: %empty
-#line 2013 "dhcp4_parser.yy"
-                           {
+  case 575:
+#line 2023 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     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 3198 "dhcp4_parser.cc"
+#line 3148 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 572: // ip_addresses: "ip-addresses" $@92 ":" list_strings
-#line 2019 "dhcp4_parser.yy"
-                     {
+  case 576:
+#line 2029 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3207 "dhcp4_parser.cc"
+#line 3157 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 573: // $@93: %empty
-#line 2024 "dhcp4_parser.yy"
-           {
+  case 577:
+#line 2034 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3216 "dhcp4_parser.cc"
+#line 3166 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 574: // duid: "duid" $@93 ":" "constant string"
-#line 2027 "dhcp4_parser.yy"
-               {
-    ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 578:
+#line 2037 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3226 "dhcp4_parser.cc"
+#line 3176 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 575: // $@94: %empty
-#line 2033 "dhcp4_parser.yy"
-                       {
+  case 579:
+#line 2043 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3235 "dhcp4_parser.cc"
+#line 3185 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 576: // hw_address: "hw-address" $@94 ":" "constant string"
-#line 2036 "dhcp4_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 580:
+#line 2046 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 3245 "dhcp4_parser.cc"
+#line 3195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 577: // $@95: %empty
-#line 2042 "dhcp4_parser.yy"
-                           {
+  case 581:
+#line 2052 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3254 "dhcp4_parser.cc"
+#line 3204 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 578: // client_id_value: "client-id" $@95 ":" "constant string"
-#line 2045 "dhcp4_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 582:
+#line 2055 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 3264 "dhcp4_parser.cc"
+#line 3214 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 579: // $@96: %empty
-#line 2051 "dhcp4_parser.yy"
-                             {
+  case 583:
+#line 2061 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3273 "dhcp4_parser.cc"
+#line 3223 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 580: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
-#line 2054 "dhcp4_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 584:
+#line 2064 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 3283 "dhcp4_parser.cc"
+#line 3233 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 581: // $@97: %empty
-#line 2060 "dhcp4_parser.yy"
-                       {
+  case 585:
+#line 2070 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3292 "dhcp4_parser.cc"
+#line 3242 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 582: // flex_id_value: "flex-id" $@97 ":" "constant string"
-#line 2063 "dhcp4_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 586:
+#line 2073 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 3302 "dhcp4_parser.cc"
+#line 3252 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 583: // $@98: %empty
-#line 2069 "dhcp4_parser.yy"
-                   {
+  case 587:
+#line 2079 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3311 "dhcp4_parser.cc"
+#line 3261 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 584: // hostname: "hostname" $@98 ":" "constant string"
-#line 2072 "dhcp4_parser.yy"
-               {
-    ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 588:
+#line 2082 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3321 "dhcp4_parser.cc"
+#line 3271 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 585: // $@99: %empty
-#line 2078 "dhcp4_parser.yy"
-                                           {
+  case 589:
+#line 2088 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     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 3333 "dhcp4_parser.cc"
+#line 3283 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 586: // reservation_client_classes: "client-classes" $@99 ":" list_strings
-#line 2084 "dhcp4_parser.yy"
-                     {
+  case 590:
+#line 2094 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3342 "dhcp4_parser.cc"
+#line 3292 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 587: // $@100: %empty
-#line 2092 "dhcp4_parser.yy"
-             {
+  case 591:
+#line 2102 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     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 3354 "dhcp4_parser.cc"
+#line 3304 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 588: // relay: "relay" $@100 ":" "{" relay_map "}"
-#line 2098 "dhcp4_parser.yy"
-                                                {
+  case 592:
+#line 2108 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3363 "dhcp4_parser.cc"
+#line 3313 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 591: // $@101: %empty
-#line 2110 "dhcp4_parser.yy"
-                               {
+  case 595:
+#line 2120 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     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 3375 "dhcp4_parser.cc"
+#line 3325 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 592: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
-#line 2116 "dhcp4_parser.yy"
-                                                            {
+  case 596:
+#line 2126 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3384 "dhcp4_parser.cc"
+#line 3334 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 595: // $@102: %empty
-#line 2125 "dhcp4_parser.yy"
-                                   {
+  case 599:
+#line 2135 "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 3394 "dhcp4_parser.cc"
+#line 3344 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 596: // client_class_entry: "{" $@102 client_class_params "}"
-#line 2129 "dhcp4_parser.yy"
-                                     {
+  case 600:
+#line 2139 "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 3404 "dhcp4_parser.cc"
+#line 3354 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 613: // $@103: %empty
-#line 2158 "dhcp4_parser.yy"
-                        {
+  case 617:
+#line 2168 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3413 "dhcp4_parser.cc"
+#line 3363 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 614: // client_class_test: "test" $@103 ":" "constant string"
-#line 2161 "dhcp4_parser.yy"
-               {
-    ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 618:
+#line 2171 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3423 "dhcp4_parser.cc"
+#line 3373 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 615: // only_if_required: "only-if-required" ":" "boolean"
-#line 2167 "dhcp4_parser.yy"
-                                                 {
+  case 619:
+#line 2177 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
-    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 3433 "dhcp4_parser.cc"
+#line 3383 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 616: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2175 "dhcp4_parser.yy"
-                                         {
+  case 620:
+#line 2185 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
-    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 3443 "dhcp4_parser.cc"
+#line 3393 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 617: // $@104: %empty
-#line 2183 "dhcp4_parser.yy"
-                               {
+  case 621:
+#line 2193 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     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 3455 "dhcp4_parser.cc"
+#line 3405 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 618: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
-#line 2189 "dhcp4_parser.yy"
-                                                            {
+  case 622:
+#line 2199 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3464 "dhcp4_parser.cc"
+#line 3414 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 626: // $@105: %empty
-#line 2205 "dhcp4_parser.yy"
-                                 {
+  case 630:
+#line 2215 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3473 "dhcp4_parser.cc"
+#line 3423 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 627: // control_socket_type: "socket-type" $@105 ":" "constant string"
-#line 2208 "dhcp4_parser.yy"
-               {
-    ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 631:
+#line 2218 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3483 "dhcp4_parser.cc"
+#line 3433 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 628: // $@106: %empty
-#line 2214 "dhcp4_parser.yy"
-                                 {
+  case 632:
+#line 2224 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3492 "dhcp4_parser.cc"
+#line 3442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 629: // control_socket_name: "socket-name" $@106 ":" "constant string"
-#line 2217 "dhcp4_parser.yy"
-               {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 633:
+#line 2227 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3502 "dhcp4_parser.cc"
+#line 3452 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 630: // $@107: %empty
-#line 2226 "dhcp4_parser.yy"
-                                       {
+  case 634:
+#line 2236 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3514 "dhcp4_parser.cc"
+#line 3464 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 631: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
-#line 2232 "dhcp4_parser.yy"
-                                                           {
+  case 635:
+#line 2242 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3525 "dhcp4_parser.cc"
+#line 3475 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 640: // enable_queue: "enable-queue" ":" "boolean"
-#line 2251 "dhcp4_parser.yy"
-                                         {
+  case 644:
+#line 2261 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
-    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-queue", b);
 }
-#line 3535 "dhcp4_parser.cc"
+#line 3485 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 641: // $@108: %empty
-#line 2257 "dhcp4_parser.yy"
-                       {
+  case 645:
+#line 2267 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3544 "dhcp4_parser.cc"
+#line 3494 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 642: // queue_type: "queue-type" $@108 ":" "constant string"
-#line 2260 "dhcp4_parser.yy"
-               {
-    ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 646:
+#line 2270 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3554 "dhcp4_parser.cc"
+#line 3504 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 643: // capacity: "capacity" ":" "integer"
-#line 2266 "dhcp4_parser.yy"
-                                 {
+  case 647:
+#line 2276 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
-    ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3564 "dhcp4_parser.cc"
+#line 3514 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 644: // $@109: %empty
-#line 2272 "dhcp4_parser.yy"
-                            {
-    ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
+  case 648:
+#line 2282 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.unique(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3573 "dhcp4_parser.cc"
+#line 3523 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 645: // arbitrary_map_entry: "constant string" $@109 ":" value
-#line 2275 "dhcp4_parser.yy"
-              {
-    ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+  case 649:
+#line 2285 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3582 "dhcp4_parser.cc"
+#line 3532 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 646: // $@110: %empty
-#line 2282 "dhcp4_parser.yy"
-                     {
+  case 650:
+#line 2292 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     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 3594 "dhcp4_parser.cc"
+#line 3544 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 647: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
-#line 2288 "dhcp4_parser.yy"
-                                                       {
+  case 651:
+#line 2298 "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 3605 "dhcp4_parser.cc"
+#line 3555 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 648: // $@111: %empty
-#line 2295 "dhcp4_parser.yy"
-                              {
+  case 652:
+#line 2305 "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 3615 "dhcp4_parser.cc"
+#line 3565 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 649: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
-#line 2299 "dhcp4_parser.yy"
-                                  {
+  case 653:
+#line 2309 "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 3625 "dhcp4_parser.cc"
+#line 3575 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 670: // enable_updates: "enable-updates" ":" "boolean"
-#line 2329 "dhcp4_parser.yy"
-                                             {
+  case 674:
+#line 2339 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
-    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 3635 "dhcp4_parser.cc"
+#line 3585 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 671: // $@112: %empty
-#line 2335 "dhcp4_parser.yy"
-                     {
+  case 675:
+#line 2345 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3644 "dhcp4_parser.cc"
+#line 3594 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 672: // server_ip: "server-ip" $@112 ":" "constant string"
-#line 2338 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 676:
+#line 2348 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3654 "dhcp4_parser.cc"
+#line 3604 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 673: // server_port: "server-port" ":" "integer"
-#line 2344 "dhcp4_parser.yy"
-                                       {
+  case 677:
+#line 2354 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
-    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 3664 "dhcp4_parser.cc"
+#line 3614 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 674: // $@113: %empty
-#line 2350 "dhcp4_parser.yy"
-                     {
+  case 678:
+#line 2360 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3673 "dhcp4_parser.cc"
+#line 3623 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 675: // sender_ip: "sender-ip" $@113 ":" "constant string"
-#line 2353 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 679:
+#line 2363 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3683 "dhcp4_parser.cc"
+#line 3633 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 676: // sender_port: "sender-port" ":" "integer"
-#line 2359 "dhcp4_parser.yy"
-                                       {
+  case 680:
+#line 2369 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
-    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 3693 "dhcp4_parser.cc"
+#line 3643 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 677: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2365 "dhcp4_parser.yy"
-                                             {
+  case 681:
+#line 2375 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
-    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 3703 "dhcp4_parser.cc"
+#line 3653 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 678: // $@114: %empty
-#line 2371 "dhcp4_parser.yy"
-                           {
+  case 682:
+#line 2381 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3712 "dhcp4_parser.cc"
+#line 3662 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 679: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
-#line 2374 "dhcp4_parser.yy"
-                           {
-    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
+  case 683:
+#line 2384 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3721 "dhcp4_parser.cc"
+#line 3671 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 680: // ncr_protocol_value: "udp"
-#line 2380 "dhcp4_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3727 "dhcp4_parser.cc"
+  case 684:
+#line 2390 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3677 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 681: // ncr_protocol_value: "tcp"
-#line 2381 "dhcp4_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3733 "dhcp4_parser.cc"
+  case 685:
+#line 2391 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3683 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 682: // $@115: %empty
-#line 2384 "dhcp4_parser.yy"
-                       {
+  case 686:
+#line 2394 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3742 "dhcp4_parser.cc"
+#line 3692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 683: // ncr_format: "ncr-format" $@115 ":" "JSON"
-#line 2387 "dhcp4_parser.yy"
-             {
+  case 687:
+#line 2397 "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 3752 "dhcp4_parser.cc"
+#line 3702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 684: // $@116: %empty
-#line 2394 "dhcp4_parser.yy"
-                                         {
+  case 688:
+#line 2404 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3761 "dhcp4_parser.cc"
+#line 3711 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 685: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
-#line 2397 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 689:
+#line 2407 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3771 "dhcp4_parser.cc"
+#line 3721 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 686: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2404 "dhcp4_parser.yy"
-                                                         {
+  case 690:
+#line 2414 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
-    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 3781 "dhcp4_parser.cc"
+#line 3731 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 687: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2411 "dhcp4_parser.yy"
-                                                                 {
+  case 691:
+#line 2421 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
-    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 3791 "dhcp4_parser.cc"
+#line 3741 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 688: // $@117: %empty
-#line 2418 "dhcp4_parser.yy"
-                                             {
+  case 692:
+#line 2428 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3800 "dhcp4_parser.cc"
+#line 3750 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 689: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
-#line 2421 "dhcp4_parser.yy"
-                                       {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
+  case 693:
+#line 2431 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3809 "dhcp4_parser.cc"
+#line 3759 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 690: // $@118: %empty
-#line 2427 "dhcp4_parser.yy"
-                                       {
+  case 694:
+#line 2437 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3818 "dhcp4_parser.cc"
+#line 3768 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 691: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
-#line 2430 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 695:
+#line 2440 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3828 "dhcp4_parser.cc"
+#line 3778 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 692: // $@119: %empty
-#line 2437 "dhcp4_parser.yy"
-                                         {
+  case 696:
+#line 2447 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3837 "dhcp4_parser.cc"
+#line 3787 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 693: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
-#line 2440 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 697:
+#line 2450 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3847 "dhcp4_parser.cc"
+#line 3797 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 694: // $@120: %empty
-#line 2447 "dhcp4_parser.yy"
-                                                         {
+  case 698:
+#line 2457 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3856 "dhcp4_parser.cc"
+#line 3806 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 695: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
-#line 2450 "dhcp4_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 699:
+#line 2460 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3866 "dhcp4_parser.cc"
+#line 3816 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 696: // $@121: %empty
-#line 2459 "dhcp4_parser.yy"
-                               {
+  case 700:
+#line 2469 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     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 3878 "dhcp4_parser.cc"
+#line 3828 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 697: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
-#line 2465 "dhcp4_parser.yy"
-                                                            {
+  case 701:
+#line 2475 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3888 "dhcp4_parser.cc"
+#line 3838 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 698: // $@122: %empty
-#line 2471 "dhcp4_parser.yy"
-                                   {
+  case 702:
+#line 2481 "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 3898 "dhcp4_parser.cc"
+#line 3848 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 699: // sub_config_control: "{" $@122 config_control_params "}"
-#line 2475 "dhcp4_parser.yy"
-                                       {
+  case 703:
+#line 2485 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     // No config_control params are required
     // parsing completed
 }
-#line 3907 "dhcp4_parser.cc"
+#line 3857 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 704: // $@123: %empty
-#line 2490 "dhcp4_parser.yy"
-                                   {
+  case 708:
+#line 2500 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     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 3919 "dhcp4_parser.cc"
+#line 3869 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 705: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
-#line 2496 "dhcp4_parser.yy"
-                                                      {
+  case 709:
+#line 2506 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3928 "dhcp4_parser.cc"
+#line 3878 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 706: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2501 "dhcp4_parser.yy"
-                                                             {
+  case 710:
+#line 2511 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
-    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("config-fetch-wait-time", value);
 }
-#line 3938 "dhcp4_parser.cc"
+#line 3888 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 707: // $@124: %empty
-#line 2509 "dhcp4_parser.yy"
-                 {
+  case 711:
+#line 2519 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     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 3950 "dhcp4_parser.cc"
+#line 3900 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 708: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
-#line 2515 "dhcp4_parser.yy"
-                                                         {
+  case 712:
+#line 2525 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3959 "dhcp4_parser.cc"
+#line 3909 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 711: // $@125: %empty
-#line 2527 "dhcp4_parser.yy"
-                             {
+  case 715:
+#line 2537 "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 3969 "dhcp4_parser.cc"
+#line 3919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 712: // logger_entry: "{" $@125 logger_params "}"
-#line 2531 "dhcp4_parser.yy"
-                               {
+  case 716:
+#line 2541 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 3977 "dhcp4_parser.cc"
+#line 3927 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 722: // debuglevel: "debuglevel" ":" "integer"
-#line 2548 "dhcp4_parser.yy"
-                                     {
+  case 726:
+#line 2558 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
-    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 3987 "dhcp4_parser.cc"
+#line 3937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 723: // $@126: %empty
-#line 2554 "dhcp4_parser.yy"
-                   {
+  case 727:
+#line 2564 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3996 "dhcp4_parser.cc"
+#line 3946 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 724: // severity: "severity" $@126 ":" "constant string"
-#line 2557 "dhcp4_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 728:
+#line 2567 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 4006 "dhcp4_parser.cc"
+#line 3956 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 725: // $@127: %empty
-#line 2563 "dhcp4_parser.yy"
-                                    {
+  case 729:
+#line 2573 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     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 4018 "dhcp4_parser.cc"
+#line 3968 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 726: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
-#line 2569 "dhcp4_parser.yy"
-                                                                    {
+  case 730:
+#line 2579 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4027 "dhcp4_parser.cc"
+#line 3977 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 729: // $@128: %empty
-#line 2578 "dhcp4_parser.yy"
-                             {
+  case 733:
+#line 2588 "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 4037 "dhcp4_parser.cc"
+#line 3987 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 730: // output_entry: "{" $@128 output_params_list "}"
-#line 2582 "dhcp4_parser.yy"
-                                    {
+  case 734:
+#line 2592 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 4045 "dhcp4_parser.cc"
+#line 3995 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 738: // $@129: %empty
-#line 2597 "dhcp4_parser.yy"
-               {
+  case 742:
+#line 2607 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4054 "dhcp4_parser.cc"
+#line 4004 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 739: // output: "output" $@129 ":" "constant string"
-#line 2600 "dhcp4_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 743:
+#line 2610 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4064 "dhcp4_parser.cc"
+#line 4014 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 740: // flush: "flush" ":" "boolean"
-#line 2606 "dhcp4_parser.yy"
-                           {
+  case 744:
+#line 2616 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
-    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 4074 "dhcp4_parser.cc"
+#line 4024 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 741: // maxsize: "maxsize" ":" "integer"
-#line 2612 "dhcp4_parser.yy"
-                               {
+  case 745:
+#line 2622 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
-    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 4084 "dhcp4_parser.cc"
+#line 4034 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 742: // maxver: "maxver" ":" "integer"
-#line 2618 "dhcp4_parser.yy"
-                             {
+  case 746:
+#line 2628 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
-    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 4094 "dhcp4_parser.cc"
+#line 4044 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 743: // $@130: %empty
-#line 2624 "dhcp4_parser.yy"
-                 {
+  case 747:
+#line 2634 "dhcp4_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4103 "dhcp4_parser.cc"
+#line 4053 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 744: // pattern: "pattern" $@130 ":" "constant string"
-#line 2627 "dhcp4_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 748:
+#line 2637 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4113 "dhcp4_parser.cc"
+#line 4063 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 4117 "dhcp4_parser.cc"
-
+#line 4067 "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.  |
   `--------------------------------------*/
@@ -4145,9 +4091,7 @@ namespace isc { namespace dhcp {
     if (!yyerrstatus_)
       {
         ++yynerrs_;
-        context yyctx (*this, yyla);
-        std::string msg = yysyntax_error_ (yyctx);
-        error (yyla.location, YY_MOVE (msg));
+        error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
       }
 
 
@@ -4158,7 +4102,7 @@ namespace isc { namespace dhcp {
            error, discard it.  */
 
         // Return failure if at end of input.
-        if (yyla.kind () == symbol_kind::S_YYEOF)
+        if (yyla.type_get () == yyeof_)
           YYABORT;
         else if (!yyla.empty ())
           {
@@ -4175,81 +4119,69 @@ 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;
-    YY_STACK_PRINT ();
     goto yyerrlab1;
 
-
   /*-------------------------------------------------------------.
   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   `-------------------------------------------------------------*/
   yyerrlab1:
     yyerrstatus_ = 3;   // Each real token shifted decrements this.
-    // Pop stack until we find a state that shifts the error token.
-    for (;;)
-      {
-        yyn = yypact_[+yystack_[0].state];
-        if (!yy_pact_value_is_default_ (yyn))
-          {
-            yyn += symbol_kind::S_YYerror;
-            if (0 <= yyn && yyn <= yylast_
-                && yycheck_[yyn] == symbol_kind::S_YYerror)
-              {
-                yyn = yytable_[yyn];
-                if (0 < yyn)
-                  break;
-              }
-          }
-
-        // Pop the current state because it cannot handle the error token.
-        if (yystack_.size () == 1)
-          YYABORT;
-
-        yyerror_range[1].location = yystack_[0].location;
-        yy_destroy_ ("Error: popping", yystack_[0]);
-        yypop_ ();
-        YY_STACK_PRINT ();
-      }
     {
       stack_symbol_type error_token;
+      for (;;)
+        {
+          yyn = yypact_[yystack_[0].state];
+          if (!yy_pact_value_is_default_ (yyn))
+            {
+              yyn += yyterror_;
+              if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+                {
+                  yyn = yytable_[yyn];
+                  if (0 < yyn)
+                    break;
+                }
+            }
+
+          // Pop the current state because it cannot handle the error token.
+          if (yystack_.size () == 1)
+            YYABORT;
+
+          yyerror_range[1].location = yystack_[0].location;
+          yy_destroy_ ("Error: popping", yystack_[0]);
+          yypop_ ();
+          YY_STACK_PRINT ();
+        }
 
       yyerror_range[2].location = yyla.location;
       YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
 
       // Shift the error token.
-      error_token.state = state_type (yyn);
-      yypush_ ("Shifting", YY_MOVE (error_token));
+      error_token.state = yyn;
+      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);
@@ -4257,7 +4189,6 @@ namespace isc { namespace dhcp {
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
-    YY_STACK_PRINT ();
     while (1 < yystack_.size ())
       {
         yy_destroy_ ("Cleanup: popping", yystack_[0]);
@@ -4266,12 +4197,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);
 
@@ -4282,109 +4213,26 @@ namespace isc { namespace dhcp {
           }
         throw;
       }
-#endif // YY_EXCEPTIONS
   }
 
   void
   Dhcp4Parser::error (const syntax_error& yyexc)
   {
-    error (yyexc.location, yyexc.what ());
-  }
-
-  /* Return YYSTR after stripping away unnecessary quotes and
-     backslashes, so that it's suitable for yyerror.  The heuristic is
-     that double-quoting is unnecessary unless the string contains an
-     apostrophe, a comma, or backslash (other than backslash-backslash).
-     YYSTR is taken from yytname.  */
-  std::string
-  Dhcp4Parser::yytnamerr_ (const char *yystr)
-  {
-    if (*yystr == '"')
-      {
-        std::string yyr;
-        char const *yyp = yystr;
-
-        for (;;)
-          switch (*++yyp)
-            {
-            case '\'':
-            case ',':
-              goto do_not_strip_quotes;
-
-            case '\\':
-              if (*++yyp != '\\')
-                goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
-            default:
-              yyr += *yyp;
-              break;
-
-            case '"':
-              return yyr;
-            }
-      do_not_strip_quotes: ;
-      }
-
-    return yystr;
+    error (yyexc.location, yyexc.what());
   }
 
+  // Generate an error message.
   std::string
-  Dhcp4Parser::symbol_name (symbol_kind_type yysymbol)
-  {
-    return yytnamerr_ (yytname_[yysymbol]);
-  }
-
-
-
-  // Dhcp4Parser::context.
-  Dhcp4Parser::context::context (const Dhcp4Parser& yyparser, const symbol_type& yyla)
-    : yyparser_ (yyparser)
-    , yyla_ (yyla)
-  {}
-
-  int
-  Dhcp4Parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const
+  Dhcp4Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
   {
-    // Actual number of expected tokens
-    int yycount = 0;
-
-    int yyn = yypact_[+yyparser_.yystack_[0].state];
-    if (!yy_pact_value_is_default_ (yyn))
-      {
-        /* Start YYX at -YYN if negative to avoid negative indexes in
-           YYCHECK.  In other words, skip the first -YYN actions for
-           this state because they are default actions.  */
-        int yyxbegin = yyn < 0 ? -yyn : 0;
-        // Stay within bounds of both yycheck and yytname.
-        int yychecklim = yylast_ - yyn + 1;
-        int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-        for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
-          if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror
-              && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
-            {
-              if (!yyarg)
-                ++yycount;
-              else if (yycount == yyargn)
-                return 0;
-              else
-                yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx);
-            }
-      }
-
-    if (yyarg && yycount == 0 && 0 < yyargn)
-      yyarg[0] = symbol_kind::S_YYEMPTY;
-    return yycount;
-  }
-
-
+    // Number of reported tokens (one for the "unexpected", one per
+    // "expected").
+    size_t yycount = 0;
+    // Its maximum.
+    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+    // Arguments of yyformat.
+    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 
-  int
-  Dhcp4Parser::yy_syntax_error_arguments_ (const context& yyctx,
-                                                 symbol_kind_type yyarg[], int yyargn) const
-  {
     /* There are many possibilities here to consider:
        - If this state is a consistent state with a default action, then
          the only way this function was invoked is if the default action
@@ -4403,32 +4251,41 @@ namespace isc { namespace dhcp {
        - Of course, the expected token list depends on states to have
          correct lookahead information, and it depends on the parser not
          to perform extra reductions after fetching a lookahead from the
-         scanner and before detecting a syntax error.  Thus, state merging
-         (from LALR or IELR) and default reductions corrupt the expected
-         token list.  However, the list is correct for canonical LR with
-         one exception: it will still contain any token that will not be
-         accepted due to an error action in a later state.
+         scanner and before detecting a syntax error.  Thus, state
+         merging (from LALR or IELR) and default reductions corrupt the
+         expected token list.  However, the list is correct for
+         canonical LR with one exception: it will still contain any
+         token that will not be accepted due to an error action in a
+         later state.
     */
-
-    if (!yyctx.lookahead ().empty ())
+    if (!yyla.empty ())
       {
-        if (yyarg)
-          yyarg[0] = yyctx.token ();
-        int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
-        return yyn + 1;
+        int yytoken = yyla.type_get ();
+        yyarg[yycount++] = yytname_[yytoken];
+        int yyn = yypact_[yystate];
+        if (!yy_pact_value_is_default_ (yyn))
+          {
+            /* Start YYX at -YYN if negative to avoid negative indexes in
+               YYCHECK.  In other words, skip the first -YYN actions for
+               this state because they are default actions.  */
+            int yyxbegin = yyn < 0 ? -yyn : 0;
+            // Stay within bounds of both yycheck and yytname.
+            int yychecklim = yylast_ - yyn + 1;
+            int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
+            for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
+              if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
+                  && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
+                {
+                  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                    {
+                      yycount = 1;
+                      break;
+                    }
+                  else
+                    yyarg[yycount++] = yytname_[yyx];
+                }
+          }
       }
-    return 0;
-  }
-
-  // Generate an error message.
-  std::string
-  Dhcp4Parser::yysyntax_error_ (const context& yyctx) const
-  {
-    // Its maximum.
-    enum { YYARGS_MAX = 5 };
-    // Arguments of yyformat.
-    symbol_kind_type yyarg[YYARGS_MAX];
-    int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
 
     char const* yyformat = YY_NULLPTR;
     switch (yycount)
@@ -4437,23 +4294,22 @@ 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_
       }
 
     std::string yyres;
     // Argument number.
-    std::ptrdiff_t yyi = 0;
+    size_t yyi = 0;
     for (char const* yyp = yyformat; *yyp; ++yyp)
       if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
         {
-          yyres += symbol_name (yyarg[yyi++]);
+          yyres += yytnamerr_ (yyarg[yyi++]);
           ++yyp;
         }
       else
@@ -4462,806 +4318,808 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -910;
+  const short int Dhcp4Parser::yypact_ninf_ = -924;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
-  const short
+  const short int
   Dhcp4Parser::yypact_[] =
   {
-     529,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,    33,    41,    36,    49,    54,    59,
-      66,    82,    86,   121,   131,   133,   145,   215,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,    41,  -143,   101,   104,    88,   224,
-     -45,   231,    67,    56,   177,   -94,   403,    42,  -910,   178,
-     204,   239,   211,   244,  -910,   247,  -910,  -910,  -910,   254,
-     273,   276,  -910,  -910,  -910,  -910,  -910,  -910,   289,   299,
-     316,   330,   336,   347,   349,   364,   366,   376,   377,  -910,
-     396,   397,   399,   400,   401,  -910,  -910,  -910,   404,   408,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,   409,  -910,  -910,  -910,  -910,  -910,  -910,   411,
-    -910,   412,  -910,    69,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,   413,  -910,    78,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   415,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,    84,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,    94,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   323,   390,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,   387,  -910,  -910,   419,  -910,  -910,  -910,   420,
-    -910,  -910,   423,   434,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   436,   438,  -910,
-    -910,  -910,  -910,   435,   441,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   118,  -910,  -910,
-    -910,   443,  -910,  -910,   449,  -910,   450,   452,  -910,  -910,
-     453,   454,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   143,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   455,   188,  -910,
-    -910,  -910,  -910,    41,    41,  -910,   217,   457,  -910,   459,
-     460,   463,   275,   277,   282,   465,   473,   475,   477,   478,
-     479,   294,   297,   298,   302,   305,   304,   312,   314,   315,
-     317,   318,   486,   321,   328,   322,   329,   334,   510,   544,
-     558,   370,   371,   561,   562,   563,   566,   567,   568,   569,
-     570,   571,   573,   574,   575,   393,   576,   577,   578,   582,
-     583,   584,   398,   586,  -910,   104,  -910,   588,   590,   591,
-     405,    88,  -910,   592,   595,   596,   598,   599,   600,   414,
-     602,   603,   604,   224,  -910,   605,   -45,  -910,   606,   612,
-     613,   614,   617,   619,   620,   621,  -910,   231,  -910,   622,
-     623,   437,   625,   626,   627,   439,  -910,    56,   629,   446,
-     447,  -910,   177,   630,   648,   -50,  -910,   461,   649,   651,
-     474,   662,   476,   480,   664,   668,   481,   487,   669,   675,
-     680,   682,   403,  -910,   684,   498,    42,  -910,  -910,  -910,
-     686,   685,   688,   689,   691,  -910,  -910,  -910,   501,   503,
-     509,   693,   694,   697,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,   513,  -910,  -910,  -910,  -910,
-    -910,    -4,   514,   530,  -910,  -910,   714,   716,   717,   718,
-     719,   534,   208,   720,   722,   723,   724,   725,  -910,   726,
-     727,   728,   729,   540,   541,  -910,   732,  -910,   733,   192,
-     205,  -910,  -910,   549,   550,   551,   737,   553,   554,  -910,
-     733,   555,   739,  -910,   557,  -910,   733,   559,   564,   565,
-     572,   579,   580,   581,  -910,   587,   589,  -910,   593,   594,
-     597,  -910,  -910,   601,  -910,  -910,  -910,   607,   719,  -910,
-    -910,   608,   609,  -910,   610,  -910,  -910,    31,   429,  -910,
-    -910,    -4,   611,   615,   616,  -910,   743,  -910,  -910,    41,
-     104,    42,    88,   734,  -910,  -910,  -910,   491,   491,   745,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   746,
-     749,   750,   752,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,   260,   753,   754,   756,   230,    58,   117,   212,   403,
-    -910,  -910,   757,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,   758,  -910,  -910,  -910,  -910,   107,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   745,  -910,
-     189,   196,   197,  -910,   200,  -910,  -910,  -910,  -910,  -910,
-    -910,   762,   763,   764,   768,   769,  -910,  -910,  -910,  -910,
-     770,   772,   774,   776,   777,   778,  -910,   210,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   213,
-    -910,   779,   783,  -910,  -910,   782,   786,  -910,  -910,   784,
-     789,  -910,  -910,   787,   791,  -910,  -910,   790,   792,  -910,
-    -910,  -910,  -910,  -910,  -910,    34,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,   102,  -910,  -910,   796,   800,  -910,  -910,
-     798,   804,  -910,   805,   806,   807,   808,   809,   810,   232,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   811,   812,   813,
-    -910,   233,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,   236,  -910,  -910,  -910,   814,  -910,   815,
-    -910,  -910,  -910,   265,  -910,  -910,  -910,  -910,  -910,   324,
-    -910,   119,  -910,   618,  -910,   816,   817,  -910,  -910,  -910,
-    -910,   818,   819,  -910,  -910,  -910,   820,   734,  -910,   823,
-     824,   825,   826,   632,   628,   640,   639,   642,   830,   831,
-     832,   833,   647,   650,   652,   653,   646,   654,   491,  -910,
-    -910,   491,  -910,   745,   224,  -910,   746,    56,  -910,   749,
-     177,  -910,   750,   585,  -910,   752,   260,  -910,   288,   753,
-    -910,   231,  -910,   754,   -94,  -910,   756,   655,   656,   657,
-     658,   659,   660,   230,  -910,   661,   665,   667,    58,  -910,
-     836,   838,   117,  -910,   666,   848,   670,   849,   212,  -910,
-    -910,   194,   757,  -910,  -910,   856,   852,   -45,  -910,   758,
-     861,  -910,  -910,   690,  -910,   391,   695,   707,   711,  -910,
-    -910,  -910,  -910,  -910,   712,   731,   738,   747,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,   327,  -910,   335,  -910,   864,
-    -910,   873,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,   361,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,   910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,   907,   915,  -910,  -910,  -910,  -910,
-    -910,   921,  -910,   375,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,   795,   797,  -910,  -910,
-     799,  -910,    41,  -910,  -910,   932,  -910,  -910,  -910,  -910,
-    -910,   379,  -910,  -910,  -910,  -910,  -910,  -910,   801,   388,
-    -910,   733,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   585,
-    -910,   935,   802,  -910,   288,  -910,  -910,  -910,  -910,  -910,
-    -910,   978,   803,   986,   194,  -910,  -910,  -910,  -910,  -910,
-     821,  -910,  -910,   987,  -910,   822,  -910,  -910,   989,  -910,
-    -910,   136,  -910,   -91,   989,  -910,  -910,   993,   994,   995,
-    -910,   389,  -910,  -910,  -910,  -910,  -910,  -910,  -910,   996,
-     827,   828,   834,   997,   -91,  -910,   837,  -910,  -910,  -910,
-     839,  -910,  -910,  -910
+     168,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,    31,    41,    36,    54,    57,    70,
+      72,    74,    89,   104,   111,   121,   128,   135,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,    41,  -158,    27,   122,    67,   306,
+      59,   185,   -37,   482,   230,   -86,   573,   162,  -924,   101,
+     161,    49,   152,   164,  -924,   163,  -924,  -924,  -924,   172,
+     215,   222,  -924,  -924,  -924,  -924,  -924,  -924,   225,   233,
+     241,   249,   255,   261,   265,   278,   291,   295,   302,  -924,
+     308,   310,   311,   337,   369,  -924,  -924,  -924,   370,   371,
+     382,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,   389,  -924,  -924,  -924,  -924,  -924,  -924,
+     396,  -924,   407,  -924,    84,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,   414,  -924,    94,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,   419,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   100,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,   107,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,   208,   260,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,   331,  -924,  -924,   421,  -924,
+    -924,  -924,   424,  -924,  -924,   422,   394,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     427,   428,  -924,  -924,  -924,  -924,   425,   438,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     118,  -924,  -924,  -924,   431,  -924,  -924,   440,  -924,   442,
+     443,  -924,  -924,   444,   447,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,   129,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     453,   131,  -924,  -924,  -924,  -924,    41,    41,  -924,  -140,
+     454,  -924,   456,   457,   458,   269,   271,   273,   464,   467,
+     470,   475,   477,   478,   293,   294,   297,   300,   301,   289,
+     307,   312,   315,   309,   318,   483,   320,   321,   317,   325,
+     329,   490,   500,   514,   332,   336,   340,   525,   527,   534,
+     535,   536,   537,   562,   563,   565,   568,   569,   574,   385,
+     575,   578,   579,   580,   581,   582,   397,   583,  -924,   122,
+    -924,   588,   589,   591,   400,    67,  -924,   592,   593,   594,
+     595,   596,   597,   411,   600,   601,   603,   306,  -924,   604,
+      59,  -924,   605,   606,   607,   608,   609,   610,   611,   617,
+    -924,   185,  -924,   618,   619,   434,   624,   625,   626,   437,
+    -924,   482,   628,   439,   441,  -924,   230,   630,   632,   -70,
+    -924,   445,   633,   634,   452,   641,   465,   466,   655,   656,
+     480,   484,   673,   675,   680,   681,   573,  -924,   682,   495,
+     162,  -924,  -924,  -924,   686,   685,   688,   689,   690,  -924,
+    -924,  -924,   507,   508,   510,   695,   697,   700,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   515,
+    -924,  -924,  -924,  -924,  -924,   -90,   516,   517,  -924,  -924,
+    -924,   704,   705,   707,   708,   709,   523,   174,   710,   712,
+     713,   714,   726,  -924,   727,   728,   729,   730,   547,   550,
+    -924,   737,  -924,   738,   234,   272,  -924,  -924,   553,   554,
+     555,   742,   557,   558,  -924,   738,   559,   744,  -924,   561,
+    -924,   738,   564,   567,   570,   571,   572,   576,   577,  -924,
+     584,   585,  -924,   586,   587,   598,  -924,  -924,   599,  -924,
+    -924,  -924,   602,   709,  -924,  -924,   612,   613,  -924,   614,
+    -924,  -924,    10,   621,  -924,  -924,   -90,   615,   616,   620,
+    -924,   748,  -924,  -924,    41,   122,   162,    67,   735,  -924,
+    -924,  -924,   503,   503,   747,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,   753,   758,   759,   762,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,   157,   763,   764,   765,
+     432,   149,    63,   -14,   573,  -924,  -924,   766,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   767,
+    -924,  -924,  -924,  -924,   186,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,   747,  -924,   160,   170,   219,  -924,   220,
+    -924,  -924,  -924,  -924,  -924,  -924,   775,   776,   779,   780,
+     781,  -924,  -924,  -924,  -924,   782,   783,   784,   787,   788,
+     790,  -924,   235,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,   236,  -924,   789,   793,  -924,  -924,
+     791,   795,  -924,  -924,   794,   796,  -924,  -924,   802,   798,
+    -924,  -924,   803,   799,  -924,  -924,  -924,  -924,  -924,  -924,
+      46,  -924,  -924,  -924,  -924,  -924,  -924,  -924,    87,  -924,
+    -924,   804,   809,  -924,  -924,   807,   811,  -924,   812,   813,
+     814,   815,   816,   817,   252,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,   818,   819,   820,  -924,   259,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   263,  -924,
+    -924,  -924,   821,  -924,   822,  -924,  -924,  -924,   319,  -924,
+    -924,  -924,  -924,  -924,   322,  -924,   119,  -924,   636,  -924,
+     823,   825,  -924,  -924,  -924,  -924,   824,   827,  -924,  -924,
+    -924,   826,   735,  -924,   830,   831,   832,   833,   623,   637,
+     646,   645,   648,   837,   838,   839,   840,   653,   654,   657,
+     658,   659,   660,   503,  -924,  -924,   503,  -924,   747,   306,
+    -924,   753,   482,  -924,   758,   230,  -924,   759,   590,  -924,
+     762,   157,  -924,   212,   763,  -924,   185,  -924,   764,   -86,
+    -924,   765,   662,   663,   664,   665,   666,   667,   432,  -924,
+     669,   668,   672,   149,  -924,   843,   844,    63,  -924,   676,
+     847,   674,   857,   -14,  -924,  -924,   -32,   766,  -924,  -924,
+     861,   874,    59,  -924,   767,   881,  -924,  -924,   699,  -924,
+     324,   711,   715,   716,  -924,  -924,  -924,  -924,  -924,   732,
+     743,   750,   751,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     323,  -924,   334,  -924,   878,  -924,   911,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   335,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     916,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+     918,   930,  -924,  -924,  -924,  -924,  -924,   936,  -924,   387,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,   801,   806,  -924,  -924,   808,  -924,    41,  -924,
+    -924,   986,  -924,  -924,  -924,  -924,  -924,   391,  -924,  -924,
+    -924,  -924,  -924,  -924,   810,   393,  -924,   738,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,   590,  -924,   990,   828,  -924,
+     212,  -924,  -924,  -924,  -924,  -924,  -924,   991,   829,   994,
+     -32,  -924,  -924,  -924,  -924,  -924,   834,  -924,  -924,   995,
+    -924,   835,  -924,  -924,   996,  -924,  -924,   140,  -924,    34,
+     996,  -924,  -924,   998,  1000,  1001,  -924,   409,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  1002,   836,   841,   842,  1003,
+      34,  -924,   845,  -924,  -924,  -924,   846,  -924,  -924,  -924
   };
 
-  const short
+  const unsigned short int
   Dhcp4Parser::yydefact_[] =
   {
        0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
       20,    22,    24,    26,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     1,    43,
       36,    32,    31,    28,    29,    30,    35,     3,    33,    34,
-      56,     5,    60,     7,   170,     9,   328,    11,   517,    13,
-     542,    15,   442,    17,   450,    19,   487,    21,   293,    23,
-     648,    25,   698,    27,    45,    39,     0,     0,     0,     0,
-       0,   544,     0,   452,   489,     0,     0,     0,    47,     0,
-      46,     0,     0,    40,    58,     0,   696,   159,   185,     0,
-       0,     0,   563,   565,   567,   183,   192,   194,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   131,
-       0,     0,     0,     0,     0,   139,   146,   148,     0,     0,
-     320,   440,   479,   394,   530,   532,   387,   258,   591,   534,
-     285,   304,     0,   272,   617,   630,   646,   151,   153,     0,
-     707,     0,   119,     0,    62,    64,    65,    66,    67,    68,
-      99,   100,   101,   102,   103,    69,    97,    86,    87,    88,
-     107,   108,   109,   110,   111,   112,   113,   105,   106,   114,
-     115,   116,   118,    72,    73,    94,    74,    75,    76,   117,
-      80,    81,    70,    98,    71,    78,    79,    92,    93,    95,
-      89,    90,    91,    77,    82,    83,    84,    85,    96,   104,
-     172,   174,   178,     0,   169,     0,   161,   163,   164,   165,
-     166,   167,   168,   375,   377,   379,   509,   373,   381,     0,
-     385,   383,   587,   372,   332,   333,   334,   335,   336,   357,
-     358,   359,   360,   361,   347,   348,   362,   363,   364,   365,
-     366,   367,   368,   369,   370,   371,     0,   330,   339,   352,
-     353,   354,   340,   342,   343,   345,   341,   337,   338,   355,
-     356,   344,   349,   350,   351,   346,   528,   527,   523,   524,
-     522,     0,   519,   521,   525,   526,   585,   573,   575,   579,
-     577,   583,   581,   569,   562,   556,   560,   561,     0,   545,
-     546,   557,   558,   559,   553,   548,   554,   550,   551,   552,
-     555,   549,     0,   469,   238,     0,   473,   471,   476,     0,
-     465,   466,     0,   453,   454,   456,   468,   457,   458,   459,
-     475,   460,   461,   462,   463,   464,   503,     0,     0,   501,
-     502,   505,   506,     0,   490,   491,   493,   494,   495,   496,
-     497,   498,   499,   500,   300,   302,   297,     0,   295,   298,
-     299,     0,   684,   671,     0,   674,     0,     0,   678,   682,
-       0,     0,   688,   690,   692,   694,   669,   667,   668,     0,
-     650,   652,   653,   654,   655,   656,   657,   658,   659,   664,
-     660,   661,   662,   663,   665,   666,   704,     0,     0,   700,
-     702,   703,    44,     0,     0,    37,     0,     0,    57,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      56,     5,    60,     7,   172,     9,   330,    11,   521,    13,
+     546,    15,   446,    17,   454,    19,   491,    21,   295,    23,
+     652,    25,   702,    27,    45,    39,     0,     0,     0,     0,
+       0,   548,     0,   456,   493,     0,     0,     0,    47,     0,
+      46,     0,     0,    40,    58,     0,   700,   161,   187,     0,
+       0,     0,   567,   569,   571,   185,   194,   196,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   132,
+       0,     0,     0,     0,     0,   140,   147,   149,     0,     0,
+       0,   322,   444,   483,   397,   534,   536,   390,   260,   595,
+     538,   287,   306,     0,   274,   621,   634,   650,   153,   155,
+       0,   711,     0,   120,     0,    62,    64,    65,    66,    67,
+      68,    99,   100,   101,   102,   103,    69,    97,    86,    87,
+      88,   107,   108,   109,   110,   111,   112,   113,   114,   105,
+     106,   115,   116,   117,   119,    72,    73,    94,    74,    75,
+      76,   118,    80,    81,    70,    98,    71,    78,    79,    92,
+      93,    95,    89,    90,    91,    77,    82,    83,    84,    85,
+      96,   104,   174,   176,   180,     0,   171,     0,   163,   165,
+     166,   167,   168,   169,   170,   378,   380,   382,   513,   376,
+     384,     0,   388,   386,   591,   375,   334,   335,   336,   337,
+     338,   359,   360,   361,   362,   363,   349,   350,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,     0,
+     332,   341,   354,   355,   356,   342,   344,   345,   347,   343,
+     339,   340,   357,   358,   346,   351,   352,   353,   348,   532,
+     531,   527,   528,   526,     0,   523,   525,   529,   530,   589,
+     577,   579,   583,   581,   587,   585,   573,   566,   560,   564,
+     565,     0,   549,   550,   561,   562,   563,   557,   552,   558,
+     554,   555,   556,   559,   553,     0,   473,   240,     0,   477,
+     475,   480,     0,   469,   470,     0,   457,   458,   460,   472,
+     461,   462,   463,   479,   464,   465,   466,   467,   468,   507,
+       0,     0,   505,   506,   509,   510,     0,   494,   495,   497,
+     498,   499,   500,   501,   502,   503,   504,   302,   304,   299,
+       0,   297,   300,   301,     0,   688,   675,     0,   678,     0,
+       0,   682,   686,     0,     0,   692,   694,   696,   698,   673,
+     671,   672,     0,   654,   656,   657,   658,   659,   660,   661,
+     662,   663,   668,   664,   665,   666,   667,   669,   670,   708,
+       0,     0,   704,   706,   707,    44,     0,     0,    37,     0,
+       0,    57,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    55,     0,    61,     0,     0,     0,
-       0,     0,   171,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   329,     0,     0,   518,     0,     0,
-       0,     0,     0,     0,     0,     0,   543,     0,   443,     0,
-       0,     0,     0,     0,     0,     0,   451,     0,     0,     0,
-       0,   488,     0,     0,     0,     0,   294,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    55,     0,
+      61,     0,     0,     0,     0,     0,   173,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   331,     0,
+       0,   522,     0,     0,     0,     0,     0,     0,     0,     0,
+     547,     0,   447,     0,     0,     0,     0,     0,     0,     0,
+     455,     0,     0,     0,     0,   492,     0,     0,     0,     0,
+     296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   653,     0,     0,
+       0,   703,    48,    41,     0,     0,     0,     0,     0,   134,
+     135,   136,     0,     0,     0,     0,     0,     0,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,     0,
+     158,   159,   137,   138,   139,     0,     0,     0,   151,   152,
+     157,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   620,     0,     0,     0,     0,     0,     0,
+     160,     0,    63,     0,     0,     0,   184,   164,     0,     0,
+       0,     0,     0,     0,   396,     0,     0,     0,   333,     0,
+     524,     0,     0,     0,     0,     0,     0,     0,     0,   551,
+       0,     0,   471,     0,     0,     0,   482,   459,     0,   511,
+     512,   496,     0,     0,   298,   674,     0,     0,   677,     0,
+     680,   681,     0,     0,   690,   691,     0,     0,     0,     0,
+     655,     0,   710,   705,     0,     0,     0,     0,     0,   568,
+     570,   572,     0,     0,   198,   133,   142,   143,   144,   145,
+     146,   141,   148,   150,   324,   448,   485,   399,    38,   535,
+     537,   392,   393,   394,   395,   391,     0,     0,   540,   289,
+       0,     0,     0,     0,     0,   154,   156,     0,    49,   175,
+     178,   179,   177,   182,   183,   181,   379,   381,   383,   515,
+     377,   385,   389,   387,     0,   533,   590,   578,   580,   584,
+     582,   588,   586,   574,   474,   241,   478,   476,   481,   508,
+     303,   305,   689,   676,   679,   684,   685,   683,   687,   693,
+     695,   697,   699,   198,    42,     0,     0,     0,   192,     0,
+     189,   191,   227,   233,   235,   237,     0,     0,     0,     0,
+       0,   249,   251,   253,   255,     0,     0,     0,     0,     0,
+       0,   226,     0,   204,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   219,   220,   221,   216,   222,   223,
+     224,   217,   218,   225,     0,   202,     0,   199,   200,   328,
+       0,   325,   326,   452,     0,   449,   450,   489,     0,   486,
+     487,   403,     0,   400,   401,   269,   270,   271,   272,   273,
+       0,   262,   264,   265,   266,   267,   268,   599,     0,   597,
+     544,     0,   541,   542,   293,     0,   290,   291,     0,     0,
+       0,     0,     0,     0,     0,   308,   310,   311,   312,   313,
+     314,   315,     0,     0,     0,   283,     0,   276,   278,   279,
+     280,   281,   282,   630,   632,   629,   627,   628,     0,   623,
+     625,   626,     0,   645,     0,   648,   641,   642,     0,   636,
+     638,   639,   640,   643,     0,   715,     0,   713,    51,   519,
+       0,   516,   517,   575,   593,   594,     0,     0,    59,   701,
+     162,     0,     0,   188,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   649,     0,     0,     0,   699,    48,    41,
-       0,     0,     0,     0,     0,   133,   134,   135,     0,     0,
-       0,     0,     0,     0,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,     0,   156,   157,   136,   137,
-     138,     0,     0,     0,   150,   155,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   616,     0,
-       0,     0,     0,     0,     0,   158,     0,    63,     0,     0,
-       0,   182,   162,     0,     0,     0,     0,     0,     0,   393,
-       0,     0,     0,   331,     0,   520,     0,     0,     0,     0,
-       0,     0,     0,     0,   547,     0,     0,   467,     0,     0,
-       0,   478,   455,     0,   507,   508,   492,     0,     0,   296,
-     670,     0,     0,   673,     0,   676,   677,     0,     0,   686,
-     687,     0,     0,     0,     0,   651,     0,   706,   701,     0,
-       0,     0,     0,     0,   564,   566,   568,     0,     0,   196,
-     132,   141,   142,   143,   144,   145,   140,   147,   149,   322,
-     444,   481,   396,    38,   531,   533,   389,   390,   391,   392,
-     388,     0,     0,   536,   287,     0,     0,     0,     0,     0,
-     152,   154,     0,    49,   173,   176,   177,   175,   180,   181,
-     179,   376,   378,   380,   511,   374,   382,   386,   384,     0,
-     529,   586,   574,   576,   580,   578,   584,   582,   570,   470,
-     239,   474,   472,   477,   504,   301,   303,   685,   672,   675,
-     680,   681,   679,   683,   689,   691,   693,   695,   196,    42,
-       0,     0,     0,   190,     0,   187,   189,   225,   231,   233,
-     235,     0,     0,     0,     0,     0,   247,   249,   251,   253,
-       0,     0,     0,     0,     0,     0,   224,     0,   202,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   217,
-     218,   219,   214,   220,   221,   222,   215,   216,   223,     0,
-     200,     0,   197,   198,   326,     0,   323,   324,   448,     0,
-     445,   446,   485,     0,   482,   483,   400,     0,   397,   398,
-     267,   268,   269,   270,   271,     0,   260,   262,   263,   264,
-     265,   266,   595,     0,   593,   540,     0,   537,   538,   291,
-       0,   288,   289,     0,     0,     0,     0,     0,     0,     0,
-     306,   308,   309,   310,   311,   312,   313,     0,     0,     0,
-     281,     0,   274,   276,   277,   278,   279,   280,   626,   628,
-     625,   623,   624,     0,   619,   621,   622,     0,   641,     0,
-     644,   637,   638,     0,   632,   634,   635,   636,   639,     0,
-     711,     0,   709,    51,   515,     0,   512,   513,   571,   589,
-     590,     0,     0,    59,   697,   160,     0,     0,   186,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   184,
-     193,     0,   195,     0,     0,   321,     0,   452,   441,     0,
-     489,   480,     0,     0,   395,     0,     0,   259,   597,     0,
-     592,   544,   535,     0,     0,   286,     0,     0,     0,     0,
-       0,     0,     0,     0,   305,     0,     0,     0,     0,   273,
-       0,     0,     0,   618,     0,     0,     0,     0,     0,   631,
-     647,     0,     0,   708,    53,     0,    52,     0,   510,     0,
-       0,   588,   705,     0,   188,     0,     0,     0,     0,   237,
-     240,   241,   242,   243,     0,     0,     0,     0,   255,   256,
-     244,   245,   246,   257,   203,     0,   199,     0,   325,     0,
-     447,     0,   484,   439,   419,   420,   421,   407,   408,   424,
-     425,   426,   427,   428,   410,   411,   429,   430,   431,   432,
-     433,   434,   435,   436,   437,   438,   404,   405,   406,   417,
-     418,   416,     0,   402,   409,   422,   423,   412,   413,   414,
-     415,   399,   261,   613,     0,   611,   612,   604,   605,   609,
-     610,   606,   607,   608,     0,   598,   599,   601,   602,   603,
-     594,     0,   539,     0,   290,   314,   315,   316,   317,   318,
-     319,   307,   282,   283,   284,   275,     0,     0,   620,   640,
-       0,   643,     0,   633,   725,     0,   723,   721,   715,   719,
-     720,     0,   713,   717,   718,   716,   710,    50,     0,     0,
-     514,     0,   191,   227,   228,   229,   230,   226,   232,   234,
-     236,   248,   250,   252,   254,   201,   327,   449,   486,     0,
-     401,     0,     0,   596,     0,   541,   292,   627,   629,   642,
-     645,     0,     0,     0,     0,   712,    54,   516,   572,   403,
-       0,   615,   600,     0,   722,     0,   714,   614,     0,   724,
-     729,     0,   727,     0,     0,   726,   738,     0,     0,     0,
-     743,     0,   731,   733,   734,   735,   736,   737,   728,     0,
-       0,     0,     0,     0,     0,   730,     0,   740,   741,   742,
-       0,   732,   739,   744
+       0,     0,     0,     0,   186,   195,     0,   197,     0,     0,
+     323,     0,   456,   445,     0,   493,   484,     0,     0,   398,
+       0,     0,   261,   601,     0,   596,   548,   539,     0,     0,
+     288,     0,     0,     0,     0,     0,     0,     0,     0,   307,
+       0,     0,     0,     0,   275,     0,     0,     0,   622,     0,
+       0,     0,     0,     0,   635,   651,     0,     0,   712,    53,
+       0,    52,     0,   514,     0,     0,   592,   709,     0,   190,
+       0,     0,     0,     0,   239,   242,   243,   244,   245,     0,
+       0,     0,     0,   257,   258,   246,   247,   248,   259,   205,
+       0,   201,     0,   327,     0,   451,     0,   488,   443,   422,
+     423,   424,   410,   411,   427,   428,   429,   430,   431,   413,
+     414,   432,   433,   434,   435,   436,   437,   438,   439,   440,
+     441,   442,   407,   408,   409,   420,   421,   419,     0,   405,
+     412,   425,   426,   415,   416,   417,   418,   402,   263,   617,
+       0,   615,   616,   608,   609,   613,   614,   610,   611,   612,
+       0,   602,   603,   605,   606,   607,   598,     0,   543,     0,
+     292,   316,   317,   318,   319,   320,   321,   309,   284,   285,
+     286,   277,     0,     0,   624,   644,     0,   647,     0,   637,
+     729,     0,   727,   725,   719,   723,   724,     0,   717,   721,
+     722,   720,   714,    50,     0,     0,   518,     0,   193,   229,
+     230,   231,   232,   228,   234,   236,   238,   250,   252,   254,
+     256,   203,   329,   453,   490,     0,   404,     0,     0,   600,
+       0,   545,   294,   631,   633,   646,   649,     0,     0,     0,
+       0,   716,    54,   520,   576,   406,     0,   619,   604,     0,
+     726,     0,   718,   618,     0,   728,   733,     0,   731,     0,
+       0,   730,   742,     0,     0,     0,   747,     0,   735,   737,
+     738,   739,   740,   741,   732,     0,     0,     0,     0,     0,
+       0,   734,     0,   744,   745,   746,     0,   736,   743,   748
   };
 
-  const short
+  const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,   -52,  -910,  -528,  -910,   365,
-    -910,  -910,  -910,  -910,  -910,  -910,  -585,  -910,  -910,  -910,
-     -67,  -910,  -910,  -910,  -910,  -910,  -910,   352,   548,   -40,
-     -28,   -24,    -1,     1,    11,    19,    22,    25,    26,  -910,
-    -910,  -910,  -910,    29,    30,    32,    37,    40,    43,  -910,
-     363,    44,  -910,    45,  -910,    47,    48,  -910,    50,  -910,
-      51,  -910,  -910,  -910,  -910,  -910,   353,   545,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,   110,  -910,  -910,  -910,  -910,  -910,
-    -910,   270,  -910,    87,  -910,  -645,    91,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   -63,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-      77,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,    57,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,    68,  -910,  -910,
-    -910,    72,   512,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-      65,  -910,  -910,  -910,  -910,  -910,  -910,  -909,  -910,  -910,
-    -910,    95,  -910,  -910,  -910,    98,   560,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -906,  -910,   -65,  -910,    53,
-    -910,    55,  -910,  -910,  -910,  -910,  -910,  -910,  -910,    89,
-    -910,  -910,  -106,   -46,  -910,  -910,  -910,  -910,  -910,    97,
-    -910,  -910,  -910,   105,  -910,   531,  -910,   -42,  -910,  -910,
-    -910,  -910,  -910,   -36,  -910,  -910,  -910,  -910,  -910,   -35,
-    -910,  -910,  -910,    99,  -910,  -910,  -910,   106,  -910,   532,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,    60,  -910,  -910,  -910,    61,   624,  -910,  -910,   -51,
-    -910,   -11,  -910,   -25,  -910,  -910,  -910,    92,  -910,  -910,
-    -910,    96,  -910,   556,   -55,  -910,     0,  -910,     7,  -910,
-     332,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -905,  -910,
-    -910,  -910,  -910,  -910,   103,  -910,  -910,  -910,   -90,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,    83,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,    79,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,   357,   526,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910,  -910,   402,   523,  -910,
-    -910,  -910,  -910,  -910,  -910,    80,  -910,  -910,   -93,  -910,
-    -910,  -910,  -910,  -910,  -910,  -114,  -910,  -910,  -130,  -910,
-    -910,  -910,  -910,  -910,  -910,  -910
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,   -52,  -924,  -533,  -924,   375,
+    -924,  -924,  -924,  -924,  -924,  -924,  -581,  -924,  -924,  -924,
+     -67,  -924,  -924,  -924,  -924,  -924,  -924,   354,   551,   -40,
+     -28,   -24,    -1,     1,    11,    19,    22,    25,    26,  -924,
+    -924,  -924,  -924,    29,    30,    32,    37,    40,    43,  -924,
+     365,    44,  -924,    45,  -924,    47,    48,    50,  -924,    51,
+    -924,    55,  -924,  -924,  -924,  -924,  -924,   355,   548,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,   112,  -924,  -924,  -924,  -924,
+    -924,  -924,   274,  -924,    88,  -924,  -650,    92,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   -63,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,    77,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+      56,  -924,  -924,  -924,  -924,  -924,  -924,  -924,    69,  -924,
+    -924,  -924,    75,   518,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,    65,  -924,  -924,  -924,  -924,  -924,  -924,  -923,  -924,
+    -924,  -924,    97,  -924,  -924,  -924,   102,   552,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -917,  -924,   -65,  -924,
+      53,  -924,    58,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+      98,  -924,  -924,  -103,   -46,  -924,  -924,  -924,  -924,  -924,
+     105,  -924,  -924,  -924,   108,  -924,   540,  -924,   -42,  -924,
+    -924,  -924,  -924,  -924,   -36,  -924,  -924,  -924,  -924,  -924,
+     -35,  -924,  -924,  -924,   106,  -924,  -924,  -924,   109,  -924,
+     539,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,    64,  -924,  -924,  -924,    60,   622,  -924,  -924,
+     -51,  -924,   -11,  -924,   -25,  -924,  -924,  -924,    99,  -924,
+    -924,  -924,   103,  -924,   560,   -55,  -924,     0,  -924,     7,
+    -924,   338,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -911,
+    -924,  -924,  -924,  -924,  -924,   110,  -924,  -924,  -924,   -87,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,    83,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,    82,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,   362,   531,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924,  -924,   402,   529,
+    -924,  -924,  -924,  -924,  -924,  -924,    85,  -924,  -924,   -89,
+    -924,  -924,  -924,  -924,  -924,  -924,  -110,  -924,  -924,  -127,
+    -924,  -924,  -924,  -924,  -924,  -924,  -924
   };
 
-  const short
+  const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    36,    37,    38,    65,   674,
-      82,    83,    39,    64,    79,    80,   694,   883,   975,   976,
-     766,    41,    66,    85,   397,    43,    67,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   422,   157,   158,   159,   160,   161,   162,   163,   428,
-     666,   164,   429,   165,   430,   166,   167,   450,   168,   451,
-     169,   170,   171,   172,   173,   400,   205,   206,    45,    68,
-     207,   457,   208,   458,   697,   209,   459,   700,   210,   174,
-     408,   175,   401,   744,   745,   746,   896,   176,   409,   177,
-     410,   791,   792,   793,   921,   767,   768,   769,   899,  1117,
-     770,   900,   771,   901,   772,   902,   773,   774,   490,   775,
-     776,   777,   778,   779,   780,   781,   782,   908,   783,   909,
-     784,   910,   785,   911,   786,   787,   788,   178,   440,   815,
-     816,   817,   818,   819,   820,   821,   179,   446,   851,   852,
-     853,   854,   855,   180,   443,   830,   831,   832,   944,    59,
-      75,   347,   348,   349,   503,   350,   504,   181,   444,   839,
-     840,   841,   842,   843,   844,   845,   846,   182,   433,   795,
-     796,   797,   924,    47,    69,   246,   247,   248,   467,   249,
-     463,   250,   464,   251,   465,   252,   468,   253,   471,   254,
-     470,   183,   439,   680,   256,   184,   436,   807,   808,   809,
-     933,  1042,  1043,   185,   434,    53,    72,   799,   800,   801,
-     927,    55,    73,   312,   313,   314,   315,   316,   317,   318,
-     489,   319,   493,   320,   492,   321,   322,   494,   323,   186,
-     435,   803,   804,   805,   930,    57,    74,   333,   334,   335,
-     336,   337,   498,   338,   339,   340,   341,   258,   466,   885,
-     886,   887,   977,    49,    70,   271,   272,   273,   475,   187,
-     437,   188,   438,   189,   442,   826,   827,   828,   941,    51,
-      71,   288,   289,   290,   190,   405,   191,   406,   192,   407,
-     294,   485,   890,   980,   295,   479,   296,   480,   297,   482,
-     298,   481,   299,   484,   300,   483,   301,   478,   265,   472,
-     891,   193,   441,   823,   824,   938,  1064,  1065,  1066,  1067,
-    1068,  1131,  1069,   194,   195,   447,   863,   864,   865,   960,
-     866,   961,   196,   448,   873,   874,   875,   876,   965,   877,
-     878,   967,   197,   449,    61,    76,   369,   370,   371,   372,
-     509,   373,   374,   511,   375,   376,   377,   514,   732,   378,
-     515,   379,   508,   380,   381,   382,   518,   383,   519,   384,
-     520,   385,   521,   198,   399,    63,    77,   388,   389,   390,
-     524,   391,   199,   453,   881,   882,   971,  1101,  1102,  1103,
-    1104,  1143,  1105,  1141,  1161,  1162,  1163,  1171,  1172,  1173,
-    1179,  1174,  1175,  1176,  1177,  1183
+      23,    24,    25,    26,    27,    36,    37,    38,    65,   679,
+      82,    83,    39,    64,    79,    80,   699,   888,   980,   981,
+     771,    41,    66,    85,   400,    43,    67,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   425,   158,   159,   160,   161,   162,   163,   164,   431,
+     671,   165,   432,   166,   433,   167,   168,   169,   454,   170,
+     455,   171,   172,   173,   174,   175,   403,   207,   208,    45,
+      68,   209,   461,   210,   462,   702,   211,   463,   705,   212,
+     176,   411,   177,   404,   749,   750,   751,   901,   178,   412,
+     179,   413,   796,   797,   798,   926,   772,   773,   774,   904,
+    1123,   775,   905,   776,   906,   777,   907,   778,   779,   494,
+     780,   781,   782,   783,   784,   785,   786,   787,   913,   788,
+     914,   789,   915,   790,   916,   791,   792,   793,   180,   444,
+     820,   821,   822,   823,   824,   825,   826,   181,   450,   856,
+     857,   858,   859,   860,   182,   447,   835,   836,   837,   949,
+      59,    75,   350,   351,   352,   507,   353,   508,   183,   448,
+     844,   845,   846,   847,   848,   849,   850,   851,   184,   437,
+     800,   801,   802,   929,    47,    69,   249,   250,   251,   471,
+     252,   467,   253,   468,   254,   469,   255,   472,   256,   475,
+     257,   474,   185,   443,   685,   259,   186,   440,   812,   813,
+     814,   938,  1048,  1049,   187,   438,    53,    72,   804,   805,
+     806,   932,    55,    73,   315,   316,   317,   318,   319,   320,
+     321,   493,   322,   497,   323,   496,   324,   325,   498,   326,
+     188,   439,   808,   809,   810,   935,    57,    74,   336,   337,
+     338,   339,   340,   502,   341,   342,   343,   344,   261,   470,
+     890,   891,   892,   982,    49,    70,   274,   275,   276,   479,
+     189,   441,   190,   442,   191,   446,   831,   832,   833,   946,
+      51,    71,   291,   292,   293,   192,   408,   193,   409,   194,
+     410,   297,   489,   895,   985,   298,   483,   299,   484,   300,
+     486,   301,   485,   302,   488,   303,   487,   304,   482,   268,
+     476,   896,   195,   445,   828,   829,   943,  1070,  1071,  1072,
+    1073,  1074,  1137,  1075,   196,   197,   451,   868,   869,   870,
+     965,   871,   966,   198,   452,   878,   879,   880,   881,   970,
+     882,   883,   972,   199,   453,    61,    76,   372,   373,   374,
+     375,   513,   376,   377,   515,   378,   379,   380,   518,   737,
+     381,   519,   382,   512,   383,   384,   385,   522,   386,   523,
+     387,   524,   388,   525,   200,   402,    63,    77,   391,   392,
+     393,   528,   394,   201,   457,   886,   887,   976,  1107,  1108,
+    1109,  1110,  1149,  1111,  1147,  1167,  1168,  1169,  1177,  1178,
+    1179,  1185,  1180,  1181,  1182,  1183,  1189
   };
 
-  const short
+  const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
-     142,   204,   223,   267,   284,   268,   310,   329,   346,   366,
-     311,   330,    78,   789,   262,   707,   291,   211,   259,   274,
-     286,   711,   324,   342,  1037,   367,   302,  1038,  1050,   224,
-     344,   345,   331,    28,   257,   270,   285,   936,   332,   122,
-     937,   225,   673,    40,   261,   226,    29,    81,    30,   730,
-      31,   266,   124,   125,   386,   387,    42,   212,   260,   275,
-     287,    44,   325,   343,   220,   368,    46,   221,   227,   263,
-     228,   292,   455,    48,   344,   345,   264,   456,   293,  1166,
-     229,   461,  1167,  1168,  1169,  1170,   462,   473,   230,    50,
-     303,   231,   474,    52,   232,   233,   141,   476,   234,   235,
-     673,   236,   477,   200,   201,   939,   237,   202,   940,   238,
-     203,    84,   239,   240,   241,    86,   242,   243,    87,   244,
-     245,   505,   972,   269,   255,   973,   506,    88,    54,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    56,  1164,
-      58,   304,  1165,   305,   306,   141,   522,   307,   308,   309,
-     121,   523,    60,   124,   125,   124,   125,   661,   662,   663,
-     664,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   392,   124,   125,   121,   122,   665,
-     731,   526,   455,   847,   848,   849,   527,   893,   123,   526,
-     461,   124,   125,   897,   894,   895,   126,   393,   898,   695,
-     696,   127,   128,   918,   124,   125,   918,   129,   919,   395,
-    1037,   920,    62,  1038,  1050,   698,   699,   130,   283,   888,
-     131,    32,    33,    34,    35,   953,   958,   132,   133,   962,
-     954,   959,   134,   394,   963,   135,   141,   396,   141,   136,
-      90,    91,    92,    93,    94,   398,   858,   859,   402,    92,
-      93,    94,   304,   326,   305,   306,   327,   328,   968,   137,
-     138,   139,   140,   969,   124,   125,  1005,   403,   141,   304,
-     404,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   124,   125,   411,   141,   112,   113,   114,   115,   116,
-     117,   118,   119,   412,   213,   214,   215,   141,   122,   124,
-     125,   676,   677,   678,   679,   122,    92,    93,    94,   216,
-     413,   124,   125,   217,   218,   219,   126,   522,   124,   125,
-     918,   486,   970,   220,   414,  1125,   221,   129,   473,   276,
-     415,   528,   529,  1126,   222,   277,   278,   279,   280,   281,
-     282,   416,   283,   417,   867,   868,   869,   833,   834,   835,
-     836,   837,   838,  1094,  1129,  1095,  1096,   141,   418,  1130,
-     419,   121,   122,   304,   810,   811,   812,   813,   505,   814,
-     420,   421,  1144,  1136,   141,   124,   125,  1145,   142,   137,
-     138,   476,  1184,   487,   204,   488,  1147,  1185,  1053,  1054,
-     423,   424,   870,   425,   426,   427,   223,   530,   431,   267,
-     211,   268,   432,   445,   141,   452,   454,   460,   262,   469,
-     284,   141,   259,   491,   495,   274,  1113,  1114,  1115,  1116,
-     310,   496,   291,   224,   311,   329,   286,   497,   257,   330,
-     499,   270,   500,   501,   502,   225,   324,   507,   261,   226,
-     212,   342,   285,   510,   512,   366,   513,   516,   517,   525,
-     331,   531,   260,   532,   533,   275,   332,   534,   535,   538,
-     536,   367,   227,   263,   228,   537,   287,   539,   141,   540,
-     264,   541,   542,   543,   229,   544,   325,   292,   545,   546,
-     555,   343,   230,   547,   293,   231,   548,   549,   232,   233,
-     124,   125,   234,   235,   550,   236,   551,   552,   553,   554,
-     237,   368,   556,   238,   561,   558,   239,   240,   241,   557,
-     242,   243,   559,   244,   245,   747,  1148,   560,   255,   269,
-     748,   749,   750,   751,   752,   753,   754,   755,   756,   757,
-     758,   759,   760,   761,   762,   763,   764,   765,   562,   351,
-     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
-     362,   363,   563,   564,   565,   566,   567,   568,   364,   365,
-     569,   570,   571,   572,   573,   574,   304,   575,   576,   577,
-     579,   580,   581,   142,   578,   204,   582,   583,   584,   733,
-     586,   585,   588,   141,   589,   590,   593,   739,   591,   594,
-     595,   211,   596,   597,   598,   599,   600,   601,   602,   604,
-     606,    90,    91,    92,    93,    94,   607,   608,   609,   850,
-     860,   610,   366,   611,   612,   613,   615,   616,   617,   618,
-     619,   620,   621,   623,   627,   856,   861,   871,   367,   624,
-     625,   212,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   628,   631,   630,   632,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   633,   634,   635,   637,   122,
-     304,   636,   638,   641,   639,   857,   862,   872,   368,   642,
-     640,   141,   124,   125,   643,   218,   644,   126,   646,   647,
-     649,   654,   650,   655,   220,   651,   652,   221,   653,   656,
-     657,   658,   659,   660,   667,   222,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,   669,
-     668,   670,   671,   672,   675,   681,    30,   682,   683,   684,
-     690,   691,   685,   686,   687,   688,   689,   692,   693,   701,
-     702,   703,   704,   705,   706,   708,   709,   710,   738,   712,
-     137,   138,   790,   794,   713,   714,   798,   802,   743,   806,
-     822,   825,   715,   829,   880,   884,   903,   904,   905,   716,
-     717,   718,   906,   907,   912,   141,   913,   719,   914,   720,
-     915,   916,   917,   721,   722,   922,   923,   723,   925,   926,
-     928,   724,   929,   931,   932,   935,   934,   725,   727,   728,
-     729,   735,   942,   943,   945,   736,   737,   946,   974,   947,
-     948,   949,   950,   951,   952,   955,   956,   957,   964,   966,
-     979,   990,   978,   989,   983,   982,   981,   985,   986,   987,
-     988,   991,   992,   993,   994,   995,   996,   997,   998,  1002,
-    1086,   999,  1087,  1000,  1001,  1003,  1075,  1076,  1077,  1078,
-    1079,  1080,  1090,  1092,  1082,  1108,  1083,   223,  1084,  1089,
-     310,  1091,  1107,   329,   311,  1111,  1013,   330,  1039,   262,
-    1036,  1055,  1127,   259,   284,  1056,   324,   346,  1047,   342,
-    1112,  1128,  1045,  1061,   224,  1118,   291,  1059,   331,   257,
-     286,   850,  1057,  1014,   332,   860,   225,  1119,  1044,   261,
-     226,  1120,  1121,  1058,  1097,  1015,   285,   856,  1098,  1016,
-     267,   861,   268,   260,  1132,  1133,   325,   871,  1134,   343,
-    1099,  1122,  1046,   227,   263,   228,   274,  1060,  1123,  1135,
-     287,   264,  1017,  1048,  1018,   229,  1142,  1124,  1062,  1150,
-    1049,   292,   270,   230,  1019,  1063,   231,   857,   293,   232,
-     233,   862,  1020,   234,   235,  1021,   236,   872,  1022,  1023,
-    1100,   237,  1024,  1025,   238,  1026,   275,   239,   240,   241,
-    1027,   242,   243,  1028,   244,   245,  1029,  1030,  1031,   255,
-    1032,  1033,  1153,  1034,  1035,  1137,  1040,  1138,  1041,  1139,
-    1155,  1146,  1158,   726,  1154,  1151,  1160,  1180,  1181,  1182,
-    1186,  1190,   740,   587,   734,   742,   592,   984,   892,  1004,
-    1006,  1157,  1159,  1052,  1074,  1085,  1073,   629,  1081,  1188,
-    1187,  1008,  1007,  1149,  1051,  1189,  1010,  1192,   622,  1193,
-     269,  1012,  1009,   603,   626,  1072,  1011,  1071,  1109,  1110,
-    1140,   889,  1070,   614,  1152,  1088,   879,  1093,   645,   648,
-    1178,  1156,  1106,   741,  1191,     0,     0,     0,     0,     0,
-       0,     0,  1013,     0,  1039,     0,  1036,  1055,     0,     0,
-       0,  1056,     0,     0,  1047,     0,     0,  1097,  1045,  1061,
-       0,  1098,     0,  1059,     0,     0,     0,     0,  1057,  1014,
-       0,     0,     0,  1099,  1044,     0,     0,     0,     0,  1058,
-     605,  1015,     0,     0,     0,  1016,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  1046,     0,
-       0,     0,     0,  1060,     0,     0,     0,     0,  1017,  1048,
-    1018,     0,     0,  1100,  1062,     0,  1049,     0,     0,     0,
-    1019,  1063,     0,     0,     0,     0,     0,     0,  1020,     0,
-       0,  1021,     0,     0,  1022,  1023,     0,     0,  1024,  1025,
-       0,  1026,     0,     0,     0,     0,  1027,     0,     0,  1028,
-       0,     0,  1029,  1030,  1031,     0,  1032,  1033,     0,  1034,
-    1035,     0,  1040,     0,  1041
+     143,   206,   225,   270,   287,   271,   313,   332,   349,   369,
+     314,   333,    78,   794,   265,  1043,   294,   213,   262,   277,
+     289,  1044,   327,   345,   712,   370,   305,  1056,   735,   226,
+     716,    28,   334,    81,   260,   273,   288,    84,   335,   347,
+     348,   227,   678,    40,   264,   228,    29,   122,    30,   941,
+      31,   534,   942,   397,   307,   347,   348,   214,   263,   278,
+     290,    42,   328,   346,    44,   371,   125,   126,   229,   266,
+     230,   295,   666,   667,   668,   669,   267,    46,   296,    48,
+     231,    50,   202,   203,   125,   126,   204,   459,   232,   205,
+     944,   233,   460,   945,   234,   235,    52,   465,   236,   237,
+     678,   238,   466,   477,   670,   142,   239,   395,   478,   240,
+     480,    54,   241,   242,   243,   481,   244,   245,    56,   246,
+     247,   509,   977,   272,   248,   978,   510,   258,    58,   872,
+     873,   874,   526,    86,   530,    60,    87,   527,  1100,   531,
+    1101,  1102,    62,  1170,   123,    88,  1171,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,   269,   125,   126,   142,
+     398,   125,   126,   459,   396,   125,   126,   399,   898,   222,
+     736,   401,   223,   530,   389,   390,   405,   875,   899,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   863,   864,  1172,   122,   123,  1173,  1174,
+    1175,  1176,  1043,    92,    93,    94,   490,   124,  1044,   406,
+     125,   126,   465,   902,  1056,   127,   407,   900,   903,   414,
+     128,   129,    32,    33,    34,    35,   130,   415,   923,   923,
+      92,    93,    94,   924,   925,   416,   131,   125,   126,   132,
+     142,   700,   701,   417,   142,   958,   133,   134,   142,   418,
+     959,   135,   963,   491,   136,   419,   967,   964,   137,   420,
+     123,   968,   815,   816,   817,   818,  1010,   819,   681,   682,
+     683,   684,   421,   125,   126,   852,   853,   854,   138,   139,
+     140,   141,   703,   704,   279,   422,   122,   123,   307,   423,
+     280,   281,   282,   283,   284,   285,   424,   286,   286,   893,
+     125,   126,   426,   142,   427,   428,   307,   329,   308,   309,
+     330,   331,   973,  1059,  1060,   526,   923,   974,   125,   126,
+     975,  1131,    90,    91,    92,    93,    94,   477,  1135,   492,
+     142,   429,  1132,  1136,   532,   533,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,  1119,
+    1120,  1121,  1122,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   430,   434,   435,   142,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   436,   215,   216,   217,
+     509,   123,   143,   449,  1150,  1142,   480,   501,   206,  1151,
+     456,  1153,   218,   142,   125,   126,   219,   220,   221,   127,
+     225,   458,  1190,   270,   213,   271,   222,  1191,   464,   223,
+     130,   142,   265,   473,   287,   495,   262,   224,   499,   277,
+     500,   503,   504,   505,   313,   511,   294,   226,   314,   332,
+     289,   506,   260,   333,   514,   273,   516,   517,   520,   227,
+     327,   521,   264,   228,   214,   345,   288,   529,   535,   369,
+     536,   537,   538,   539,   334,   540,   263,   541,   542,   278,
+     335,   543,   138,   139,   544,   370,   229,   266,   230,   545,
+     290,   546,   547,   553,   267,   548,   549,   559,   231,   550,
+     328,   295,   551,   552,   565,   346,   232,   142,   296,   233,
+     554,   557,   234,   235,   566,   555,   236,   237,   556,   238,
+     558,   562,   560,   561,   239,   371,   306,   240,   567,   563,
+     241,   242,   243,   564,   244,   245,   568,   246,   247,   571,
+     569,   572,   248,   272,   570,   258,  1154,   752,   573,   574,
+     575,   576,   753,   754,   755,   756,   757,   758,   759,   760,
+     761,   762,   763,   764,   765,   766,   767,   768,   769,   770,
+     838,   839,   840,   841,   842,   843,   577,   578,   307,   579,
+     308,   309,   580,   581,   310,   311,   312,   583,   582,   584,
+     125,   126,   585,   586,   587,   588,   589,   591,   143,   307,
+     206,   590,   593,   594,   596,   595,   598,   599,   600,   601,
+     602,   603,   744,   604,   605,   606,   213,   607,   609,   611,
+     612,   613,   614,   615,   616,   617,    90,    91,    92,    93,
+      94,   618,   620,   621,   855,   865,   622,   369,   623,   624,
+     625,   626,   628,   629,   632,   630,   633,   636,   637,   635,
+     861,   866,   876,   370,   638,   639,   214,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   640,   641,   642,
+     643,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   125,   126,   142,   644,   123,   307,   646,   645,   647,
+     862,   867,   877,   371,   648,   649,   651,   652,   125,   126,
+     654,   220,   655,   127,   142,   656,   657,   658,   659,   660,
+     222,   661,   662,   223,   663,   664,   665,   672,   673,   674,
+     675,   224,   676,   677,   680,   686,    30,   687,   688,   689,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
+     364,   365,   366,   690,   691,   692,   693,   694,   695,   367,
+     368,   696,   697,   698,   706,   707,   708,   709,   710,   711,
+     713,   714,   715,   743,   795,   717,   138,   139,   718,   748,
+     799,   719,   720,   721,   142,   803,   807,   722,   723,   811,
+     827,   830,   834,   885,   889,   724,   725,   726,   727,   908,
+     909,   142,   738,   910,   911,   912,   917,   918,   919,   728,
+     729,   920,   921,   730,   922,   927,   928,   930,   931,   934,
+     933,   937,   940,   732,   733,   734,   740,   741,   936,   939,
+     947,   742,   948,   950,   951,   994,   952,   953,   954,   955,
+     956,   957,   960,   961,   962,   969,   971,   979,   984,   983,
+     988,   995,   986,   987,   990,   991,   992,   993,   996,   997,
+     998,   999,  1000,  1001,  1002,  1003,  1004,  1092,  1093,  1005,
+    1006,  1096,  1008,  1007,  1081,  1082,  1083,  1084,  1085,  1086,
+    1089,  1098,   225,  1088,  1090,   313,  1097,  1113,   332,   314,
+    1095,  1018,   333,  1045,   265,  1042,  1061,  1114,   262,   287,
+    1062,   327,   349,  1053,   345,  1117,  1133,  1051,  1067,   226,
+    1118,   294,  1065,   334,   260,   289,   855,  1063,  1019,   335,
+     865,   227,  1124,  1050,   264,   228,  1125,  1126,  1064,  1103,
+    1020,   288,   861,  1104,  1021,   270,   866,   271,   263,  1134,
+    1138,   328,   876,  1127,   346,  1105,  1139,  1052,   229,   266,
+     230,   277,  1066,  1140,  1128,   290,   267,  1022,  1054,  1023,
+     231,  1129,  1130,  1068,  1141,  1055,   295,   273,   232,  1024,
+    1069,   233,   862,   296,   234,   235,   867,  1025,   236,   237,
+    1026,   238,   877,  1027,  1028,  1106,   239,  1029,  1030,   240,
+    1031,   278,   241,   242,   243,  1032,   244,   245,  1033,   246,
+     247,  1034,  1035,  1036,   248,  1037,  1038,   258,  1039,  1040,
+    1148,  1046,  1143,  1041,  1156,  1159,  1047,  1144,  1161,  1145,
+    1164,  1152,  1186,  1166,  1187,  1188,  1192,  1196,   731,   745,
+     592,   739,   747,   597,   989,  1009,  1011,   897,  1058,  1091,
+    1080,  1160,  1157,  1087,  1079,  1163,  1165,   634,  1013,   608,
+    1193,  1012,  1155,  1194,  1195,   272,  1198,  1199,  1057,  1015,
+    1014,   627,  1115,  1017,  1016,   631,  1146,  1078,  1116,  1077,
+    1094,   619,   894,  1158,  1076,  1099,   884,   650,   746,   653,
+    1184,  1162,  1112,  1197,     0,     0,     0,     0,  1018,     0,
+    1045,     0,  1042,  1061,     0,     0,     0,  1062,     0,     0,
+    1053,     0,     0,  1103,  1051,  1067,     0,  1104,     0,  1065,
+       0,     0,     0,     0,  1063,  1019,     0,     0,     0,  1105,
+    1050,     0,   610,     0,     0,  1064,     0,  1020,     0,     0,
+       0,  1021,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1052,     0,     0,     0,     0,  1066,
+       0,     0,     0,     0,  1022,  1054,  1023,     0,     0,  1106,
+    1068,     0,  1055,     0,     0,     0,  1024,  1069,     0,     0,
+       0,     0,     0,     0,  1025,     0,     0,  1026,     0,     0,
+    1027,  1028,     0,     0,  1029,  1030,     0,  1031,     0,     0,
+       0,     0,  1032,     0,     0,  1033,     0,     0,  1034,  1035,
+    1036,     0,  1037,  1038,     0,  1039,  1040,     0,  1046,     0,
+    1041,     0,     0,  1047
   };
 
-  const short
+  const short int
   Dhcp4Parser::yycheck_[] =
   {
       67,    68,    69,    70,    71,    70,    73,    74,    75,    76,
-      73,    74,    64,   658,    69,   600,    71,    68,    69,    70,
-      71,   606,    73,    74,   933,    76,    72,   933,   933,    69,
-     124,   125,    74,     0,    69,    70,    71,     3,    74,    84,
-       6,    69,   570,     7,    69,    69,     5,   190,     7,    18,
-       9,    96,    97,    98,    12,    13,     7,    68,    69,    70,
-      71,     7,    73,    74,   109,    76,     7,   112,    69,    69,
-      69,    71,     3,     7,   124,   125,    69,     8,    71,   170,
-      69,     3,   173,   174,   175,   176,     8,     3,    69,     7,
-      34,    69,     8,     7,    69,    69,   190,     3,    69,    69,
-     628,    69,     8,    15,    16,     3,    69,    19,     6,    69,
-      22,    10,    69,    69,    69,    11,    69,    69,    14,    69,
-      69,     3,     3,    70,    69,     6,     8,    23,     7,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,     7,     3,
-       7,    85,     6,    87,    88,   190,     3,    91,    92,    93,
-      83,     8,     7,    97,    98,    97,    98,   161,   162,   163,
-     164,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,     6,    97,    98,    83,    84,   193,
-     159,     3,     3,   135,   136,   137,     8,     8,    94,     3,
-       3,    97,    98,     3,     8,     8,   102,     3,     8,    17,
-      18,   107,   108,     3,    97,    98,     3,   113,     8,     8,
-    1129,     8,     7,  1129,  1129,    20,    21,   123,   121,   122,
-     126,   190,   191,   192,   193,     3,     3,   133,   134,     3,
-       8,     8,   138,     4,     8,   141,   190,     3,   190,   145,
-      26,    27,    28,    29,    30,     8,   139,   140,     4,    28,
-      29,    30,    85,    86,    87,    88,    89,    90,     3,   165,
-     166,   167,   168,     8,    97,    98,   921,     4,   190,    85,
-       4,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    97,    98,     4,   190,    71,    72,    73,    74,    75,
-      76,    77,    78,     4,    80,    81,    82,   190,    84,    97,
-      98,   103,   104,   105,   106,    84,    28,    29,    30,    95,
-       4,    97,    98,    99,   100,   101,   102,     3,    97,    98,
-       3,     8,     8,   109,     4,     8,   112,   113,     3,   108,
-       4,   393,   394,     8,   120,   114,   115,   116,   117,   118,
-     119,     4,   121,     4,   142,   143,   144,   127,   128,   129,
-     130,   131,   132,   169,     3,   171,   172,   190,     4,     8,
-       4,    83,    84,    85,   114,   115,   116,   117,     3,   119,
-       4,     4,     3,     8,   190,    97,    98,     8,   455,   165,
-     166,     3,     3,     3,   461,     8,     8,     8,   110,   111,
-       4,     4,   190,     4,     4,     4,   473,   190,     4,   476,
-     461,   476,     4,     4,   190,     4,     4,     4,   473,     4,
-     487,   190,   473,     4,     4,   476,    35,    36,    37,    38,
-     497,     8,   487,   473,   497,   502,   487,     3,   473,   502,
-       4,   476,     4,     8,     3,   473,   497,     4,   473,   473,
-     461,   502,   487,     4,     4,   522,     4,     4,     4,     4,
-     502,     4,   473,     4,     4,   476,   502,     4,   193,     4,
-     193,   522,   473,   473,   473,   193,   487,     4,   190,     4,
-     473,     4,     4,     4,   473,   191,   497,   487,   191,   191,
-       4,   502,   473,   191,   487,   473,   191,   193,   473,   473,
-      97,    98,   473,   473,   192,   473,   192,   192,   191,   191,
-     473,   522,   191,   473,     4,   193,   473,   473,   473,   191,
-     473,   473,   193,   473,   473,    34,  1111,   193,   473,   476,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     4,   146,
+      73,    74,    64,   663,    69,   938,    71,    68,    69,    70,
+      71,   938,    73,    74,   605,    76,    72,   938,    18,    69,
+     611,     0,    74,   191,    69,    70,    71,    10,    74,   125,
+     126,    69,   575,     7,    69,    69,     5,    84,     7,     3,
+       9,   191,     6,     4,    86,   125,   126,    68,    69,    70,
+      71,     7,    73,    74,     7,    76,    98,    99,    69,    69,
+      69,    71,   162,   163,   164,   165,    69,     7,    71,     7,
+      69,     7,    15,    16,    98,    99,    19,     3,    69,    22,
+       3,    69,     8,     6,    69,    69,     7,     3,    69,    69,
+     633,    69,     8,     3,   194,   191,    69,     6,     8,    69,
+       3,     7,    69,    69,    69,     8,    69,    69,     7,    69,
+      69,     3,     3,    70,    69,     6,     8,    69,     7,   143,
+     144,   145,     3,    11,     3,     7,    14,     8,   170,     8,
+     172,   173,     7,     3,    85,    23,     6,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    97,    98,    99,   191,
+       8,    98,    99,     3,     3,    98,    99,     3,     8,   110,
+     160,     8,   113,     3,    12,    13,     4,   191,     8,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,   140,   141,   171,    84,    85,   174,   175,
+     176,   177,  1135,    28,    29,    30,     8,    95,  1135,     4,
+      98,    99,     3,     3,  1135,   103,     4,     8,     8,     4,
+     108,   109,   191,   192,   193,   194,   114,     4,     3,     3,
+      28,    29,    30,     8,     8,     4,   124,    98,    99,   127,
+     191,    17,    18,     4,   191,     3,   134,   135,   191,     4,
+       8,   139,     3,     3,   142,     4,     3,     8,   146,     4,
+      85,     8,   115,   116,   117,   118,   926,   120,   104,   105,
+     106,   107,     4,    98,    99,   136,   137,   138,   166,   167,
+     168,   169,    20,    21,   109,     4,    84,    85,    86,     4,
+     115,   116,   117,   118,   119,   120,     4,   122,   122,   123,
+      98,    99,     4,   191,     4,     4,    86,    87,    88,    89,
+      90,    91,     3,   111,   112,     3,     3,     8,    98,    99,
+       8,     8,    26,    27,    28,    29,    30,     3,     3,     8,
+     191,     4,     8,     8,   396,   397,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,    35,
+      36,    37,    38,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,     4,     4,     4,   191,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,     4,    81,    82,    83,
+       3,    85,   459,     4,     3,     8,     3,     3,   465,     8,
+       4,     8,    96,   191,    98,    99,   100,   101,   102,   103,
+     477,     4,     3,   480,   465,   480,   110,     8,     4,   113,
+     114,   191,   477,     4,   491,     4,   477,   121,     4,   480,
+       8,     4,     4,     8,   501,     4,   491,   477,   501,   506,
+     491,     3,   477,   506,     4,   480,     4,     4,     4,   477,
+     501,     4,   477,   477,   465,   506,   491,     4,     4,   526,
+       4,     4,     4,   194,   506,   194,   477,   194,     4,   480,
+     506,     4,   166,   167,     4,   526,   477,   477,   477,     4,
+     491,     4,     4,   194,   477,   192,   192,     4,   477,   192,
+     501,   491,   192,   192,     4,   506,   477,   191,   491,   477,
+     193,   192,   477,   477,     4,   193,   477,   477,   193,   477,
+     192,   194,   192,   192,   477,   526,    34,   477,     4,   194,
+     477,   477,   477,   194,   477,   477,   194,   477,   477,     4,
+     194,     4,   477,   480,   194,   477,  1117,    34,     4,     4,
+       4,     4,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+     128,   129,   130,   131,   132,   133,     4,     4,    86,     4,
+      88,    89,     4,     4,    92,    93,    94,   192,     4,     4,
+      98,    99,     4,     4,     4,     4,     4,     4,   655,    86,
+     657,   194,     4,     4,   194,     4,     4,     4,     4,     4,
+       4,     4,   654,   192,     4,     4,   657,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,    26,    27,    28,    29,
+      30,     4,     4,     4,   691,   692,   192,   694,     4,     4,
+       4,   194,     4,   194,     4,   194,     4,     4,     4,   194,
+     691,   692,   693,   694,   192,     4,   657,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,   192,   192,     4,
+       4,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    98,    99,   191,   194,    85,    86,     4,   194,     4,
+     691,   692,   693,   694,     4,     4,     4,   192,    98,    99,
+       4,   101,     7,   103,   191,     7,     7,     7,   191,   191,
+     110,   191,     7,   113,     7,     5,   191,   191,   191,     5,
+       5,   121,     5,     5,   191,     5,     7,     5,     5,     5,
      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,     4,   193,   193,     4,     4,     4,   165,   166,
-       4,     4,     4,     4,     4,     4,    85,     4,     4,     4,
-       4,     4,     4,   650,   191,   652,     4,     4,     4,   160,
-       4,   193,     4,   190,     4,     4,     4,   649,   193,     4,
-       4,   652,     4,     4,     4,   191,     4,     4,     4,     4,
-       4,    26,    27,    28,    29,    30,     4,     4,     4,   686,
-     687,     4,   689,     4,     4,     4,     4,     4,   191,     4,
-       4,     4,   193,     4,     4,   686,   687,   688,   689,   193,
-     193,   652,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,     4,     4,   193,     4,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,   191,     4,   191,     4,    84,
-      85,   191,     4,     4,   193,   686,   687,   688,   689,     4,
-     193,   190,    97,    98,     4,   100,     4,   102,     4,   191,
-       4,   190,     7,   190,   109,     7,     7,   112,     7,   190,
-       7,     7,     5,   190,   190,   120,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,     5,
-     190,     5,     5,     5,   190,     5,     7,     5,     5,     5,
-     190,   190,     7,     7,     7,     7,     7,     5,     5,   190,
-     190,   190,     5,   190,   190,   190,     7,   190,     5,   190,
-     165,   166,     7,     7,   190,   190,     7,     7,    24,     7,
-       7,     7,   190,     7,     7,     7,     4,     4,     4,   190,
-     190,   190,     4,     4,     4,   190,     4,   190,     4,   190,
-       4,     4,     4,   190,   190,     6,     3,   190,     6,     3,
-       6,   190,     3,     6,     3,     3,     6,   190,   190,   190,
-     190,   190,     6,     3,     6,   190,   190,     3,   190,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       3,   193,     6,   191,     4,     6,     8,     4,     4,     4,
-       4,   191,   193,   191,     4,     4,     4,     4,   191,   193,
-       4,   191,     4,   191,   191,   191,   191,   191,   191,   191,
-     191,   191,     4,     4,   193,     3,   191,   924,   191,   193,
-     927,   191,     6,   930,   927,     4,   933,   930,   933,   924,
-     933,   938,     8,   924,   941,   938,   927,   944,   933,   930,
-     190,     8,   933,   938,   924,   190,   941,   938,   930,   924,
-     941,   958,   938,   933,   930,   962,   924,   190,   933,   924,
-     924,   190,   190,   938,   971,   933,   941,   958,   971,   933,
-     977,   962,   977,   924,     4,     8,   927,   968,     3,   930,
-     971,   190,   933,   924,   924,   924,   977,   938,   190,     8,
-     941,   924,   933,   933,   933,   924,     4,   190,   938,     4,
-     933,   941,   977,   924,   933,   938,   924,   958,   941,   924,
-     924,   962,   933,   924,   924,   933,   924,   968,   933,   933,
-     971,   924,   933,   933,   924,   933,   977,   924,   924,   924,
-     933,   924,   924,   933,   924,   924,   933,   933,   933,   924,
-     933,   933,     4,   933,   933,   190,   933,   190,   933,   190,
-       4,   190,     5,   628,   191,   193,     7,     4,     4,     4,
-       4,     4,   650,   455,   641,   652,   461,   897,   738,   918,
-     923,   190,   190,   936,   946,   958,   944,   505,   953,   191,
-     193,   926,   924,  1129,   935,   191,   929,   190,   497,   190,
-     977,   932,   927,   473,   502,   943,   930,   941,   977,   979,
-    1092,   709,   939,   487,  1134,   962,   689,   968,   522,   526,
-    1164,  1144,   972,   651,  1184,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1129,    -1,  1129,    -1,  1129,  1134,    -1,    -1,
-      -1,  1134,    -1,    -1,  1129,    -1,    -1,  1144,  1129,  1134,
-      -1,  1144,    -1,  1134,    -1,    -1,    -1,    -1,  1134,  1129,
-      -1,    -1,    -1,  1144,  1129,    -1,    -1,    -1,    -1,  1134,
-     476,  1129,    -1,    -1,    -1,  1129,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1129,    -1,
-      -1,    -1,    -1,  1134,    -1,    -1,    -1,    -1,  1129,  1129,
-    1129,    -1,    -1,  1144,  1134,    -1,  1129,    -1,    -1,    -1,
-    1129,  1134,    -1,    -1,    -1,    -1,    -1,    -1,  1129,    -1,
-      -1,  1129,    -1,    -1,  1129,  1129,    -1,    -1,  1129,  1129,
-      -1,  1129,    -1,    -1,    -1,    -1,  1129,    -1,    -1,  1129,
-      -1,    -1,  1129,  1129,  1129,    -1,  1129,  1129,    -1,  1129,
-    1129,    -1,  1129,    -1,  1129
+     157,   158,   159,     7,     7,     7,     7,     7,   191,   166,
+     167,   191,     5,     5,   191,   191,   191,     5,   191,   191,
+     191,     7,   191,     5,     7,   191,   166,   167,   191,    24,
+       7,   191,   191,   191,   191,     7,     7,   191,   191,     7,
+       7,     7,     7,     7,     7,   191,   191,   191,   191,     4,
+       4,   191,   161,     4,     4,     4,     4,     4,     4,   191,
+     191,     4,     4,   191,     4,     6,     3,     6,     3,     3,
+       6,     3,     3,   191,   191,   191,   191,   191,     6,     6,
+       6,   191,     3,     6,     3,   192,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   191,     3,     6,
+       4,   194,     8,     6,     4,     4,     4,     4,   192,   194,
+     192,     4,     4,     4,     4,   192,   192,     4,     4,   192,
+     192,     4,   192,   194,   192,   192,   192,   192,   192,   192,
+     192,     4,   929,   194,   192,   932,   192,     6,   935,   932,
+     194,   938,   935,   938,   929,   938,   943,     3,   929,   946,
+     943,   932,   949,   938,   935,     4,     8,   938,   943,   929,
+     191,   946,   943,   935,   929,   946,   963,   943,   938,   935,
+     967,   929,   191,   938,   929,   929,   191,   191,   943,   976,
+     938,   946,   963,   976,   938,   982,   967,   982,   929,     8,
+       4,   932,   973,   191,   935,   976,     8,   938,   929,   929,
+     929,   982,   943,     3,   191,   946,   929,   938,   938,   938,
+     929,   191,   191,   943,     8,   938,   946,   982,   929,   938,
+     943,   929,   963,   946,   929,   929,   967,   938,   929,   929,
+     938,   929,   973,   938,   938,   976,   929,   938,   938,   929,
+     938,   982,   929,   929,   929,   938,   929,   929,   938,   929,
+     929,   938,   938,   938,   929,   938,   938,   929,   938,   938,
+       4,   938,   191,   938,     4,     4,   938,   191,     4,   191,
+       5,   191,     4,     7,     4,     4,     4,     4,   633,   655,
+     459,   646,   657,   465,   902,   923,   928,   743,   941,   963,
+     951,   192,   194,   958,   949,   191,   191,   509,   931,   477,
+     194,   929,  1135,   192,   192,   982,   191,   191,   940,   934,
+     932,   501,   982,   937,   935,   506,  1098,   948,   984,   946,
+     967,   491,   714,  1140,   944,   973,   694,   526,   656,   530,
+    1170,  1150,   977,  1190,    -1,    -1,    -1,    -1,  1135,    -1,
+    1135,    -1,  1135,  1140,    -1,    -1,    -1,  1140,    -1,    -1,
+    1135,    -1,    -1,  1150,  1135,  1140,    -1,  1150,    -1,  1140,
+      -1,    -1,    -1,    -1,  1140,  1135,    -1,    -1,    -1,  1150,
+    1135,    -1,   480,    -1,    -1,  1140,    -1,  1135,    -1,    -1,
+      -1,  1135,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1135,    -1,    -1,    -1,    -1,  1140,
+      -1,    -1,    -1,    -1,  1135,  1135,  1135,    -1,    -1,  1150,
+    1140,    -1,  1135,    -1,    -1,    -1,  1135,  1140,    -1,    -1,
+      -1,    -1,    -1,    -1,  1135,    -1,    -1,  1135,    -1,    -1,
+    1135,  1135,    -1,    -1,  1135,  1135,    -1,  1135,    -1,    -1,
+      -1,    -1,  1135,    -1,    -1,  1135,    -1,    -1,  1135,  1135,
+    1135,    -1,  1135,  1135,    -1,  1135,  1135,    -1,  1135,    -1,
+    1135,    -1,    -1,  1135
   };
 
-  const short
+  const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,     0,     5,
-       7,     9,   190,   191,   192,   193,   209,   210,   211,   216,
-       7,   225,     7,   229,     7,   272,     7,   377,     7,   457,
-       7,   473,     7,   409,     7,   415,     7,   439,     7,   353,
-       7,   538,     7,   569,   217,   212,   226,   230,   273,   378,
-     458,   474,   410,   416,   440,   354,   539,   570,   209,   218,
-     219,   190,   214,   215,    10,   227,    11,    14,    23,    25,
+       0,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,     0,     5,
+       7,     9,   191,   192,   193,   194,   210,   211,   212,   217,
+       7,   226,     7,   230,     7,   274,     7,   379,     7,   459,
+       7,   475,     7,   411,     7,   417,     7,   441,     7,   355,
+       7,   540,     7,   571,   218,   213,   227,   231,   275,   380,
+     460,   476,   412,   418,   442,   356,   541,   572,   210,   219,
+     220,   191,   215,   216,    10,   228,    11,    14,    23,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    83,    84,    94,    97,    98,   102,   107,   108,   113,
-     123,   126,   133,   134,   138,   141,   145,   165,   166,   167,
-     168,   190,   224,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   246,   247,   248,
-     249,   250,   251,   252,   255,   257,   259,   260,   262,   264,
-     265,   266,   267,   268,   283,   285,   291,   293,   331,   340,
-     347,   361,   371,   395,   399,   407,   433,   463,   465,   467,
-     478,   480,   482,   505,   517,   518,   526,   536,   567,   576,
-      15,    16,    19,    22,   224,   270,   271,   274,   276,   279,
-     282,   463,   465,    80,    81,    82,    95,    99,   100,   101,
-     109,   112,   120,   224,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   247,   248,   249,   250,   251,   252,
-     255,   257,   259,   260,   262,   264,   379,   380,   381,   383,
-     385,   387,   389,   391,   393,   395,   398,   433,   451,   463,
-     465,   467,   478,   480,   482,   502,    96,   224,   391,   393,
-     433,   459,   460,   461,   463,   465,   108,   114,   115,   116,
-     117,   118,   119,   121,   224,   433,   463,   465,   475,   476,
-     477,   478,   480,   482,   484,   488,   490,   492,   494,   496,
-     498,   500,   407,    34,    85,    87,    88,    91,    92,    93,
-     224,   311,   417,   418,   419,   420,   421,   422,   423,   425,
-     427,   429,   430,   432,   463,   465,    86,    89,    90,   224,
-     311,   421,   427,   441,   442,   443,   444,   445,   447,   448,
-     449,   450,   463,   465,   124,   125,   224,   355,   356,   357,
-     359,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   165,   166,   224,   463,   465,   540,
-     541,   542,   543,   545,   546,   548,   549,   550,   553,   555,
-     557,   558,   559,   561,   563,   565,    12,    13,   571,   572,
-     573,   575,     6,     3,     4,     8,     3,   228,     8,   568,
-     269,   286,     4,     4,     4,   479,   481,   483,   284,   292,
-     294,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   245,     4,     4,     4,     4,     4,   253,   256,
-     258,     4,     4,   372,   408,   434,   400,   464,   466,   396,
-     332,   506,   468,   348,   362,     4,   341,   519,   527,   537,
-     261,   263,     4,   577,     4,     3,     8,   275,   277,   280,
-       4,     3,     8,   384,   386,   388,   452,   382,   390,     4,
-     394,   392,   503,     3,     8,   462,     3,     8,   501,   489,
-     491,   495,   493,   499,   497,   485,     8,     3,     8,   424,
-     312,     4,   428,   426,   431,     4,     8,     3,   446,     4,
-       4,     8,     3,   358,   360,     3,     8,     4,   556,   544,
-       4,   547,     4,     4,   551,   554,     4,     4,   560,   562,
-     564,   566,     3,     8,   574,     4,     3,     8,   209,   209,
-     190,     4,     4,     4,     4,   193,   193,   193,     4,     4,
-       4,     4,     4,     4,   191,   191,   191,   191,   191,   193,
-     192,   192,   192,   191,   191,     4,   191,   191,   193,   193,
-     193,     4,     4,     4,   193,   193,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   191,     4,
-       4,     4,     4,     4,     4,   193,     4,   232,     4,     4,
-       4,   193,   271,     4,     4,     4,     4,     4,     4,   191,
-       4,     4,     4,   380,     4,   460,     4,     4,     4,     4,
-       4,     4,     4,     4,   477,     4,     4,   191,     4,     4,
-       4,   193,   419,     4,   193,   193,   443,     4,     4,   356,
-     193,     4,     4,   191,     4,   191,   191,     4,     4,   193,
-     193,     4,     4,     4,     4,   541,     4,   191,   572,     4,
-       7,     7,     7,     7,   190,   190,   190,     7,     7,     5,
-     190,   161,   162,   163,   164,   193,   254,   190,   190,     5,
-       5,     5,     5,   211,   213,   190,   103,   104,   105,   106,
-     397,     5,     5,     5,     5,     7,     7,     7,     7,     7,
-     190,   190,     5,     5,   220,    17,    18,   278,    20,    21,
-     281,   190,   190,   190,     5,   190,   190,   220,   190,     7,
-     190,   220,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   213,   190,   190,   190,
-      18,   159,   552,   160,   254,   190,   190,   190,     5,   209,
-     231,   571,   270,    24,   287,   288,   289,    34,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,   224,   299,   300,   301,
-     304,   306,   308,   310,   311,   313,   314,   315,   316,   317,
-     318,   319,   320,   322,   324,   326,   328,   329,   330,   299,
-       7,   295,   296,   297,     7,   373,   374,   375,     7,   411,
-     412,   413,     7,   435,   436,   437,     7,   401,   402,   403,
-     114,   115,   116,   117,   119,   333,   334,   335,   336,   337,
-     338,   339,     7,   507,   508,     7,   469,   470,   471,     7,
-     349,   350,   351,   127,   128,   129,   130,   131,   132,   363,
-     364,   365,   366,   367,   368,   369,   370,   135,   136,   137,
-     224,   342,   343,   344,   345,   346,   463,   465,   139,   140,
-     224,   463,   465,   520,   521,   522,   524,   142,   143,   144,
-     190,   463,   465,   528,   529,   530,   531,   533,   534,   540,
-       7,   578,   579,   221,     7,   453,   454,   455,   122,   484,
-     486,   504,   295,     8,     8,     8,   290,     3,     8,   302,
-     305,   307,   309,     4,     4,     4,     4,     4,   321,   323,
-     325,   327,     4,     4,     4,     4,     4,     4,     3,     8,
-       8,   298,     6,     3,   376,     6,     3,   414,     6,     3,
-     438,     6,     3,   404,     6,     3,     3,     6,   509,     3,
-       6,   472,     6,     3,   352,     6,     3,     4,     4,     4,
-       4,     4,     4,     3,     8,     4,     4,     4,     3,     8,
-     523,   525,     3,     8,     4,   532,     4,   535,     3,     8,
-       8,   580,     3,     6,   190,   222,   223,   456,     6,     3,
-     487,     8,     6,     4,   288,     4,     4,     4,     4,   191,
-     193,   191,   193,   191,     4,     4,     4,     4,   191,   191,
-     191,   191,   193,   191,   300,   299,   297,   379,   375,   417,
-     413,   441,   437,   224,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   247,   248,   249,   250,   251,   252,
-     255,   257,   259,   260,   262,   264,   311,   371,   389,   391,
-     393,   395,   405,   406,   433,   463,   465,   478,   480,   482,
-     502,   403,   334,   110,   111,   224,   311,   407,   433,   463,
-     465,   478,   480,   482,   510,   511,   512,   513,   514,   516,
-     508,   475,   471,   355,   351,   191,   191,   191,   191,   191,
-     191,   364,   193,   191,   191,   343,     4,     4,   521,   193,
-       4,   191,     4,   529,   169,   171,   172,   224,   311,   463,
-     465,   581,   582,   583,   584,   586,   579,     6,     3,   459,
-     455,     4,   190,    35,    36,    37,    38,   303,   190,   190,
-     190,   190,   190,   190,   190,     8,     8,     8,     8,     3,
-       8,   515,     4,     8,     3,     8,     8,   190,   190,   190,
-     209,   587,     4,   585,     3,     8,   190,     8,   220,   406,
-       4,   193,   512,     4,   191,     4,   582,   190,     5,   190,
-       7,   588,   589,   590,     3,     6,   170,   173,   174,   175,
-     176,   591,   592,   593,   595,   596,   597,   598,   589,   594,
-       4,     4,     4,   599,     3,     8,     4,   193,   191,   191,
-       4,   592,   190,   190
+      79,    80,    84,    85,    95,    98,    99,   103,   108,   109,
+     114,   124,   127,   134,   135,   139,   142,   146,   166,   167,
+     168,   169,   191,   225,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   247,   248,
+     249,   250,   251,   252,   253,   256,   258,   260,   261,   262,
+     264,   266,   267,   268,   269,   270,   285,   287,   293,   295,
+     333,   342,   349,   363,   373,   397,   401,   409,   435,   465,
+     467,   469,   480,   482,   484,   507,   519,   520,   528,   538,
+     569,   578,    15,    16,    19,    22,   225,   272,   273,   276,
+     278,   281,   284,   465,   467,    81,    82,    83,    96,   100,
+     101,   102,   110,   113,   121,   225,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   248,   249,   250,   251,
+     252,   253,   256,   258,   260,   261,   262,   264,   266,   381,
+     382,   383,   385,   387,   389,   391,   393,   395,   397,   400,
+     435,   453,   465,   467,   469,   480,   482,   484,   504,    97,
+     225,   393,   395,   435,   461,   462,   463,   465,   467,   109,
+     115,   116,   117,   118,   119,   120,   122,   225,   435,   465,
+     467,   477,   478,   479,   480,   482,   484,   486,   490,   492,
+     494,   496,   498,   500,   502,   409,    34,    86,    88,    89,
+      92,    93,    94,   225,   313,   419,   420,   421,   422,   423,
+     424,   425,   427,   429,   431,   432,   434,   465,   467,    87,
+      90,    91,   225,   313,   423,   429,   443,   444,   445,   446,
+     447,   449,   450,   451,   452,   465,   467,   125,   126,   225,
+     357,   358,   359,   361,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   166,   167,   225,
+     465,   467,   542,   543,   544,   545,   547,   548,   550,   551,
+     552,   555,   557,   559,   560,   561,   563,   565,   567,    12,
+      13,   573,   574,   575,   577,     6,     3,     4,     8,     3,
+     229,     8,   570,   271,   288,     4,     4,     4,   481,   483,
+     485,   286,   294,   296,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   246,     4,     4,     4,     4,
+       4,   254,   257,   259,     4,     4,     4,   374,   410,   436,
+     402,   466,   468,   398,   334,   508,   470,   350,   364,     4,
+     343,   521,   529,   539,   263,   265,     4,   579,     4,     3,
+       8,   277,   279,   282,     4,     3,     8,   386,   388,   390,
+     454,   384,   392,     4,   396,   394,   505,     3,     8,   464,
+       3,     8,   503,   491,   493,   497,   495,   501,   499,   487,
+       8,     3,     8,   426,   314,     4,   430,   428,   433,     4,
+       8,     3,   448,     4,     4,     8,     3,   360,   362,     3,
+       8,     4,   558,   546,     4,   549,     4,     4,   553,   556,
+       4,     4,   562,   564,   566,   568,     3,     8,   576,     4,
+       3,     8,   210,   210,   191,     4,     4,     4,     4,   194,
+     194,   194,     4,     4,     4,     4,     4,     4,   192,   192,
+     192,   192,   192,   194,   193,   193,   193,   192,   192,     4,
+     192,   192,   194,   194,   194,     4,     4,     4,   194,   194,
+     194,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   192,     4,     4,     4,     4,     4,     4,
+     194,     4,   233,     4,     4,     4,   194,   273,     4,     4,
+       4,     4,     4,     4,   192,     4,     4,     4,   382,     4,
+     462,     4,     4,     4,     4,     4,     4,     4,     4,   479,
+       4,     4,   192,     4,     4,     4,   194,   421,     4,   194,
+     194,   445,     4,     4,   358,   194,     4,     4,   192,     4,
+     192,   192,     4,     4,   194,   194,     4,     4,     4,     4,
+     543,     4,   192,   574,     4,     7,     7,     7,     7,   191,
+     191,   191,     7,     7,     5,   191,   162,   163,   164,   165,
+     194,   255,   191,   191,     5,     5,     5,     5,   212,   214,
+     191,   104,   105,   106,   107,   399,     5,     5,     5,     5,
+       7,     7,     7,     7,     7,   191,   191,     5,     5,   221,
+      17,    18,   280,    20,    21,   283,   191,   191,   191,     5,
+     191,   191,   221,   191,     7,   191,   221,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   214,   191,   191,   191,    18,   160,   554,   161,   255,
+     191,   191,   191,     5,   210,   232,   573,   272,    24,   289,
+     290,   291,    34,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,   225,   301,   302,   303,   306,   308,   310,   312,   313,
+     315,   316,   317,   318,   319,   320,   321,   322,   324,   326,
+     328,   330,   331,   332,   301,     7,   297,   298,   299,     7,
+     375,   376,   377,     7,   413,   414,   415,     7,   437,   438,
+     439,     7,   403,   404,   405,   115,   116,   117,   118,   120,
+     335,   336,   337,   338,   339,   340,   341,     7,   509,   510,
+       7,   471,   472,   473,     7,   351,   352,   353,   128,   129,
+     130,   131,   132,   133,   365,   366,   367,   368,   369,   370,
+     371,   372,   136,   137,   138,   225,   344,   345,   346,   347,
+     348,   465,   467,   140,   141,   225,   465,   467,   522,   523,
+     524,   526,   143,   144,   145,   191,   465,   467,   530,   531,
+     532,   533,   535,   536,   542,     7,   580,   581,   222,     7,
+     455,   456,   457,   123,   486,   488,   506,   297,     8,     8,
+       8,   292,     3,     8,   304,   307,   309,   311,     4,     4,
+       4,     4,     4,   323,   325,   327,   329,     4,     4,     4,
+       4,     4,     4,     3,     8,     8,   300,     6,     3,   378,
+       6,     3,   416,     6,     3,   440,     6,     3,   406,     6,
+       3,     3,     6,   511,     3,     6,   474,     6,     3,   354,
+       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
+       4,     4,     4,     3,     8,   525,   527,     3,     8,     4,
+     534,     4,   537,     3,     8,     8,   582,     3,     6,   191,
+     223,   224,   458,     6,     3,   489,     8,     6,     4,   290,
+       4,     4,     4,     4,   192,   194,   192,   194,   192,     4,
+       4,     4,     4,   192,   192,   192,   192,   194,   192,   302,
+     301,   299,   381,   377,   419,   415,   443,   439,   225,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   248,
+     249,   250,   251,   252,   253,   256,   258,   260,   261,   262,
+     264,   266,   313,   373,   391,   393,   395,   397,   407,   408,
+     435,   465,   467,   480,   482,   484,   504,   405,   336,   111,
+     112,   225,   313,   409,   435,   465,   467,   480,   482,   484,
+     512,   513,   514,   515,   516,   518,   510,   477,   473,   357,
+     353,   192,   192,   192,   192,   192,   192,   366,   194,   192,
+     192,   345,     4,     4,   523,   194,     4,   192,     4,   531,
+     170,   172,   173,   225,   313,   465,   467,   583,   584,   585,
+     586,   588,   581,     6,     3,   461,   457,     4,   191,    35,
+      36,    37,    38,   305,   191,   191,   191,   191,   191,   191,
+     191,     8,     8,     8,     8,     3,     8,   517,     4,     8,
+       3,     8,     8,   191,   191,   191,   210,   589,     4,   587,
+       3,     8,   191,     8,   221,   408,     4,   194,   514,     4,
+     192,     4,   584,   191,     5,   191,     7,   590,   591,   592,
+       3,     6,   171,   174,   175,   176,   177,   593,   594,   595,
+     597,   598,   599,   600,   591,   596,     4,     4,     4,   601,
+       3,     8,     4,   194,   192,   192,     4,   594,   191,   191
   };
 
-  const short
+  const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   194,   196,   195,   197,   195,   198,   195,   199,   195,
-     200,   195,   201,   195,   202,   195,   203,   195,   204,   195,
-     205,   195,   206,   195,   207,   195,   208,   195,   209,   209,
-     209,   209,   209,   209,   209,   210,   212,   211,   213,   214,
-     214,   215,   215,   217,   216,   218,   218,   219,   219,   221,
-     220,   222,   222,   223,   223,   224,   226,   225,   228,   227,
-     230,   229,   231,   231,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+       0,   195,   197,   196,   198,   196,   199,   196,   200,   196,
+     201,   196,   202,   196,   203,   196,   204,   196,   205,   196,
+     206,   196,   207,   196,   208,   196,   209,   196,   210,   210,
+     210,   210,   210,   210,   210,   211,   213,   212,   214,   215,
+     215,   216,   216,   218,   217,   219,   219,   220,   220,   222,
+     221,   223,   223,   224,   224,   225,   227,   226,   229,   228,
+     231,   230,   232,   232,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
      233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   245,   244,   246,   247,   248,   249,   250,   251,   253,
-     252,   254,   254,   254,   254,   254,   256,   255,   258,   257,
-     259,   261,   260,   263,   262,   264,   265,   266,   267,   269,
-     268,   270,   270,   271,   271,   271,   271,   271,   271,   271,
-     273,   272,   275,   274,   277,   276,   278,   278,   280,   279,
-     281,   281,   282,   284,   283,   286,   285,   287,   287,   288,
-     290,   289,   292,   291,   294,   293,   295,   295,   296,   296,
-     298,   297,   299,   299,   300,   300,   300,   300,   300,   300,
-     300,   300,   300,   300,   300,   300,   300,   300,   300,   300,
-     300,   300,   300,   300,   300,   302,   301,   303,   303,   303,
-     303,   305,   304,   307,   306,   309,   308,   310,   312,   311,
-     313,   314,   315,   316,   317,   318,   319,   321,   320,   323,
-     322,   325,   324,   327,   326,   328,   329,   330,   332,   331,
-     333,   333,   334,   334,   334,   334,   334,   335,   336,   337,
-     338,   339,   341,   340,   342,   342,   343,   343,   343,   343,
-     343,   343,   344,   345,   346,   348,   347,   349,   349,   350,
-     350,   352,   351,   354,   353,   355,   355,   355,   356,   356,
-     358,   357,   360,   359,   362,   361,   363,   363,   364,   364,
-     364,   364,   364,   364,   365,   366,   367,   368,   369,   370,
-     372,   371,   373,   373,   374,   374,   376,   375,   378,   377,
-     379,   379,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   382,   381,   384,   383,   386,   385,   388,
-     387,   390,   389,   392,   391,   394,   393,   396,   395,   397,
-     397,   397,   397,   398,   400,   399,   401,   401,   402,   402,
-     404,   403,   405,   405,   406,   406,   406,   406,   406,   406,
-     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
-     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
-     406,   406,   406,   406,   406,   406,   406,   406,   406,   406,
-     408,   407,   410,   409,   411,   411,   412,   412,   414,   413,
-     416,   415,   417,   417,   418,   418,   419,   419,   419,   419,
-     419,   419,   419,   419,   419,   419,   420,   421,   422,   424,
-     423,   426,   425,   428,   427,   429,   431,   430,   432,   434,
-     433,   435,   435,   436,   436,   438,   437,   440,   439,   441,
-     441,   442,   442,   443,   443,   443,   443,   443,   443,   443,
-     443,   443,   444,   446,   445,   447,   448,   449,   450,   452,
-     451,   453,   453,   454,   454,   456,   455,   458,   457,   459,
-     459,   460,   460,   460,   460,   460,   460,   460,   462,   461,
-     464,   463,   466,   465,   468,   467,   469,   469,   470,   470,
-     472,   471,   474,   473,   475,   475,   476,   476,   477,   477,
-     477,   477,   477,   477,   477,   477,   477,   477,   477,   477,
-     477,   477,   477,   479,   478,   481,   480,   483,   482,   485,
-     484,   487,   486,   489,   488,   491,   490,   493,   492,   495,
-     494,   497,   496,   499,   498,   501,   500,   503,   502,   504,
-     504,   506,   505,   507,   507,   509,   508,   510,   510,   511,
-     511,   512,   512,   512,   512,   512,   512,   512,   512,   512,
-     512,   512,   513,   515,   514,   516,   517,   519,   518,   520,
-     520,   521,   521,   521,   521,   521,   523,   522,   525,   524,
-     527,   526,   528,   528,   529,   529,   529,   529,   529,   529,
-     530,   532,   531,   533,   535,   534,   537,   536,   539,   538,
-     540,   540,   541,   541,   541,   541,   541,   541,   541,   541,
-     541,   541,   541,   541,   541,   541,   541,   541,   541,   541,
-     542,   544,   543,   545,   547,   546,   548,   549,   551,   550,
-     552,   552,   554,   553,   556,   555,   557,   558,   560,   559,
-     562,   561,   564,   563,   566,   565,   568,   567,   570,   569,
-     571,   571,   572,   572,   574,   573,   575,   577,   576,   578,
-     578,   580,   579,   581,   581,   582,   582,   582,   582,   582,
-     582,   582,   583,   585,   584,   587,   586,   588,   588,   590,
-     589,   591,   591,   592,   592,   592,   592,   592,   594,   593,
-     595,   596,   597,   599,   598
+     243,   244,   246,   245,   247,   248,   249,   250,   251,   252,
+     254,   253,   255,   255,   255,   255,   255,   257,   256,   259,
+     258,   260,   261,   263,   262,   265,   264,   266,   267,   268,
+     269,   271,   270,   272,   272,   273,   273,   273,   273,   273,
+     273,   273,   275,   274,   277,   276,   279,   278,   280,   280,
+     282,   281,   283,   283,   284,   286,   285,   288,   287,   289,
+     289,   290,   292,   291,   294,   293,   296,   295,   297,   297,
+     298,   298,   300,   299,   301,   301,   302,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   302,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   302,   304,   303,   305,
+     305,   305,   305,   307,   306,   309,   308,   311,   310,   312,
+     314,   313,   315,   316,   317,   318,   319,   320,   321,   323,
+     322,   325,   324,   327,   326,   329,   328,   330,   331,   332,
+     334,   333,   335,   335,   336,   336,   336,   336,   336,   337,
+     338,   339,   340,   341,   343,   342,   344,   344,   345,   345,
+     345,   345,   345,   345,   346,   347,   348,   350,   349,   351,
+     351,   352,   352,   354,   353,   356,   355,   357,   357,   357,
+     358,   358,   360,   359,   362,   361,   364,   363,   365,   365,
+     366,   366,   366,   366,   366,   366,   367,   368,   369,   370,
+     371,   372,   374,   373,   375,   375,   376,   376,   378,   377,
+     380,   379,   381,   381,   382,   382,   382,   382,   382,   382,
+     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
+     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
+     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
+     382,   382,   382,   382,   382,   382,   384,   383,   386,   385,
+     388,   387,   390,   389,   392,   391,   394,   393,   396,   395,
+     398,   397,   399,   399,   399,   399,   400,   402,   401,   403,
+     403,   404,   404,   406,   405,   407,   407,   408,   408,   408,
+     408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
+     408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
+     408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
+     408,   408,   408,   408,   410,   409,   412,   411,   413,   413,
+     414,   414,   416,   415,   418,   417,   419,   419,   420,   420,
+     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
+     422,   423,   424,   426,   425,   428,   427,   430,   429,   431,
+     433,   432,   434,   436,   435,   437,   437,   438,   438,   440,
+     439,   442,   441,   443,   443,   444,   444,   445,   445,   445,
+     445,   445,   445,   445,   445,   445,   446,   448,   447,   449,
+     450,   451,   452,   454,   453,   455,   455,   456,   456,   458,
+     457,   460,   459,   461,   461,   462,   462,   462,   462,   462,
+     462,   462,   464,   463,   466,   465,   468,   467,   470,   469,
+     471,   471,   472,   472,   474,   473,   476,   475,   477,   477,
+     478,   478,   479,   479,   479,   479,   479,   479,   479,   479,
+     479,   479,   479,   479,   479,   479,   479,   481,   480,   483,
+     482,   485,   484,   487,   486,   489,   488,   491,   490,   493,
+     492,   495,   494,   497,   496,   499,   498,   501,   500,   503,
+     502,   505,   504,   506,   506,   508,   507,   509,   509,   511,
+     510,   512,   512,   513,   513,   514,   514,   514,   514,   514,
+     514,   514,   514,   514,   514,   514,   515,   517,   516,   518,
+     519,   521,   520,   522,   522,   523,   523,   523,   523,   523,
+     525,   524,   527,   526,   529,   528,   530,   530,   531,   531,
+     531,   531,   531,   531,   532,   534,   533,   535,   537,   536,
+     539,   538,   541,   540,   542,   542,   543,   543,   543,   543,
+     543,   543,   543,   543,   543,   543,   543,   543,   543,   543,
+     543,   543,   543,   543,   544,   546,   545,   547,   549,   548,
+     550,   551,   553,   552,   554,   554,   556,   555,   558,   557,
+     559,   560,   562,   561,   564,   563,   566,   565,   568,   567,
+     570,   569,   572,   571,   573,   573,   574,   574,   576,   575,
+     577,   579,   578,   580,   580,   582,   581,   583,   583,   584,
+     584,   584,   584,   584,   584,   584,   585,   587,   586,   589,
+     588,   590,   590,   592,   591,   593,   593,   594,   594,   594,
+     594,   594,   596,   595,   597,   598,   599,   601,   600
   };
 
-  const signed char
+  const unsigned char
   Dhcp4Parser::yyr2_[] =
   {
        0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
@@ -5276,107 +5134,107 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     0,     4,     3,     3,     3,     3,     3,     3,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       3,     0,     4,     0,     4,     3,     3,     3,     3,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     1,     1,     0,     4,
-       1,     1,     3,     0,     6,     0,     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,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     0,     4,     3,     3,     3,     3,     3,     3,
+       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     3,     3,     0,     4,     0,     4,     3,     3,     3,
+       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     1,     1,
+       0,     4,     1,     1,     3,     0,     6,     0,     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,     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,     0,     4,     0,     4,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     3,     3,     3,     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,     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,     0,     4,     0,     4,     3,     3,     3,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     3,     3,     3,     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,     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,     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,     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,     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,     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,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     3,     0,     4,     0,     6,     0,     4,
+       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,     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,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     3,     0,     4,     3,     3,     0,     4,
-       1,     1,     0,     4,     0,     4,     3,     3,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
-       1,     3,     1,     1,     0,     6,     3,     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,     1,     0,     4,
-       3,     3,     3,     0,     4
+       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
+       3,     3,     0,     4,     1,     1,     0,     4,     0,     4,
+       3,     3,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     0,     6,
+       3,     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,     1,     0,     4,     3,     3,     3,     0,     4
   };
 
 
-#if PARSER4_DEBUG || 1
+
   // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-  // First, the terminals, then, starting at \a YYNTOKENS, nonterminals.
+  // First, the terminals, then, starting at \a yyntokens_, nonterminals.
   const char*
   const Dhcp4Parser::yytname_[] =
   {
-  "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
-  "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"",
-  "\"config-control\"", "\"config-databases\"",
-  "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"",
-  "\"dhcp-socket-type\"", "\"raw\"", "\"udp\"", "\"outbound-interface\"",
-  "\"same-as-inbound\"", "\"use-routing\"", "\"re-detect\"",
-  "\"sanity-checks\"", "\"lease-checks\"", "\"echo-client-id\"",
-  "\"match-client-id\"", "\"authoritative\"", "\"next-server\"",
-  "\"server-hostname\"", "\"boot-file-name\"", "\"lease-database\"",
-  "\"hosts-database\"", "\"hosts-databases\"", "\"type\"", "\"memfile\"",
-  "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
-  "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
-  "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
-  "\"keyspace\"", "\"consistency\"", "\"serial-consistency\"",
-  "\"max-reconnect-tries\"", "\"reconnect-wait-time\"",
-  "\"request-timeout\"", "\"tcp-keepalive\"", "\"tcp-nodelay\"",
-  "\"max-row-errors\"", "\"valid-lifetime\"", "\"min-valid-lifetime\"",
-  "\"max-valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
-  "\"calculate-tee-times\"", "\"t1-percent\"", "\"t2-percent\"",
-  "\"cache-threshold\"", "\"cache-max-age\"",
+  "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
+  "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"", "\"config-control\"",
+  "\"config-databases\"", "\"config-fetch-wait-time\"",
+  "\"interfaces-config\"", "\"interfaces\"", "\"dhcp-socket-type\"",
+  "\"raw\"", "\"udp\"", "\"outbound-interface\"", "\"same-as-inbound\"",
+  "\"use-routing\"", "\"re-detect\"", "\"sanity-checks\"",
+  "\"lease-checks\"", "\"echo-client-id\"", "\"match-client-id\"",
+  "\"authoritative\"", "\"next-server\"", "\"server-hostname\"",
+  "\"boot-file-name\"", "\"lease-database\"", "\"hosts-database\"",
+  "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"",
+  "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"",
+  "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"",
+  "\"connect-timeout\"", "\"contact-points\"", "\"keyspace\"",
+  "\"consistency\"", "\"serial-consistency\"", "\"max-reconnect-tries\"",
+  "\"reconnect-wait-time\"", "\"request-timeout\"", "\"tcp-keepalive\"",
+  "\"tcp-nodelay\"", "\"max-row-errors\"", "\"valid-lifetime\"",
+  "\"min-valid-lifetime\"", "\"max-valid-lifetime\"", "\"renew-timer\"",
+  "\"rebind-timer\"", "\"calculate-tee-times\"", "\"t1-percent\"",
+  "\"t2-percent\"", "\"cache-threshold\"", "\"cache-max-age\"",
   "\"decline-probation-period\"", "\"server-tag\"",
   "\"statistic-default-sample-count\"", "\"statistic-default-sample-age\"",
   "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
   "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
   "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
-  "\"ddns-update-on-renew\"", "\"store-extended-info\"", "\"subnet4\"",
-  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"",
+  "\"store-extended-info\"", "\"subnet4\"", "\"4o6-interface\"",
+  "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"",
+  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
+  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
   "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"",
   "\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"",
@@ -5424,22 +5282,22 @@ namespace isc { namespace dhcp {
   "ddns_override_client_update", "ddns_replace_client_name", "$@21",
   "ddns_replace_client_name_value", "ddns_generated_prefix", "$@22",
   "ddns_qualifying_suffix", "$@23", "ddns_update_on_renew",
-  "hostname_char_set", "$@24", "hostname_char_replacement", "$@25",
-  "store_extended_info", "statistic_default_sample_count",
-  "statistic_default_sample_age", "ip_reservations_unique",
-  "interfaces_config", "$@26", "interfaces_config_params",
-  "interfaces_config_param", "sub_interfaces4", "$@27", "interfaces_list",
-  "$@28", "dhcp_socket_type", "$@29", "socket_type", "outbound_interface",
-  "$@30", "outbound_interface_value", "re_detect", "lease_database",
-  "$@31", "sanity_checks", "$@32", "sanity_checks_params",
-  "sanity_checks_param", "lease_checks", "$@33", "hosts_database", "$@34",
-  "hosts_databases", "$@35", "database_list", "not_empty_database_list",
-  "database", "$@36", "database_map_params", "database_map_param",
-  "database_type", "$@37", "db_type", "user", "$@38", "password", "$@39",
-  "host", "$@40", "port", "name", "$@41", "persist", "lfc_interval",
-  "readonly", "connect_timeout", "request_timeout", "tcp_keepalive",
-  "tcp_nodelay", "contact_points", "$@42", "keyspace", "$@43",
-  "consistency", "$@44", "serial_consistency", "$@45",
+  "ddns_use_conflict_resolution", "hostname_char_set", "$@24",
+  "hostname_char_replacement", "$@25", "store_extended_info",
+  "statistic_default_sample_count", "statistic_default_sample_age",
+  "ip_reservations_unique", "interfaces_config", "$@26",
+  "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
+  "$@27", "interfaces_list", "$@28", "dhcp_socket_type", "$@29",
+  "socket_type", "outbound_interface", "$@30", "outbound_interface_value",
+  "re_detect", "lease_database", "$@31", "sanity_checks", "$@32",
+  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@33",
+  "hosts_database", "$@34", "hosts_databases", "$@35", "database_list",
+  "not_empty_database_list", "database", "$@36", "database_map_params",
+  "database_map_param", "database_type", "$@37", "db_type", "user", "$@38",
+  "password", "$@39", "host", "$@40", "port", "name", "$@41", "persist",
+  "lfc_interval", "readonly", "connect_timeout", "request_timeout",
+  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@42", "keyspace",
+  "$@43", "consistency", "$@44", "serial_consistency", "$@45",
   "max_reconnect_tries", "reconnect_wait_time", "max_row_errors",
   "host_reservation_identifiers", "$@46",
   "host_reservation_identifiers_list", "host_reservation_identifier",
@@ -5510,110 +5368,110 @@ namespace isc { namespace dhcp {
   "output_params_list", "output_params", "output", "$@129", "flush",
   "maxsize", "maxver", "pattern", "$@130", YY_NULLPTR
   };
-#endif
-
 
 #if PARSER4_DEBUG
-  const short
+  const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   281,   281,   281,   282,   282,   283,   283,   284,   284,
-     285,   285,   286,   286,   287,   287,   288,   288,   289,   289,
-     290,   290,   291,   291,   292,   292,   293,   293,   301,   302,
-     303,   304,   305,   306,   307,   310,   315,   315,   326,   329,
-     330,   333,   338,   346,   346,   353,   354,   357,   361,   368,
-     368,   375,   376,   379,   383,   394,   403,   403,   418,   418,
-     435,   435,   444,   445,   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,   477,   478,   479,   480,   481,   482,   483,   484,   485,
-     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
-     496,   497,   498,   499,   500,   501,   502,   503,   504,   505,
-     508,   514,   520,   526,   532,   538,   544,   550,   556,   562,
-     568,   574,   574,   583,   589,   595,   601,   607,   613,   619,
-     619,   628,   631,   634,   637,   640,   646,   646,   655,   655,
-     664,   670,   670,   679,   679,   688,   694,   700,   706,   712,
-     712,   724,   725,   728,   729,   730,   731,   732,   733,   734,
-     737,   737,   746,   746,   757,   757,   765,   766,   769,   769,
-     777,   779,   783,   790,   790,   803,   803,   814,   815,   817,
-     819,   819,   838,   838,   851,   851,   862,   863,   866,   867,
-     870,   870,   880,   881,   884,   885,   886,   887,   888,   889,
-     890,   891,   892,   893,   894,   895,   896,   897,   898,   899,
-     900,   901,   902,   903,   904,   907,   907,   915,   916,   917,
-     918,   921,   921,   930,   930,   939,   939,   948,   954,   954,
-     963,   969,   975,   981,   987,   993,   999,  1005,  1005,  1014,
-    1014,  1023,  1023,  1032,  1032,  1041,  1047,  1053,  1060,  1060,
-    1071,  1072,  1075,  1076,  1077,  1078,  1079,  1082,  1087,  1092,
-    1097,  1102,  1109,  1109,  1122,  1123,  1126,  1127,  1128,  1129,
-    1130,  1131,  1134,  1140,  1146,  1152,  1152,  1163,  1164,  1167,
-    1168,  1171,  1171,  1181,  1181,  1191,  1192,  1193,  1196,  1197,
-    1200,  1200,  1209,  1209,  1218,  1218,  1230,  1231,  1234,  1235,
-    1236,  1237,  1238,  1239,  1242,  1248,  1254,  1260,  1266,  1272,
-    1281,  1281,  1295,  1296,  1299,  1300,  1307,  1307,  1333,  1333,
-    1344,  1345,  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,  1392,  1392,  1401,  1401,  1410,  1410,  1419,
-    1419,  1428,  1428,  1437,  1437,  1446,  1446,  1457,  1457,  1465,
-    1466,  1467,  1468,  1471,  1479,  1479,  1491,  1492,  1496,  1497,
-    1500,  1500,  1508,  1509,  1512,  1513,  1514,  1515,  1516,  1517,
-    1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,
-    1528,  1529,  1530,  1531,  1532,  1533,  1534,  1535,  1536,  1537,
-    1538,  1539,  1540,  1541,  1542,  1543,  1544,  1545,  1546,  1547,
-    1554,  1554,  1568,  1568,  1577,  1578,  1581,  1582,  1587,  1587,
-    1602,  1602,  1616,  1617,  1620,  1621,  1624,  1625,  1626,  1627,
-    1628,  1629,  1630,  1631,  1632,  1633,  1636,  1638,  1644,  1646,
-    1646,  1655,  1655,  1664,  1664,  1673,  1675,  1675,  1684,  1694,
-    1694,  1707,  1708,  1713,  1714,  1719,  1719,  1731,  1731,  1743,
-    1744,  1749,  1750,  1755,  1756,  1757,  1758,  1759,  1760,  1761,
-    1762,  1763,  1766,  1768,  1768,  1777,  1779,  1781,  1787,  1796,
-    1796,  1809,  1810,  1813,  1814,  1817,  1817,  1827,  1827,  1837,
-    1838,  1841,  1842,  1843,  1844,  1845,  1846,  1847,  1850,  1850,
-    1859,  1859,  1884,  1884,  1914,  1914,  1925,  1926,  1929,  1930,
-    1933,  1933,  1942,  1942,  1951,  1952,  1955,  1956,  1960,  1961,
-    1962,  1963,  1964,  1965,  1966,  1967,  1968,  1969,  1970,  1971,
-    1972,  1973,  1974,  1977,  1977,  1986,  1986,  1995,  1995,  2004,
-    2004,  2013,  2013,  2024,  2024,  2033,  2033,  2042,  2042,  2051,
-    2051,  2060,  2060,  2069,  2069,  2078,  2078,  2092,  2092,  2103,
-    2104,  2110,  2110,  2121,  2122,  2125,  2125,  2135,  2136,  2139,
-    2140,  2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,
-    2152,  2153,  2156,  2158,  2158,  2167,  2175,  2183,  2183,  2194,
-    2195,  2198,  2199,  2200,  2201,  2202,  2205,  2205,  2214,  2214,
-    2226,  2226,  2239,  2240,  2243,  2244,  2245,  2246,  2247,  2248,
-    2251,  2257,  2257,  2266,  2272,  2272,  2282,  2282,  2295,  2295,
-    2305,  2306,  2309,  2310,  2311,  2312,  2313,  2314,  2315,  2316,
-    2317,  2318,  2319,  2320,  2321,  2322,  2323,  2324,  2325,  2326,
-    2329,  2335,  2335,  2344,  2350,  2350,  2359,  2365,  2371,  2371,
-    2380,  2381,  2384,  2384,  2394,  2394,  2404,  2411,  2418,  2418,
-    2427,  2427,  2437,  2437,  2447,  2447,  2459,  2459,  2471,  2471,
-    2481,  2482,  2486,  2487,  2490,  2490,  2501,  2509,  2509,  2522,
-    2523,  2527,  2527,  2535,  2536,  2539,  2540,  2541,  2542,  2543,
-    2544,  2545,  2548,  2554,  2554,  2563,  2563,  2574,  2575,  2578,
-    2578,  2586,  2587,  2590,  2591,  2592,  2593,  2594,  2597,  2597,
-    2606,  2612,  2618,  2624,  2624
+       0,   282,   282,   282,   283,   283,   284,   284,   285,   285,
+     286,   286,   287,   287,   288,   288,   289,   289,   290,   290,
+     291,   291,   292,   292,   293,   293,   294,   294,   302,   303,
+     304,   305,   306,   307,   308,   311,   316,   316,   327,   330,
+     331,   334,   339,   347,   347,   354,   355,   358,   362,   369,
+     369,   376,   377,   380,   384,   395,   404,   404,   419,   419,
+     436,   436,   445,   446,   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,
+     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
+     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
+     497,   498,   499,   500,   501,   502,   503,   504,   505,   506,
+     507,   510,   516,   522,   528,   534,   540,   546,   552,   558,
+     564,   570,   576,   576,   585,   591,   597,   603,   609,   615,
+     621,   621,   630,   633,   636,   639,   642,   648,   648,   657,
+     657,   666,   672,   678,   678,   687,   687,   696,   702,   708,
+     714,   720,   720,   732,   733,   736,   737,   738,   739,   740,
+     741,   742,   745,   745,   754,   754,   765,   765,   773,   774,
+     777,   777,   785,   787,   791,   798,   798,   811,   811,   822,
+     823,   825,   827,   827,   846,   846,   859,   859,   870,   871,
+     874,   875,   878,   878,   888,   889,   892,   893,   894,   895,
+     896,   897,   898,   899,   900,   901,   902,   903,   904,   905,
+     906,   907,   908,   909,   910,   911,   912,   915,   915,   923,
+     924,   925,   926,   929,   929,   938,   938,   947,   947,   956,
+     962,   962,   971,   977,   983,   989,   995,  1001,  1007,  1013,
+    1013,  1022,  1022,  1031,  1031,  1040,  1040,  1049,  1055,  1061,
+    1068,  1068,  1079,  1080,  1083,  1084,  1085,  1086,  1087,  1090,
+    1095,  1100,  1105,  1110,  1117,  1117,  1130,  1131,  1134,  1135,
+    1136,  1137,  1138,  1139,  1142,  1148,  1154,  1160,  1160,  1171,
+    1172,  1175,  1176,  1179,  1179,  1189,  1189,  1199,  1200,  1201,
+    1204,  1205,  1208,  1208,  1217,  1217,  1226,  1226,  1238,  1239,
+    1242,  1243,  1244,  1245,  1246,  1247,  1250,  1256,  1262,  1268,
+    1274,  1280,  1289,  1289,  1303,  1304,  1307,  1308,  1315,  1315,
+    1341,  1341,  1352,  1353,  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,  1401,  1401,  1410,  1410,
+    1419,  1419,  1428,  1428,  1437,  1437,  1446,  1446,  1455,  1455,
+    1466,  1466,  1474,  1475,  1476,  1477,  1480,  1488,  1488,  1500,
+    1501,  1505,  1506,  1509,  1509,  1517,  1518,  1521,  1522,  1523,
+    1524,  1525,  1526,  1527,  1528,  1529,  1530,  1531,  1532,  1533,
+    1534,  1535,  1536,  1537,  1538,  1539,  1540,  1541,  1542,  1543,
+    1544,  1545,  1546,  1547,  1548,  1549,  1550,  1551,  1552,  1553,
+    1554,  1555,  1556,  1557,  1564,  1564,  1578,  1578,  1587,  1588,
+    1591,  1592,  1597,  1597,  1612,  1612,  1626,  1627,  1630,  1631,
+    1634,  1635,  1636,  1637,  1638,  1639,  1640,  1641,  1642,  1643,
+    1646,  1648,  1654,  1656,  1656,  1665,  1665,  1674,  1674,  1683,
+    1685,  1685,  1694,  1704,  1704,  1717,  1718,  1723,  1724,  1729,
+    1729,  1741,  1741,  1753,  1754,  1759,  1760,  1765,  1766,  1767,
+    1768,  1769,  1770,  1771,  1772,  1773,  1776,  1778,  1778,  1787,
+    1789,  1791,  1797,  1806,  1806,  1819,  1820,  1823,  1824,  1827,
+    1827,  1837,  1837,  1847,  1848,  1851,  1852,  1853,  1854,  1855,
+    1856,  1857,  1860,  1860,  1869,  1869,  1894,  1894,  1924,  1924,
+    1935,  1936,  1939,  1940,  1943,  1943,  1952,  1952,  1961,  1962,
+    1965,  1966,  1970,  1971,  1972,  1973,  1974,  1975,  1976,  1977,
+    1978,  1979,  1980,  1981,  1982,  1983,  1984,  1987,  1987,  1996,
+    1996,  2005,  2005,  2014,  2014,  2023,  2023,  2034,  2034,  2043,
+    2043,  2052,  2052,  2061,  2061,  2070,  2070,  2079,  2079,  2088,
+    2088,  2102,  2102,  2113,  2114,  2120,  2120,  2131,  2132,  2135,
+    2135,  2145,  2146,  2149,  2150,  2153,  2154,  2155,  2156,  2157,
+    2158,  2159,  2160,  2161,  2162,  2163,  2166,  2168,  2168,  2177,
+    2185,  2193,  2193,  2204,  2205,  2208,  2209,  2210,  2211,  2212,
+    2215,  2215,  2224,  2224,  2236,  2236,  2249,  2250,  2253,  2254,
+    2255,  2256,  2257,  2258,  2261,  2267,  2267,  2276,  2282,  2282,
+    2292,  2292,  2305,  2305,  2315,  2316,  2319,  2320,  2321,  2322,
+    2323,  2324,  2325,  2326,  2327,  2328,  2329,  2330,  2331,  2332,
+    2333,  2334,  2335,  2336,  2339,  2345,  2345,  2354,  2360,  2360,
+    2369,  2375,  2381,  2381,  2390,  2391,  2394,  2394,  2404,  2404,
+    2414,  2421,  2428,  2428,  2437,  2437,  2447,  2447,  2457,  2457,
+    2469,  2469,  2481,  2481,  2491,  2492,  2496,  2497,  2500,  2500,
+    2511,  2519,  2519,  2532,  2533,  2537,  2537,  2545,  2546,  2549,
+    2550,  2551,  2552,  2553,  2554,  2555,  2558,  2564,  2564,  2573,
+    2573,  2584,  2585,  2588,  2588,  2596,  2597,  2600,  2601,  2602,
+    2603,  2604,  2607,  2607,  2616,  2622,  2628,  2634,  2634
   };
 
+  // Print the state stack on the debug stream.
   void
-  Dhcp4Parser::yy_stack_print_ () const
+  Dhcp4Parser::yystack_print_ ()
   {
     *yycdebug_ << "Stack now";
     for (stack_type::const_iterator
            i = yystack_.begin (),
            i_end = yystack_.end ();
          i != i_end; ++i)
-      *yycdebug_ << ' ' << int (i->state);
-    *yycdebug_ << '\n';
+      *yycdebug_ << ' ' << i->state;
+    *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) const
+  Dhcp4Parser::yy_reduce_print_ (int yyrule)
   {
-    int 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 << " =",
@@ -5622,11 +5480,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER4_DEBUG
 
 
-#line 14 "dhcp4_parser.yy"
+#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 5628 "dhcp4_parser.cc"
-
-#line 2633 "dhcp4_parser.yy"
+#line 5486 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 2643 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 71c40c44e23d3ebc08c9420b9aa435df32f72dc5..07083a6ef0d120f92bcd252b02011810ccf58ffa 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.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-2020 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.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
-
 #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
 # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
-// "%code requires" blocks.
-#line 17 "dhcp4_parser.yy"
+// //                    "%code requires" blocks.
+#line 17 "dhcp4_parser.yy" // lalr1.cc:377
 
 #include <string>
 #include <cc/data.h>
@@ -57,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 61 "dhcp4_parser.h"
+#line 56 "dhcp4_parser.h" // lalr1.cc:377
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -65,64 +60,39 @@ 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 YY_ASSERT
+#ifndef YYASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define YYASSERT assert
 #endif
 
 
-#ifndef YY_ATTRIBUTE_PURE
-# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
 # else
-#  define YY_ATTRIBUTE_PURE
+#  define YY_ATTRIBUTE(Spec) /* empty */
 # endif
 #endif
 
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
 #ifndef YY_ATTRIBUTE_UNUSED
-# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# 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 YY_ATTRIBUTE_UNUSED
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # endif
 #endif
 
@@ -133,13 +103,13 @@ 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")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -152,39 +122,6 @@ using namespace std;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
-# define YY_IGNORE_USELESS_CAST_BEGIN                          \
-    _Pragma ("GCC diagnostic push")                            \
-    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
-# define YY_IGNORE_USELESS_CAST_END            \
-    _Pragma ("GCC diagnostic pop")
-#endif
-#ifndef YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_END
-#endif
-
-# ifndef YY_CAST
-#  ifdef __cplusplus
-#   define YY_CAST(Type, Val) static_cast<Type> (Val)
-#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
-#  else
-#   define YY_CAST(Type, Val) ((Type) (Val))
-#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
-#  endif
-# 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
@@ -198,182 +135,120 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER4_DEBUG */
 
-#line 14 "dhcp4_parser.yy"
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
 namespace isc { namespace dhcp {
-#line 204 "dhcp4_parser.h"
-
+#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))
     {
-      YY_ASSERT (sizeof (T) <= size);
-      new (yyas_<T> ()) T (YY_MOVE (t));
+      YYASSERT (sizeof (T) <= S);
+      new (yyas_<T> ()) T (t);
     }
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    semantic_type (const self_type&) = delete;
-    /// Non copyable.
-    self_type& operator= (const self_type&) = delete;
-#endif
-
     /// Destruction, allowed only if empty.
-    ~semantic_type () YY_NOEXCEPT
+    ~variant ()
     {
-      YY_ASSERT (!yytypeid_);
+      YYASSERT (!yytypeid_);
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Instantiate a \a T in here from \a t.
-    template <typename T, typename... U>
-    T&
-    emplace (U&&... u)
-    {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (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 ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      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)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      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 ()
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (*yytypeid_ == typeid (T));
+      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
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (*yytypeid_ == typeid (T));
+      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)
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
-      std::swap (as<T> (), that.as<T> ());
+      YYASSERT (yytypeid_);
+      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.
@@ -386,17 +261,14 @@ namespace isc { namespace dhcp {
     }
 
   private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
-    semantic_type (const self_type&);
-    /// Non copyable.
-    self_type& operator= (const self_type&);
-#endif
+    /// Prohibit blind copies.
+    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);
@@ -405,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
     {
@@ -422,37 +312,23 @@ namespace isc { namespace dhcp {
       // db_type
       // hr_mode
       // ncr_protocol_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
@@ -462,852 +338,227 @@ 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;
     };
 
-    /// Token kinds.
+    /// Tokens.
     struct token
     {
-      enum token_kind_type
-      {
-        TOKEN_PARSER4_EMPTY = -2,
-    TOKEN_END = 0,                 // "end of file"
-    TOKEN_PARSER4_error = 256,     // error
-    TOKEN_PARSER4_UNDEF = 257,     // "invalid token"
-    TOKEN_COMMA = 258,             // ","
-    TOKEN_COLON = 259,             // ":"
-    TOKEN_LSQUARE_BRACKET = 260,   // "["
-    TOKEN_RSQUARE_BRACKET = 261,   // "]"
-    TOKEN_LCURLY_BRACKET = 262,    // "{"
-    TOKEN_RCURLY_BRACKET = 263,    // "}"
-    TOKEN_NULL_TYPE = 264,         // "null"
-    TOKEN_DHCP4 = 265,             // "Dhcp4"
-    TOKEN_CONFIG_CONTROL = 266,    // "config-control"
-    TOKEN_CONFIG_DATABASES = 267,  // "config-databases"
-    TOKEN_CONFIG_FETCH_WAIT_TIME = 268, // "config-fetch-wait-time"
-    TOKEN_INTERFACES_CONFIG = 269, // "interfaces-config"
-    TOKEN_INTERFACES = 270,        // "interfaces"
-    TOKEN_DHCP_SOCKET_TYPE = 271,  // "dhcp-socket-type"
-    TOKEN_RAW = 272,               // "raw"
-    TOKEN_UDP = 273,               // "udp"
-    TOKEN_OUTBOUND_INTERFACE = 274, // "outbound-interface"
-    TOKEN_SAME_AS_INBOUND = 275,   // "same-as-inbound"
-    TOKEN_USE_ROUTING = 276,       // "use-routing"
-    TOKEN_RE_DETECT = 277,         // "re-detect"
-    TOKEN_SANITY_CHECKS = 278,     // "sanity-checks"
-    TOKEN_LEASE_CHECKS = 279,      // "lease-checks"
-    TOKEN_ECHO_CLIENT_ID = 280,    // "echo-client-id"
-    TOKEN_MATCH_CLIENT_ID = 281,   // "match-client-id"
-    TOKEN_AUTHORITATIVE = 282,     // "authoritative"
-    TOKEN_NEXT_SERVER = 283,       // "next-server"
-    TOKEN_SERVER_HOSTNAME = 284,   // "server-hostname"
-    TOKEN_BOOT_FILE_NAME = 285,    // "boot-file-name"
-    TOKEN_LEASE_DATABASE = 286,    // "lease-database"
-    TOKEN_HOSTS_DATABASE = 287,    // "hosts-database"
-    TOKEN_HOSTS_DATABASES = 288,   // "hosts-databases"
-    TOKEN_TYPE = 289,              // "type"
-    TOKEN_MEMFILE = 290,           // "memfile"
-    TOKEN_MYSQL = 291,             // "mysql"
-    TOKEN_POSTGRESQL = 292,        // "postgresql"
-    TOKEN_CQL = 293,               // "cql"
-    TOKEN_USER = 294,              // "user"
-    TOKEN_PASSWORD = 295,          // "password"
-    TOKEN_HOST = 296,              // "host"
-    TOKEN_PORT = 297,              // "port"
-    TOKEN_PERSIST = 298,           // "persist"
-    TOKEN_LFC_INTERVAL = 299,      // "lfc-interval"
-    TOKEN_READONLY = 300,          // "readonly"
-    TOKEN_CONNECT_TIMEOUT = 301,   // "connect-timeout"
-    TOKEN_CONTACT_POINTS = 302,    // "contact-points"
-    TOKEN_KEYSPACE = 303,          // "keyspace"
-    TOKEN_CONSISTENCY = 304,       // "consistency"
-    TOKEN_SERIAL_CONSISTENCY = 305, // "serial-consistency"
-    TOKEN_MAX_RECONNECT_TRIES = 306, // "max-reconnect-tries"
-    TOKEN_RECONNECT_WAIT_TIME = 307, // "reconnect-wait-time"
-    TOKEN_REQUEST_TIMEOUT = 308,   // "request-timeout"
-    TOKEN_TCP_KEEPALIVE = 309,     // "tcp-keepalive"
-    TOKEN_TCP_NODELAY = 310,       // "tcp-nodelay"
-    TOKEN_MAX_ROW_ERRORS = 311,    // "max-row-errors"
-    TOKEN_VALID_LIFETIME = 312,    // "valid-lifetime"
-    TOKEN_MIN_VALID_LIFETIME = 313, // "min-valid-lifetime"
-    TOKEN_MAX_VALID_LIFETIME = 314, // "max-valid-lifetime"
-    TOKEN_RENEW_TIMER = 315,       // "renew-timer"
-    TOKEN_REBIND_TIMER = 316,      // "rebind-timer"
-    TOKEN_CALCULATE_TEE_TIMES = 317, // "calculate-tee-times"
-    TOKEN_T1_PERCENT = 318,        // "t1-percent"
-    TOKEN_T2_PERCENT = 319,        // "t2-percent"
-    TOKEN_CACHE_THRESHOLD = 320,   // "cache-threshold"
-    TOKEN_CACHE_MAX_AGE = 321,     // "cache-max-age"
-    TOKEN_DECLINE_PROBATION_PERIOD = 322, // "decline-probation-period"
-    TOKEN_SERVER_TAG = 323,        // "server-tag"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 324, // "statistic-default-sample-count"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 325, // "statistic-default-sample-age"
-    TOKEN_DDNS_SEND_UPDATES = 326, // "ddns-send-updates"
-    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 327, // "ddns-override-no-update"
-    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 328, // "ddns-override-client-update"
-    TOKEN_DDNS_REPLACE_CLIENT_NAME = 329, // "ddns-replace-client-name"
-    TOKEN_DDNS_GENERATED_PREFIX = 330, // "ddns-generated-prefix"
-    TOKEN_DDNS_QUALIFYING_SUFFIX = 331, // "ddns-qualifying-suffix"
-    TOKEN_DDNS_UPDATE_ON_RENEW = 332, // "ddns-update-on-renew"
-    TOKEN_STORE_EXTENDED_INFO = 333, // "store-extended-info"
-    TOKEN_SUBNET4 = 334,           // "subnet4"
-    TOKEN_SUBNET_4O6_INTERFACE = 335, // "4o6-interface"
-    TOKEN_SUBNET_4O6_INTERFACE_ID = 336, // "4o6-interface-id"
-    TOKEN_SUBNET_4O6_SUBNET = 337, // "4o6-subnet"
-    TOKEN_OPTION_DEF = 338,        // "option-def"
-    TOKEN_OPTION_DATA = 339,       // "option-data"
-    TOKEN_NAME = 340,              // "name"
-    TOKEN_DATA = 341,              // "data"
-    TOKEN_CODE = 342,              // "code"
-    TOKEN_SPACE = 343,             // "space"
-    TOKEN_CSV_FORMAT = 344,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 345,       // "always-send"
-    TOKEN_RECORD_TYPES = 346,      // "record-types"
-    TOKEN_ENCAPSULATE = 347,       // "encapsulate"
-    TOKEN_ARRAY = 348,             // "array"
-    TOKEN_SHARED_NETWORKS = 349,   // "shared-networks"
-    TOKEN_POOLS = 350,             // "pools"
-    TOKEN_POOL = 351,              // "pool"
-    TOKEN_USER_CONTEXT = 352,      // "user-context"
-    TOKEN_COMMENT = 353,           // "comment"
-    TOKEN_SUBNET = 354,            // "subnet"
-    TOKEN_INTERFACE = 355,         // "interface"
-    TOKEN_ID = 356,                // "id"
-    TOKEN_RESERVATION_MODE = 357,  // "reservation-mode"
-    TOKEN_DISABLED = 358,          // "disabled"
-    TOKEN_OUT_OF_POOL = 359,       // "out-of-pool"
-    TOKEN_GLOBAL = 360,            // "global"
-    TOKEN_ALL = 361,               // "all"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 362, // "host-reservation-identifiers"
-    TOKEN_CLIENT_CLASSES = 363,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 364, // "require-client-classes"
-    TOKEN_TEST = 365,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 366,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 367,      // "client-class"
-    TOKEN_RESERVATIONS = 368,      // "reservations"
-    TOKEN_DUID = 369,              // "duid"
-    TOKEN_HW_ADDRESS = 370,        // "hw-address"
-    TOKEN_CIRCUIT_ID = 371,        // "circuit-id"
-    TOKEN_CLIENT_ID = 372,         // "client-id"
-    TOKEN_HOSTNAME = 373,          // "hostname"
-    TOKEN_FLEX_ID = 374,           // "flex-id"
-    TOKEN_RELAY = 375,             // "relay"
-    TOKEN_IP_ADDRESS = 376,        // "ip-address"
-    TOKEN_IP_ADDRESSES = 377,      // "ip-addresses"
-    TOKEN_HOOKS_LIBRARIES = 378,   // "hooks-libraries"
-    TOKEN_LIBRARY = 379,           // "library"
-    TOKEN_PARAMETERS = 380,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 381, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 382, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 383, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 384, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 385, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 386,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 387, // "unwarned-reclaim-cycles"
-    TOKEN_DHCP4O6_PORT = 388,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 389, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 390, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 391,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 392, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 393,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 394,       // "socket-type"
-    TOKEN_SOCKET_NAME = 395,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 396, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 397,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 398,        // "queue-type"
-    TOKEN_CAPACITY = 399,          // "capacity"
-    TOKEN_DHCP_DDNS = 400,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 401,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 402, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 403,         // "server-ip"
-    TOKEN_SERVER_PORT = 404,       // "server-port"
-    TOKEN_SENDER_IP = 405,         // "sender-ip"
-    TOKEN_SENDER_PORT = 406,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 407,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 408,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 409,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 410, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 411, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 412, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 413,  // "generated-prefix"
-    TOKEN_TCP = 414,               // "tcp"
-    TOKEN_JSON = 415,              // "JSON"
-    TOKEN_WHEN_PRESENT = 416,      // "when-present"
-    TOKEN_NEVER = 417,             // "never"
-    TOKEN_ALWAYS = 418,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 419,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 420, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 421, // "hostname-char-replacement"
-    TOKEN_IP_RESERVATIONS_UNIQUE = 422, // "ip-reservations-unique"
-    TOKEN_LOGGERS = 423,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 424,    // "output_options"
-    TOKEN_OUTPUT = 425,            // "output"
-    TOKEN_DEBUGLEVEL = 426,        // "debuglevel"
-    TOKEN_SEVERITY = 427,          // "severity"
-    TOKEN_FLUSH = 428,             // "flush"
-    TOKEN_MAXSIZE = 429,           // "maxsize"
-    TOKEN_MAXVER = 430,            // "maxver"
-    TOKEN_PATTERN = 431,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 432,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP4 = 433,    // TOPLEVEL_DHCP4
-    TOKEN_SUB_DHCP4 = 434,         // SUB_DHCP4
-    TOKEN_SUB_INTERFACES4 = 435,   // SUB_INTERFACES4
-    TOKEN_SUB_SUBNET4 = 436,       // SUB_SUBNET4
-    TOKEN_SUB_POOL4 = 437,         // SUB_POOL4
-    TOKEN_SUB_RESERVATION = 438,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 439,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 440,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 441,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 442, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 443,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 444, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 445,            // "constant string"
-    TOKEN_INTEGER = 446,           // "integer"
-    TOKEN_FLOAT = 447,             // "floating point"
-    TOKEN_BOOLEAN = 448            // "boolean"
+      enum yytokentype
+      {
+        TOKEN_END = 0,
+        TOKEN_COMMA = 258,
+        TOKEN_COLON = 259,
+        TOKEN_LSQUARE_BRACKET = 260,
+        TOKEN_RSQUARE_BRACKET = 261,
+        TOKEN_LCURLY_BRACKET = 262,
+        TOKEN_RCURLY_BRACKET = 263,
+        TOKEN_NULL_TYPE = 264,
+        TOKEN_DHCP4 = 265,
+        TOKEN_CONFIG_CONTROL = 266,
+        TOKEN_CONFIG_DATABASES = 267,
+        TOKEN_CONFIG_FETCH_WAIT_TIME = 268,
+        TOKEN_INTERFACES_CONFIG = 269,
+        TOKEN_INTERFACES = 270,
+        TOKEN_DHCP_SOCKET_TYPE = 271,
+        TOKEN_RAW = 272,
+        TOKEN_UDP = 273,
+        TOKEN_OUTBOUND_INTERFACE = 274,
+        TOKEN_SAME_AS_INBOUND = 275,
+        TOKEN_USE_ROUTING = 276,
+        TOKEN_RE_DETECT = 277,
+        TOKEN_SANITY_CHECKS = 278,
+        TOKEN_LEASE_CHECKS = 279,
+        TOKEN_ECHO_CLIENT_ID = 280,
+        TOKEN_MATCH_CLIENT_ID = 281,
+        TOKEN_AUTHORITATIVE = 282,
+        TOKEN_NEXT_SERVER = 283,
+        TOKEN_SERVER_HOSTNAME = 284,
+        TOKEN_BOOT_FILE_NAME = 285,
+        TOKEN_LEASE_DATABASE = 286,
+        TOKEN_HOSTS_DATABASE = 287,
+        TOKEN_HOSTS_DATABASES = 288,
+        TOKEN_TYPE = 289,
+        TOKEN_MEMFILE = 290,
+        TOKEN_MYSQL = 291,
+        TOKEN_POSTGRESQL = 292,
+        TOKEN_CQL = 293,
+        TOKEN_USER = 294,
+        TOKEN_PASSWORD = 295,
+        TOKEN_HOST = 296,
+        TOKEN_PORT = 297,
+        TOKEN_PERSIST = 298,
+        TOKEN_LFC_INTERVAL = 299,
+        TOKEN_READONLY = 300,
+        TOKEN_CONNECT_TIMEOUT = 301,
+        TOKEN_CONTACT_POINTS = 302,
+        TOKEN_KEYSPACE = 303,
+        TOKEN_CONSISTENCY = 304,
+        TOKEN_SERIAL_CONSISTENCY = 305,
+        TOKEN_MAX_RECONNECT_TRIES = 306,
+        TOKEN_RECONNECT_WAIT_TIME = 307,
+        TOKEN_REQUEST_TIMEOUT = 308,
+        TOKEN_TCP_KEEPALIVE = 309,
+        TOKEN_TCP_NODELAY = 310,
+        TOKEN_MAX_ROW_ERRORS = 311,
+        TOKEN_VALID_LIFETIME = 312,
+        TOKEN_MIN_VALID_LIFETIME = 313,
+        TOKEN_MAX_VALID_LIFETIME = 314,
+        TOKEN_RENEW_TIMER = 315,
+        TOKEN_REBIND_TIMER = 316,
+        TOKEN_CALCULATE_TEE_TIMES = 317,
+        TOKEN_T1_PERCENT = 318,
+        TOKEN_T2_PERCENT = 319,
+        TOKEN_CACHE_THRESHOLD = 320,
+        TOKEN_CACHE_MAX_AGE = 321,
+        TOKEN_DECLINE_PROBATION_PERIOD = 322,
+        TOKEN_SERVER_TAG = 323,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 324,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 325,
+        TOKEN_DDNS_SEND_UPDATES = 326,
+        TOKEN_DDNS_OVERRIDE_NO_UPDATE = 327,
+        TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 328,
+        TOKEN_DDNS_REPLACE_CLIENT_NAME = 329,
+        TOKEN_DDNS_GENERATED_PREFIX = 330,
+        TOKEN_DDNS_QUALIFYING_SUFFIX = 331,
+        TOKEN_DDNS_UPDATE_ON_RENEW = 332,
+        TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 333,
+        TOKEN_STORE_EXTENDED_INFO = 334,
+        TOKEN_SUBNET4 = 335,
+        TOKEN_SUBNET_4O6_INTERFACE = 336,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 337,
+        TOKEN_SUBNET_4O6_SUBNET = 338,
+        TOKEN_OPTION_DEF = 339,
+        TOKEN_OPTION_DATA = 340,
+        TOKEN_NAME = 341,
+        TOKEN_DATA = 342,
+        TOKEN_CODE = 343,
+        TOKEN_SPACE = 344,
+        TOKEN_CSV_FORMAT = 345,
+        TOKEN_ALWAYS_SEND = 346,
+        TOKEN_RECORD_TYPES = 347,
+        TOKEN_ENCAPSULATE = 348,
+        TOKEN_ARRAY = 349,
+        TOKEN_SHARED_NETWORKS = 350,
+        TOKEN_POOLS = 351,
+        TOKEN_POOL = 352,
+        TOKEN_USER_CONTEXT = 353,
+        TOKEN_COMMENT = 354,
+        TOKEN_SUBNET = 355,
+        TOKEN_INTERFACE = 356,
+        TOKEN_ID = 357,
+        TOKEN_RESERVATION_MODE = 358,
+        TOKEN_DISABLED = 359,
+        TOKEN_OUT_OF_POOL = 360,
+        TOKEN_GLOBAL = 361,
+        TOKEN_ALL = 362,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 363,
+        TOKEN_CLIENT_CLASSES = 364,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 365,
+        TOKEN_TEST = 366,
+        TOKEN_ONLY_IF_REQUIRED = 367,
+        TOKEN_CLIENT_CLASS = 368,
+        TOKEN_RESERVATIONS = 369,
+        TOKEN_DUID = 370,
+        TOKEN_HW_ADDRESS = 371,
+        TOKEN_CIRCUIT_ID = 372,
+        TOKEN_CLIENT_ID = 373,
+        TOKEN_HOSTNAME = 374,
+        TOKEN_FLEX_ID = 375,
+        TOKEN_RELAY = 376,
+        TOKEN_IP_ADDRESS = 377,
+        TOKEN_IP_ADDRESSES = 378,
+        TOKEN_HOOKS_LIBRARIES = 379,
+        TOKEN_LIBRARY = 380,
+        TOKEN_PARAMETERS = 381,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 382,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 383,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 384,
+        TOKEN_HOLD_RECLAIMED_TIME = 385,
+        TOKEN_MAX_RECLAIM_LEASES = 386,
+        TOKEN_MAX_RECLAIM_TIME = 387,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 388,
+        TOKEN_DHCP4O6_PORT = 389,
+        TOKEN_DHCP_MULTI_THREADING = 390,
+        TOKEN_ENABLE_MULTI_THREADING = 391,
+        TOKEN_THREAD_POOL_SIZE = 392,
+        TOKEN_PACKET_QUEUE_SIZE = 393,
+        TOKEN_CONTROL_SOCKET = 394,
+        TOKEN_SOCKET_TYPE = 395,
+        TOKEN_SOCKET_NAME = 396,
+        TOKEN_DHCP_QUEUE_CONTROL = 397,
+        TOKEN_ENABLE_QUEUE = 398,
+        TOKEN_QUEUE_TYPE = 399,
+        TOKEN_CAPACITY = 400,
+        TOKEN_DHCP_DDNS = 401,
+        TOKEN_ENABLE_UPDATES = 402,
+        TOKEN_QUALIFYING_SUFFIX = 403,
+        TOKEN_SERVER_IP = 404,
+        TOKEN_SERVER_PORT = 405,
+        TOKEN_SENDER_IP = 406,
+        TOKEN_SENDER_PORT = 407,
+        TOKEN_MAX_QUEUE_SIZE = 408,
+        TOKEN_NCR_PROTOCOL = 409,
+        TOKEN_NCR_FORMAT = 410,
+        TOKEN_OVERRIDE_NO_UPDATE = 411,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 412,
+        TOKEN_REPLACE_CLIENT_NAME = 413,
+        TOKEN_GENERATED_PREFIX = 414,
+        TOKEN_TCP = 415,
+        TOKEN_JSON = 416,
+        TOKEN_WHEN_PRESENT = 417,
+        TOKEN_NEVER = 418,
+        TOKEN_ALWAYS = 419,
+        TOKEN_WHEN_NOT_PRESENT = 420,
+        TOKEN_HOSTNAME_CHAR_SET = 421,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 422,
+        TOKEN_IP_RESERVATIONS_UNIQUE = 423,
+        TOKEN_LOGGERS = 424,
+        TOKEN_OUTPUT_OPTIONS = 425,
+        TOKEN_OUTPUT = 426,
+        TOKEN_DEBUGLEVEL = 427,
+        TOKEN_SEVERITY = 428,
+        TOKEN_FLUSH = 429,
+        TOKEN_MAXSIZE = 430,
+        TOKEN_MAXVER = 431,
+        TOKEN_PATTERN = 432,
+        TOKEN_TOPLEVEL_JSON = 433,
+        TOKEN_TOPLEVEL_DHCP4 = 434,
+        TOKEN_SUB_DHCP4 = 435,
+        TOKEN_SUB_INTERFACES4 = 436,
+        TOKEN_SUB_SUBNET4 = 437,
+        TOKEN_SUB_POOL4 = 438,
+        TOKEN_SUB_RESERVATION = 439,
+        TOKEN_SUB_OPTION_DEFS = 440,
+        TOKEN_SUB_OPTION_DEF = 441,
+        TOKEN_SUB_OPTION_DATA = 442,
+        TOKEN_SUB_HOOKS_LIBRARY = 443,
+        TOKEN_SUB_DHCP_DDNS = 444,
+        TOKEN_SUB_CONFIG_CONTROL = 445,
+        TOKEN_STRING = 446,
+        TOKEN_INTEGER = 447,
+        TOKEN_FLOAT = 448,
+        TOKEN_BOOLEAN = 449
       };
-      /// Backward compatibility alias (Bison 3.6).
-      typedef token_kind_type yytokentype;
     };
 
-    /// Token kind, as returned by yylex.
-    typedef token::yytokentype token_kind_type;
+    /// (External) token type, as returned by yylex.
+    typedef token::yytokentype token_type;
 
-    /// Backward compatibility alias (Bison 3.6).
-    typedef token_kind_type token_type;
-
-    /// Symbol kinds.
-    struct symbol_kind
-    {
-      enum symbol_kind_type
-      {
-        YYNTOKENS = 194, ///< Number of tokens.
-        S_YYEMPTY = -2,
-        S_YYEOF = 0,                             // "end of file"
-        S_YYerror = 1,                           // error
-        S_YYUNDEF = 2,                           // "invalid token"
-        S_COMMA = 3,                             // ","
-        S_COLON = 4,                             // ":"
-        S_LSQUARE_BRACKET = 5,                   // "["
-        S_RSQUARE_BRACKET = 6,                   // "]"
-        S_LCURLY_BRACKET = 7,                    // "{"
-        S_RCURLY_BRACKET = 8,                    // "}"
-        S_NULL_TYPE = 9,                         // "null"
-        S_DHCP4 = 10,                            // "Dhcp4"
-        S_CONFIG_CONTROL = 11,                   // "config-control"
-        S_CONFIG_DATABASES = 12,                 // "config-databases"
-        S_CONFIG_FETCH_WAIT_TIME = 13,           // "config-fetch-wait-time"
-        S_INTERFACES_CONFIG = 14,                // "interfaces-config"
-        S_INTERFACES = 15,                       // "interfaces"
-        S_DHCP_SOCKET_TYPE = 16,                 // "dhcp-socket-type"
-        S_RAW = 17,                              // "raw"
-        S_UDP = 18,                              // "udp"
-        S_OUTBOUND_INTERFACE = 19,               // "outbound-interface"
-        S_SAME_AS_INBOUND = 20,                  // "same-as-inbound"
-        S_USE_ROUTING = 21,                      // "use-routing"
-        S_RE_DETECT = 22,                        // "re-detect"
-        S_SANITY_CHECKS = 23,                    // "sanity-checks"
-        S_LEASE_CHECKS = 24,                     // "lease-checks"
-        S_ECHO_CLIENT_ID = 25,                   // "echo-client-id"
-        S_MATCH_CLIENT_ID = 26,                  // "match-client-id"
-        S_AUTHORITATIVE = 27,                    // "authoritative"
-        S_NEXT_SERVER = 28,                      // "next-server"
-        S_SERVER_HOSTNAME = 29,                  // "server-hostname"
-        S_BOOT_FILE_NAME = 30,                   // "boot-file-name"
-        S_LEASE_DATABASE = 31,                   // "lease-database"
-        S_HOSTS_DATABASE = 32,                   // "hosts-database"
-        S_HOSTS_DATABASES = 33,                  // "hosts-databases"
-        S_TYPE = 34,                             // "type"
-        S_MEMFILE = 35,                          // "memfile"
-        S_MYSQL = 36,                            // "mysql"
-        S_POSTGRESQL = 37,                       // "postgresql"
-        S_CQL = 38,                              // "cql"
-        S_USER = 39,                             // "user"
-        S_PASSWORD = 40,                         // "password"
-        S_HOST = 41,                             // "host"
-        S_PORT = 42,                             // "port"
-        S_PERSIST = 43,                          // "persist"
-        S_LFC_INTERVAL = 44,                     // "lfc-interval"
-        S_READONLY = 45,                         // "readonly"
-        S_CONNECT_TIMEOUT = 46,                  // "connect-timeout"
-        S_CONTACT_POINTS = 47,                   // "contact-points"
-        S_KEYSPACE = 48,                         // "keyspace"
-        S_CONSISTENCY = 49,                      // "consistency"
-        S_SERIAL_CONSISTENCY = 50,               // "serial-consistency"
-        S_MAX_RECONNECT_TRIES = 51,              // "max-reconnect-tries"
-        S_RECONNECT_WAIT_TIME = 52,              // "reconnect-wait-time"
-        S_REQUEST_TIMEOUT = 53,                  // "request-timeout"
-        S_TCP_KEEPALIVE = 54,                    // "tcp-keepalive"
-        S_TCP_NODELAY = 55,                      // "tcp-nodelay"
-        S_MAX_ROW_ERRORS = 56,                   // "max-row-errors"
-        S_VALID_LIFETIME = 57,                   // "valid-lifetime"
-        S_MIN_VALID_LIFETIME = 58,               // "min-valid-lifetime"
-        S_MAX_VALID_LIFETIME = 59,               // "max-valid-lifetime"
-        S_RENEW_TIMER = 60,                      // "renew-timer"
-        S_REBIND_TIMER = 61,                     // "rebind-timer"
-        S_CALCULATE_TEE_TIMES = 62,              // "calculate-tee-times"
-        S_T1_PERCENT = 63,                       // "t1-percent"
-        S_T2_PERCENT = 64,                       // "t2-percent"
-        S_CACHE_THRESHOLD = 65,                  // "cache-threshold"
-        S_CACHE_MAX_AGE = 66,                    // "cache-max-age"
-        S_DECLINE_PROBATION_PERIOD = 67,         // "decline-probation-period"
-        S_SERVER_TAG = 68,                       // "server-tag"
-        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 69,   // "statistic-default-sample-count"
-        S_STATISTIC_DEFAULT_SAMPLE_AGE = 70,     // "statistic-default-sample-age"
-        S_DDNS_SEND_UPDATES = 71,                // "ddns-send-updates"
-        S_DDNS_OVERRIDE_NO_UPDATE = 72,          // "ddns-override-no-update"
-        S_DDNS_OVERRIDE_CLIENT_UPDATE = 73,      // "ddns-override-client-update"
-        S_DDNS_REPLACE_CLIENT_NAME = 74,         // "ddns-replace-client-name"
-        S_DDNS_GENERATED_PREFIX = 75,            // "ddns-generated-prefix"
-        S_DDNS_QUALIFYING_SUFFIX = 76,           // "ddns-qualifying-suffix"
-        S_DDNS_UPDATE_ON_RENEW = 77,             // "ddns-update-on-renew"
-        S_STORE_EXTENDED_INFO = 78,              // "store-extended-info"
-        S_SUBNET4 = 79,                          // "subnet4"
-        S_SUBNET_4O6_INTERFACE = 80,             // "4o6-interface"
-        S_SUBNET_4O6_INTERFACE_ID = 81,          // "4o6-interface-id"
-        S_SUBNET_4O6_SUBNET = 82,                // "4o6-subnet"
-        S_OPTION_DEF = 83,                       // "option-def"
-        S_OPTION_DATA = 84,                      // "option-data"
-        S_NAME = 85,                             // "name"
-        S_DATA = 86,                             // "data"
-        S_CODE = 87,                             // "code"
-        S_SPACE = 88,                            // "space"
-        S_CSV_FORMAT = 89,                       // "csv-format"
-        S_ALWAYS_SEND = 90,                      // "always-send"
-        S_RECORD_TYPES = 91,                     // "record-types"
-        S_ENCAPSULATE = 92,                      // "encapsulate"
-        S_ARRAY = 93,                            // "array"
-        S_SHARED_NETWORKS = 94,                  // "shared-networks"
-        S_POOLS = 95,                            // "pools"
-        S_POOL = 96,                             // "pool"
-        S_USER_CONTEXT = 97,                     // "user-context"
-        S_COMMENT = 98,                          // "comment"
-        S_SUBNET = 99,                           // "subnet"
-        S_INTERFACE = 100,                       // "interface"
-        S_ID = 101,                              // "id"
-        S_RESERVATION_MODE = 102,                // "reservation-mode"
-        S_DISABLED = 103,                        // "disabled"
-        S_OUT_OF_POOL = 104,                     // "out-of-pool"
-        S_GLOBAL = 105,                          // "global"
-        S_ALL = 106,                             // "all"
-        S_HOST_RESERVATION_IDENTIFIERS = 107,    // "host-reservation-identifiers"
-        S_CLIENT_CLASSES = 108,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 109,          // "require-client-classes"
-        S_TEST = 110,                            // "test"
-        S_ONLY_IF_REQUIRED = 111,                // "only-if-required"
-        S_CLIENT_CLASS = 112,                    // "client-class"
-        S_RESERVATIONS = 113,                    // "reservations"
-        S_DUID = 114,                            // "duid"
-        S_HW_ADDRESS = 115,                      // "hw-address"
-        S_CIRCUIT_ID = 116,                      // "circuit-id"
-        S_CLIENT_ID = 117,                       // "client-id"
-        S_HOSTNAME = 118,                        // "hostname"
-        S_FLEX_ID = 119,                         // "flex-id"
-        S_RELAY = 120,                           // "relay"
-        S_IP_ADDRESS = 121,                      // "ip-address"
-        S_IP_ADDRESSES = 122,                    // "ip-addresses"
-        S_HOOKS_LIBRARIES = 123,                 // "hooks-libraries"
-        S_LIBRARY = 124,                         // "library"
-        S_PARAMETERS = 125,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 126,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 127,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 128, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 129,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 130,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 131,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 132,         // "unwarned-reclaim-cycles"
-        S_DHCP4O6_PORT = 133,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 134,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 135,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 136,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 137,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 138,                  // "control-socket"
-        S_SOCKET_TYPE = 139,                     // "socket-type"
-        S_SOCKET_NAME = 140,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 141,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 142,                    // "enable-queue"
-        S_QUEUE_TYPE = 143,                      // "queue-type"
-        S_CAPACITY = 144,                        // "capacity"
-        S_DHCP_DDNS = 145,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 146,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 147,               // "qualifying-suffix"
-        S_SERVER_IP = 148,                       // "server-ip"
-        S_SERVER_PORT = 149,                     // "server-port"
-        S_SENDER_IP = 150,                       // "sender-ip"
-        S_SENDER_PORT = 151,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 152,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 153,                    // "ncr-protocol"
-        S_NCR_FORMAT = 154,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 155,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 156,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 157,             // "replace-client-name"
-        S_GENERATED_PREFIX = 158,                // "generated-prefix"
-        S_TCP = 159,                             // "tcp"
-        S_JSON = 160,                            // "JSON"
-        S_WHEN_PRESENT = 161,                    // "when-present"
-        S_NEVER = 162,                           // "never"
-        S_ALWAYS = 163,                          // "always"
-        S_WHEN_NOT_PRESENT = 164,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 165,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 166,       // "hostname-char-replacement"
-        S_IP_RESERVATIONS_UNIQUE = 167,          // "ip-reservations-unique"
-        S_LOGGERS = 168,                         // "loggers"
-        S_OUTPUT_OPTIONS = 169,                  // "output_options"
-        S_OUTPUT = 170,                          // "output"
-        S_DEBUGLEVEL = 171,                      // "debuglevel"
-        S_SEVERITY = 172,                        // "severity"
-        S_FLUSH = 173,                           // "flush"
-        S_MAXSIZE = 174,                         // "maxsize"
-        S_MAXVER = 175,                          // "maxver"
-        S_PATTERN = 176,                         // "pattern"
-        S_TOPLEVEL_JSON = 177,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP4 = 178,                  // TOPLEVEL_DHCP4
-        S_SUB_DHCP4 = 179,                       // SUB_DHCP4
-        S_SUB_INTERFACES4 = 180,                 // SUB_INTERFACES4
-        S_SUB_SUBNET4 = 181,                     // SUB_SUBNET4
-        S_SUB_POOL4 = 182,                       // SUB_POOL4
-        S_SUB_RESERVATION = 183,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 184,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 185,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 186,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 187,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 188,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 189,              // SUB_CONFIG_CONTROL
-        S_STRING = 190,                          // "constant string"
-        S_INTEGER = 191,                         // "integer"
-        S_FLOAT = 192,                           // "floating point"
-        S_BOOLEAN = 193,                         // "boolean"
-        S_YYACCEPT = 194,                        // $accept
-        S_start = 195,                           // start
-        S_196_1 = 196,                           // $@1
-        S_197_2 = 197,                           // $@2
-        S_198_3 = 198,                           // $@3
-        S_199_4 = 199,                           // $@4
-        S_200_5 = 200,                           // $@5
-        S_201_6 = 201,                           // $@6
-        S_202_7 = 202,                           // $@7
-        S_203_8 = 203,                           // $@8
-        S_204_9 = 204,                           // $@9
-        S_205_10 = 205,                          // $@10
-        S_206_11 = 206,                          // $@11
-        S_207_12 = 207,                          // $@12
-        S_208_13 = 208,                          // $@13
-        S_value = 209,                           // value
-        S_sub_json = 210,                        // sub_json
-        S_map2 = 211,                            // map2
-        S_212_14 = 212,                          // $@14
-        S_map_value = 213,                       // map_value
-        S_map_content = 214,                     // map_content
-        S_not_empty_map = 215,                   // not_empty_map
-        S_list_generic = 216,                    // list_generic
-        S_217_15 = 217,                          // $@15
-        S_list_content = 218,                    // list_content
-        S_not_empty_list = 219,                  // not_empty_list
-        S_list_strings = 220,                    // list_strings
-        S_221_16 = 221,                          // $@16
-        S_list_strings_content = 222,            // list_strings_content
-        S_not_empty_list_strings = 223,          // not_empty_list_strings
-        S_unknown_map_entry = 224,               // unknown_map_entry
-        S_syntax_map = 225,                      // syntax_map
-        S_226_17 = 226,                          // $@17
-        S_global_object = 227,                   // global_object
-        S_228_18 = 228,                          // $@18
-        S_sub_dhcp4 = 229,                       // sub_dhcp4
-        S_230_19 = 230,                          // $@19
-        S_global_params = 231,                   // global_params
-        S_global_param = 232,                    // global_param
-        S_valid_lifetime = 233,                  // valid_lifetime
-        S_min_valid_lifetime = 234,              // min_valid_lifetime
-        S_max_valid_lifetime = 235,              // max_valid_lifetime
-        S_renew_timer = 236,                     // renew_timer
-        S_rebind_timer = 237,                    // rebind_timer
-        S_calculate_tee_times = 238,             // calculate_tee_times
-        S_t1_percent = 239,                      // t1_percent
-        S_t2_percent = 240,                      // t2_percent
-        S_cache_threshold = 241,                 // cache_threshold
-        S_cache_max_age = 242,                   // cache_max_age
-        S_decline_probation_period = 243,        // decline_probation_period
-        S_server_tag = 244,                      // server_tag
-        S_245_20 = 245,                          // $@20
-        S_echo_client_id = 246,                  // echo_client_id
-        S_match_client_id = 247,                 // match_client_id
-        S_authoritative = 248,                   // authoritative
-        S_ddns_send_updates = 249,               // ddns_send_updates
-        S_ddns_override_no_update = 250,         // ddns_override_no_update
-        S_ddns_override_client_update = 251,     // ddns_override_client_update
-        S_ddns_replace_client_name = 252,        // ddns_replace_client_name
-        S_253_21 = 253,                          // $@21
-        S_ddns_replace_client_name_value = 254,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 255,           // ddns_generated_prefix
-        S_256_22 = 256,                          // $@22
-        S_ddns_qualifying_suffix = 257,          // ddns_qualifying_suffix
-        S_258_23 = 258,                          // $@23
-        S_ddns_update_on_renew = 259,            // ddns_update_on_renew
-        S_hostname_char_set = 260,               // hostname_char_set
-        S_261_24 = 261,                          // $@24
-        S_hostname_char_replacement = 262,       // hostname_char_replacement
-        S_263_25 = 263,                          // $@25
-        S_store_extended_info = 264,             // store_extended_info
-        S_statistic_default_sample_count = 265,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 266,    // statistic_default_sample_age
-        S_ip_reservations_unique = 267,          // ip_reservations_unique
-        S_interfaces_config = 268,               // interfaces_config
-        S_269_26 = 269,                          // $@26
-        S_interfaces_config_params = 270,        // interfaces_config_params
-        S_interfaces_config_param = 271,         // interfaces_config_param
-        S_sub_interfaces4 = 272,                 // sub_interfaces4
-        S_273_27 = 273,                          // $@27
-        S_interfaces_list = 274,                 // interfaces_list
-        S_275_28 = 275,                          // $@28
-        S_dhcp_socket_type = 276,                // dhcp_socket_type
-        S_277_29 = 277,                          // $@29
-        S_socket_type = 278,                     // socket_type
-        S_outbound_interface = 279,              // outbound_interface
-        S_280_30 = 280,                          // $@30
-        S_outbound_interface_value = 281,        // outbound_interface_value
-        S_re_detect = 282,                       // re_detect
-        S_lease_database = 283,                  // lease_database
-        S_284_31 = 284,                          // $@31
-        S_sanity_checks = 285,                   // sanity_checks
-        S_286_32 = 286,                          // $@32
-        S_sanity_checks_params = 287,            // sanity_checks_params
-        S_sanity_checks_param = 288,             // sanity_checks_param
-        S_lease_checks = 289,                    // lease_checks
-        S_290_33 = 290,                          // $@33
-        S_hosts_database = 291,                  // hosts_database
-        S_292_34 = 292,                          // $@34
-        S_hosts_databases = 293,                 // hosts_databases
-        S_294_35 = 294,                          // $@35
-        S_database_list = 295,                   // database_list
-        S_not_empty_database_list = 296,         // not_empty_database_list
-        S_database = 297,                        // database
-        S_298_36 = 298,                          // $@36
-        S_database_map_params = 299,             // database_map_params
-        S_database_map_param = 300,              // database_map_param
-        S_database_type = 301,                   // database_type
-        S_302_37 = 302,                          // $@37
-        S_db_type = 303,                         // db_type
-        S_user = 304,                            // user
-        S_305_38 = 305,                          // $@38
-        S_password = 306,                        // password
-        S_307_39 = 307,                          // $@39
-        S_host = 308,                            // host
-        S_309_40 = 309,                          // $@40
-        S_port = 310,                            // port
-        S_name = 311,                            // name
-        S_312_41 = 312,                          // $@41
-        S_persist = 313,                         // persist
-        S_lfc_interval = 314,                    // lfc_interval
-        S_readonly = 315,                        // readonly
-        S_connect_timeout = 316,                 // connect_timeout
-        S_request_timeout = 317,                 // request_timeout
-        S_tcp_keepalive = 318,                   // tcp_keepalive
-        S_tcp_nodelay = 319,                     // tcp_nodelay
-        S_contact_points = 320,                  // contact_points
-        S_321_42 = 321,                          // $@42
-        S_keyspace = 322,                        // keyspace
-        S_323_43 = 323,                          // $@43
-        S_consistency = 324,                     // consistency
-        S_325_44 = 325,                          // $@44
-        S_serial_consistency = 326,              // serial_consistency
-        S_327_45 = 327,                          // $@45
-        S_max_reconnect_tries = 328,             // max_reconnect_tries
-        S_reconnect_wait_time = 329,             // reconnect_wait_time
-        S_max_row_errors = 330,                  // max_row_errors
-        S_host_reservation_identifiers = 331,    // host_reservation_identifiers
-        S_332_46 = 332,                          // $@46
-        S_host_reservation_identifiers_list = 333, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 334,     // host_reservation_identifier
-        S_duid_id = 335,                         // duid_id
-        S_hw_address_id = 336,                   // hw_address_id
-        S_circuit_id = 337,                      // circuit_id
-        S_client_id = 338,                       // client_id
-        S_flex_id = 339,                         // flex_id
-        S_dhcp_multi_threading = 340,            // dhcp_multi_threading
-        S_341_47 = 341,                          // $@47
-        S_multi_threading_params = 342,          // multi_threading_params
-        S_multi_threading_param = 343,           // multi_threading_param
-        S_enable_multi_threading = 344,          // enable_multi_threading
-        S_thread_pool_size = 345,                // thread_pool_size
-        S_packet_queue_size = 346,               // packet_queue_size
-        S_hooks_libraries = 347,                 // hooks_libraries
-        S_348_48 = 348,                          // $@48
-        S_hooks_libraries_list = 349,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 350,  // not_empty_hooks_libraries_list
-        S_hooks_library = 351,                   // hooks_library
-        S_352_49 = 352,                          // $@49
-        S_sub_hooks_library = 353,               // sub_hooks_library
-        S_354_50 = 354,                          // $@50
-        S_hooks_params = 355,                    // hooks_params
-        S_hooks_param = 356,                     // hooks_param
-        S_library = 357,                         // library
-        S_358_51 = 358,                          // $@51
-        S_parameters = 359,                      // parameters
-        S_360_52 = 360,                          // $@52
-        S_expired_leases_processing = 361,       // expired_leases_processing
-        S_362_53 = 362,                          // $@53
-        S_expired_leases_params = 363,           // expired_leases_params
-        S_expired_leases_param = 364,            // expired_leases_param
-        S_reclaim_timer_wait_time = 365,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 366, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 367,             // hold_reclaimed_time
-        S_max_reclaim_leases = 368,              // max_reclaim_leases
-        S_max_reclaim_time = 369,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 370,         // unwarned_reclaim_cycles
-        S_subnet4_list = 371,                    // subnet4_list
-        S_372_54 = 372,                          // $@54
-        S_subnet4_list_content = 373,            // subnet4_list_content
-        S_not_empty_subnet4_list = 374,          // not_empty_subnet4_list
-        S_subnet4 = 375,                         // subnet4
-        S_376_55 = 376,                          // $@55
-        S_sub_subnet4 = 377,                     // sub_subnet4
-        S_378_56 = 378,                          // $@56
-        S_subnet4_params = 379,                  // subnet4_params
-        S_subnet4_param = 380,                   // subnet4_param
-        S_subnet = 381,                          // subnet
-        S_382_57 = 382,                          // $@57
-        S_subnet_4o6_interface = 383,            // subnet_4o6_interface
-        S_384_58 = 384,                          // $@58
-        S_subnet_4o6_interface_id = 385,         // subnet_4o6_interface_id
-        S_386_59 = 386,                          // $@59
-        S_subnet_4o6_subnet = 387,               // subnet_4o6_subnet
-        S_388_60 = 388,                          // $@60
-        S_interface = 389,                       // interface
-        S_390_61 = 390,                          // $@61
-        S_client_class = 391,                    // client_class
-        S_392_62 = 392,                          // $@62
-        S_require_client_classes = 393,          // require_client_classes
-        S_394_63 = 394,                          // $@63
-        S_reservation_mode = 395,                // reservation_mode
-        S_396_64 = 396,                          // $@64
-        S_hr_mode = 397,                         // hr_mode
-        S_id = 398,                              // id
-        S_shared_networks = 399,                 // shared_networks
-        S_400_65 = 400,                          // $@65
-        S_shared_networks_content = 401,         // shared_networks_content
-        S_shared_networks_list = 402,            // shared_networks_list
-        S_shared_network = 403,                  // shared_network
-        S_404_66 = 404,                          // $@66
-        S_shared_network_params = 405,           // shared_network_params
-        S_shared_network_param = 406,            // shared_network_param
-        S_option_def_list = 407,                 // option_def_list
-        S_408_67 = 408,                          // $@67
-        S_sub_option_def_list = 409,             // sub_option_def_list
-        S_410_68 = 410,                          // $@68
-        S_option_def_list_content = 411,         // option_def_list_content
-        S_not_empty_option_def_list = 412,       // not_empty_option_def_list
-        S_option_def_entry = 413,                // option_def_entry
-        S_414_69 = 414,                          // $@69
-        S_sub_option_def = 415,                  // sub_option_def
-        S_416_70 = 416,                          // $@70
-        S_option_def_params = 417,               // option_def_params
-        S_not_empty_option_def_params = 418,     // not_empty_option_def_params
-        S_option_def_param = 419,                // option_def_param
-        S_option_def_name = 420,                 // option_def_name
-        S_code = 421,                            // code
-        S_option_def_code = 422,                 // option_def_code
-        S_option_def_type = 423,                 // option_def_type
-        S_424_71 = 424,                          // $@71
-        S_option_def_record_types = 425,         // option_def_record_types
-        S_426_72 = 426,                          // $@72
-        S_space = 427,                           // space
-        S_428_73 = 428,                          // $@73
-        S_option_def_space = 429,                // option_def_space
-        S_option_def_encapsulate = 430,          // option_def_encapsulate
-        S_431_74 = 431,                          // $@74
-        S_option_def_array = 432,                // option_def_array
-        S_option_data_list = 433,                // option_data_list
-        S_434_75 = 434,                          // $@75
-        S_option_data_list_content = 435,        // option_data_list_content
-        S_not_empty_option_data_list = 436,      // not_empty_option_data_list
-        S_option_data_entry = 437,               // option_data_entry
-        S_438_76 = 438,                          // $@76
-        S_sub_option_data = 439,                 // sub_option_data
-        S_440_77 = 440,                          // $@77
-        S_option_data_params = 441,              // option_data_params
-        S_not_empty_option_data_params = 442,    // not_empty_option_data_params
-        S_option_data_param = 443,               // option_data_param
-        S_option_data_name = 444,                // option_data_name
-        S_option_data_data = 445,                // option_data_data
-        S_446_78 = 446,                          // $@78
-        S_option_data_code = 447,                // option_data_code
-        S_option_data_space = 448,               // option_data_space
-        S_option_data_csv_format = 449,          // option_data_csv_format
-        S_option_data_always_send = 450,         // option_data_always_send
-        S_pools_list = 451,                      // pools_list
-        S_452_79 = 452,                          // $@79
-        S_pools_list_content = 453,              // pools_list_content
-        S_not_empty_pools_list = 454,            // not_empty_pools_list
-        S_pool_list_entry = 455,                 // pool_list_entry
-        S_456_80 = 456,                          // $@80
-        S_sub_pool4 = 457,                       // sub_pool4
-        S_458_81 = 458,                          // $@81
-        S_pool_params = 459,                     // pool_params
-        S_pool_param = 460,                      // pool_param
-        S_pool_entry = 461,                      // pool_entry
-        S_462_82 = 462,                          // $@82
-        S_user_context = 463,                    // user_context
-        S_464_83 = 464,                          // $@83
-        S_comment = 465,                         // comment
-        S_466_84 = 466,                          // $@84
-        S_reservations = 467,                    // reservations
-        S_468_85 = 468,                          // $@85
-        S_reservations_list = 469,               // reservations_list
-        S_not_empty_reservations_list = 470,     // not_empty_reservations_list
-        S_reservation = 471,                     // reservation
-        S_472_86 = 472,                          // $@86
-        S_sub_reservation = 473,                 // sub_reservation
-        S_474_87 = 474,                          // $@87
-        S_reservation_params = 475,              // reservation_params
-        S_not_empty_reservation_params = 476,    // not_empty_reservation_params
-        S_reservation_param = 477,               // reservation_param
-        S_next_server = 478,                     // next_server
-        S_479_88 = 479,                          // $@88
-        S_server_hostname = 480,                 // server_hostname
-        S_481_89 = 481,                          // $@89
-        S_boot_file_name = 482,                  // boot_file_name
-        S_483_90 = 483,                          // $@90
-        S_ip_address = 484,                      // ip_address
-        S_485_91 = 485,                          // $@91
-        S_ip_addresses = 486,                    // ip_addresses
-        S_487_92 = 487,                          // $@92
-        S_duid = 488,                            // duid
-        S_489_93 = 489,                          // $@93
-        S_hw_address = 490,                      // hw_address
-        S_491_94 = 491,                          // $@94
-        S_client_id_value = 492,                 // client_id_value
-        S_493_95 = 493,                          // $@95
-        S_circuit_id_value = 494,                // circuit_id_value
-        S_495_96 = 495,                          // $@96
-        S_flex_id_value = 496,                   // flex_id_value
-        S_497_97 = 497,                          // $@97
-        S_hostname = 498,                        // hostname
-        S_499_98 = 499,                          // $@98
-        S_reservation_client_classes = 500,      // reservation_client_classes
-        S_501_99 = 501,                          // $@99
-        S_relay = 502,                           // relay
-        S_503_100 = 503,                         // $@100
-        S_relay_map = 504,                       // relay_map
-        S_client_classes = 505,                  // client_classes
-        S_506_101 = 506,                         // $@101
-        S_client_classes_list = 507,             // client_classes_list
-        S_client_class_entry = 508,              // client_class_entry
-        S_509_102 = 509,                         // $@102
-        S_client_class_params = 510,             // client_class_params
-        S_not_empty_client_class_params = 511,   // not_empty_client_class_params
-        S_client_class_param = 512,              // client_class_param
-        S_client_class_name = 513,               // client_class_name
-        S_client_class_test = 514,               // client_class_test
-        S_515_103 = 515,                         // $@103
-        S_only_if_required = 516,                // only_if_required
-        S_dhcp4o6_port = 517,                    // dhcp4o6_port
-        S_control_socket = 518,                  // control_socket
-        S_519_104 = 519,                         // $@104
-        S_control_socket_params = 520,           // control_socket_params
-        S_control_socket_param = 521,            // control_socket_param
-        S_control_socket_type = 522,             // control_socket_type
-        S_523_105 = 523,                         // $@105
-        S_control_socket_name = 524,             // control_socket_name
-        S_525_106 = 525,                         // $@106
-        S_dhcp_queue_control = 526,              // dhcp_queue_control
-        S_527_107 = 527,                         // $@107
-        S_queue_control_params = 528,            // queue_control_params
-        S_queue_control_param = 529,             // queue_control_param
-        S_enable_queue = 530,                    // enable_queue
-        S_queue_type = 531,                      // queue_type
-        S_532_108 = 532,                         // $@108
-        S_capacity = 533,                        // capacity
-        S_arbitrary_map_entry = 534,             // arbitrary_map_entry
-        S_535_109 = 535,                         // $@109
-        S_dhcp_ddns = 536,                       // dhcp_ddns
-        S_537_110 = 537,                         // $@110
-        S_sub_dhcp_ddns = 538,                   // sub_dhcp_ddns
-        S_539_111 = 539,                         // $@111
-        S_dhcp_ddns_params = 540,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 541,                 // dhcp_ddns_param
-        S_enable_updates = 542,                  // enable_updates
-        S_server_ip = 543,                       // server_ip
-        S_544_112 = 544,                         // $@112
-        S_server_port = 545,                     // server_port
-        S_sender_ip = 546,                       // sender_ip
-        S_547_113 = 547,                         // $@113
-        S_sender_port = 548,                     // sender_port
-        S_max_queue_size = 549,                  // max_queue_size
-        S_ncr_protocol = 550,                    // ncr_protocol
-        S_551_114 = 551,                         // $@114
-        S_ncr_protocol_value = 552,              // ncr_protocol_value
-        S_ncr_format = 553,                      // ncr_format
-        S_554_115 = 554,                         // $@115
-        S_dep_qualifying_suffix = 555,           // dep_qualifying_suffix
-        S_556_116 = 556,                         // $@116
-        S_dep_override_no_update = 557,          // dep_override_no_update
-        S_dep_override_client_update = 558,      // dep_override_client_update
-        S_dep_replace_client_name = 559,         // dep_replace_client_name
-        S_560_117 = 560,                         // $@117
-        S_dep_generated_prefix = 561,            // dep_generated_prefix
-        S_562_118 = 562,                         // $@118
-        S_dep_hostname_char_set = 563,           // dep_hostname_char_set
-        S_564_119 = 564,                         // $@119
-        S_dep_hostname_char_replacement = 565,   // dep_hostname_char_replacement
-        S_566_120 = 566,                         // $@120
-        S_config_control = 567,                  // config_control
-        S_568_121 = 568,                         // $@121
-        S_sub_config_control = 569,              // sub_config_control
-        S_570_122 = 570,                         // $@122
-        S_config_control_params = 571,           // config_control_params
-        S_config_control_param = 572,            // config_control_param
-        S_config_databases = 573,                // config_databases
-        S_574_123 = 574,                         // $@123
-        S_config_fetch_wait_time = 575,          // config_fetch_wait_time
-        S_loggers = 576,                         // loggers
-        S_577_124 = 577,                         // $@124
-        S_loggers_entries = 578,                 // loggers_entries
-        S_logger_entry = 579,                    // logger_entry
-        S_580_125 = 580,                         // $@125
-        S_logger_params = 581,                   // logger_params
-        S_logger_param = 582,                    // logger_param
-        S_debuglevel = 583,                      // debuglevel
-        S_severity = 584,                        // severity
-        S_585_126 = 585,                         // $@126
-        S_output_options_list = 586,             // output_options_list
-        S_587_127 = 587,                         // $@127
-        S_output_options_list_content = 588,     // output_options_list_content
-        S_output_entry = 589,                    // output_entry
-        S_590_128 = 590,                         // $@128
-        S_output_params_list = 591,              // output_params_list
-        S_output_params = 592,                   // output_params
-        S_output = 593,                          // output
-        S_594_129 = 594,                         // $@129
-        S_flush = 595,                           // flush
-        S_maxsize = 596,                         // maxsize
-        S_maxver = 597,                          // maxver
-        S_pattern = 598,                         // pattern
-        S_599_130 = 599                          // $@130
-      };
-    };
+    /// Symbol type: an internal symbol number.
+    typedef int symbol_number_type;
 
-    /// (Internal) symbol kind.
-    typedef symbol_kind::symbol_kind_type symbol_kind_type;
+    /// The symbol type number to denote an empty symbol.
+    enum { empty_symbol = -2 };
 
-    /// The number of tokens.
-    static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS;
+    /// Internal symbol number for tokens (subsumed by symbol_number_type).
+    typedef unsigned char token_number_type;
 
     /// A complete symbol.
     ///
-    /// Expects its Base type to provide access to the symbol kind
-    /// via kind ().
+    /// Expects its Base type to provide access to the symbol type
+    /// via type_get().
     ///
     /// Provide access to semantic value and location.
     template <typename Base>
@@ -1317,202 +568,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)
-        : Base (std::move (that))
-        , value ()
-        , location (std::move (that.location))
-      {
-        switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
-
-      default:
-        break;
-    }
-
-      }
-#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_kind_type yykind = this->kind ();
-        basic_symbol<Base>& yysym = *this;
-        (void) yysym;
-        switch (yykind)
-        {
-       default:
-          break;
-        }
-
-        // Value type destructor.
-switch (yykind)
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.template destroy< ElementPtr > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.template destroy< bool > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.template destroy< double > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.template destroy< int64_t > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
 
-      case symbol_kind::S_STRING: // "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);
 
-      /// The user-facing name of this symbol.
-      std::string name () const YY_NOEXCEPT
-      {
-        return Dhcp4Parser::symbol_name (this->kind ());
-      }
+      /// Destroy the symbol.
+      ~basic_symbol ();
 
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      /// 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);
@@ -1524,3650 +612,2591 @@ switch (yykind)
       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.
-    struct by_kind
+    struct by_type
     {
       /// Default constructor.
-      by_kind ();
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      by_kind (by_kind&& that);
-#endif
+      by_type ();
 
       /// Copy constructor.
-      by_kind (const by_kind& that);
+      by_type (const by_type& other);
 
-      /// The symbol kind as needed by the constructor.
-      typedef token_kind_type kind_type;
+      /// The symbol type as needed by the constructor.
+      typedef token_type kind_type;
 
       /// Constructor from (external) token numbers.
-      by_kind (kind_type t);
+      by_type (kind_type t);
 
       /// Record that this symbol is empty.
       void clear ();
 
-      /// Steal the symbol kind from \a that.
-      void move (by_kind& that);
+      /// Steal the symbol type from \a that.
+      void move (by_type& that);
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+      symbol_number_type type_get () const;
 
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      /// The token.
+      token_type token () const;
 
-      /// The symbol kind.
-      /// \a S_YYEMPTY when empty.
-      symbol_kind_type kind_;
+      /// The symbol type.
+      /// \a empty_symbol when empty.
+      /// An int, not token_number_type, to be able to store empty_symbol.
+      int type;
     };
 
-    /// Backward compatibility for a private implementation detail (Bison 3.6).
-    typedef by_kind by_type;
-
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_kind>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_kind> 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))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || 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_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || 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_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_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_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_IP_RESERVATIONS_UNIQUE || 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_PATTERN || 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_CONFIG_CONTROL);
-      }
-#else
-      symbol_type (int tok, const location_type& l)
-        : super_type(token_type (tok), l)
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || 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_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || 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_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_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_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_IP_RESERVATIONS_UNIQUE || 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_PATTERN || 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_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))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#else
-      symbol_type (int tok, const bool& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
-#else
-      symbol_type (int tok, const double& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
-#else
-      symbol_type (int tok, const int64_t& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
-#else
-      symbol_type (int tok, const std::string& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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);
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    Dhcp4Parser (const Dhcp4Parser&) = delete;
-    /// Non copyable.
-    Dhcp4Parser& operator= (const Dhcp4Parser&) = delete;
-#endif
+    static inline
+    symbol_type
+    make_LSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.  An alias for parse ().
-    /// \returns  0 iff parsing succeeded.
-    int operator() ();
+    static inline
+    symbol_type
+    make_RSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.
-    /// \returns  0 iff parsing succeeded.
-    virtual int parse ();
+    static inline
+    symbol_type
+    make_LCURLY_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_RCURLY_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_NULL_TYPE (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_DHCP4 (const location_type& l);
 
-    /// Report a syntax error.
-    void error (const syntax_error& err);
+    static inline
+    symbol_type
+    make_CONFIG_CONTROL (const location_type& l);
 
-    /// The user-facing name of the symbol whose (internal) number is
-    /// YYSYMBOL.  No bounds checking.
-    static std::string symbol_name (symbol_kind_type yysymbol);
+    static inline
+    symbol_type
+    make_CONFIG_DATABASES (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_PARSER4_error (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER4_error, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER4_error (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER4_error, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARSER4_UNDEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER4_UNDEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER4_UNDEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER4_UNDEF, 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_CONFIG_FETCH_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, 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);
-      }
+    static inline
+    symbol_type
+    make_CONFIG_FETCH_WAIT_TIME (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_MAX_ROW_ERRORS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MIN_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_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_CACHE_THRESHOLD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CACHE_MAX_AGE (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_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_SEND_UPDATES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_REPLACE_CLIENT_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_GENERATED_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_QUALIFYING_SUFFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_UPDATE_ON_RENEW (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STORE_EXTENDED_INFO (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_DHCP_MULTI_THREADING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENABLE_MULTI_THREADING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_THREAD_POOL_SIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PACKET_QUEUE_SIZE (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_ENABLE_QUEUE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_QUEUE_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CAPACITY (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_IP_RESERVATIONS_UNIQUE (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_PATTERN (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_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_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);
-      }
-#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_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, 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_MAX_ROW_ERRORS (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_ROW_ERRORS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_ROW_ERRORS, 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_MIN_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MIN_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_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_CACHE_THRESHOLD (location_type l)
-      {
-        return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CACHE_THRESHOLD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CACHE_MAX_AGE (location_type l)
-      {
-        return symbol_type (token::TOKEN_CACHE_MAX_AGE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CACHE_MAX_AGE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CACHE_MAX_AGE, 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_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_SEND_UPDATES (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_SEND_UPDATES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_NO_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_REPLACE_CLIENT_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_GENERATED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_GENERATED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_QUALIFYING_SUFFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_UPDATE_ON_RENEW (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_UPDATE_ON_RENEW (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STORE_EXTENDED_INFO (location_type l)
-      {
-        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STORE_EXTENDED_INFO (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, 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_DHCP_MULTI_THREADING (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_MULTI_THREADING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENABLE_MULTI_THREADING (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_MULTI_THREADING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_THREAD_POOL_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_THREAD_POOL_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PACKET_QUEUE_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PACKET_QUEUE_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, 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_ENABLE_QUEUE (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_QUEUE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_QUEUE_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_QUEUE_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_QUEUE_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CAPACITY (location_type l)
-      {
-        return symbol_type (token::TOKEN_CAPACITY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CAPACITY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CAPACITY, 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_IP_RESERVATIONS_UNIQUE (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_RESERVATIONS_UNIQUE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, 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_PATTERN (location_type l)
-      {
-        return symbol_type (token::TOKEN_PATTERN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PATTERN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PATTERN, 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_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_ = 1193,     ///< Last index in yytable_.
+      yynnts_ = 407,  ///< Number of nonterminal symbols.
+      yyfinal_ = 28, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 195  ///< 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,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194
+    };
+    const unsigned int user_token_number_max_ = 449;
+    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 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        value.copy< ElementPtr > (other.value);
+        break;
+
+      case 194: // "boolean"
+        value.copy< bool > (other.value);
+        break;
+
+      case 193: // "floating point"
+        value.copy< double > (other.value);
+        break;
+
+      case 192: // "integer"
+        value.copy< int64_t > (other.value);
+        break;
+
+      case 191: // "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 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        value.copy< ElementPtr > (v);
+        break;
+
+      case 194: // "boolean"
+        value.copy< bool > (v);
+        break;
+
+      case 193: // "floating point"
+        value.copy< double > (v);
+        break;
+
+      case 192: // "integer"
+        value.copy< int64_t > (v);
+        break;
+
+      case 191: // "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 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        value.template destroy< ElementPtr > ();
+        break;
+
+      case 194: // "boolean"
+        value.template destroy< bool > ();
+        break;
+
+      case 193: // "floating point"
+        value.template destroy< double > ();
+        break;
+
+      case 192: // "integer"
+        value.template destroy< int64_t > ();
+        break;
+
+      case 191: // "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 210: // value
+      case 214: // map_value
+      case 255: // ddns_replace_client_name_value
+      case 280: // socket_type
+      case 283: // outbound_interface_value
+      case 305: // db_type
+      case 399: // hr_mode
+      case 554: // ncr_protocol_value
+        value.move< ElementPtr > (s.value);
+        break;
+
+      case 194: // "boolean"
+        value.move< bool > (s.value);
+        break;
+
+      case 193: // "floating point"
+        value.move< double > (s.value);
+        break;
+
+      case 192: // "integer"
+        value.move< int64_t > (s.value);
+        break;
+
+      case 191: // "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,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449
+    };
+    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_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, 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);
+  }
 
-    class context
-    {
-    public:
-      context (const Dhcp4Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+  }
 
-      /// Put in YYARG at most YYARGN of the expected tokens, and return the
-      /// number of tokens stored in YYARG.  If YYARG is null, return the
-      /// number of expected tokens (guaranteed to be less than YYNTOKENS).
-      int expected_tokens (symbol_kind_type yyarg[], int yyargn) const;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, l);
+  }
 
-    private:
-      const Dhcp4Parser& yyparser_;
-      const symbol_type& yyla_;
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_ROW_ERRORS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l);
+  }
 
-  private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
-    Dhcp4Parser (const Dhcp4Parser&);
-    /// Non copyable.
-    Dhcp4Parser& operator= (const Dhcp4Parser&);
-#endif
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MIN_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+  }
 
-    /// Stored state numbers (used for stacks).
-    typedef short state_type;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAX_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+  }
 
-    /// The arguments of the error message.
-    int yy_syntax_error_arguments_ (const context& yyctx,
-                                    symbol_kind_type yyarg[], int yyargn) const;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RENEW_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RENEW_TIMER, l);
+  }
 
-    /// Generate an error message.
-    /// \param yyctx     the context in which the error occurred.
-    virtual std::string yysyntax_error_ (const context& yyctx) const;
-    /// Compute post-reduction state.
-    /// \param yystate   the current state
-    /// \param yysym     the nonterminal to push on the stack
-    static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REBIND_TIMER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REBIND_TIMER, 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_CALCULATE_TEE_TIMES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, 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_T1_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T1_PERCENT, l);
+  }
 
-    static const short yypact_ninf_;
-    static const signed char yytable_ninf_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_T2_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T2_PERCENT, l);
+  }
 
-    /// Convert a scanner token kind \a t to a symbol kind.
-    /// In theory \a t should be a token_kind_type, but character literals
-    /// are valid, yet not members of the token_type enum.
-    static symbol_kind_type yytranslate_ (int t);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CACHE_THRESHOLD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
+  }
 
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *yystr);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CACHE_MAX_AGE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CACHE_MAX_AGE, l);
+  }
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SERVER_TAG (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_TAG, l);
+  }
 
-    // Tables.
-    // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    // STATE-NUM.
-    static const short yypact_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_SEND_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, 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 short yydefact_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
+  }
 
-    // YYPGOTO[NTERM-NUM].
-    static const short yypgoto_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
+  }
 
-    // YYDEFGOTO[NTERM-NUM].
-    static const short yydefgoto_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_GENERATED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, 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 short yytable_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
+  }
 
-    static const short yycheck_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_UPDATE_ON_RENEW (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
+  }
 
-    // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    // symbol of state STATE-NUM.
-    static const short yystos_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l);
+  }
 
-    // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-    static const short yyr1_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_STORE_EXTENDED_INFO (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
+  }
 
-    // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-    static const signed char yyr2_[];
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET4, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
+  }
 
-#if PARSER4_DEBUG
-    // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-    static const short yyrline_[];
-    /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r) const;
-    /// Print the state stack on the debug stream.
-    virtual void yy_stack_print_ () const;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
+  }
 
-    /// Debugging level.
-    int yydebug_;
-    /// Debug stream.
-    std::ostream* yycdebug_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
+  }
 
-    /// \brief Display a symbol kind, 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_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DEF, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DATA, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NAME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DATA, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CODE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SPACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SPACE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CSV_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CSV_FORMAT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALWAYS_SEND (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECORD_TYPES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENCAPSULATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENCAPSULATE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ARRAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ARRAY, l);
+  }
+
+  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);
+  }
+
+  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);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_COMMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMENT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ID, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RESERVATION_MODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_GLOBAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TEST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TEST, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CLIENT_CLASS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+  }
+
+  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_DHCP_MULTI_THREADING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENABLE_MULTI_THREADING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, 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_THREAD_POOL_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
+  }
 
-  private:
-    /// Type access provider for state based symbols.
-    struct by_state
-    {
-      /// Default constructor.
-      by_state () YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PACKET_QUEUE_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
+  }
 
-      /// The symbol kind as needed by the constructor.
-      typedef state_type kind_type;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+  }
 
-      /// Constructor.
-      by_state (kind_type s) YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SOCKET_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+  }
 
-      /// Copy constructor.
-      by_state (const by_state& that) YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SOCKET_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_NAME, l);
+  }
 
-      /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+  }
 
-      /// Steal the symbol kind from \a that.
-      void move (by_state& that);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENABLE_QUEUE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
+  }
 
-      /// The symbol kind (corresponding to \a state).
-      /// \a symbol_kind::S_YYEMPTY when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_QUEUE_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUEUE_TYPE, l);
+  }
 
-      /// The state number used to denote an empty symbol.
-      /// We use the initial state, as it does not have a value.
-      enum { empty_state = 0 };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CAPACITY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CAPACITY, l);
+  }
 
-      /// The state.
-      /// \a empty when empty.
-      state_type state;
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_DDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_DDNS, 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);
-
-      /// Assignment, needed by push_back by other implementations.
-      /// Needed by some other old implementations.
-      stack_symbol_type& operator= (const stack_symbol_type& that);
-#endif
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_UPDATES, 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::iterator iterator;
-      typedef typename S::const_iterator const_iterator;
-      typedef typename S::size_type size_type;
-      typedef typename std::ptrdiff_t index_type;
-
-      stack (size_type n = 200)
-        : seq_ (n)
-      {}
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Non copyable.
-      stack (const stack&) = delete;
-      /// Non copyable.
-      stack& operator= (const stack&) = delete;
-#endif
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+  }
 
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (index_type i) const
-      {
-        return seq_[size_type (size () - 1 - i)];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (index_type i)
-      {
-        return seq_[size_type (size () - 1 - 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_SERVER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_IP, l);
+  }
 
-      /// Pop elements from the stack.
-      void
-      pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
-      {
-        for (; 0 < n; --n)
-          seq_.pop_back ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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 ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SENDER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SENDER_IP, l);
+  }
 
-      /// Number of elements on the stack.
-      index_type
-      size () const YY_NOEXCEPT
-      {
-        return index_type (seq_.size ());
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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_.begin ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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_.end ();
-      }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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, index_type range)
-          : stack_ (stack)
-          , range_ (range)
-        {}
-
-        const T&
-        operator[] (index_type i) const
-        {
-          return stack_[range_ - i];
-        }
-
-      private:
-        const stack& stack_;
-        index_type range_;
-      };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NCR_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_FORMAT, l);
+  }
 
-    private:
-#if YY_CPLUSPLUS < 201103L
-      /// Non copyable.
-      stack (const stack&);
-      /// Non copyable.
-      stack& operator= (const stack&);
-#endif
-      /// The wrapped container.
-      S seq_;
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+  }
 
-    /// The stack.
-    stack_type yystack_;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::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);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP, 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_JSON (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_JSON, l);
+  }
 
-    /// Pop \a n symbols from the stack.
-    void yypop_ (int n = 1);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_WHEN_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+  }
 
-    /// Constants.
-    enum
-    {
-      yylast_ = 1184,     ///< Last index in yytable_.
-      yynnts_ = 406,  ///< Number of nonterminal symbols.
-      yyfinal_ = 28 ///< Termination state number.
-    };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_NEVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NEVER, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_ALWAYS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALWAYS, l);
+  }
 
-    // User arguments.
-    isc::dhcp::Parser4Context& ctx;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+  }
 
-  };
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+  }
 
-  inline
-  Dhcp4Parser::symbol_kind_type
-  Dhcp4Parser::yytranslate_ (int t)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
   {
-    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
-    // TOKEN-NUM as returned by yylex.
-    static
-    const unsigned char
-    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,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193
-    };
-    // Last valid token kind.
-    const int code_max = 448;
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+  }
 
-    if (t <= 0)
-      return symbol_kind::S_YYEOF;
-    else if (t <= code_max)
-      return YY_CAST (symbol_kind_type, translate_table[t]);
-    else
-      return symbol_kind::S_YYUNDEF;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_IP_RESERVATIONS_UNIQUE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l);
   }
 
-  // basic_symbol.
-  template <typename Base>
-  Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
-    : Base (that)
-    , value ()
-    , location (that.location)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_LOGGERS (const location_type& l)
   {
-    switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.copy< ElementPtr > (YY_MOVE (that.value));
-        break;
+    return symbol_type (token::TOKEN_LOGGERS, l);
+  }
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.copy< bool > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+  }
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.copy< double > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_OUTPUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT, l);
+  }
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.copy< int64_t > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DEBUGLEVEL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+  }
 
-      case symbol_kind::S_STRING: // "constant string"
-        value.copy< std::string > (YY_MOVE (that.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SEVERITY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SEVERITY, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_PATTERN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PATTERN, l);
+  }
 
-  template <typename Base>
-  Dhcp4Parser::symbol_kind_type
-  Dhcp4Parser::basic_symbol<Base>::type_get () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l)
   {
-    return this->kind ();
+    return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
   }
 
-  template <typename Base>
-  bool
-  Dhcp4Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l)
   {
-    return this->kind () == symbol_kind::S_YYEMPTY;
+    return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
   }
 
-  template <typename Base>
-  void
-  Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_DHCP4 (const location_type& l)
   {
-    super_type::move (s);
-    switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_socket_type: // socket_type
-      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (YY_MOVE (s.value));
-        break;
+    return symbol_type (token::TOKEN_SUB_DHCP4, l);
+  }
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
+  }
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (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 symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (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 symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (YY_MOVE (s.value));
-        break;
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_RESERVATION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+  }
 
-    location = YY_MOVE (s.location);
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
   }
 
-  // by_kind.
-  inline
-  Dhcp4Parser::by_kind::by_kind ()
-    : kind_ (symbol_kind::S_YYEMPTY)
-  {}
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+  }
 
-#if 201103L <= YY_CPLUSPLUS
-  inline
-  Dhcp4Parser::by_kind::by_kind (by_kind&& that)
-    : kind_ (that.kind_)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
   {
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
   }
-#endif
 
-  inline
-  Dhcp4Parser::by_kind::by_kind (const by_kind& that)
-    : kind_ (that.kind_)
-  {}
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+  }
 
-  inline
-  Dhcp4Parser::by_kind::by_kind (token_kind_type t)
-    : kind_ (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_kind::clear ()
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_STRING (const std::string& v, const location_type& l)
   {
-    kind_ = symbol_kind::S_YYEMPTY;
+    return symbol_type (token::TOKEN_STRING, v, l);
   }
 
-  inline
-  void
-  Dhcp4Parser::by_kind::move (by_kind& that)
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l)
   {
-    kind_ = that.kind_;
-    that.clear ();
+    return symbol_type (token::TOKEN_INTEGER, v, l);
   }
 
-  inline
-  Dhcp4Parser::symbol_kind_type
-  Dhcp4Parser::by_kind::kind () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_FLOAT (const double& v, const location_type& l)
   {
-    return kind_;
+    return symbol_type (token::TOKEN_FLOAT, v, l);
   }
 
-  inline
-  Dhcp4Parser::symbol_kind_type
-  Dhcp4Parser::by_kind::type_get () const YY_NOEXCEPT
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l)
   {
-    return this->kind ();
+    return symbol_type (token::TOKEN_BOOLEAN, v, l);
   }
 
-#line 14 "dhcp4_parser.yy"
+
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 5171 "dhcp4_parser.h"
+#line 3200 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 5e625a5bf2555330793b0b3c877ce1c57940f982..9e27bf60058a5c97fcd5445ec060ad31e877aacc 100644 (file)
@@ -123,6 +123,7 @@ using namespace std;
   DDNS_GENERATED_PREFIX "ddns-generated-prefix"
   DDNS_QUALIFYING_SUFFIX "ddns-qualifying-suffix"
   DDNS_UPDATE_ON_RENEW "ddns-update-on-renew"
+  DDNS_USE_CONFLICT_RESOLUTION "ddns-use-conflict-resolution"
   STORE_EXTENDED_INFO "store-extended-info"
   SUBNET4 "subnet4"
   SUBNET_4O6_INTERFACE "4o6-interface"
@@ -497,6 +498,7 @@ global_param: valid_lifetime
             | ddns_generated_prefix
             | ddns_qualifying_suffix
             | ddns_update_on_renew
+            | ddns_use_conflict_resolution
             | store_extended_info
             | statistic_default_sample_count
             | statistic_default_sample_age
@@ -667,6 +669,12 @@ ddns_update_on_renew: DDNS_UPDATE_ON_RENEW COLON BOOLEAN {
     ctx.stack_.back()->set("ddns-update-on-renew", b);
 };
 
+ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1));
+    ElementPtr b(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+};
+
 hostname_char_set: HOSTNAME_CHAR_SET {
     ctx.unique("hostname-char-set", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1383,6 +1391,7 @@ subnet4_param: valid_lifetime
              | ddns_generated_prefix
              | ddns_qualifying_suffix
              | ddns_update_on_renew
+             | ddns_use_conflict_resolution
              | hostname_char_set
              | hostname_char_replacement
              | store_extended_info
@@ -1541,6 +1550,7 @@ shared_network_param: name
                     | ddns_generated_prefix
                     | ddns_qualifying_suffix
                     | ddns_update_on_renew
+                    | ddns_use_conflict_resolution
                     | hostname_char_set
                     | hostname_char_replacement
                     | store_extended_info
index 4c9429ec04b27142cc03168bd6a8ab7505e8fcf0..7d005cea6dc09318e5bf7071ecc824c1899c1218 100644 (file)
@@ -643,6 +643,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "ddns-generated-prefix") ||
                  (config_pair.first == "ddns-qualifying-suffix") ||
                  (config_pair.first == "ddns-update-on-renew") ||
+                 (config_pair.first == "ddns-use-conflict-resolution") ||
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
                  (config_pair.first == "statistic-default-sample-age") ||
index 3d7f21452aa723ce37c42e6a38e4d8e65325537b..7e23a2ccac4e6235bff281bd9ffdb2365482b554 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 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 <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"
+#line 14 "dhcp4_parser.yy" // location.cc:296
 namespace isc { namespace dhcp {
-#line 59 "location.hh"
-
-  /// A point in a source file.
-  class position
-  {
-  public:
-    /// Type for file name.
-    typedef const std::string filename_type;
-    /// Type for line and column numbers.
-    typedef int counter_type;
-
-    /// Construct a position.
-    explicit position (filename_type* f = YY_NULLPTR,
-                       counter_type l = 1,
-                       counter_type c = 1)
-      : filename (f)
-      , line (l)
-      , column (c)
-    {}
-
-
-    /// Initialization.
-    void initialize (filename_type* fn = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
-    {
-      filename = fn;
-      line = l;
-      column = c;
-    }
-
-    /** \name Line and Column related manipulators
-     ** \{ */
-    /// (line related) Advance to the COUNT next lines.
-    void lines (counter_type count = 1)
-    {
-      if (count)
-        {
-          column = 1;
-          line = add_ (line, count, 1);
-        }
-    }
-
-    /// (column related) Advance to the COUNT next columns.
-    void columns (counter_type count = 1)
-    {
-      column = add_ (column, count, 1);
-    }
-    /** \} */
-
-    /// File name to which this position refers.
-    filename_type* filename;
-    /// Current line number.
-    counter_type line;
-    /// Current column number.
-    counter_type column;
-
-  private:
-    /// Compute max (min, lhs+rhs).
-    static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
-    {
-      return lhs + rhs < min ? min : lhs + rhs;
-    }
-  };
-
-  /// Add \a width columns, in place.
-  inline position&
-  operator+= (position& res, position::counter_type width)
-  {
-    res.columns (width);
-    return res;
-  }
-
-  /// Add \a width columns.
-  inline position
-  operator+ (position res, position::counter_type width)
-  {
-    return res += width;
-  }
-
-  /// Subtract \a width columns, in place.
-  inline position&
-  operator-= (position& res, position::counter_type width)
-  {
-    return res += -width;
-  }
-
-  /// Subtract \a width columns.
-  inline position
-  operator- (position res, position::counter_type width)
-  {
-    return res -= width;
-  }
-
-  /** \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:
-    /// Type for file name.
-    typedef position::filename_type filename_type;
-    /// Type for line and column numbers.
-    typedef position::counter_type counter_type;
 
     /// Construct a location from \a b to \a e.
     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 (filename_type* f,
-                       counter_type l = 1,
-                       counter_type c = 1)
+    explicit location (std::string* f,
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
-    {}
+    {
+    }
 
 
     /// Initialization.
-    void initialize (filename_type* f = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
+    void initialize (std::string* f = YY_NULLPTR,
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -212,13 +91,13 @@ namespace isc { namespace dhcp {
     }
 
     /// Extend the current location to the COUNT next columns.
-    void columns (counter_type count = 1)
+    void columns (int count = 1)
     {
       end += count;
     }
 
     /// Extend the current location to the COUNT next lines.
-    void lines (counter_type count = 1)
+    void lines (int count = 1)
     {
       end.lines (count);
     }
@@ -233,49 +112,57 @@ namespace isc { namespace dhcp {
   };
 
   /// Join two locations, in place.
-  inline location&
-  operator+= (location& res, const location& end)
+  inline location& operator+= (location& res, const location& end)
   {
     res.end = end.end;
     return res;
   }
 
   /// Join two locations.
-  inline location
-  operator+ (location res, const location& end)
+  inline location operator+ (location res, const location& end)
   {
     return res += end;
   }
 
   /// Add \a width columns to the end position, in place.
-  inline location&
-  operator+= (location& res, location::counter_type width)
+  inline location& operator+= (location& res, int width)
   {
     res.columns (width);
     return res;
   }
 
   /// Add \a width columns to the end position.
-  inline location
-  operator+ (location res, location::counter_type width)
+  inline location operator+ (location res, int width)
   {
     return res += width;
   }
 
   /// Subtract \a width columns to the end position, in place.
-  inline location&
-  operator-= (location& res, location::counter_type width)
+  inline location& operator-= (location& res, int width)
   {
     return res += -width;
   }
 
   /// Subtract \a width columns to the end position.
-  inline location
-  operator- (location res, location::counter_type width)
+  inline location operator- (location res, int width)
   {
     return res -= width;
   }
 
+  /// Compare two location objects.
+  inline bool
+  operator== (const location& loc1, const location& loc2)
+  {
+    return loc1.begin == loc2.begin && loc1.end == loc2.end;
+  }
+
+  /// Compare two location objects.
+  inline bool
+  operator!= (const location& loc1, const location& loc2)
+  {
+    return !(loc1 == loc2);
+  }
+
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -283,11 +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)
   {
-    location::counter_type 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
@@ -300,8 +186,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp4_parser.yy"
+#line 14 "dhcp4_parser.yy" // location.cc:296
 } } // isc::dhcp
-#line 305 "location.hh"
-
+#line 192 "location.hh" // location.cc:296
 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED
index 48ecfcbf2b1d1649990e50251c14c2f477edb7c7..c60fabbdf87798eaaf77c5d851308166f1c29ecc 100644 (file)
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.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 1bd3435effcea440b1d251684347fb943ad9f8e7..3dd2a2a3934851424d45b935573ab2e9e83f07a8 100644 (file)
@@ -1,9 +1,157 @@
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.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 e06b409dfaffb2e802172a564f52a0a7306def41..af2475a5a4043bce9393d1947b0901d18cfe3a05 100644 (file)
@@ -19,6 +19,7 @@
 #include <dhcp4/json_config_parser.h>
 #include <dhcp4/tests/dhcp4_test_utils.h>
 #include <dhcp4/tests/get_config_unittest.h>
+#include <testutils/gtest_utils.h>
 
 #include <boost/algorithm/string.hpp>
 #include <gtest/gtest.h>
@@ -2267,6 +2268,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2343,6 +2345,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2443,6 +2446,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2543,6 +2547,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2649,6 +2654,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2826,6 +2832,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3003,6 +3010,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3105,6 +3113,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3210,6 +3219,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3315,6 +3325,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3417,6 +3428,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3519,6 +3531,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3648,6 +3661,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3776,6 +3790,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3905,6 +3920,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4033,6 +4049,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4139,6 +4156,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4274,6 +4292,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4376,6 +4395,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4460,6 +4480,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4544,6 +4565,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4637,6 +4659,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4721,6 +4744,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4805,6 +4829,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4889,6 +4914,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4973,6 +4999,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5092,6 +5119,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5211,6 +5239,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5340,6 +5369,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5452,6 +5482,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5607,6 +5638,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5735,6 +5767,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5880,6 +5913,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5999,6 +6033,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6123,6 +6158,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6242,6 +6278,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6354,6 +6391,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6500,6 +6538,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6617,6 +6656,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6738,6 +6778,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6814,6 +6855,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6890,6 +6932,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -6992,6 +7035,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"when-present\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -7094,6 +7138,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"always\",\n"
 "        \"ddns-send-updates\": false,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -7196,6 +7241,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7298,6 +7344,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7400,6 +7447,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7580,6 +7628,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7697,6 +7746,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7952,6 +8002,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8084,6 +8135,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8264,6 +8316,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8392,6 +8445,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8466,6 +8520,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8540,6 +8595,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 12345,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8614,6 +8670,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8688,6 +8745,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8790,6 +8848,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8892,6 +8951,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8994,6 +9054,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9096,6 +9157,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9224,6 +9286,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9326,6 +9389,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9428,6 +9492,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9531,6 +9596,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9638,6 +9704,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9745,6 +9812,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9876,6 +9944,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10056,6 +10125,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10238,6 +10308,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10397,6 +10468,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10524,6 +10596,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10651,6 +10724,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10727,6 +10801,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -10801,6 +10876,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -11103,16 +11179,16 @@ TEST_P(Dhcp4GetConfigTest, run) {
             std::cerr << ",\n";
         }
         std::cerr << "    // CONFIGURATION " << config_counter;
-        ASSERT_NO_THROW(expected = prettyPrint(dhcp));
-        ASSERT_NO_THROW(outputFormatted(dhcp->str()));
+        ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp));
+        ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str()));
     } else {
         expected = UNPARSED_CONFIGS[config_counter];
         // get the expected config using the dhcpv4 syntax parser
         ElementPtr jsond;
-        ASSERT_NO_THROW(jsond = parseDHCP4(expected, true));
+        ASSERT_NO_THROW_LOG(jsond = parseDHCP4(expected, true));
         ElementPtr jsonj;
         // get the expected config using the generic JSON syntax parser
-        ASSERT_NO_THROW(jsonj = parseJSON(expected));
+        ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected));
         // the generic JSON parser does not handle comments
         EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
         // check that unparsed and expected values match
@@ -11133,7 +11209,7 @@ TEST_P(Dhcp4GetConfigTest, run) {
     // is it a fixed point?
     ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed2;
-    ASSERT_NO_THROW(unparsed2 = extracted2->toElement());
+    ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement());
     ASSERT_TRUE(unparsed2);
     EXPECT_TRUE(isEquivalent(unparsed, unparsed2));
 }
index 4ffc908e41936bfee91c122df1fe1f1d788ea60b..cc4a64a349a1bd85f6ee89f1255118f0ee7b5aa8 100644 (file)
@@ -19,6 +19,7 @@
 #include <dhcp4/json_config_parser.h>
 #include <dhcp4/tests/dhcp4_test_utils.h>
 #include <dhcp4/tests/get_config_unittest.h>
+#include <testutils/gtest_utils.h>
 
 #include <boost/algorithm/string.hpp>
 #include <gtest/gtest.h>
@@ -314,16 +315,16 @@ TEST_P(Dhcp4GetConfigTest, run) {
             std::cerr << ",\n";
         }
         std::cerr << "    // CONFIGURATION " << config_counter;
-        ASSERT_NO_THROW(expected = prettyPrint(dhcp));
-        ASSERT_NO_THROW(outputFormatted(dhcp->str()));
+        ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp));
+        ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str()));
     } else {
         expected = UNPARSED_CONFIGS[config_counter];
         // get the expected config using the dhcpv4 syntax parser
         ElementPtr jsond;
-        ASSERT_NO_THROW(jsond = parseDHCP4(expected, true));
+        ASSERT_NO_THROW_LOG(jsond = parseDHCP4(expected, true));
         ElementPtr jsonj;
         // get the expected config using the generic JSON syntax parser
-        ASSERT_NO_THROW(jsonj = parseJSON(expected));
+        ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected));
         // the generic JSON parser does not handle comments
         EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
         // check that unparsed and expected values match
@@ -344,7 +345,7 @@ TEST_P(Dhcp4GetConfigTest, run) {
     // is it a fixed point?
     ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed2;
-    ASSERT_NO_THROW(unparsed2 = extracted2->toElement());
+    ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement());
     ASSERT_TRUE(unparsed2);
     EXPECT_TRUE(isEquivalent(unparsed, unparsed2));
 }
index 9b213ecc5a189122be3857759a609acbaeddc38c..0b794a1fd5a83e1c1a145a0fbc8ad99458b89037 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 208
-#define YY_END_OF_BUFFER 209
+#define YY_NUM_RULES 209
+#define YY_END_OF_BUFFER 210
 /* 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[1903] =
+static const flex_int16_t yy_accept[1926] =
     {   0,
-      201,  201,    0,    0,    0,    0,    0,    0,    0,    0,
-      209,  207,   10,   11,  207,    1,  201,  198,  201,  201,
-      207,  200,  199,  207,  207,  207,  207,  207,  194,  195,
-      207,  207,  207,  196,  197,    5,    5,    5,  207,  207,
-      207,   10,   11,    0,    0,  190,    0,    0,    0,    0,
+      202,  202,    0,    0,    0,    0,    0,    0,    0,    0,
+      210,  208,   10,   11,  208,    1,  202,  199,  202,  202,
+      208,  201,  200,  208,  208,  208,  208,  208,  195,  196,
+      208,  208,  208,  197,  198,    5,    5,    5,  208,  208,
+      208,   10,   11,    0,    0,  191,    0,    0,    0,    0,
         0,    0,    0,    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,  201,  201,
-        0,  200,  201,    3,    2,    6,    0,  201,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  191,
+        0,    0,    0,    0,    0,    0,    0,    1,  202,  202,
+        0,  201,  202,    3,    2,    6,    0,  202,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  192,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  193,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  194,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,196 +722,198 @@ static const flex_int16_t yy_accept[1903] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
-        8,    0,    0,    0,  163,    0,    0,  164,    0,    0,
+        8,    0,    0,    0,  164,    0,    0,  165,    0,    0,
 
-        0,    0,    0,    0,    0,  192,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  193,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    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,
+        0,  114,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  206,  204,    0,
-      203,  202,    0,    0,    0,    0,    0,    0,  162,    0,
-       28,    0,   27,    0,    0,  120,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  207,  205,    0,
+      204,  203,    0,    0,    0,    0,    0,    0,  163,    0,
+       28,    0,   27,    0,    0,  121,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   55,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  118,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  205,  202,    0,    0,    0,    0,    0,   29,
+        0,    0,  206,  203,    0,    0,    0,    0,    0,   29,
         0,   31,    0,    0,    0,    0,    0,    0,    0,    0,
-      121,    0,    0,    0,    0,    0,    0,    0,   98,    0,
-        0,    0,    0,    0,    0,    0,    0,  147,    0,    0,
+      122,    0,    0,    0,    0,    0,    0,    0,   99,    0,
+        0,    0,    0,    0,    0,    0,    0,  148,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   97,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   98,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  107,    0,   59,    0,    0,    0,    0,    0,    0,
+        0,  108,    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,  142,    0,  167,
+        0,    0,    0,    0,    0,    0,    0,  143,    0,  168,
        51,    0,   56,    0,    0,    0,    0,    0,   37,   34,
-       33,    0,    0,    0,  155,    0,    0,    0,    0,    0,
+       33,    0,    0,    0,  156,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  133,    0,    0,    0,
-        0,    0,    0,    0,    0,  166,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  134,    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,   53,    0,
         0,   32,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  100,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  156,    0,    0,    0,
+        0,    0,    0,  101,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  157,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      151,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      152,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    7,   35,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    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,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  120,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  135,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  132,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  102,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  136,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  133,    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,    0,    0,    0,
 
-        0,    0,    0,  110,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  111,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  109,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  110,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  150,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  160,  130,
-        0,    0,    0,    0,    0,    0,    0,  134,   52,    0,
+        0,    0,    0,  151,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  136,    0,   60,    0,    0,    0,    0,    0,
+      161,  131,    0,    0,    0,    0,    0,    0,    0,  135,
+       52,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  137,    0,   60,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   92,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   93,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  187,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  188,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  116,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  149,    0,
-        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  117,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
+        0,  150,    0,    0,    0,    0,    0,    0,    0,   63,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       57,  101,    0,    0,    0,  146,    0,    0,    0,    0,
-       50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  138,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   57,  102,    0,    0,    0,  147,    0,
+        0,    0,    0,   50,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  139,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  188,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  111,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  189,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  112,    0,    0,    0,    0,    0,    0,    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,    0,  161,   14,    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,
+        0,  162,   14,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  152,    0,
-        0,    0,    0,    0,    0,    0,  137,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,  148,  165,    0,   40,    0,
-      157,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   20,    0,    0,    0,
-       95,    0,    0,    0,    0,    0,  159,   54,    0,  103,
-        0,  186,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   82,    0,    0,
-        0,    0,    0,  126,  127,    0,    0,    0,    0,    0,
-        0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
-        0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  154,
+        0,    0,  153,    0,    0,    0,    0,    0,    0,    0,
+        0,  138,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  122,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   96,
-      118,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
-       17,    0,   15,    0,  183,  182,    0,    0,    0,   69,
-        0,    0,    0,    0,    0,   30,    0,    0,    0,  141,
+      149,  166,    0,   40,    0,  158,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  176,    0,  185,
+        0,   20,    0,    0,    0,   96,    0,    0,    0,    0,
+        0,  160,   54,    0,  104,    0,  187,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   82,    0,    0,    0,    0,    0,  127,  128,
+        0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
+        0,    0,    0,    0,    0,    0,    0,   64,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  112,    0,  145,    0,   43,    0,   61,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   19,    0,
-        0,    0,    0,    0,    0,    0,  114,   80,    0,    0,
-      153,    0,    0,    0,    0,    0,  144,    0,    0,    0,
-        0,    0,    0,    0,    0,  108,    0,    0,  129,    0,
+        0,    0,    0,    0,    0,  155,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  123,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   97,  119,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   79,
+        0,    0,    0,    0,    0,    0,   17,    0,   15,    0,
+      184,  183,    0,    0,    0,   69,    0,    0,    0,    0,
+        0,   30,    0,    0,    0,  142,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
-      168,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  177,    0,  186,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
+      146,    0,   43,    0,   61,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   19,    0,    0,    0,    0,
+        0,    0,    0,  115,   80,    0,    0,  154,    0,    0,
+        0,    0,    0,  145,    0,    0,    0,    0,    0,    0,
+        0,    0,  109,    0,    0,  130,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  107,    0,    0,    0,  169,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,   42,    0,    0,
-        0,    0,   68,    0,    0,    0,    0,    0,    0,  139,
-       47,    0,    0,    0,   70,  181,   38,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   12,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   45,    0,    0,
-        0,   44,    0,   18,    0,    0,    0,   72,    0,    0,
-        0,    0,    0,  131,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   76,    0,  128,    0,    0,    0,   62,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
+        0,    0,    0,    0,    0,   42,    0,    0,    0,    0,
+       68,    0,    0,    0,    0,    0,    0,  140,   47,    0,
+        0,    0,   70,  182,   38,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   12,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   45,    0,    0,    0,
+       44,    0,   18,    0,    0,    0,   72,    0,    0,    0,
+        0,    0,  132,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   76,    0,  129,    0,    0,    0,   62,    0,    0,
 
-        0,    0,    0,    0,    0,  158,    0,    0,    0,   46,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  105,
+        0,    0,    0,    0,    0,  159,    0,    0,    0,   46,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  178,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       67,    0,    0,    0,   94,    0,    0,    0,    0,   36,
+       67,    0,    0,    0,   95,    0,    0,    0,    0,   36,
         0,   48,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   24,    0,    0,    0,
-        0,    0,    0,    0,    0,  174,    0,    0,    0,    0,
-      143,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  115,    0,    0,    0,  179,    0,    0,    0,    0,
-        0,    0,    0,    0,   85,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   25,   39,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  180,    0,   13,    0,
+        0,    0,    0,    0,    0,    0,    0,   24,    0,    0,
+        0,    0,    0,    0,    0,    0,  175,    0,    0,    0,
+        0,  144,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  116,    0,    0,    0,  180,    0,    0,    0,
+
+        0,    0,    0,    0,    0,   85,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   25,   39,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  181,    0,
+       13,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  184,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  173,    0,   78,
-        0,   77,    0,   21,   73,    0,    0,    0,    0,    0,
-       65,    0,    0,    0,  125,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  105,    0,    0,  172,    0,    0,
-        0,    0,   71,    0,    0,    0,   66,    0,   23,    0,
-        0,   93,    0,    0,    0,    0,    0,    0,    0,   91,
-
+      185,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      174,    0,   78,    0,   77,    0,   21,   73,    0,    0,
+        0,    0,    0,   65,    0,    0,    0,  126,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  106,    0,
+        0,  173,    0,    0,    0,    0,   71,    0,    0,    0,
+
+       66,    0,   23,    0,    0,   94,    0,    0,    0,    0,
+        0,    0,    0,   91,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   89,    0,    0,    0,
+        0,   89,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   49,    0,    0,   90,
-        0,    0,  178,    0,    0,    0,    0,  189,   75,   74,
-       22,    0,  123,  140,    0,    0,    0,   86,    0,    0,
-        0,    0,    0,    0,  170,    0,  175,    0,   88,   81,
-        0,    0,    0,    0,    0,    0,  169,    0,    0,   26,
-        0,    0,    0,    0,    0,    0,    0,   87,    0,    0,
-        0,    0,    0,  124,   84,    0,    0,    0,    0,   83,
-
-      171,    0
+        0,    0,   49,    0,    0,   90,    0,    0,    0,  179,
+        0,    0,    0,    0,  190,   75,   74,   22,    0,  124,
+      141,    0,    0,    0,   86,    0,    0,    0,    0,    0,
+        0,    0,  171,    0,  176,    0,   88,    0,   81,    0,
+        0,    0,    0,    0,    0,    0,  170,    0,    0,   26,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   87,    0,
+        0,    0,    0,    0,   92,    0,  125,   84,    0,    0,
+        0,    0,   83,  172,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -958,445 +960,449 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1915] =
+static const flex_int16_t yy_base[1938] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2304, 2305,   34, 2300,  145,    0,  207, 2305,  214,  221,
-       13,  228, 2305, 2280,  118,   25,    2,    6, 2305, 2305,
-       73,   11,   17, 2305, 2305, 2305,  104, 2288, 2241,    0,
-     2278,  108, 2295,   24,  256, 2305,   67, 2244, 2264,   84,
-       75, 2264,   88,  226,   91,   89,  284,  196,  203,  279,
-      193,  224,  216,   60,  242, 2244,  286,  288,  314,  300,
-      319, 2227,  204,  324,  356,  329, 2246,    0,  380,  400,
-      420,  427,  406, 2305,    0, 2305,  385,  443,  238,  241,
-      310,  269,  299,  314, 2305, 2243, 2284, 2305,  405, 2305,
-
-      419,  400, 2241, 2282,  326,   10,  262,  407,  224,  409,
-      352,  206, 2281,    0,  472,  412, 2223,  415, 2231,  406,
-     2227, 2216, 2217, 2222,  444, 2232, 2215, 2224,  327,  433,
-      226, 2218, 2216,  445, 2205, 2263,  399, 2208, 2261, 2201,
-     2224, 2221, 2221, 2215,  339, 2208, 2206, 2207, 2199, 2204,
-     2198,  412, 2209, 2202, 2193, 2192, 2206,  462, 2244, 2191,
-      443, 2203,  421, 2191,  482, 2192,  445, 2204, 2201, 2202,
-      293, 2200, 2235, 2234,  477, 2180, 2180, 2184, 2180, 2172,
-     2189, 2181,    0,  478,  493,  486,  481,  500,  505, 2180,
-     2305,    0,  510, 2175, 2305,  498,  505, 2305, 2229,  508,
-
-     2228,  513, 2227,  515, 2226, 2305,  561, 2225,  525, 2184,
-     2176, 2180, 2181, 2176, 2175, 2166,  501, 2217, 2211, 2175,
-     2156, 2153, 2161, 2167, 2155, 2169, 2165, 2166, 2166, 2161,
-     2153, 2155, 2139, 2143, 2156, 2158, 2155, 2147, 2137, 2140,
-     2154, 2305, 2140, 2148,   80, 2133, 2132, 2184, 2131, 2141,
-     2181,  505, 2140, 2179, 2124, 2126, 2137, 2175,  532, 2179,
-     2114, 2129,  538, 2119, 2125, 2134, 2115, 2113, 2116, 2112,
-     2118, 2109, 2108, 2121, 2114, 2104, 2115, 2119, 2118, 2112,
-      220, 2119, 2114, 2106, 2096, 2111, 2106, 2110,  500, 2108,
-     2094, 2100, 2107, 2089, 2090, 2093, 2090, 2089,  562, 2084,
-
-     2098, 2097, 2096, 2099, 2081, 2089,  543, 2305, 2305,  553,
-     2305, 2305, 2076,    0,  520, 2123,  554, 2134, 2305,  556,
-     2305, 2133, 2305, 2127,  606, 2305,  555, 2067, 2086, 2069,
-     2086, 2074, 2126, 2081, 2076, 2079, 2074,  537, 2305, 2076,
-      586, 2115, 2073, 2070, 2071,  584, 2075, 2115, 2063, 2058,
-     2055, 2051, 2053, 2104, 2061, 2050, 2066, 2100, 2046,  607,
-     2059, 2059, 2042, 2043, 2056, 2054, 2042, 2052, 2047, 2054,
-     2049, 2034,  574, 2043, 2046, 2041,  577, 2040, 2036, 2086,
-      422,  563, 2305, 2080, 2030, 2029, 2022, 2024, 2036, 2027,
-     2016, 2033, 2022, 2027,  596, 2074, 2027,  589, 2024, 2027,
-
-     2027, 2025, 2014, 2014, 2026,  583, 2001, 2002, 2023,  595,
-     2005, 2002, 2016, 2019, 2014, 2000, 2012, 2011, 2010, 2005,
-     2008, 2007, 2006, 2005,  558, 2048, 2007, 2046, 2045, 1987,
-      652, 2000, 2305, 2305, 1999,    0,  604, 2041, 2040, 2305,
-     2039, 2305,  616,  664,  629, 2038, 2032, 1985, 1987, 1975,
-     2305, 1980, 1986, 1989, 1972, 1987, 1974, 1973, 2305, 1983,
-      610, 1974, 1971, 1983,  566, 1968, 1970, 2305, 1976, 1961,
-     1963, 1974, 1972, 1967,  653, 1974, 1962, 1955, 2006, 2305,
-     1953, 1969, 2003, 2007, 1963, 1957, 1959, 1960, 1944, 1961,
-     1995, 1946, 1941, 1940, 1942, 1938, 1934,  556, 1953, 1927,
-
-     1934, 1939, 1932, 1948, 1982, 1986, 2305, 1931, 1927, 1983,
-     1934, 1928, 1935, 1920, 1930, 1918, 1932, 1921, 1917, 1919,
-     1914, 2305, 1971, 2305, 1913, 1912, 1905, 1922, 1961, 1960,
-     1905, 1910, 1919, 1913, 1907, 1916,  688, 1953, 1915, 1898,
-     1898, 1893, 1889, 1895, 1900, 1893, 1901, 1905, 1888, 1946,
-     1887, 1939, 1884, 1885, 1884, 1896, 1885, 2305, 1895, 2305,
-     2305, 1884, 2305, 1894, 1930, 1890,    0, 1933, 2305, 2305,
-     2305,  636,  632,  691, 2305,  640, 1892, 1872, 1925, 1870,
-     1923, 1868, 1867, 1866, 1873, 1866, 1874, 1877, 1859, 1859,
-     1874, 1873, 1861, 1871, 1870, 1854, 1869, 1851, 1898, 1865,
-
-     1903, 1847, 1849, 1861, 1861, 1860, 2305, 1845, 1842, 1900,
-     1855, 1847, 1853, 1844, 1852, 2305, 1837, 1848, 1852, 1834,
-     1846, 1847,  635, 1829, 1823, 1828, 1825, 1840, 1839, 1840,
-     1819, 1829, 1835, 1878, 1833, 1832, 1824, 1815, 2305, 1816,
-     1818, 2305, 1826, 1865, 1864,   16, 1825, 1862, 1807, 1808,
-     1811, 1812, 1803, 2305, 1817, 1803,  695, 1795, 1799, 1815,
-     1812, 1804, 1849, 1801, 1808, 1846, 2305, 1792, 1790, 1804,
-     1788, 1802, 1805, 1839, 1838, 1837, 1836, 1781, 1834, 1833,
-     2305, 1778, 1792,  698, 1793, 1792, 1789, 1789, 1826, 1786,
-     1775, 1777, 2305, 2305,  663,  658, 1769, 1786, 1778, 1765,
-
-     1759, 1780, 1821,  669, 1815, 1775, 1813, 1812, 1764, 1758,
-     1761, 1769, 1772, 1756, 1757, 1766, 1747, 1802, 1762, 1752,
-     1760, 1798, 1759,  661, 1750, 1752,   92,  209,  269,  294,
-      313, 2305,  380,  399,  451,  501,  507,  544,  551,  579,
-      597,  588,  611,  633,  657,  657,  703,  715,  659,  673,
-      659,  669,  719,  677,  726, 2305,  727,  683,  681,  683,
-      679,  673,  728,  691,  680, 2305,  682,  693,  682,  696,
-      698,  742,  685,  744,  687,  702, 2305,  696,  690,  701,
-      686,  697,  710,  689,  695,  750,  714,  698,  698,  711,
-      755,  756,  757,  704,  722,  717,  724,  719,  704,  716,
-
-      717,  723,  710, 2305,  775,  733,  735,  725,  737,  727,
-      740,  731,  737,  781,  757,  744,  726,  733,  747,  792,
-      742, 2305,  740,  755,  752,  738,  745,  744,  742,  761,
-      758,  759,  747,  754,  755,  764,  768,  765,  755,  768,
-      754,  753,  759,  816,  757,  758,  764,  780,  763,  817,
-      772, 2305,  782,  782,  775,  786,  784,  829,  771,  773,
-      788,  789,  777,  775,  837,  794,  780,  783, 2305, 2305,
-      799,  798,  799,  804,  792,  802,  804, 2305, 2305,  804,
-      806,  793,  811,  798,  796,  814,  801,  801,  852,  799,
-      803,  861, 2305,  862, 2305,  807,  821,  821,  866,  814,
-
-      813,  817,  811,  871,  824,  814,  815,  811,  821,  825,
-      836,  820,  838,  833,  835,  828,  830,  831,  843,  833,
-      848,  889,  846,  851,  828,  851,  835, 2305,  842,  843,
-      857,  848,  846,  896,  843,  858,  876,  884,  853,  902,
-      864,  904, 2305,  870,  858,  853,  854,  866,  873,  862,
-      863,  859,  877,  863,  864,  874,  883,  919,  866,  875,
-      870,  924,  930,  888,  879, 2305,  883,  891,  893,  878,
-      894,  884,  896,  890,  937,  903,  887,  888, 2305,  904,
-      907,  890,  892,  950,  893,  912, 2305,  911,  914,  895,
-      913,  901,  954,  912,  908,  905,  958,  907,  960,  922,
-
-      908,  926,  925,  911,  926,  918,  914,  932,  931,  918,
-     2305, 2305,  926,  973,  926, 2305,  934,  937,  930,  983,
-     2305,  932,  938,  982,  933,  934,  946,  940,  944,  942,
-      940,  951,  996,  940,  945,  999, 1000,  944,  956, 2305,
-      944,  952,  950, 1001,  963,  950,  951,  960,  972,  959,
-      957,  971,  972,  988,  993,  975,  980,  963,  963,  965,
-      965,  985,  984,  975,  964,  981,  988, 1031,  973,  993,
-      986,  990,  994,  977,  994, 1039,  986,  990, 2305, 1037,
-      986,  985,  987, 1008, 1005, 1045,  994, 1012, 1013,  999,
-     1007, 1016,  996, 1011, 1018, 1060, 1061, 2305, 1014, 1063,
-
-     1064, 1006, 1016, 1026, 1029, 1012, 1014, 1014, 1021, 1030,
-     1018, 1025, 1020, 1027, 1039, 1080, 1027, 1026, 1043, 1084,
-     1034, 1038, 1036, 1034, 1029, 1090, 1091, 1041, 1093, 1089,
-     1095, 1048, 2305, 1053, 1046, 1037, 1056, 1050, 1045, 1055,
-     1052, 1057, 1053, 1065, 2305, 1050, 1052, 2305, 2305, 1052,
-     1112, 1051, 1070, 1071, 1073, 1064, 1118, 1119, 1072, 1057,
-     1071, 1079, 1061, 1066, 1105, 1096, 1128, 1083, 1083, 1087,
-     1074, 1076, 1093, 1088, 1092, 1137, 1085, 1089, 2305, 1086,
-     1082, 1099, 1079, 1100, 1090, 1141, 2305, 1106, 1104, 1108,
-     1092, 1104, 1109, 1095, 1156, 1109, 1114, 1101, 1112, 1104,
-
-     1110, 1106, 1124, 1125, 1126, 2305, 2305, 1124, 2305, 1126,
-     2305, 1111, 1122, 1113, 1132, 1122, 1174, 1131, 1128, 1172,
-     1136, 1125, 1132, 1137, 1134, 1140, 2305, 1133, 1125, 1186,
-     2305, 1187, 1134, 1141, 1185, 1147, 2305, 2305, 1144, 2305,
-     1135, 2305, 1135, 1138, 1152, 1157, 1140, 1151, 1200, 1157,
-     1158, 1159, 1199, 1155, 1206, 1159, 1208, 2305, 1155, 1210,
-     1211, 1168, 1170, 2305, 2305, 1153, 1215, 1211, 1175, 1159,
-     1171, 1190, 1221, 2305, 1178, 1169, 1180, 1225, 1172, 1187,
-     1223, 1175, 2305, 1171, 1187, 1175, 1189, 1190, 1187, 1231,
-     1194, 1184, 1199, 1187, 1187, 1242, 1238, 1244, 1201, 2305,
-
-     1203, 1202, 1205, 1198, 1207, 1208, 1205, 1195, 1198, 1198,
-     1258, 1205, 1260, 1207, 1262, 1205, 1264, 2305, 1222, 1201,
-     1216, 1209, 1213, 1226, 1229, 1228, 1226, 1276, 1229, 2305,
-     2305, 1225, 1235, 1220, 1276, 1237, 1223, 1284, 1285, 1229,
-     1239, 1288, 1245, 2305, 1237, 1237, 1239, 1241, 1294, 1237,
-     2305, 1238, 2305, 1240, 2305, 2305, 1253, 1255, 1256, 2305,
-     1243, 1251, 1303, 1252, 1284, 2305, 1306, 1256, 1303, 2305,
-     1251, 1259, 1253, 1250, 1253, 1256, 1256, 1252, 1274, 1313,
-     1266, 1278, 1281, 1269, 1264, 1324, 1272, 2305, 1267, 2305,
-     1269, 1329, 1282, 1273, 1288, 1288, 1291, 1291, 1288, 1332,
-
-     1294, 2305, 1286, 2305, 1287, 2305, 1297, 2305, 1337, 1299,
-     1300, 1297, 1341, 1289, 1304, 1344, 1306, 1298, 2305, 1295,
-     1295, 1301, 1300, 1298, 1313, 1313, 2305, 2305, 1354, 1301,
-     2305, 1318, 1303, 1303, 1305, 1311, 2305, 1366, 1308, 1318,
-     1329, 1327, 1371, 1324, 1333, 2305, 1330, 1349, 2305, 1333,
-     1318, 1378, 1379, 1336, 1341, 1323, 1383, 1384, 1385, 1381,
-     1345, 1342, 1338, 1331, 1386, 1344, 2305, 1334, 1347, 1395,
-     2305, 1333, 1392, 1356, 1352, 1396, 1345, 1350, 1348, 1407,
-     1363, 1351, 1410, 1360, 1412, 1373, 1362, 1356, 1416, 1358,
-     1367, 1360, 1374, 1377, 1422, 1364, 1381, 1377, 1367, 1382,
-
-     1366, 1424, 1425, 1426, 1373, 1428, 1391, 2305, 1391, 1378,
-     1377, 1433, 2305, 1374, 1392, 1441, 1411, 1443, 1396, 2305,
-     2305, 1387, 1398, 1447, 2305, 2305, 2305, 1393, 1398, 1396,
-     1446, 1404, 1409, 1397, 1401, 1399, 1400, 2305, 1458, 1404,
-     1455, 1398, 1403, 1464, 1413, 1423, 1424, 2305, 1469, 1423,
-     1467, 2305, 1425, 2305, 1416, 1431, 1419, 2305, 1429, 1430,
-     1431, 1480, 1438, 2305, 1477, 1443, 1419, 1437, 1438, 1447,
-     1429, 1435, 1437, 1491, 1450, 1449, 1441, 1495, 1445, 1449,
-     1454, 1447, 2305, 1500, 2305, 1449, 1502, 1444, 2305, 1447,
-     1457, 1501, 1449, 1464, 1451, 1466, 1458, 1458, 1469, 2305,
-
-     1463, 1458, 1457, 1517, 1470, 2305, 1514, 1465, 1462, 2305,
-     1476, 1463, 1479, 1481, 1526, 1479, 1476, 1484, 1478, 2305,
-     1531, 1472, 1474, 1490, 1483, 1473, 1489, 1490, 1484, 1500,
-     2305, 1490, 1542, 1501, 2305, 1485, 1492, 1546, 1542, 2305,
-     1504, 2305, 1544, 1506, 1507, 1492, 1493, 1501, 1555, 1503,
-     1552, 1507, 1519, 1516, 1507, 1514, 2305, 1511, 1516, 1514,
-     1566, 1567, 1515, 1525, 1512, 2305, 1527, 1528, 1529, 1530,
-     2305, 1520, 1532, 1577, 1534, 1579, 1521, 1529, 1523, 1531,
-     1544, 2305, 1521, 1581, 1542, 2305, 1546, 1531, 1531, 1546,
-     1539, 1538, 1549, 1536, 2305, 1552, 1542, 1598, 1556, 1547,
-
-     1559, 1550, 1559, 1561, 1565, 2305, 2305, 1558, 1548, 1608,
-     1551, 1610, 1552, 1612, 1570, 1614, 2305, 1615, 2305, 1611,
-     1573, 1570, 1575, 1562, 1621, 1564, 1569, 1560, 1625, 1578,
-     1579, 1569, 1586, 1585, 1626, 1570, 1589, 2305, 1586, 1635,
-     1592, 1593, 1638, 1595, 1598, 1585, 1594, 2305, 1643, 2305,
-     1596, 2305, 1605, 2305, 2305, 1587, 1647, 1594, 1649, 1592,
-     2305, 1611, 1652, 1611, 2305, 1602, 1592, 1651, 1617, 1610,
-     1606, 1660, 1604, 1609, 2305, 1605, 1607, 2305, 1612, 1622,
-     1607, 1616, 2305, 1617, 1611, 1623, 2305, 1619, 2305, 1629,
-     1622, 2305, 1624, 1632, 1677, 1618, 1620, 1617, 1641, 2305,
-
-     1634, 1637, 1626, 1680, 1627, 1635, 1644, 1645, 1646, 1647,
-     1640, 1635, 1636, 1640, 1652, 1697, 2305, 1643, 1655, 1700,
-     1649, 1648, 1703, 1656, 1643, 1658, 1663, 1708, 1709, 1710,
-     1711, 1668, 1713, 1714, 1664, 1658, 2305, 1674, 1718, 2305,
-     1675, 1677, 2305, 1668, 1682, 1678, 1671, 2305, 2305, 2305,
-     2305, 1725, 2305, 2305, 1682, 1727, 1688, 2305, 1729, 1730,
-     1685, 1684, 1685, 1675, 2305, 1730, 2305, 1677, 2305, 2305,
-     1737, 1679, 1695, 1740, 1701, 1698, 2305, 1739, 1688, 2305,
-     1700, 1693, 1748, 1690, 1692, 1707, 1692, 2305, 1705, 1754,
-     1755, 1703, 1705, 2305, 2305, 1699, 1715, 1760, 1761, 2305,
-
-     2305, 2305, 1767, 1772, 1777, 1782, 1787, 1792, 1797, 1800,
-     1774, 1779, 1781, 1794
+     2327, 2328,   34, 2323,  145,    0,  207, 2328,  214,  221,
+       13,  228, 2328, 2303,  118,   25,    2,    6, 2328, 2328,
+       73,   11,   17, 2328, 2328, 2328,  104, 2311, 2264,    0,
+     2301,  108, 2318,   24,  256, 2328,   67, 2267, 2287,   84,
+       75, 2287,   88,  226,   91,   89,  284,  196,  203,  279,
+      193,  224,  216,   60,  242, 2267,  286,  288,  314,  300,
+      319, 2250,  204,  324,  356,  329, 2269,    0,  380,  400,
+      420,  427,  406, 2328,    0, 2328,  385,  443,  238,  241,
+      310,  269,  299,  314, 2328, 2266, 2307, 2328,  405, 2328,
+
+      419,  400, 2264, 2305,  326,   10,  262,  407,  224,  409,
+      352,  206, 2304,    0,  472,  412, 2246,  415, 2254,  406,
+     2250, 2239, 2240, 2245,  444, 2255, 2238, 2247,  327,  433,
+      226, 2241, 2239,  445, 2228, 2286,  399, 2231, 2284, 2224,
+     2247, 2244, 2244, 2238,  339, 2231, 2229, 2230, 2222, 2227,
+     2221,  412, 2232, 2225, 2216, 2215, 2229,  462, 2267, 2214,
+      443, 2226,  421, 2214,  482, 2215,  445, 2227, 2224, 2225,
+      293, 2223, 2258, 2257,  477, 2203, 2203, 2207, 2203, 2195,
+     2212, 2204,    0,  478,  493,  486,  481,  500,  505, 2203,
+     2328,    0,  510, 2198, 2328,  498,  505, 2328, 2252,  508,
+
+     2251,  513, 2250,  515, 2249, 2328,  561, 2248,  525, 2207,
+     2199, 2203, 2204, 2199, 2198, 2189,  501, 2240, 2234, 2198,
+     2179, 2176, 2184, 2190, 2178, 2192, 2188, 2189, 2189, 2184,
+     2176, 2178, 2162, 2166, 2179, 2181, 2178, 2170, 2160, 2163,
+     2177, 2328, 2163, 2171,   80, 2156, 2155, 2207, 2154, 2164,
+     2204,  505, 2163, 2202, 2147, 2149, 2160, 2198,  532, 2202,
+     2137, 2152,  538, 2142, 2148, 2157, 2138, 2136, 2139, 2135,
+     2141, 2132, 2131, 2144, 2137, 2127, 2138, 2142, 2141, 2135,
+      220, 2142, 2137, 2129, 2119, 2134, 2129, 2133,  500, 2131,
+     2117, 2123, 2130, 2112, 2113, 2116, 2113, 2112,  562, 2107,
+
+     2121, 2120, 2119, 2122, 2104, 2112,  543, 2328, 2328,  553,
+     2328, 2328, 2099,    0,  520, 2146,  554, 2157, 2328,  556,
+     2328, 2156, 2328, 2150,  606, 2328,  555, 2090, 2109, 2092,
+     2109, 2097, 2149, 2104, 2099, 2102, 2097,  537, 2328, 2099,
+      586, 2138, 2096, 2093, 2094,  584, 2098, 2138, 2086, 2081,
+     2078, 2074, 2076, 2127, 2084, 2073, 2089, 2123, 2069,  607,
+     2082, 2082, 2065, 2066, 2079, 2077, 2065, 2075, 2070, 2077,
+     2072, 2057,  574, 2066, 2069, 2064,  577, 2063, 2059, 2109,
+      422,  563, 2328, 2103, 2053, 2052, 2045, 2047, 2059, 2050,
+     2039, 2056, 2045, 2050,  596, 2097, 2050,  589, 2047, 2050,
+
+     2050, 2048, 2037, 2037, 2049,  583, 2024, 2025, 2046,  595,
+     2028, 2025, 2039, 2042, 2037, 2023, 2035, 2034, 2033, 2028,
+     2031, 2030, 2029, 2028,  558, 2071, 2030, 2069, 2068, 2010,
+      652, 2023, 2328, 2328, 2022,    0,  604, 2064, 2063, 2328,
+     2062, 2328,  616,  664,  629, 2061, 2055, 2008, 2010, 1998,
+     2328, 2003, 2009, 2012, 1995, 2010, 1997, 1996, 2328, 2006,
+      610, 1997, 1994, 2006,  566, 1991, 1993, 2328, 1999, 1984,
+     1986, 1997, 1995, 1990,  653, 1997, 1985, 1978, 2029, 2328,
+     1976, 1992, 2026, 2030, 1986, 1980, 1982, 1983, 1967, 1984,
+     2018, 1969, 1964, 1963, 1965, 1961, 1957,  556, 1976, 1950,
+
+     1957, 1962, 1955, 1971, 2005, 2009, 2328, 1954, 1950, 2006,
+     1957, 1951, 1958, 1943, 1953, 1941, 1955, 1944, 1940, 1942,
+     1937, 2328, 1994, 2328, 1936, 1935, 1928, 1945, 1984, 1983,
+     1928, 1933, 1942, 1936, 1930, 1939,  688, 1976, 1938, 1921,
+     1921, 1916, 1912, 1918, 1923, 1916, 1924, 1928, 1911, 1969,
+     1910, 1962, 1907, 1908, 1907, 1919, 1908, 2328, 1918, 2328,
+     2328, 1907, 2328, 1917, 1953, 1913,    0, 1956, 2328, 2328,
+     2328,  636,  632,  691, 2328,  640, 1915, 1895, 1948, 1893,
+     1946, 1891, 1890, 1889, 1896, 1889, 1897, 1900, 1882, 1882,
+     1897, 1896,  622, 1895, 1894, 1878, 1893, 1875, 1922, 1889,
+
+     1927, 1871, 1873, 1885, 1885, 1884, 2328, 1869, 1866, 1924,
+     1879, 1871, 1877, 1868, 1876, 2328, 1861, 1872, 1876, 1858,
+     1870, 1871,  636, 1853, 1847, 1852, 1849, 1864, 1863, 1864,
+     1843, 1853, 1859, 1902, 1857, 1856, 1848, 1839, 2328, 1840,
+     1842, 2328, 1850, 1889, 1888,   16, 1849, 1886, 1831, 1832,
+     1835, 1836, 1827, 2328, 1841, 1827,  695, 1819, 1823, 1839,
+     1836, 1828, 1873, 1825, 1832, 1870, 2328, 1816, 1814, 1828,
+     1812, 1826, 1829, 1863, 1862, 1861, 1860, 1805, 1858, 1857,
+     2328, 1802, 1816,  698, 1817, 1816, 1813, 1813, 1850, 1810,
+     1799, 1801, 2328, 2328,  663,  676, 1793, 1810, 1802, 1789,
+
+     1783, 1804, 1845,  669, 1839, 1799, 1837, 1836, 1788, 1782,
+     1785, 1793, 1796, 1780, 1781, 1790, 1788, 1770, 1825, 1785,
+     1775, 1783, 1821, 1782,  661, 1773, 1775,   92,  209,  269,
+      294,  313, 2328,  380,  399,  451,  501,  507,  544,  551,
+      579,  597,  588,  611,  654,  662,  659,  715,  716,  661,
+      674,  663,  673,  720,  678,  728, 2328,  729,  685,  683,
+      685,  681,  675,  730,  693,  682, 2328,  684,  696,  685,
+      698,  700,  744,  687,  746,  689,  704, 2328,  698,  692,
+      703,  688,  699,  712,  691,  697,  752,  716,  700,  700,
+      713,  757,  758,  759,  706,  724,  719,  726,  721,  706,
+
+      718,  719,  725,  712, 2328,  777,  735,  737,  727,  739,
+      729,  742,  733,  739,  783,  759,  746,  728,  735,  749,
+      794,  744, 2328,  742,  757,  754,  740,  747,  746,  744,
+      763,  760,  761,  749,  756,  757,  766,  770,  806,  768,
+      758,  771,  757,  756,  763,  819,  760,  761,  767,  783,
+      766,  820,  775, 2328,  785,  785,  778,  789,  787,  832,
+      774,  776,  791,  792,  780,  778,  840,  797,  783,  786,
+     2328, 2328,  802,  801,  802,  807,  795,  805,  807, 2328,
+     2328,  807,  809,  796,  814,  801,  799,  817,  804,  804,
+      855,  802,  806,  864, 2328,  865, 2328,  810,  824,  824,
+
+      869,  817,  816,  820,  814,  874,  827,  817,  818,  814,
+      824,  828,  839,  823,  841,  836,  838,  831,  833,  834,
+      846,  836,  851,  892,  849,  854,  831,  854,  838, 2328,
+      845,  846,  860,  851,  849,  899,  846,  861,  879,  887,
+      856,  905,  867,  907, 2328,  873,  861,  856,  857,  869,
+      876,  865,  866,  862,  880,  866,  867,  877,  886,  922,
+      869,  887,  879,  875,  928,  935,  892,  883, 2328,  887,
+      895,  897,  882,  898,  888,  900,  894,  941,  907,  891,
+      892, 2328,  908,  911,  894,  896,  954,  897,  916, 2328,
+      915,  918,  899,  917,  905,  958,  916,  912,  909,  962,
+
+      911,  964,  926,  912,  930,  929,  915,  930,  922,  918,
+      936,  935,  922, 2328, 2328,  930,  977,  930, 2328,  938,
+      941,  934,  987, 2328,  936,  942,  986,  937,  938,  950,
+      944,  948,  946,  944,  955, 1000,  944,  949, 1003, 1004,
+      948,  960, 2328,  948,  956,  954, 1005,  967,  954,  955,
+      964,  976,  963,  961,  975,  976,  992,  997,  979,  984,
+      967,  967,  969,  969,  989,  988,  979,  968,  985,  992,
+     1035,  977,  997,  990,  994,  998,  981,  998,  989, 1044,
+      991,  995, 2328, 1042,  991,  992,  992, 1013, 1010, 1050,
+      999, 1017, 1018, 1004, 1012, 1021, 1001, 1016, 1023, 1065,
+
+     1066, 2328, 1019, 1068, 1069, 1011, 1021, 1031, 1034, 1017,
+     1019, 1019, 1026, 1035, 1023, 1030, 1025, 1032, 1044, 1085,
+     1032, 1031, 1048, 1089, 1039, 1043, 1041, 1039, 1034, 1095,
+     1096, 1046, 1098, 1094, 1100, 1053, 2328, 1058, 1051, 1042,
+     1061, 1055, 1050, 1060, 1057, 1062, 1058, 1070, 2328, 1055,
+     1057, 2328, 2328, 1057, 1117, 1056, 1075, 1076, 1078, 1069,
+     1123, 1124, 1077, 1062, 1076, 1084, 1066, 1071, 1110, 1101,
+     1133, 1088, 1088, 1092, 1079, 1081, 1098, 1093, 1097, 1142,
+     1090, 1094, 2328, 1091, 1087, 1104, 1084, 1105, 1095, 1146,
+     1099, 2328, 1112, 1111, 1114, 1098, 1110, 1115, 1102, 1162,
+
+     1115, 1120, 1107, 1118, 1110, 1116, 1112, 1130, 1131, 1132,
+     2328, 2328, 1130, 2328, 1132, 2328, 1117, 1128, 1119, 1138,
+     1128, 1180, 1137, 1134, 1178, 1142, 1131, 1138, 1143, 1140,
+     1146, 2328, 1139, 1131, 1192, 2328, 1193, 1140, 1147, 1191,
+     1153, 2328, 2328, 1150, 2328, 1141, 2328, 1141, 1144, 1158,
+     1163, 1146, 1157, 1206, 1163, 1164, 1165, 1205, 1161, 1212,
+     1165, 1214, 2328, 1161, 1216, 1217, 1174, 1176, 2328, 2328,
+     1159, 1221, 1217, 1181, 1165, 1177, 1196, 1227, 2328, 1184,
+     1175, 1186, 1231, 1178, 1193, 1229, 1181, 2328, 1177, 1193,
+     1181, 1195, 1196, 1193, 1237, 1200, 1190, 1200, 1206, 1194,
+
+     1194, 1249, 1245, 1251, 1208, 2328, 1210, 1210, 1212, 1205,
+     1214, 1215, 1212, 1202, 1205, 1206, 1265, 1212, 1267, 1214,
+     1269, 1212, 1271, 2328, 1229, 1208, 1223, 1217, 1220, 1233,
+     1236, 1235, 1233, 1283, 1236, 2328, 2328, 1232, 1242, 1227,
+     1283, 1244, 1230, 1291, 1292, 1236, 1246, 1295, 1252, 2328,
+     1244, 1244, 1246, 1248, 1301, 1244, 2328, 1245, 2328, 1247,
+     2328, 2328, 1260, 1262, 1263, 2328, 1250, 1258, 1310, 1259,
+     1291, 2328, 1313, 1263, 1310, 2328, 1258, 1266, 1260, 1257,
+     1260, 1263, 1263, 1259, 1281, 1320, 1273, 1285, 1288, 1276,
+     1279, 1272, 1332, 1280, 2328, 1275, 2328, 1278, 1337, 1290,
+
+     1281, 1296, 1296, 1299, 1299, 1296, 1340, 1302, 2328, 1294,
+     2328, 1295, 2328, 1305, 2328, 1345, 1307, 1308, 1305, 1349,
+     1297, 1312, 1352, 1314, 1306, 2328, 1303, 1303, 1309, 1308,
+     1306, 1321, 1321, 2328, 2328, 1362, 1309, 2328, 1326, 1311,
+     1311, 1313, 1319, 2328, 1374, 1316, 1326, 1337, 1335, 1379,
+     1332, 1341, 2328, 1338, 1357, 2328, 1341, 1326, 1386, 1387,
+     1344, 1349, 1331, 1391, 1392, 1393, 1389, 1353, 1350, 1346,
+     1339, 1394, 1352, 1353, 2328, 1343, 1356, 1404, 2328, 1342,
+     1402, 1365, 1361, 1406, 1354, 1359, 1357, 1416, 1372, 1360,
+     1419, 1369, 1421, 1382, 1371, 1365, 1425, 1367, 1376, 1369,
+
+     1383, 1386, 1431, 1373, 1390, 1386, 1376, 1391, 1375, 1433,
+     1434, 1435, 1382, 1437, 1400, 2328, 1400, 1387, 1386, 1442,
+     2328, 1383, 1401, 1450, 1420, 1452, 1405, 2328, 2328, 1396,
+     1407, 1456, 2328, 2328, 2328, 1402, 1407, 1405, 1455, 1413,
+     1418, 1406, 1422, 1411, 1409, 1410, 2328, 1468, 1414, 1465,
+     1408, 1413, 1475, 1423, 1433, 1434, 2328, 1480, 1433, 1477,
+     2328, 1435, 2328, 1426, 1441, 1429, 2328, 1439, 1440, 1441,
+     1490, 1448, 2328, 1487, 1453, 1429, 1447, 1448, 1457, 1439,
+     1445, 1447, 1501, 1460, 1459, 1451, 1505, 1455, 1459, 1464,
+     1457, 2328, 1510, 2328, 1459, 1512, 1454, 2328, 1457, 1467,
+
+     1511, 1459, 1474, 1461, 1476, 1462, 1469, 1469, 1480, 2328,
+     1474, 1469, 1468, 1528, 1481, 2328, 1525, 1476, 1473, 2328,
+     1487, 1474, 1490, 1492, 1537, 1490, 1487, 1495, 1489, 2328,
+     1542, 1483, 1485, 1501, 1494, 1484, 1500, 1501, 1495, 1511,
+     2328, 1501, 1553, 1512, 2328, 1496, 1503, 1557, 1553, 2328,
+     1515, 2328, 1555, 1517, 1518, 1503, 1504, 1512, 1566, 1514,
+     1563, 1564, 1519, 1531, 1528, 1519, 1526, 2328, 1523, 1528,
+     1526, 1578, 1579, 1527, 1537, 1524, 2328, 1539, 1540, 1541,
+     1542, 2328, 1532, 1544, 1589, 1546, 1591, 1533, 1541, 1535,
+     1543, 1556, 2328, 1533, 1593, 1554, 2328, 1558, 1543, 1543,
+
+     1558, 1551, 1550, 1561, 1548, 2328, 1564, 1552, 1555, 1611,
+     1569, 1560, 1572, 1563, 1572, 1574, 1578, 2328, 2328, 1571,
+     1561, 1621, 1564, 1623, 1565, 1625, 1583, 1627, 2328, 1628,
+     2328, 1624, 1586, 1583, 1588, 1575, 1634, 1577, 1582, 1573,
+     1638, 1591, 1592, 1582, 1599, 1598, 1639, 1583, 1602, 1603,
+     2328, 1600, 1649, 1606, 1607, 1652, 1609, 1612, 1599, 1608,
+     2328, 1657, 2328, 1610, 2328, 1619, 2328, 2328, 1601, 1661,
+     1608, 1663, 1606, 2328, 1625, 1666, 1625, 2328, 1616, 1606,
+     1665, 1631, 1624, 1620, 1674, 1617, 1619, 1624, 2328, 1620,
+     1622, 2328, 1627, 1637, 1622, 1631, 2328, 1632, 1626, 1638,
+
+     2328, 1634, 2328, 1644, 1637, 2328, 1639, 1647, 1692, 1633,
+     1635, 1632, 1656, 2328, 1643, 1650, 1653, 1642, 1696, 1643,
+     1651, 1660, 1661, 1662, 1663, 1656, 1651, 1652, 1656, 1668,
+     1713, 2328, 1659, 1671, 1716, 1665, 1667, 1665, 1720, 1673,
+     1660, 1675, 1680, 1725, 1726, 1727, 1728, 1685, 1730, 1731,
+     1681, 1675, 2328, 1691, 1735, 2328, 1692, 1677, 1695, 2328,
+     1686, 1700, 1696, 1689, 2328, 2328, 2328, 2328, 1743, 2328,
+     2328, 1700, 1745, 1706, 2328, 1747, 1689, 1749, 1704, 1703,
+     1704, 1694, 2328, 1749, 2328, 1696, 2328, 1708, 2328, 1757,
+     1699, 1715, 1760, 1721, 1718, 1710, 2328, 1760, 1709, 2328,
+
+     1721, 1714, 1769, 1717, 1712, 1714, 1729, 1714, 2328, 1775,
+     1728, 1777, 1778, 1726, 2328, 1728, 2328, 2328, 1722, 1738,
+     1783, 1784, 2328, 2328, 2328, 1790, 1795, 1800, 1805, 1810,
+     1815, 1820, 1823, 1797, 1802, 1804, 1817
     } ;
 
-static const flex_int16_t yy_def[1915] =
+static const flex_int16_t yy_def[1938] =
     {   0,
-     1903, 1903, 1904, 1904, 1903, 1903, 1903, 1903, 1903, 1903,
-     1902, 1902, 1902, 1902, 1902, 1905, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1906,
-     1902, 1902, 1902, 1907,   15, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1908,   45,   45,   45,
+     1926, 1926, 1927, 1927, 1926, 1926, 1926, 1926, 1926, 1926,
+     1925, 1925, 1925, 1925, 1925, 1928, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1929,
+     1925, 1925, 1925, 1930,   15, 1925,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1931,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1905, 1902, 1902,
-     1902, 1902, 1902, 1902, 1909, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1906, 1902, 1907, 1902,
+       45,   45,   45,   45,   45,   45,   45, 1928, 1925, 1925,
+     1925, 1925, 1925, 1925, 1932, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1929, 1925, 1930, 1925,
 
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1910,   45, 1908,   45,   45,   45,   45,   45,
+     1925,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1933,   45, 1931,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1909, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1911,   45,   45, 1902,   45,   45, 1902,   45,   45,
+       45,   45, 1932, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1934,   45,   45, 1925,   45,   45, 1925,   45,   45,
 
-       45,   45,   45,   45, 1910, 1902, 1908,   45,   45,   45,
+       45,   45,   45,   45, 1933, 1925, 1931,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1912,   45,   45,   45,   45, 1902,   45,
-     1902,   45, 1902,   45, 1908, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
+       45,   45,   45,   45,   45,   45, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1935,   45,   45,   45,   45, 1925,   45,
+     1925,   45, 1925,   45, 1931, 1925,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902, 1902, 1902, 1913,   45,   45,   45, 1902,
-       45, 1902,   45, 1908,   45,   45,   45,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
+       45,   45, 1925, 1925, 1925, 1936,   45,   45,   45, 1925,
+       45, 1925,   45, 1931,   45,   45,   45,   45,   45,   45,
+     1925,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1925,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45, 1902,   45,   45,   45,   45,   45,   45,
+       45, 1925,   45, 1925,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45, 1902,
-     1902,   45, 1902,   45,   45, 1902, 1914,   45, 1902, 1902,
-     1902,   45,   45,   45, 1902,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925,   45, 1925,
+     1925,   45, 1925,   45,   45, 1925, 1937,   45, 1925, 1925,
+     1925,   45,   45,   45, 1925,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45, 1925,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1902,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902, 1902,   45,   45,   45,   45,   45,   45,
+     1925,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925, 1925,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1902,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1925,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902, 1902,
-       45,   45,   45,   45,   45,   45,   45, 1902, 1902,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45, 1902,   45,   45,   45,   45,   45,
+     1925, 1925,   45,   45,   45,   45,   45,   45,   45, 1925,
+     1925,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1925,   45, 1925,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1925,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1925,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45, 1925,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1902, 1902,   45,   45,   45, 1902,   45,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
+       45,   45,   45, 1925, 1925,   45,   45,   45, 1925,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1902,   45,   45, 1902, 1902,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45, 1925, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 1902, 1902,   45, 1902,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45, 1902, 1902,   45, 1902,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45, 1902, 1902,   45,   45,   45,   45,   45,
-       45,   45,   45, 1902,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1902,   45,   45,   45,   45,   45,   45,
-     1902,   45, 1902,   45, 1902, 1902,   45,   45,   45, 1902,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45, 1902,
+     1925, 1925,   45, 1925,   45, 1925,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1925,   45,   45,   45, 1925,   45,   45,   45,   45,
+       45, 1925, 1925,   45, 1925,   45, 1925,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45, 1902,
+       45,   45, 1925,   45,   45,   45,   45,   45, 1925, 1925,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1902,   45, 1902,   45, 1902,   45, 1902,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45, 1902, 1902,   45,   45,
-     1902,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45, 1902,   45,
+       45,   45,   45,   45,   45, 1925,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1925, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1925,
+       45,   45,   45,   45,   45,   45, 1925,   45, 1925,   45,
+     1925, 1925,   45,   45,   45, 1925,   45,   45,   45,   45,
+       45, 1925,   45,   45,   45, 1925,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1925,   45, 1925,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+     1925,   45, 1925,   45, 1925,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1925,   45,   45,   45,   45,
+       45,   45,   45, 1925, 1925,   45,   45, 1925,   45,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45, 1925,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1925,   45,   45,   45, 1925,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45, 1902,   45,   45,   45,   45,   45,   45, 1902,
-     1902,   45,   45,   45, 1902, 1902, 1902,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45, 1902,   45, 1902,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45, 1902,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1902,   45, 1902,   45,   45,   45, 1902,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
 
-       45,   45,   45,   45,   45, 1902,   45,   45,   45, 1902,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1902,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1902,   45,   45,   45, 1902,   45,   45,   45,   45, 1902,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
-       45,   45,   45,   45,   45, 1902,   45,   45,   45,   45,
-     1902,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1902,   45,   45,   45, 1902,   45,   45,   45,   45,
-       45,   45,   45,   45, 1902,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1902, 1902,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45, 1902,   45,
+       45,   45,   45,   45,   45, 1925,   45,   45,   45,   45,
+     1925,   45,   45,   45,   45,   45,   45, 1925, 1925,   45,
+       45,   45, 1925, 1925, 1925,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+     1925,   45, 1925,   45,   45,   45, 1925,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45, 1902,
-       45, 1902,   45, 1902, 1902,   45,   45,   45,   45,   45,
-     1902,   45,   45,   45, 1902,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1902,   45,   45, 1902,   45,   45,
-       45,   45, 1902,   45,   45,   45, 1902,   45, 1902,   45,
-       45, 1902,   45,   45,   45,   45,   45,   45,   45, 1902,
+       45, 1925,   45, 1925,   45,   45,   45, 1925,   45,   45,
 
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1925,
+       45,   45,   45,   45,   45, 1925,   45,   45,   45, 1925,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1925,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1925,   45,   45,   45, 1925,   45,   45,   45,   45, 1925,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925,   45,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45,   45,
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45,   45, 1925,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1925,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1925, 1925,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+     1925,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45,   45,
+     1925,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1925,   45, 1925,   45, 1925,   45, 1925, 1925,   45,   45,
+       45,   45,   45, 1925,   45,   45,   45, 1925,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45, 1925,   45,   45,   45,   45, 1925,   45,   45,   45,
+
+     1925,   45, 1925,   45,   45, 1925,   45,   45,   45,   45,
+       45,   45,   45, 1925,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45, 1902,
-       45,   45, 1902,   45,   45,   45,   45, 1902, 1902, 1902,
-     1902,   45, 1902, 1902,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45,   45, 1902,   45, 1902,   45, 1902, 1902,
-       45,   45,   45,   45,   45,   45, 1902,   45,   45, 1902,
-       45,   45,   45,   45,   45,   45,   45, 1902,   45,   45,
-       45,   45,   45, 1902, 1902,   45,   45,   45,   45, 1902,
-
-     1902,    0, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902
+       45, 1925,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45,   45, 1925,   45,   45,   45, 1925,
+       45,   45,   45,   45, 1925, 1925, 1925, 1925,   45, 1925,
+     1925,   45,   45,   45, 1925,   45,   45,   45,   45,   45,
+       45,   45, 1925,   45, 1925,   45, 1925,   45, 1925,   45,
+       45,   45,   45,   45,   45,   45, 1925,   45,   45, 1925,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1925,   45,
+       45,   45,   45,   45, 1925,   45, 1925, 1925,   45,   45,
+       45,   45, 1925, 1925,    0, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925
     } ;
 
-static const flex_int16_t yy_nxt[2379] =
+static const flex_int16_t yy_nxt[2402] =
     {   0,
-     1902,   13,   14,   13, 1902,   15,   16, 1902,   17,   18,
+     1925,   13,   14,   13, 1925,   15,   16, 1925,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  766,   37,   14,   37,   85,   25,   26,   38,  100,
-     1902,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  767,   37,   14,   37,   85,   25,   26,   38,  100,
+     1925,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      767,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      768,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  102,   25,   26,
@@ -1405,7 +1411,7 @@ static const flex_int16_t yy_nxt[2379] =
       106,   42,   41,   29,  108,   30,  111,  112,   92,  134,
        41,   25,   31,  102,  135,  365,   87,  136,   87,  105,
        32,   88,   88,   88,   88,   88,   33,  108,  106,  111,
-      850,  112,  366,   34,   35,   44,   44,   44,   45,   45,
+      852,  112,  366,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   47,   45,   45,
        48,   49,   50,   45,   51,   52,   53,   45,   45,   45,
@@ -1413,13 +1419,13 @@ static const flex_int16_t yy_nxt[2379] =
        58,   45,   59,   60,   61,   62,   63,   64,   65,   51,
 
        66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
-       76,   77,   56,   45,   45,   45,   45,   45,   79,  851,
+       76,   77,   56,   45,   45,   45,   45,   45,   79,  853,
        80,   80,   80,   80,   80,   79,  102,   82,   82,   82,
        82,   82,  204,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  105,   81,  118,  164,
       109,  129,  116,  165,   81,  204,   81,  201,  117,  119,
       110,  130,  120,   81,  121,  132,  122,  198,  184,  105,
-       81,  185,  133,  109,  852,  233,  405,   81,   45,  406,
+       81,  185,  133,  109,  854,  233,  405,   81,   45,  406,
       131,   45,   45,   45,  201,   45,   45,   45,  110,  114,
       137,  234,   45,   45,  184,   45,   45,  185,  199,  184,
 
@@ -1427,132 +1433,132 @@ static const flex_int16_t yy_nxt[2379] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  123,  187,   45,  124,  125,  185,
        45,  126,  127,  145,   45,  141,  142,  146,  294,  143,
-      108,  147,   45,  853,  128,  144,   45,  186,   45,  115,
+      108,  147,   45,  855,  128,  144,   45,  186,   45,  115,
       153,  186,  295,  148,  111,  188,  196,  149,  154,  150,
-      155,  151,  854,  152,  158,  156,  157,  159,  160,  166,
+      155,  151,  856,  152,  158,  156,  157,  159,  160,  166,
       173,  174,  228,  167,  229,  186,  168,  111,  161,  189,
       109,  162,  196,  169,  170,  203,  251,  180,  171,  172,
       110,  230,  181,   83,   83,   83,   83,   83,   88,   88,
 
        88,   88,   88,  175,  242,  176,   81,  252,  177,  178,
       100,   79,  203,   80,   80,   80,   80,   80,  110,   83,
-       83,   83,   83,   83,   99,  179,   81,  855,   87,   81,
+       83,   83,   83,   83,   99,  179,   81,  857,   87,   81,
        87,   99,   81,   88,   88,   88,   88,   88,   79,  193,
        82,   82,   82,   82,   82,  200,  202,  101,  243,   81,
-      200,  193,  856,   81,  215,   81,   88,   88,   88,   88,
+      200,  193,  858,   81,  215,   81,   88,   88,   88,   88,
        88,   99,  211,  216,  217,   99,  275,  193,  208,   99,
       276,  212,  508,  200,  202,  213,   81,   99,  259,  209,
       231,   99,  509,   99,  192,  207,  207,  207,  207,  207,
       222,  223,  278,  232,  207,  207,  207,  207,  207,  207,
 
       224,  237,  271,  288,  238,  272,  273,  289,  239,  265,
-      201,  290,  309,  307,  857,  373,  307,  207,  207,  207,
+      201,  290,  309,  307,  859,  373,  307,  207,  207,  207,
       207,  207,  207,  308,  266,  267,  268,  279,  280,  281,
       308,  309,  315,  317,  320,  309,  318,  299,  282,  322,
       283,  307,  284,  285,  310,  286,  324,  315,  386,  308,
-      858,  335,  859,  414,  312,  315,  311,  320,  320,  336,
+      860,  335,  861,  414,  312,  315,  311,  320,  320,  336,
       437,  317,  322,  318,  337,  338,  415,  321,  374,  433,
       327,  375,  425,  324,  325,  325,  325,  325,  325,  433,
       439,  382,  456,  325,  325,  325,  325,  325,  325,  437,
-      441,  459,  433,  860,  465,  437,  460,  441,  387,  457,
+      441,  459,  433,  862,  465,  437,  460,  441,  387,  457,
 
-      466,  522,  434,  439,  861,  630,  325,  325,  325,  325,
+      466,  522,  434,  439,  863,  630,  325,  325,  325,  325,
       325,  325,  480,  556,  597,  631,  557,  481,  441,  444,
-      444,  444,  444,  444,  445,  510,  862,  598,  444,  444,
+      444,  444,  444,  444,  445,  510,  864,  598,  444,  444,
       444,  444,  444,  444,  496,  497,  498,  503,  526,  568,
-      499,  535,  527,  504,  540,  536,  863,  572,  541,  573,
-      864,  444,  444,  444,  444,  444,  444,  563,  607,  523,
-      865,  588,  564,  608,  568,  482,  696,  568,  695,  589,
+      499,  535,  527,  504,  540,  536,  865,  572,  541,  573,
+      866,  444,  444,  444,  444,  444,  444,  563,  607,  523,
+      867,  588,  564,  608,  568,  482,  696,  568,  695,  589,
       483,  590,  591,  592,  572,  593,  573,   45,   45,   45,
-       45,   45,  744,  745,  815,  866,   45,   45,   45,   45,
-       45,   45,  574,  667,  696,  695,  694,  698,  668,  814,
-
-      777,  697,  867,  804,  699,  778,  868,  815,  869,   45,
-       45,   45,   45,   45,   45,  805,  823,  824,  845,  825,
-      870,  871,  846,  872,  873,  874,  847,  814,  875,  876,
-      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
-      887,  888,  889,  890,  779,  891,  892,  893,  894,  895,
+       45,   45,  716,  745,  746,  717,   45,   45,   45,   45,
+       45,   45,  574,  667,  696,  695,  694,  698,  668,  815,
+
+      778,  697,  816,  805,  699,  779,  868,  869,  870,   45,
+       45,   45,   45,   45,   45,  806,  824,  825,  847,  826,
+      871,  872,  848,  873,  874,  816,  849,  815,  875,  876,
+      878,  879,  877,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  890,  780,  891,  892,  893,  894,  895,
       896,  897,  898,  899,  900,  901,  902,  903,  904,  905,
       906,  907,  908,  909,  910,  911,  912,  913,  914,  915,
-      916,  918,  919,  922,  923,  924,  926,  917,  927,  920,
-      928,  925,  929,  921,  930,  931,  932,  933,  934,  935,
+      916,  917,  918,  920,  921,  924,  925,  926,  928,  919,
+      929,  922,  930,  927,  931,  923,  932,  933,  934,  935,
       936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
 
       946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
       956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      938,  966,  967,  968,  969,  970,  971,  972,  973,  974,
-      975,  976,  977,  978,  979,  981,  982,  983,  984,  980,
-      985,  986,  987,  988,  989,  990,  991,  992,  993,  994,
+      966,  967,  940,  968,  969,  970,  971,  972,  973,  974,
+      975,  976,  977,  978,  979,  980,  981,  982,  984,  985,
+      986,  987,  983,  988,  989,  990,  991,  992,  993,  994,
       995,  996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004,
-     1006, 1007, 1008, 1005, 1009, 1010, 1011, 1012, 1013, 1014,
+     1005, 1006, 1007, 1009, 1010, 1011, 1008, 1012, 1013, 1014,
      1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
      1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1036, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+     1035, 1036, 1037, 1038, 1039, 1041, 1042, 1043, 1044, 1045,
 
-     1046, 1047, 1048, 1037, 1049, 1050, 1051, 1052, 1053, 1054,
+     1046, 1047, 1048, 1049, 1050, 1051, 1040, 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, 1055, 1078, 1079, 1054, 1080, 1081, 1082,
+     1075, 1076, 1077, 1078, 1079, 1080, 1058, 1081, 1082, 1057,
      1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1101, 1102, 1103, 1104,
-     1099, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
+     1105, 1106, 1107, 1108, 1103, 1109, 1110, 1111, 1112, 1113,
      1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
-     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
-     1124, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+     1124, 1125, 1126, 1127, 1129, 1130, 1131, 1132, 1133, 1134,
+     1135, 1136, 1137, 1138, 1128, 1139, 1140, 1141, 1142, 1143,
 
      1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
-     1154, 1155, 1156, 1100, 1157, 1158, 1159, 1160, 1161, 1162,
-     1163, 1164, 1165, 1167, 1166, 1168, 1169, 1170, 1171, 1172,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1104, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1170, 1172,
      1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
      1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
-     1165, 1166, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
-     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1211,
-     1213, 1214, 1215, 1210, 1216, 1217, 1218, 1219, 1220, 1221,
+     1193, 1194, 1195, 1196, 1169, 1170, 1197, 1198, 1199, 1200,
+     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
+     1211, 1212, 1213, 1214, 1216, 1218, 1219, 1220, 1215, 1221,
      1222, 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, 1212, 1255, 1256, 1257, 1258, 1259, 1260,
+     1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1217, 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, 1287, 1288, 1289, 1290,
-     1291, 1292, 1293, 1294, 1272, 1295, 1296, 1297, 1298, 1299,
-     1273, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
+     1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1277,
+     1300, 1301, 1302, 1303, 1304, 1278, 1305, 1306, 1307, 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, 1338,
 
      1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
-     1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
+     1349, 1350, 1351, 1352, 1353, 1354, 1356, 1357, 1358, 1359,
      1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369,
-     1370, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380,
+     1370, 1371, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380,
      1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
-     1391, 1392, 1393, 1365, 1394, 1395, 1396, 1397, 1398, 1399,
-     1400, 1401, 1349, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
-     1409, 1410, 1411, 1413, 1371, 1414, 1415, 1416, 1417, 1418,
-     1412, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
+     1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1371,
+     1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1355, 1408,
+     1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
+     1377, 1420, 1421, 1422, 1423, 1424, 1425, 1419, 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, 1448, 1471, 1472, 1473, 1474, 1475, 1476,
-     1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486,
+     1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477,
+     1455, 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, 1506,
      1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
      1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526,
-     1527, 1528, 1529, 1531, 1532, 1533, 1534, 1535, 1536, 1537,
+     1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
 
-     1538, 1539, 1540, 1530, 1541, 1542, 1543, 1517, 1544, 1545,
-     1546, 1547, 1548, 1550, 1551, 1552, 1553, 1554, 1555, 1556,
-     1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
+     1537, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547,
+     1548, 1538, 1549, 1550, 1551, 1525, 1552, 1553, 1554, 1555,
+     1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
      1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576,
      1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586,
      1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596,
-     1597, 1598, 1599, 1600, 1602, 1603, 1604, 1605, 1601, 1606,
-     1549, 1607, 1608, 1609, 1610, 1584, 1611, 1612, 1613, 1614,
-     1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
+     1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606,
+     1607, 1608, 1609, 1610, 1612, 1613, 1614, 1615, 1611, 1558,
+     1616, 1617, 1618, 1619, 1593, 1620, 1621, 1622, 1623, 1624,
      1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634,
 
      1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644,
@@ -1581,79 +1587,83 @@ static const flex_int16_t yy_nxt[2379] =
      1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854,
      1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864,
      1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874,
-     1875, 1876, 1877, 1878, 1879, 1880, 1881, 1883, 1882, 1884,
+     1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884,
      1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894,
-     1895, 1896, 1897, 1898, 1899, 1900, 1901,   12,   12,   12,
-       12,   12,   36,   36,   36,   36,   36,   78,  314,   78,
-       78,   78,   97,  436,   97,  567,   97,   99,   99,   99,
-       99,   99,  113,  113,  113,  113,  113,  183,   99,  183,
-
-      183,  183,  205,  205,  205,  849,  848,  844,  843,  842,
-      841,  840,  839,  838,  837,  836,  835,  834,  833,  832,
-      831,  830,  829,  828,  827,  826,  822,  821,  820,  819,
-      818,  817,  816,  813,  812,  811,  810,  809,  808,  807,
-      806,  803,  802,  801,  800,  799,  798,  797,  796,  795,
-      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
-      784,  783,  782,  781,  780,  776,  775,  774,  773,  772,
-      771,  770,  769,  768,  765,  764,  763,  762,  761,  760,
-      759,  758,  757,  756,  755,  754,  753,  752,  751,  750,
-      749,  748,  747,  746,  743,  742,  741,  740,  739,  738,
-
-      737,  736,  735,  734,  733,  732,  731,  730,  729,  728,
-      727,  726,  725,  724,  723,  722,  721,  720,  719,  718,
-      717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
-      707,  706,  705,  704,  703,  702,  701,  700,  694,  693,
-      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
-      682,  681,  680,  679,  678,  677,  676,  675,  674,  673,
-      672,  671,  670,  669,  666,  665,  664,  663,  662,  661,
-      660,  659,  658,  657,  656,  655,  654,  653,  652,  651,
-      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
-      640,  639,  638,  637,  636,  635,  634,  633,  632,  629,
-
-      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
-      618,  617,  616,  615,  614,  613,  612,  611,  610,  609,
-      606,  605,  604,  603,  602,  601,  600,  599,  596,  595,
-      594,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      578,  577,  576,  575,  571,  570,  569,  566,  565,  562,
-      561,  560,  559,  558,  555,  554,  553,  552,  551,  550,
-      549,  548,  547,  546,  545,  544,  543,  542,  539,  538,
-      537,  534,  533,  532,  531,  530,  529,  528,  525,  524,
-      521,  520,  519,  518,  517,  516,  515,  514,  513,  512,
-      511,  507,  506,  505,  502,  501,  500,  495,  494,  493,
-
-      492,  491,  490,  489,  488,  487,  486,  485,  484,  479,
-      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
-      468,  467,  464,  463,  462,  461,  458,  455,  454,  453,
-      452,  451,  450,  449,  448,  447,  446,  443,  442,  440,
-      438,  435,  432,  431,  430,  429,  428,  427,  426,  424,
-      423,  422,  421,  420,  419,  418,  417,  416,  413,  412,
-      411,  410,  409,  408,  407,  404,  403,  402,  401,  400,
-      399,  398,  397,  396,  395,  394,  393,  392,  391,  390,
-      389,  388,  385,  384,  383,  381,  380,  379,  378,  377,
-      376,  372,  371,  370,  369,  368,  367,  364,  363,  362,
-
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  334,  333,  332,  331,  330,  329,  328,
-      326,  206,  323,  321,  319,  316,  313,  306,  305,  304,
-      303,  302,  301,  300,  298,  297,  296,  293,  292,  291,
-      287,  277,  274,  270,  269,  264,  263,  262,  261,  260,
-      258,  257,  256,  255,  254,  253,  250,  249,  248,  247,
-      246,  245,  244,  241,  240,  236,  235,  227,  226,  225,
-      221,  220,  219,  218,  214,  210,  206,  195,  194,  191,
-      190,  182,  163,  140,  107,  104,  103,   43,   98,   96,
-
-       95,   86,   43, 1902,   11, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902
+     1895, 1896, 1897, 1898, 1899, 1900, 1901, 1903, 1902, 1904,
+     1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914,
+     1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924,
+       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
+
+       78,  314,   78,   78,   78,   97,  436,   97,  567,   97,
+       99,   99,   99,   99,   99,  113,  113,  113,  113,  113,
+      183,   99,  183,  183,  183,  205,  205,  205,  851,  850,
+      846,  845,  844,  843,  842,  841,  840,  839,  838,  837,
+      836,  835,  834,  833,  832,  831,  830,  829,  828,  827,
+      823,  822,  821,  820,  819,  818,  817,  814,  813,  812,
+      811,  810,  809,  808,  807,  804,  803,  802,  801,  800,
+      799,  798,  797,  796,  795,  794,  793,  792,  791,  790,
+      789,  788,  787,  786,  785,  784,  783,  782,  781,  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,  744,  743,
+      742,  741,  740,  739,  738,  737,  736,  735,  734,  733,
+      732,  731,  730,  729,  728,  727,  726,  725,  724,  723,
+      722,  721,  720,  719,  718,  715,  714,  713,  712,  711,
+      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
+      700,  694,  693,  692,  691,  690,  689,  688,  687,  686,
+      685,  684,  683,  682,  681,  680,  679,  678,  677,  676,
+      675,  674,  673,  672,  671,  670,  669,  666,  665,  664,
+      663,  662,  661,  660,  659,  658,  657,  656,  655,  654,
+
+      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
+      643,  642,  641,  640,  639,  638,  637,  636,  635,  634,
+      633,  632,  629,  628,  627,  626,  625,  624,  623,  622,
+      621,  620,  619,  618,  617,  616,  615,  614,  613,  612,
+      611,  610,  609,  606,  605,  604,  603,  602,  601,  600,
+      599,  596,  595,  594,  587,  586,  585,  584,  583,  582,
+      581,  580,  579,  578,  577,  576,  575,  571,  570,  569,
+      566,  565,  562,  561,  560,  559,  558,  555,  554,  553,
+      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
+      542,  539,  538,  537,  534,  533,  532,  531,  530,  529,
+
+      528,  525,  524,  521,  520,  519,  518,  517,  516,  515,
+      514,  513,  512,  511,  507,  506,  505,  502,  501,  500,
+      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+      485,  484,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  470,  469,  468,  467,  464,  463,  462,  461,  458,
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
+      443,  442,  440,  438,  435,  432,  431,  430,  429,  428,
+      427,  426,  424,  423,  422,  421,  420,  419,  418,  417,
+      416,  413,  412,  411,  410,  409,  408,  407,  404,  403,
+      402,  401,  400,  399,  398,  397,  396,  395,  394,  393,
+
+      392,  391,  390,  389,  388,  385,  384,  383,  381,  380,
+      379,  378,  377,  376,  372,  371,  370,  369,  368,  367,
+      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
+      354,  353,  352,  351,  350,  349,  348,  347,  346,  345,
+      344,  343,  342,  341,  340,  339,  334,  333,  332,  331,
+      330,  329,  328,  326,  206,  323,  321,  319,  316,  313,
+      306,  305,  304,  303,  302,  301,  300,  298,  297,  296,
+      293,  292,  291,  287,  277,  274,  270,  269,  264,  263,
+      262,  261,  260,  258,  257,  256,  255,  254,  253,  250,
+      249,  248,  247,  246,  245,  244,  241,  240,  236,  235,
+
+      227,  226,  225,  221,  220,  219,  218,  214,  210,  206,
+      195,  194,  191,  190,  182,  163,  140,  107,  104,  103,
+       43,   98,   96,   95,   86,   43, 1925,   11, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+
+     1925
     } ;
 
-static const flex_int16_t yy_chk[2379] =
+static const flex_int16_t yy_chk[2402] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1670,7 +1680,7 @@ static const flex_int16_t yy_chk[2379] =
        51,   42,    9,    2,   53,    2,   55,   56,   31,   64,
        10,    2,    2,   47,   64,  245,   25,   64,   25,   50,
         2,   25,   25,   25,   25,   25,    2,   53,   51,   55,
-      727,   56,  245,    2,    2,   15,   15,   15,   15,   15,
+      728,   56,  245,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1678,13 +1688,13 @@ static const flex_int16_t yy_chk[2379] =
        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,  728,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  729,
        17,   17,   17,   17,   17,   19,   58,   19,   19,   19,
        19,   19,  112,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   62,   20,   59,   73,
        54,   61,   58,   73,   22,  112,   17,  109,   58,   59,
        54,   61,   59,   19,   59,   63,   59,  107,   89,   62,
-       20,   90,   63,   54,  729,  131,  281,   22,   45,  281,
+       20,   90,   63,   54,  730,  131,  281,   22,   45,  281,
        62,   45,   45,   45,  109,   45,   45,   45,   54,   57,
        65,  131,   45,   45,   89,   45,   57,   90,  107,   92,
 
@@ -1692,230 +1702,234 @@ static const flex_int16_t yy_chk[2379] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   60,   92,   57,   60,   60,   93,
        57,   60,   60,   68,   57,   67,   67,   68,  171,   67,
-       69,   68,   57,  730,   60,   67,   57,   91,   57,   57,
+       69,   68,   57,  731,   60,   67,   57,   91,   57,   57,
        70,   94,  171,   68,   76,   93,  105,   68,   70,   69,
-       70,   69,  731,   69,   71,   70,   70,   71,   71,   74,
+       70,   69,  732,   69,   71,   70,   70,   71,   71,   74,
        75,   75,  129,   74,  129,   91,   74,   76,   71,   94,
        75,   71,  105,   74,   74,  111,  145,   76,   74,   74,
        75,  129,   76,   79,   79,   79,   79,   79,   87,   87,
 
        87,   87,   87,   75,  137,   75,   79,  145,   75,   75,
        99,   80,  111,   80,   80,   80,   80,   80,   75,   83,
-       83,   83,   83,   83,  101,   75,   80,  733,   81,   79,
+       83,   83,   83,   83,  101,   75,   80,  734,   81,   79,
        81,  101,   83,   81,   81,   81,   81,   81,   82,  102,
        82,   82,   82,   82,   82,  108,  110,   99,  137,   80,
-      152,  116,  734,   82,  120,   83,   88,   88,   88,   88,
+      152,  116,  735,   82,  120,   83,   88,   88,   88,   88,
        88,  101,  118,  120,  120,  101,  163,  102,  116,  101,
       163,  118,  381,  108,  110,  118,   82,  101,  152,  116,
       130,  101,  381,  101,  101,  115,  115,  115,  115,  115,
       125,  125,  165,  130,  115,  115,  115,  115,  115,  115,
 
       125,  134,  161,  167,  134,  161,  161,  167,  134,  158,
-      175,  167,  186,  184,  735,  252,  187,  115,  115,  115,
+      175,  167,  186,  184,  736,  252,  187,  115,  115,  115,
       115,  115,  115,  185,  158,  158,  158,  165,  165,  165,
       188,  189,  193,  196,  200,  186,  197,  175,  165,  202,
       165,  184,  165,  165,  187,  165,  204,  209,  263,  185,
-      736,  217,  737,  289,  189,  193,  188,  200,  259,  217,
+      737,  217,  738,  289,  189,  193,  188,  200,  259,  217,
       315,  196,  202,  197,  217,  217,  289,  299,  252,  307,
       209,  252,  299,  204,  207,  207,  207,  207,  207,  310,
       317,  259,  338,  207,  207,  207,  207,  207,  207,  315,
-      320,  341,  307,  738,  346,  327,  341,  382,  263,  338,
+      320,  341,  307,  739,  346,  327,  341,  382,  263,  338,
 
-      346,  395,  310,  317,  739,  498,  207,  207,  207,  207,
+      346,  395,  310,  317,  740,  498,  207,  207,  207,  207,
       207,  207,  360,  425,  465,  498,  425,  360,  320,  325,
-      325,  325,  325,  325,  327,  382,  740,  465,  325,  325,
+      325,  325,  325,  325,  327,  382,  741,  465,  325,  325,
       325,  325,  325,  325,  373,  373,  373,  377,  398,  437,
-      373,  406,  398,  377,  410,  406,  741,  443,  410,  443,
-      742,  325,  325,  325,  325,  325,  325,  431,  475,  395,
-      743,  461,  431,  475,  445,  360,  573,  437,  572,  461,
+      373,  406,  398,  377,  410,  406,  742,  443,  410,  443,
+      743,  325,  325,  325,  325,  325,  325,  431,  475,  395,
+      744,  461,  431,  475,  445,  360,  573,  437,  572,  461,
       360,  461,  461,  461,  443,  461,  443,  444,  444,  444,
-      444,  444,  623,  623,  696,  744,  444,  444,  444,  444,
+      444,  444,  593,  623,  623,  593,  444,  444,  444,  444,
       444,  444,  445,  537,  573,  572,  574,  576,  537,  695,
 
-      657,  574,  745,  684,  576,  657,  746,  696,  747,  444,
-      444,  444,  444,  444,  444,  684,  704,  704,  724,  704,
-      748,  749,  724,  750,  751,  752,  724,  695,  752,  753,
-      754,  755,  757,  758,  759,  760,  761,  762,  763,  764,
-      765,  767,  768,  769,  657,  770,  771,  772,  773,  774,
-      775,  776,  778,  779,  780,  781,  782,  783,  784,  785,
-      786,  787,  788,  789,  790,  791,  792,  793,  794,  795,
-      796,  797,  798,  799,  800,  801,  802,  796,  803,  798,
-      805,  801,  806,  798,  807,  808,  809,  810,  811,  812,
-      813,  814,  815,  816,  817,  818,  819,  820,  821,  823,
-
-      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
-      815,  844,  845,  846,  847,  848,  849,  850,  851,  853,
-      854,  855,  856,  857,  858,  859,  860,  861,  862,  858,
-      863,  864,  865,  866,  867,  868,  871,  872,  873,  874,
-      875,  876,  877,  880,  881,  882,  883,  884,  885,  886,
-      887,  888,  889,  886,  890,  891,  892,  894,  896,  897,
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      908,  909,  910,  911,  912,  913,  914,  915,  916,  917,
-      918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
-
-      929,  930,  931,  919,  932,  933,  934,  935,  936,  937,
-      938,  939,  940,  941,  942,  944,  945,  946,  947,  948,
-      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
-      959,  960,  961,  938,  962,  963,  937,  964,  965,  967,
-      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
-      978,  980,  981,  982,  983,  984,  985,  986,  988,  989,
-      984,  990,  991,  992,  993,  994,  995,  996,  997,  998,
-      999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
-     1009, 1010, 1013, 1014, 1015, 1017, 1018, 1019, 1020, 1022,
-     1008, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
-
-     1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1042,
-     1043, 1044, 1045,  984, 1046, 1047, 1048, 1049, 1050, 1051,
-     1052, 1053, 1054, 1056, 1055, 1057, 1058, 1059, 1060, 1061,
-     1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
-     1072, 1073, 1074, 1075, 1076, 1077, 1078, 1080, 1081, 1082,
-     1054, 1055, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
-     1091, 1092, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101,
-     1102, 1103, 1104, 1100, 1105, 1106, 1107, 1108, 1109, 1110,
-     1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120,
-     1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
-
-     1131, 1132, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
-     1142, 1143, 1144, 1101, 1146, 1147, 1150, 1151, 1152, 1153,
-     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
-     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
-     1174, 1175, 1176, 1177, 1178, 1180, 1181, 1182, 1183, 1184,
-     1185, 1186, 1188, 1189, 1165, 1190, 1191, 1192, 1193, 1194,
-     1166, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
-     1204, 1205, 1208, 1210, 1212, 1213, 1214, 1215, 1216, 1217,
-     1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1228,
-     1229, 1230, 1232, 1233, 1234, 1235, 1236, 1239, 1241, 1243,
-
-     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
-     1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1263, 1266,
-     1267, 1268, 1269, 1270, 1271, 1272, 1273, 1275, 1276, 1277,
-     1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, 1288,
-     1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298,
-     1299, 1301, 1302, 1272, 1303, 1304, 1305, 1306, 1307, 1308,
-     1309, 1310, 1253, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
-     1319, 1320, 1321, 1322, 1278, 1323, 1324, 1325, 1326, 1327,
-     1321, 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
-     1339, 1340, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349,
-
-     1350, 1352, 1354, 1357, 1358, 1359, 1361, 1362, 1363, 1364,
-     1365, 1367, 1368, 1369, 1371, 1372, 1373, 1374, 1375, 1376,
-     1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
-     1387, 1389, 1391, 1365, 1392, 1393, 1394, 1395, 1396, 1397,
-     1398, 1399, 1400, 1401, 1403, 1405, 1407, 1409, 1410, 1411,
-     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1420, 1421, 1422,
-     1423, 1424, 1425, 1426, 1429, 1430, 1432, 1433, 1434, 1435,
-     1436, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1447,
-     1448, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458,
-     1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1468, 1469,
-
-     1470, 1472, 1473, 1461, 1474, 1475, 1476, 1448, 1477, 1478,
-     1479, 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, 1506, 1507,
-     1509, 1510, 1511, 1512, 1514, 1515, 1516, 1517, 1518, 1519,
-     1522, 1523, 1524, 1528, 1529, 1530, 1531, 1532, 1533, 1534,
-     1535, 1536, 1537, 1539, 1540, 1541, 1542, 1543, 1539, 1544,
-     1480, 1545, 1546, 1547, 1549, 1517, 1550, 1551, 1553, 1555,
-     1556, 1557, 1559, 1560, 1561, 1562, 1563, 1565, 1566, 1567,
-     1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
-
-     1578, 1579, 1580, 1581, 1582, 1584, 1586, 1587, 1588, 1590,
-     1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1601,
-     1602, 1603, 1604, 1605, 1607, 1608, 1609, 1611, 1612, 1613,
-     1614, 1615, 1616, 1617, 1618, 1619, 1621, 1622, 1623, 1624,
-     1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1634, 1636,
-     1637, 1638, 1639, 1641, 1643, 1644, 1645, 1646, 1647, 1648,
-     1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1658, 1659,
-     1660, 1661, 1662, 1663, 1664, 1665, 1667, 1668, 1669, 1670,
-     1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681,
-     1683, 1684, 1685, 1687, 1688, 1689, 1690, 1691, 1692, 1693,
-
-     1694, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704,
-     1705, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716,
-     1718, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
-     1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1739,
-     1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1749, 1751,
-     1753, 1756, 1757, 1758, 1759, 1760, 1762, 1763, 1764, 1766,
-     1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1776, 1777,
-     1779, 1780, 1781, 1782, 1784, 1785, 1786, 1788, 1790, 1791,
-     1793, 1794, 1795, 1796, 1797, 1798, 1799, 1801, 1802, 1803,
-     1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813,
-
-     1814, 1815, 1816, 1818, 1819, 1820, 1821, 1822, 1823, 1824,
-     1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
-     1835, 1836, 1838, 1839, 1841, 1842, 1844, 1845, 1846, 1847,
-     1852, 1855, 1856, 1857, 1859, 1860, 1861, 1862, 1863, 1864,
-     1866, 1868, 1871, 1872, 1873, 1874, 1875, 1876, 1875, 1878,
-     1879, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1889, 1890,
-     1891, 1892, 1893, 1896, 1897, 1898, 1899, 1903, 1903, 1903,
-     1903, 1903, 1904, 1904, 1904, 1904, 1904, 1905, 1911, 1905,
-     1905, 1905, 1906, 1912, 1906, 1913, 1906, 1907, 1907, 1907,
-     1907, 1907, 1908, 1908, 1908, 1908, 1908, 1909, 1914, 1909,
-
-     1909, 1909, 1910, 1910, 1910,  726,  725,  723,  722,  721,
-      720,  719,  718,  717,  716,  715,  714,  713,  712,  711,
-      710,  709,  708,  707,  706,  705,  703,  702,  701,  700,
-      699,  698,  697,  692,  691,  690,  689,  688,  687,  686,
-      685,  683,  682,  680,  679,  678,  677,  676,  675,  674,
-      673,  672,  671,  670,  669,  668,  666,  665,  664,  663,
-      662,  661,  660,  659,  658,  656,  655,  653,  652,  651,
-      650,  649,  648,  647,  645,  644,  643,  641,  640,  638,
-      637,  636,  635,  634,  633,  632,  631,  630,  629,  628,
-      627,  626,  625,  624,  622,  621,  620,  619,  618,  617,
-
-      615,  614,  613,  612,  611,  610,  609,  608,  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,  568,  566,
-      565,  564,  562,  559,  557,  556,  555,  554,  553,  552,
-      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
-      541,  540,  539,  538,  536,  535,  534,  533,  532,  531,
-      530,  529,  528,  527,  526,  525,  523,  521,  520,  519,
-      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
-      508,  506,  505,  504,  503,  502,  501,  500,  499,  497,
-
-      496,  495,  494,  493,  492,  491,  490,  489,  488,  487,
-      486,  485,  484,  483,  482,  481,  479,  478,  477,  476,
-      474,  473,  472,  471,  470,  469,  467,  466,  464,  463,
-      462,  460,  458,  457,  456,  455,  454,  453,  452,  450,
-      449,  448,  447,  446,  441,  439,  438,  435,  432,  430,
-      429,  428,  427,  426,  424,  423,  422,  421,  420,  419,
-      418,  417,  416,  415,  414,  413,  412,  411,  409,  408,
-      407,  405,  404,  403,  402,  401,  400,  399,  397,  396,
-      394,  393,  392,  391,  390,  389,  388,  387,  386,  385,
-      384,  380,  379,  378,  376,  375,  374,  372,  371,  370,
-
-      369,  368,  367,  366,  365,  364,  363,  362,  361,  359,
-      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  345,  344,  343,  342,  340,  337,  336,  335,
-      334,  333,  332,  331,  330,  329,  328,  324,  322,  318,
-      316,  313,  306,  305,  304,  303,  302,  301,  300,  298,
-      297,  296,  295,  294,  293,  292,  291,  290,  288,  287,
-      286,  285,  284,  283,  282,  280,  279,  278,  277,  276,
-      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
-      265,  264,  262,  261,  260,  258,  257,  256,  255,  254,
-      253,  251,  250,  249,  248,  247,  246,  244,  243,  241,
-
-      240,  239,  238,  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,
-      208,  205,  203,  201,  199,  194,  190,  182,  181,  180,
-      179,  178,  177,  176,  174,  173,  172,  170,  169,  168,
-      166,  164,  162,  160,  159,  157,  156,  155,  154,  153,
-      151,  150,  149,  148,  147,  146,  144,  143,  142,  141,
-      140,  139,  138,  136,  135,  133,  132,  128,  127,  126,
-      124,  123,  122,  121,  119,  117,  113,  104,  103,   97,
-       96,   77,   72,   66,   52,   49,   48,   43,   41,   39,
-
-       38,   24,   14,   11, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
-     1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902
+      657,  574,  696,  684,  576,  657,  745,  746,  747,  444,
+      444,  444,  444,  444,  444,  684,  704,  704,  725,  704,
+      748,  749,  725,  750,  751,  696,  725,  695,  752,  753,
+      754,  755,  753,  756,  758,  759,  760,  761,  762,  763,
+      764,  765,  766,  768,  657,  769,  770,  771,  772,  773,
+      774,  775,  776,  777,  779,  780,  781,  782,  783,  784,
+      785,  786,  787,  788,  789,  790,  791,  792,  793,  794,
+      795,  796,  797,  798,  799,  800,  801,  802,  803,  797,
+      804,  799,  806,  802,  807,  799,  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,  835,  836,  837,  838,  839,  840,  841,  842,
+      843,  844,  816,  845,  846,  847,  848,  849,  850,  851,
+      852,  853,  855,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  860,  865,  866,  867,  868,  869,  870,  873,
+      874,  875,  876,  877,  878,  879,  882,  883,  884,  885,
+      886,  887,  888,  889,  890,  891,  888,  892,  893,  894,
+      896,  898,  899,  900,  901,  902,  903,  904,  905,  906,
+      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
+      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
+
+      927,  928,  929,  931,  932,  933,  921,  934,  935,  936,
+      937,  938,  939,  940,  941,  942,  943,  944,  946,  947,
+      948,  949,  950,  951,  952,  953,  954,  955,  956,  957,
+      958,  959,  960,  961,  962,  963,  940,  964,  965,  939,
+      966,  967,  968,  970,  971,  972,  973,  974,  975,  976,
+      977,  978,  979,  980,  981,  983,  984,  985,  986,  987,
+      988,  989,  991,  992,  987,  993,  994,  995,  996,  997,
+      998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
+     1008, 1009, 1010, 1011, 1012, 1013, 1016, 1017, 1018, 1020,
+     1021, 1022, 1023, 1025, 1011, 1026, 1027, 1028, 1029, 1030,
+
+     1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
+     1041, 1042, 1044, 1045, 1046, 1047, 1048,  987, 1049, 1050,
+     1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1058, 1060,
+     1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,
+     1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080,
+     1081, 1082, 1084, 1085, 1057, 1058, 1086, 1087, 1088, 1089,
+     1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+     1100, 1101, 1103, 1104, 1105, 1106, 1107, 1108, 1104, 1109,
+     1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
+     1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129,
+
+     1130, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139, 1140,
+     1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1105, 1150,
+     1151, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
+     1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
+     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1193, 1169,
+     1194, 1195, 1196, 1197, 1198, 1170, 1199, 1200, 1201, 1202,
+     1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1213, 1215,
+     1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
+     1227, 1228, 1229, 1230, 1231, 1233, 1234, 1235, 1237, 1238,
+
+     1239, 1240, 1241, 1244, 1246, 1248, 1249, 1250, 1251, 1252,
+     1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
+     1264, 1265, 1266, 1267, 1268, 1271, 1272, 1273, 1274, 1275,
+     1276, 1277, 1278, 1280, 1281, 1282, 1283, 1284, 1285, 1286,
+     1287, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
+     1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1307, 1277,
+     1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1258, 1316,
+     1317, 1318, 1319, 1320, 1321, 1322, 1323, 1325, 1326, 1327,
+     1283, 1328, 1329, 1330, 1331, 1332, 1333, 1327, 1334, 1335,
+     1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
+
+     1348, 1349, 1351, 1352, 1353, 1354, 1355, 1356, 1358, 1360,
+     1363, 1364, 1365, 1367, 1368, 1369, 1370, 1371, 1373, 1374,
+     1375, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
+     1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1396,
+     1371, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406,
+     1407, 1408, 1410, 1412, 1414, 1416, 1417, 1418, 1419, 1420,
+     1421, 1422, 1423, 1424, 1425, 1427, 1428, 1429, 1430, 1431,
+     1432, 1433, 1436, 1437, 1439, 1440, 1441, 1442, 1443, 1445,
+     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1454, 1455, 1457,
+     1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467,
+
+     1468, 1469, 1470, 1471, 1472, 1473, 1474, 1476, 1477, 1478,
+     1480, 1468, 1481, 1482, 1483, 1455, 1484, 1485, 1486, 1487,
+     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496,
+     1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
+     1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1517,
+     1518, 1519, 1520, 1522, 1523, 1524, 1525, 1526, 1527, 1530,
+     1531, 1532, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
+     1544, 1545, 1546, 1548, 1549, 1550, 1551, 1552, 1548, 1488,
+     1553, 1554, 1555, 1556, 1525, 1558, 1559, 1560, 1562, 1564,
+     1565, 1566, 1568, 1569, 1570, 1571, 1572, 1574, 1575, 1576,
+
+     1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586,
+     1587, 1588, 1589, 1590, 1591, 1593, 1595, 1596, 1597, 1599,
+     1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
+     1611, 1612, 1613, 1614, 1615, 1617, 1618, 1619, 1621, 1622,
+     1623, 1624, 1625, 1626, 1627, 1628, 1629, 1631, 1632, 1633,
+     1634, 1635, 1636, 1637, 1638, 1639, 1640, 1642, 1643, 1644,
+     1646, 1647, 1648, 1649, 1651, 1653, 1654, 1655, 1656, 1657,
+     1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667,
+     1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1678, 1679,
+     1680, 1681, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
+
+     1691, 1692, 1694, 1695, 1696, 1698, 1699, 1700, 1701, 1702,
+     1703, 1704, 1705, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
+     1714, 1715, 1716, 1717, 1720, 1721, 1722, 1723, 1724, 1725,
+     1726, 1727, 1728, 1730, 1732, 1733, 1734, 1735, 1736, 1737,
+     1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747,
+     1748, 1749, 1750, 1752, 1753, 1754, 1755, 1756, 1757, 1758,
+     1759, 1760, 1762, 1764, 1766, 1769, 1770, 1771, 1772, 1773,
+     1775, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
+     1786, 1787, 1788, 1790, 1791, 1793, 1794, 1795, 1796, 1798,
+     1799, 1800, 1802, 1804, 1805, 1807, 1808, 1809, 1810, 1811,
+
+     1812, 1813, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822,
+     1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1833,
+     1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843,
+     1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1854,
+     1855, 1857, 1858, 1859, 1861, 1862, 1863, 1864, 1869, 1872,
+     1873, 1874, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1884,
+     1886, 1888, 1890, 1891, 1892, 1893, 1894, 1895, 1894, 1896,
+     1898, 1899, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908,
+     1910, 1911, 1912, 1913, 1914, 1916, 1919, 1920, 1921, 1922,
+     1926, 1926, 1926, 1926, 1926, 1927, 1927, 1927, 1927, 1927,
+
+     1928, 1934, 1928, 1928, 1928, 1929, 1935, 1929, 1936, 1929,
+     1930, 1930, 1930, 1930, 1930, 1931, 1931, 1931, 1931, 1931,
+     1932, 1937, 1932, 1932, 1932, 1933, 1933, 1933,  727,  726,
+      724,  723,  722,  721,  720,  719,  718,  717,  716,  715,
+      714,  713,  712,  711,  710,  709,  708,  707,  706,  705,
+      703,  702,  701,  700,  699,  698,  697,  692,  691,  690,
+      689,  688,  687,  686,  685,  683,  682,  680,  679,  678,
+      677,  676,  675,  674,  673,  672,  671,  670,  669,  668,
+      666,  665,  664,  663,  662,  661,  660,  659,  658,  656,
+      655,  653,  652,  651,  650,  649,  648,  647,  645,  644,
+
+      643,  641,  640,  638,  637,  636,  635,  634,  633,  632,
+      631,  630,  629,  628,  627,  626,  625,  624,  622,  621,
+      620,  619,  618,  617,  615,  614,  613,  612,  611,  610,
+      609,  608,  606,  605,  604,  603,  602,  601,  600,  599,
+      598,  597,  596,  595,  594,  592,  591,  590,  589,  588,
+      587,  586,  585,  584,  583,  582,  581,  580,  579,  578,
+      577,  568,  566,  565,  564,  562,  559,  557,  556,  555,
+      554,  553,  552,  551,  550,  549,  548,  547,  546,  545,
+      544,  543,  542,  541,  540,  539,  538,  536,  535,  534,
+      533,  532,  531,  530,  529,  528,  527,  526,  525,  523,
+
+      521,  520,  519,  518,  517,  516,  515,  514,  513,  512,
+      511,  510,  509,  508,  506,  505,  504,  503,  502,  501,
+      500,  499,  497,  496,  495,  494,  493,  492,  491,  490,
+      489,  488,  487,  486,  485,  484,  483,  482,  481,  479,
+      478,  477,  476,  474,  473,  472,  471,  470,  469,  467,
+      466,  464,  463,  462,  460,  458,  457,  456,  455,  454,
+      453,  452,  450,  449,  448,  447,  446,  441,  439,  438,
+      435,  432,  430,  429,  428,  427,  426,  424,  423,  422,
+      421,  420,  419,  418,  417,  416,  415,  414,  413,  412,
+      411,  409,  408,  407,  405,  404,  403,  402,  401,  400,
+
+      399,  397,  396,  394,  393,  392,  391,  390,  389,  388,
+      387,  386,  385,  384,  380,  379,  378,  376,  375,  374,
+      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
+      362,  361,  359,  358,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  347,  345,  344,  343,  342,  340,
+      337,  336,  335,  334,  333,  332,  331,  330,  329,  328,
+      324,  322,  318,  316,  313,  306,  305,  304,  303,  302,
+      301,  300,  298,  297,  296,  295,  294,  293,  292,  291,
+      290,  288,  287,  286,  285,  284,  283,  282,  280,  279,
+      278,  277,  276,  275,  274,  273,  272,  271,  270,  269,
+
+      268,  267,  266,  265,  264,  262,  261,  260,  258,  257,
+      256,  255,  254,  253,  251,  250,  249,  248,  247,  246,
+      244,  243,  241,  240,  239,  238,  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,  208,  205,  203,  201,  199,  194,  190,
+      182,  181,  180,  179,  178,  177,  176,  174,  173,  172,
+      170,  169,  168,  166,  164,  162,  160,  159,  157,  156,
+      155,  154,  153,  151,  150,  149,  148,  147,  146,  144,
+      143,  142,  141,  140,  139,  138,  136,  135,  133,  132,
+
+      128,  127,  126,  124,  123,  122,  121,  119,  117,  113,
+      104,  103,   97,   96,   77,   72,   66,   52,   49,   48,
+       43,   41,   39,   38,   24,   14,   11, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+     1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
+
+     1925
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1924,7 +1938,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[208] =
+static const flex_int16_t yy_rule_linenum[209] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  254,  263,
@@ -1935,20 +1949,20 @@ static const flex_int16_t yy_rule_linenum[208] =
       662,  673,  684,  695,  706,  717,  728,  739,  750,  761,
       772,  783,  792,  803,  814,  825,  836,  847,  858,  869,
       880,  889,  898,  907,  916,  927,  938,  949,  960,  971,
-      982,  993, 1003, 1014, 1023, 1032, 1047, 1063, 1072, 1081,
-
-     1090, 1099, 1108, 1117, 1126, 1135, 1144, 1153, 1177, 1201,
-     1210, 1220, 1230, 1239, 1249, 1260, 1269, 1278, 1287, 1296,
-     1305, 1315, 1324, 1333, 1342, 1353, 1364, 1375, 1386, 1397,
-     1406, 1415, 1424, 1433, 1442, 1451, 1460, 1469, 1478, 1488,
-     1500, 1513, 1522, 1531, 1541, 1551, 1560, 1571, 1581, 1590,
-     1600, 1610, 1619, 1628, 1637, 1646, 1656, 1665, 1674, 1683,
-     1692, 1701, 1710, 1719, 1728, 1737, 1746, 1755, 1764, 1773,
-     1782, 1791, 1800, 1809, 1818, 1827, 1836, 1845, 1854, 1863,
-     1872, 1881, 1890, 1899, 1908, 1917, 1926, 1935, 1944, 1953,
-     2052, 2057, 2062, 2067, 2068, 2069, 2070, 2071, 2072, 2074,
-
-     2092, 2105, 2110, 2114, 2116, 2118, 2120
+      982,  993, 1005, 1015, 1026, 1035, 1044, 1059, 1075, 1084,
+
+     1093, 1102, 1111, 1120, 1129, 1138, 1147, 1156, 1165, 1189,
+     1213, 1222, 1232, 1242, 1251, 1261, 1272, 1281, 1290, 1299,
+     1308, 1317, 1327, 1336, 1345, 1354, 1365, 1376, 1387, 1398,
+     1409, 1418, 1427, 1436, 1445, 1454, 1463, 1472, 1481, 1490,
+     1500, 1512, 1525, 1534, 1543, 1553, 1563, 1572, 1583, 1593,
+     1602, 1612, 1622, 1631, 1640, 1649, 1658, 1668, 1677, 1686,
+     1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758, 1767, 1776,
+     1785, 1794, 1803, 1812, 1821, 1830, 1839, 1848, 1857, 1866,
+     1875, 1884, 1893, 1902, 1911, 1920, 1929, 1938, 1947, 1956,
+     1965, 2064, 2069, 2074, 2079, 2080, 2081, 2082, 2083, 2084,
+
+     2086, 2104, 2117, 2122, 2126, 2128, 2130, 2132
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2001,7 +2015,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 2004 "dhcp6_lexer.cc"
+#line 2018 "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
@@ -2027,8 +2041,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 2030 "dhcp6_lexer.cc"
-#line 2031 "dhcp6_lexer.cc"
+#line 2044 "dhcp6_lexer.cc"
+#line 2045 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2358,7 +2372,7 @@ YY_DECL
     }
 
 
-#line 2361 "dhcp6_lexer.cc"
+#line 2375 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2387,13 +2401,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 >= 1903 )
+                               if ( yy_current_state >= 1926 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1902 );
+               while ( yy_current_state != 1925 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2412,13 +2426,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 < 208 )
+                       else if ( yy_act < 209 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 208 )
+                       else if ( yy_act == 209 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 209 )
+                       else if ( yy_act == 210 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3567,6 +3581,20 @@ YY_RULE_SETUP
 case 92:
 YY_RULE_SETUP
 #line 993 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+       YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 1005 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3577,9 +3605,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 1003 "dhcp6_lexer.ll"
+#line 1015 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3591,9 +3619,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 1014 "dhcp6_lexer.ll"
+#line 1026 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3603,9 +3631,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 1023 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3615,9 +3643,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 1032 "dhcp6_lexer.ll"
+#line 1044 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3633,9 +3661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 1047 "dhcp6_lexer.ll"
+#line 1059 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3652,9 +3680,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 1063 "dhcp6_lexer.ll"
+#line 1075 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3664,9 +3692,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1072 "dhcp6_lexer.ll"
+#line 1084 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3676,9 +3704,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1081 "dhcp6_lexer.ll"
+#line 1093 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3688,9 +3716,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1090 "dhcp6_lexer.ll"
+#line 1102 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3700,9 +3728,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1099 "dhcp6_lexer.ll"
+#line 1111 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3712,9 +3740,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1108 "dhcp6_lexer.ll"
+#line 1120 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3724,9 +3752,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1117 "dhcp6_lexer.ll"
+#line 1129 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3736,9 +3764,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1126 "dhcp6_lexer.ll"
+#line 1138 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3748,9 +3776,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1135 "dhcp6_lexer.ll"
+#line 1147 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3760,9 +3788,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1144 "dhcp6_lexer.ll"
+#line 1156 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3772,9 +3800,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1153 "dhcp6_lexer.ll"
+#line 1165 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3799,9 +3827,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1177 "dhcp6_lexer.ll"
+#line 1189 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3826,9 +3854,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1201 "dhcp6_lexer.ll"
+#line 1213 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3838,9 +3866,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1222 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3851,9 +3879,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1220 "dhcp6_lexer.ll"
+#line 1232 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3864,9 +3892,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1230 "dhcp6_lexer.ll"
+#line 1242 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3876,9 +3904,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1239 "dhcp6_lexer.ll"
+#line 1251 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3889,9 +3917,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1249 "dhcp6_lexer.ll"
+#line 1261 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3903,9 +3931,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1260 "dhcp6_lexer.ll"
+#line 1272 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3915,9 +3943,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1269 "dhcp6_lexer.ll"
+#line 1281 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3927,9 +3955,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1278 "dhcp6_lexer.ll"
+#line 1290 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3939,9 +3967,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1287 "dhcp6_lexer.ll"
+#line 1299 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3951,9 +3979,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1296 "dhcp6_lexer.ll"
+#line 1308 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3963,9 +3991,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1305 "dhcp6_lexer.ll"
+#line 1317 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3976,9 +4004,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1315 "dhcp6_lexer.ll"
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3988,9 +4016,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1324 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4000,9 +4028,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1333 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4012,9 +4040,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1342 "dhcp6_lexer.ll"
+#line 1354 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4026,9 +4054,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1353 "dhcp6_lexer.ll"
+#line 1365 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4040,9 +4068,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1364 "dhcp6_lexer.ll"
+#line 1376 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4054,9 +4082,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1375 "dhcp6_lexer.ll"
+#line 1387 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4068,9 +4096,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1386 "dhcp6_lexer.ll"
+#line 1398 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4082,9 +4110,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1397 "dhcp6_lexer.ll"
+#line 1409 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4094,9 +4122,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1406 "dhcp6_lexer.ll"
+#line 1418 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4106,9 +4134,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1415 "dhcp6_lexer.ll"
+#line 1427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4118,9 +4146,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1424 "dhcp6_lexer.ll"
+#line 1436 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4130,9 +4158,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1433 "dhcp6_lexer.ll"
+#line 1445 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4142,9 +4170,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1442 "dhcp6_lexer.ll"
+#line 1454 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4154,9 +4182,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1451 "dhcp6_lexer.ll"
+#line 1463 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4166,9 +4194,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1460 "dhcp6_lexer.ll"
+#line 1472 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4178,9 +4206,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1469 "dhcp6_lexer.ll"
+#line 1481 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4190,9 +4218,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1478 "dhcp6_lexer.ll"
+#line 1490 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4203,9 +4231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1488 "dhcp6_lexer.ll"
+#line 1500 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4218,9 +4246,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1500 "dhcp6_lexer.ll"
+#line 1512 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4234,9 +4262,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1513 "dhcp6_lexer.ll"
+#line 1525 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4246,9 +4274,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1522 "dhcp6_lexer.ll"
+#line 1534 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4258,9 +4286,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1531 "dhcp6_lexer.ll"
+#line 1543 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4271,9 +4299,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1541 "dhcp6_lexer.ll"
+#line 1553 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4284,9 +4312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1551 "dhcp6_lexer.ll"
+#line 1563 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4296,9 +4324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1560 "dhcp6_lexer.ll"
+#line 1572 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -4310,9 +4338,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1571 "dhcp6_lexer.ll"
+#line 1583 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4323,9 +4351,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1581 "dhcp6_lexer.ll"
+#line 1593 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4335,9 +4363,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 1590 "dhcp6_lexer.ll"
+#line 1602 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4348,9 +4376,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 1600 "dhcp6_lexer.ll"
+#line 1612 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4361,9 +4389,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 1610 "dhcp6_lexer.ll"
+#line 1622 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4373,9 +4401,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 1619 "dhcp6_lexer.ll"
+#line 1631 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4385,9 +4413,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 1628 "dhcp6_lexer.ll"
+#line 1640 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4397,9 +4425,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 1637 "dhcp6_lexer.ll"
+#line 1649 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4409,9 +4437,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 1646 "dhcp6_lexer.ll"
+#line 1658 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4422,9 +4450,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 1656 "dhcp6_lexer.ll"
+#line 1668 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -4434,9 +4462,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 1665 "dhcp6_lexer.ll"
+#line 1677 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4446,9 +4474,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 1674 "dhcp6_lexer.ll"
+#line 1686 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4458,9 +4486,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 1683 "dhcp6_lexer.ll"
+#line 1695 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4470,9 +4498,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 1692 "dhcp6_lexer.ll"
+#line 1704 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4482,9 +4510,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 1701 "dhcp6_lexer.ll"
+#line 1713 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4494,9 +4522,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 1710 "dhcp6_lexer.ll"
+#line 1722 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4506,9 +4534,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 1719 "dhcp6_lexer.ll"
+#line 1731 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4518,9 +4546,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 1728 "dhcp6_lexer.ll"
+#line 1740 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4530,9 +4558,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 1737 "dhcp6_lexer.ll"
+#line 1749 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4542,9 +4570,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 1746 "dhcp6_lexer.ll"
+#line 1758 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4554,9 +4582,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 1755 "dhcp6_lexer.ll"
+#line 1767 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4566,9 +4594,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 1764 "dhcp6_lexer.ll"
+#line 1776 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4578,9 +4606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 1773 "dhcp6_lexer.ll"
+#line 1785 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4590,9 +4618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 1782 "dhcp6_lexer.ll"
+#line 1794 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4602,9 +4630,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 1791 "dhcp6_lexer.ll"
+#line 1803 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4614,9 +4642,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 1800 "dhcp6_lexer.ll"
+#line 1812 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4626,9 +4654,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 1809 "dhcp6_lexer.ll"
+#line 1821 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4638,9 +4666,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1818 "dhcp6_lexer.ll"
+#line 1830 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4650,9 +4678,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1827 "dhcp6_lexer.ll"
+#line 1839 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4662,9 +4690,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1836 "dhcp6_lexer.ll"
+#line 1848 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4674,9 +4702,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1845 "dhcp6_lexer.ll"
+#line 1857 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4686,9 +4714,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1854 "dhcp6_lexer.ll"
+#line 1866 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4698,9 +4726,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1863 "dhcp6_lexer.ll"
+#line 1875 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4710,9 +4738,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1872 "dhcp6_lexer.ll"
+#line 1884 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4722,9 +4750,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1881 "dhcp6_lexer.ll"
+#line 1893 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4734,9 +4762,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1890 "dhcp6_lexer.ll"
+#line 1902 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4746,9 +4774,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 1899 "dhcp6_lexer.ll"
+#line 1911 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4758,9 +4786,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 1908 "dhcp6_lexer.ll"
+#line 1920 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4770,9 +4798,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 1917 "dhcp6_lexer.ll"
+#line 1929 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4782,9 +4810,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 1926 "dhcp6_lexer.ll"
+#line 1938 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4794,9 +4822,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 1935 "dhcp6_lexer.ll"
+#line 1947 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4806,9 +4834,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 1944 "dhcp6_lexer.ll"
+#line 1956 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4818,9 +4846,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 1953 "dhcp6_lexer.ll"
+#line 1965 "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.
@@ -4920,65 +4948,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 191:
-/* rule 191 can match eol */
+case 192:
+/* rule 192 can match eol */
 YY_RULE_SETUP
-#line 2052 "dhcp6_lexer.ll"
+#line 2064 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 192:
-/* rule 192 can match eol */
+case 193:
+/* rule 193 can match eol */
 YY_RULE_SETUP
-#line 2057 "dhcp6_lexer.ll"
+#line 2069 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 2062 "dhcp6_lexer.ll"
+#line 2074 "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 194:
+case 195:
 YY_RULE_SETUP
-#line 2067 "dhcp6_lexer.ll"
+#line 2079 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 2068 "dhcp6_lexer.ll"
+#line 2080 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 2069 "dhcp6_lexer.ll"
+#line 2081 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 2070 "dhcp6_lexer.ll"
+#line 2082 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 2071 "dhcp6_lexer.ll"
+#line 2083 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 199:
+case 200:
 YY_RULE_SETUP
-#line 2072 "dhcp6_lexer.ll"
+#line 2084 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 200:
+case 201:
 YY_RULE_SETUP
-#line 2074 "dhcp6_lexer.ll"
+#line 2086 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4997,9 +5025,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 201:
+case 202:
 YY_RULE_SETUP
-#line 2092 "dhcp6_lexer.ll"
+#line 2104 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -5013,43 +5041,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 202:
+case 203:
 YY_RULE_SETUP
-#line 2105 "dhcp6_lexer.ll"
+#line 2117 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 203:
+case 204:
 YY_RULE_SETUP
-#line 2110 "dhcp6_lexer.ll"
+#line 2122 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 204:
+case 205:
 YY_RULE_SETUP
-#line 2114 "dhcp6_lexer.ll"
+#line 2126 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 205:
+case 206:
 YY_RULE_SETUP
-#line 2116 "dhcp6_lexer.ll"
+#line 2128 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 2118 "dhcp6_lexer.ll"
+#line 2130 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 207:
+case 208:
 YY_RULE_SETUP
-#line 2120 "dhcp6_lexer.ll"
+#line 2132 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2122 "dhcp6_lexer.ll"
+#line 2134 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -5073,12 +5101,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 208:
+case 209:
 YY_RULE_SETUP
-#line 2145 "dhcp6_lexer.ll"
+#line 2157 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 5081 "dhcp6_lexer.cc"
+#line 5109 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5397,7 +5425,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 >= 1903 )
+                       if ( yy_current_state >= 1926 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5430,11 +5458,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 >= 1903 )
+               if ( yy_current_state >= 1926 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1902);
+       yy_is_jam = (yy_current_state == 1925);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6183,7 +6211,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2145 "dhcp6_lexer.ll"
+#line 2157 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index a5971816c71c8fa8a62e1f1699e992ba6651eecb..b89c1ce95b70b366d7c2bc0090b6682bf148c6fd 100644 (file)
@@ -989,6 +989,18 @@ ControlCharacterFill            [^"\\]|\\{JSONEscapeSequence}
     }
 }
 
+\"ddns-use-conflict-resolution\" {
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+
+
 \"subnet6\" {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
index 521b525603f89748334ef17fec94539c4e9197cc..06d5fd3ecb22b2bd200c2f16af70126a506860e9 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.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-2020 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.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
-
-
 // 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"
+#line 34 "dhcp6_parser.yy" // lalr1.cc:413
 
 #include <dhcp6/parser_context.h>
 
-#line 52 "dhcp6_parser.cc"
+#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
         {                                                               \
           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
         }                                                               \
-    while (false)
+    while (/*CONSTCOND*/ false)
 # endif
 
 
+// Suppress unused-variable warnings by "using" E.
+#define YYUSE(E) ((void) (E))
+
 // Enable debugging if requested.
 #if PARSER6_DEBUG
 
     {                                           \
       *yycdebug_ << Title << ' ';               \
       yy_print_ (*yycdebug_, Symbol);           \
-      *yycdebug_ << '\n';                       \
+      *yycdebug_ << std::endl;                  \
     }                                           \
   } while (false)
 
 # define YY_STACK_PRINT()               \
   do {                                  \
     if (yydebug_)                       \
-      yy_stack_print_ ();                \
+      yystack_print_ ();                \
   } 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"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:479
 namespace isc { namespace dhcp {
-#line 145 "dhcp6_parser.cc"
+#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
+     that double-quoting is unnecessary unless the string contains an
+     apostrophe, a comma, or backslash (other than backslash-backslash).
+     YYSTR is taken from yytname.  */
+  std::string
+  Dhcp6Parser::yytnamerr_ (const char *yystr)
+  {
+    if (*yystr == '"')
+      {
+        std::string yyr = "";
+        char const *yyp = yystr;
+
+        for (;;)
+          switch (*++yyp)
+            {
+            case '\'':
+            case ',':
+              goto do_not_strip_quotes;
+
+            case '\\':
+              if (*++yyp != '\\')
+                goto do_not_strip_quotes;
+              // Fall through.
+            default:
+              yyr += *yyp;
+              break;
+
+            case '"':
+              return yyr;
+            }
+      do_not_strip_quotes: ;
+      }
+
+    return yystr;
+  }
+
 
   /// Build a parser object.
   Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg)
+    :
 #if PARSER6_DEBUG
-    : yydebug_ (false),
+      yydebug_ (false),
       yycdebug_ (&std::cerr),
-#else
-    :
 #endif
       ctx (ctx_yyarg)
   {}
@@ -157,30 +194,32 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::~Dhcp6Parser ()
   {}
 
-  Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
-  {}
 
   /*---------------.
-  | symbol kinds.  |
+  | Symbol types.  |
   `---------------*/
 
 
 
   // 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)
   {
@@ -188,92 +227,56 @@ 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)
   {}
 
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_state::kind () const YY_NOEXCEPT
+  inline
+  Dhcp6Parser::symbol_number_type
+  Dhcp6Parser::by_state::type_get () const
   {
     if (state == empty_state)
-      return symbol_kind::S_YYEMPTY;
+      return empty_symbol;
     else
-      return YY_CAST (symbol_kind_type, yystos_[+state]);
+      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.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
-        break;
-
-      case symbol_kind::S_STRING: // "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.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (YY_MOVE (that.value));
+      switch (that.type_get ())
+    {
+      case 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        value.move< ElementPtr > (that.value);
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (YY_MOVE (that.value));
+      case 202: // "boolean"
+        value.move< bool > (that.value);
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (YY_MOVE (that.value));
+      case 201: // "floating point"
+        value.move< double > (that.value);
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (YY_MOVE (that.value));
+      case 200: // "integer"
+        value.move< int64_t > (that.value);
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (YY_MOVE (that.value));
+      case 199: // "constant string"
+        value.move< std::string > (that.value);
         break;
 
       default:
@@ -281,39 +284,39 @@ namespace isc { namespace dhcp {
     }
 
     // that is emptied.
-    that.kind_ = symbol_kind::S_YYEMPTY;
+    that.type = empty_symbol;
   }
 
-#if YY_CPLUSPLUS < 201103L
+  inline
   Dhcp6Parser::stack_symbol_type&
   Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
   {
     state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+      switch (that.type_get ())
+    {
+      case 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
+      case 202: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
+      case 201: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
+      case 200: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
+      case 199: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -325,50 +328,9 @@ namespace isc { namespace dhcp {
     return *this;
   }
 
-  Dhcp6Parser::stack_symbol_type&
-  Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
-  {
-    state = that.state;
-    switch (that.kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (that.value);
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (that.value);
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (that.value);
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (that.value);
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (that.value);
-        break;
-
-      default:
-        break;
-    }
-
-    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
   {
@@ -379,115 +341,126 @@ namespace isc { namespace dhcp {
 #if PARSER6_DEBUG
   template <typename Base>
   void
-  Dhcp6Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
+  Dhcp6Parser::yy_print_ (std::ostream& yyo,
+                                     const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
+    symbol_number_type yytype = yysym.type_get ();
+    // Avoid a (spurious) G++ 4.8 warning about "array subscript is
+    // below array bounds".
     if (yysym.empty ())
-      yyo << "empty symbol";
-    else
-      {
-        symbol_kind_type yykind = yysym.kind ();
-        yyo << (yykind < YYNTOKENS ? "token" : "nterm")
-            << ' ' << yysym.name () << " ("
-            << yysym.location << ": ";
-        switch (yykind)
-    {
-      case symbol_kind::S_STRING: // "constant string"
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < std::string > (); }
-#line 400 "dhcp6_parser.cc"
+      std::abort ();
+    yyo << (yytype < yyntokens_ ? "token" : "nterm")
+        << ' ' << yytname_[yytype] << " ("
+        << yysym.location << ": ";
+    switch (yytype)
+    {
+            case 199: // "constant string"
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< std::string > (); }
+#line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < int64_t > (); }
-#line 406 "dhcp6_parser.cc"
+      case 200: // "integer"
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< int64_t > (); }
+#line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < double > (); }
-#line 412 "dhcp6_parser.cc"
+      case 201: // "floating point"
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< double > (); }
+#line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < bool > (); }
-#line 418 "dhcp6_parser.cc"
+      case 202: // "boolean"
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< bool > (); }
+#line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_value: // value
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 424 "dhcp6_parser.cc"
+      case 219: // value
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_map_value: // map_value
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 430 "dhcp6_parser.cc"
+      case 223: // map_value
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 436 "dhcp6_parser.cc"
+      case 264: // ddns_replace_client_name_value
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_db_type: // db_type
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 442 "dhcp6_parser.cc"
+      case 304: // db_type
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_hr_mode: // hr_mode
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 448 "dhcp6_parser.cc"
+      case 405: // hr_mode
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_duid_type: // duid_type
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 454 "dhcp6_parser.cc"
+      case 541: // duid_type
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 278 "dhcp6_parser.yy"
-                 { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 460 "dhcp6_parser.cc"
+      case 584: // ncr_protocol_value
+
+#line 279 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
+
       default:
         break;
     }
-        yyo << ')';
-      }
+    yyo << ')';
   }
 #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);
   }
@@ -519,37 +492,32 @@ 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;
+    int yyr = yypgoto_[yysym - yyntokens_] + yystate;
     if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
       return yytable_[yyr];
     else
-      return yydefgoto_[yysym - YYNTOKENS];
+      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 ()
   {
+    // State.
     int yyn;
     /// Length of the RHS of the rule being reduced.
     int yylen = 0;
@@ -567,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
@@ -579,70 +547,48 @@ 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 " << int (yystack_[0].state) << '\n';
-    YY_STACK_PRINT ();
+    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];
+    yyn = yypact_[yystack_[0].state];
     if (yy_pact_value_is_default_ (yyn))
       goto yydefault;
 
     // Read a lookahead token.
     if (yyla.empty ())
       {
-        YYCDEBUG << "Reading a token\n";
-#if YY_EXCEPTIONS
+        YYCDEBUG << "Reading a token: ";
         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);
 
-    if (yyla.kind () == symbol_kind::S_YYerror)
-    {
-      // The scanner already issued an error message, process directly
-      // to error recovery.  But do not keep the error token as
-      // lookahead, it is too special and may lead us to an endless
-      // loop in error recovery. */
-      yyla.kind_ = symbol_kind::S_YYUNDEF;
-      goto yyerrlab1;
-    }
-
     /* If the proper action on seeing token YYLA.TYPE is to reduce or
        to detect an error, take that action.  */
-    yyn += yyla.kind ();
-    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
-      {
-        goto yydefault;
-      }
+    yyn += yyla.type_get ();
+    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
+      goto yydefault;
 
     // Reduce or error.
     yyn = yytable_[yyn];
@@ -659,57 +605,55 @@ namespace isc { namespace dhcp {
       --yyerrstatus_;
 
     // Shift the lookahead token.
-    yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
+    yypush_ ("Shifting", yyn, yyla);
     goto yynewstate;
 
-
   /*-----------------------------------------------------------.
   | yydefault -- do the default action for the current state.  |
   `-----------------------------------------------------------*/
   yydefault:
-    yyn = yydefact_[+yystack_[0].state];
+    yyn = yydefact_[yystack_[0].state];
     if (yyn == 0)
       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 symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        yylhs.value.emplace< ElementPtr > ();
+        switch (yyr1_[yyn])
+    {
+      case 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        yylhs.value.build< ElementPtr > ();
         break;
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        yylhs.value.emplace< bool > ();
+      case 202: // "boolean"
+        yylhs.value.build< bool > ();
         break;
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        yylhs.value.emplace< double > ();
+      case 201: // "floating point"
+        yylhs.value.build< double > ();
         break;
 
-      case symbol_kind::S_INTEGER: // "integer"
-        yylhs.value.emplace< int64_t > ();
+      case 200: // "integer"
+        yylhs.value.build< int64_t > ();
         break;
 
-      case symbol_kind::S_STRING: // "constant string"
-        yylhs.value.emplace< std::string > ();
+      case 199: // "constant string"
+        yylhs.value.build< std::string > ();
         break;
 
       default:
@@ -717,299 +661,296 @@ 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: // $@1: %empty
-#line 287 "dhcp6_parser.yy"
-                     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 739 "dhcp6_parser.cc"
+  case 2:
+#line 288 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.NO_KEYWORD; }
+#line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 4: // $@2: %empty
-#line 288 "dhcp6_parser.yy"
-                      { ctx.ctx_ = ctx.CONFIG; }
-#line 745 "dhcp6_parser.cc"
+  case 4:
+#line 289 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG; }
+#line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 6: // $@3: %empty
-#line 289 "dhcp6_parser.yy"
-                 { ctx.ctx_ = ctx.DHCP6; }
-#line 751 "dhcp6_parser.cc"
+  case 6:
+#line 290 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP6; }
+#line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 8: // $@4: %empty
-#line 290 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 757 "dhcp6_parser.cc"
+  case 8:
+#line 291 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
+#line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 10: // $@5: %empty
-#line 291 "dhcp6_parser.yy"
-                   { ctx.ctx_ = ctx.SUBNET6; }
-#line 763 "dhcp6_parser.cc"
+  case 10:
+#line 292 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.SUBNET6; }
+#line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 12: // $@6: %empty
-#line 292 "dhcp6_parser.yy"
-                 { ctx.ctx_ = ctx.POOLS; }
-#line 769 "dhcp6_parser.cc"
+  case 12:
+#line 293 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.POOLS; }
+#line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 14: // $@7: %empty
-#line 293 "dhcp6_parser.yy"
-                   { ctx.ctx_ = ctx.PD_POOLS; }
-#line 775 "dhcp6_parser.cc"
+  case 14:
+#line 294 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.PD_POOLS; }
+#line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 16: // $@8: %empty
-#line 294 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 781 "dhcp6_parser.cc"
+  case 16:
+#line 295 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.RESERVATIONS; }
+#line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 18: // $@9: %empty
-#line 295 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.DHCP6; }
-#line 787 "dhcp6_parser.cc"
+  case 18:
+#line 296 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP6; }
+#line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 20: // $@10: %empty
-#line 296 "dhcp6_parser.yy"
-                      { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 793 "dhcp6_parser.cc"
+  case 20:
+#line 297 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.OPTION_DEF; }
+#line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 22: // $@11: %empty
-#line 297 "dhcp6_parser.yy"
-                       { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 799 "dhcp6_parser.cc"
+  case 22:
+#line 298 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.OPTION_DATA; }
+#line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 24: // $@12: %empty
-#line 298 "dhcp6_parser.yy"
-                         { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 805 "dhcp6_parser.cc"
+  case 24:
+#line 299 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
+#line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 26: // $@13: %empty
-#line 299 "dhcp6_parser.yy"
-                     { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 811 "dhcp6_parser.cc"
+  case 26:
+#line 300 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.DHCP_DDNS; }
+#line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 28: // $@14: %empty
-#line 300 "dhcp6_parser.yy"
-                          { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 817 "dhcp6_parser.cc"
+  case 28:
+#line 301 "dhcp6_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 30: // value: "integer"
-#line 308 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 823 "dhcp6_parser.cc"
+  case 30:
+#line 309 "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 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 31: // value: "floating point"
-#line 309 "dhcp6_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 829 "dhcp6_parser.cc"
+  case 31:
+#line 310 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 32: // value: "boolean"
-#line 310 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 835 "dhcp6_parser.cc"
+  case 32:
+#line 311 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 33: // value: "constant string"
-#line 311 "dhcp6_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 841 "dhcp6_parser.cc"
+  case 33:
+#line 312 "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 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 34: // value: "null"
-#line 312 "dhcp6_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 847 "dhcp6_parser.cc"
+  case 34:
+#line 313 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 35: // value: map2
-#line 313 "dhcp6_parser.yy"
-            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 853 "dhcp6_parser.cc"
+  case 35:
+#line 314 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 36: // value: list_generic
-#line 314 "dhcp6_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 859 "dhcp6_parser.cc"
+  case 36:
+#line 315 "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 37: // sub_json: value
-#line 317 "dhcp6_parser.yy"
-                {
+  case 37:
+#line 318 "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 868 "dhcp6_parser.cc"
+#line 809 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 38: // $@15: %empty
-#line 322 "dhcp6_parser.yy"
-                     {
+  case 38:
+#line 323 "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 879 "dhcp6_parser.cc"
+#line 820 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 39: // map2: "{" $@15 map_content "}"
-#line 327 "dhcp6_parser.yy"
-                             {
+  case 39:
+#line 328 "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 889 "dhcp6_parser.cc"
+#line 830 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 40: // map_value: map2
-#line 333 "dhcp6_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 895 "dhcp6_parser.cc"
+  case 40:
+#line 334 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 43: // not_empty_map: "constant string" ":" value
-#line 340 "dhcp6_parser.yy"
-                                  {
+  case 43:
+#line 341 "dhcp6_parser.yy" // lalr1.cc:859
+    {
                   // map containing a single entry
-                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location));
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 905 "dhcp6_parser.cc"
+#line 846 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 345 "dhcp6_parser.yy"
-                                                      {
+  case 44:
+#line 346 "dhcp6_parser.yy" // lalr1.cc:859
+    {
                   // map consisting of a shorter map followed by
                   // comma and string:value
-                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
-                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+                  ctx.unique(yystack_[2].value.as< std::string > (), ctx.loc2pos(yystack_[2].location));
+                  ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 916 "dhcp6_parser.cc"
+#line 857 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 45: // $@16: %empty
-#line 353 "dhcp6_parser.yy"
-                              {
+  case 45:
+#line 354 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 925 "dhcp6_parser.cc"
+#line 866 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 46: // list_generic: "[" $@16 list_content "]"
-#line 356 "dhcp6_parser.yy"
-                               {
+  case 46:
+#line 357 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // list parsing complete. Put any sanity checking here
 }
-#line 933 "dhcp6_parser.cc"
+#line 874 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 49: // not_empty_list: value
-#line 364 "dhcp6_parser.yy"
-                      {
+  case 49:
+#line 365 "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 942 "dhcp6_parser.cc"
+#line 883 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 50: // not_empty_list: not_empty_list "," value
-#line 368 "dhcp6_parser.yy"
-                                           {
+  case 50:
+#line 369 "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 951 "dhcp6_parser.cc"
+#line 892 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 51: // $@17: %empty
-#line 375 "dhcp6_parser.yy"
-                              {
+  case 51:
+#line 376 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // List parsing about to start
 }
-#line 959 "dhcp6_parser.cc"
+#line 900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 52: // list_strings: "[" $@17 list_strings_content "]"
-#line 377 "dhcp6_parser.yy"
-                                       {
+  case 52:
+#line 378 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 968 "dhcp6_parser.cc"
+#line 909 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 55: // not_empty_list_strings: "constant string"
-#line 386 "dhcp6_parser.yy"
-                               {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 55:
+#line 387 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 977 "dhcp6_parser.cc"
+#line 918 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 390 "dhcp6_parser.yy"
-                                                            {
-                          ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 56:
+#line 391 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+                          ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
                           }
-#line 986 "dhcp6_parser.cc"
+#line 927 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 57: // unknown_map_entry: "constant string" ":"
-#line 401 "dhcp6_parser.yy"
-                                {
+  case 57:
+#line 402 "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 997 "dhcp6_parser.cc"
+#line 938 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 58: // $@18: %empty
-#line 410 "dhcp6_parser.yy"
-                           {
+  case 58:
+#line 411 "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 1008 "dhcp6_parser.cc"
+#line 949 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 59: // syntax_map: "{" $@18 global_object "}"
-#line 415 "dhcp6_parser.yy"
-                               {
+  case 59:
+#line 416 "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.
@@ -1017,12 +958,12 @@ namespace isc { namespace dhcp {
     // Dhcp6 is required
     ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 1021 "dhcp6_parser.cc"
+#line 962 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 60: // $@19: %empty
-#line 425 "dhcp6_parser.yy"
-                     {
+  case 60:
+#line 426 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // This code is executed when we're about to start parsing
     // the content of the map
     // Prevent against duplicate.
@@ -1032,1310 +973,1320 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 1036 "dhcp6_parser.cc"
+#line 977 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 61: // global_object: "Dhcp6" $@19 ":" "{" global_params "}"
-#line 434 "dhcp6_parser.yy"
-                                                    {
+  case 61:
+#line 435 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No global parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1046 "dhcp6_parser.cc"
+#line 987 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 62: // $@20: %empty
-#line 442 "dhcp6_parser.yy"
-                          {
+  case 62:
+#line 443 "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 1056 "dhcp6_parser.cc"
+#line 997 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 63: // sub_dhcp6: "{" $@20 global_params "}"
-#line 446 "dhcp6_parser.yy"
-                               {
+  case 63:
+#line 447 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No global parameter is required
     // parsing completed
 }
-#line 1065 "dhcp6_parser.cc"
+#line 1006 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 123: // $@21: %empty
-#line 516 "dhcp6_parser.yy"
-                               {
+  case 124:
+#line 518 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1074 "dhcp6_parser.cc"
+#line 1015 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 124: // data_directory: "data-directory" $@21 ":" "constant string"
-#line 519 "dhcp6_parser.yy"
-               {
-    ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 125:
+#line 521 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    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 1084 "dhcp6_parser.cc"
+#line 1025 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 125: // preferred_lifetime: "preferred-lifetime" ":" "integer"
-#line 525 "dhcp6_parser.yy"
-                                                     {
+  case 126:
+#line 527 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location));
-    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 1094 "dhcp6_parser.cc"
+#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
-#line 531 "dhcp6_parser.yy"
-                                                             {
+  case 127:
+#line 533 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("min-preferred-lifetime", prf);
 }
-#line 1104 "dhcp6_parser.cc"
+#line 1045 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 127: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
-#line 537 "dhcp6_parser.yy"
-                                                             {
+  case 128:
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("max-preferred-lifetime", prf);
 }
-#line 1114 "dhcp6_parser.cc"
+#line 1055 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 128: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 543 "dhcp6_parser.yy"
-                                             {
+  case 129:
+#line 545 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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 1124 "dhcp6_parser.cc"
+#line 1065 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 129: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 549 "dhcp6_parser.yy"
-                                                     {
+  case 130:
+#line 551 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("min-valid-lifetime", prf);
 }
-#line 1134 "dhcp6_parser.cc"
+#line 1075 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 130: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 555 "dhcp6_parser.yy"
-                                                     {
+  case 131:
+#line 557 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
-    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("max-valid-lifetime", prf);
 }
-#line 1144 "dhcp6_parser.cc"
+#line 1085 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 131: // renew_timer: "renew-timer" ":" "integer"
-#line 561 "dhcp6_parser.yy"
-                                       {
+  case 132:
+#line 563 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
-    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 1154 "dhcp6_parser.cc"
+#line 1095 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 132: // rebind_timer: "rebind-timer" ":" "integer"
-#line 567 "dhcp6_parser.yy"
-                                         {
+  case 133:
+#line 569 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
-    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 1164 "dhcp6_parser.cc"
+#line 1105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 133: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 573 "dhcp6_parser.yy"
-                                                       {
+  case 134:
+#line 575 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
-    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 1174 "dhcp6_parser.cc"
+#line 1115 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 134: // t1_percent: "t1-percent" ":" "floating point"
-#line 579 "dhcp6_parser.yy"
-                                   {
+  case 135:
+#line 581 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
-    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 1184 "dhcp6_parser.cc"
+#line 1125 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 135: // t2_percent: "t2-percent" ":" "floating point"
-#line 585 "dhcp6_parser.yy"
-                                   {
+  case 136:
+#line 587 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
-    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 1194 "dhcp6_parser.cc"
+#line 1135 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 136: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 591 "dhcp6_parser.yy"
-                                             {
+  case 137:
+#line 593 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
-    ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr ct(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cache-threshold", ct);
 }
-#line 1204 "dhcp6_parser.cc"
+#line 1145 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137: // cache_max_age: "cache-max-age" ":" "integer"
-#line 597 "dhcp6_parser.yy"
-                                           {
+  case 138:
+#line 599 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location));
-    ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr cm(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cache-max-age", cm);
 }
-#line 1214 "dhcp6_parser.cc"
+#line 1155 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 138: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 603 "dhcp6_parser.yy"
-                                                                 {
+  case 139:
+#line 605 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
-    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 1224 "dhcp6_parser.cc"
+#line 1165 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 139: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 609 "dhcp6_parser.yy"
-                                                   {
+  case 140:
+#line 611 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
-    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("ddns-send-updates", b);
 }
-#line 1234 "dhcp6_parser.cc"
+#line 1175 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 140: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 615 "dhcp6_parser.yy"
-                                                               {
+  case 141:
+#line 617 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
-    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("ddns-override-no-update", b);
 }
-#line 1244 "dhcp6_parser.cc"
+#line 1185 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 141: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 621 "dhcp6_parser.yy"
-                                                                       {
+  case 142:
+#line 623 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
-    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("ddns-override-client-update", b);
 }
-#line 1254 "dhcp6_parser.cc"
+#line 1195 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 142: // $@22: %empty
-#line 627 "dhcp6_parser.yy"
-                                                   {
+  case 143:
+#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 1263 "dhcp6_parser.cc"
+#line 1204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 143: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 630 "dhcp6_parser.yy"
-                                       {
-    ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
+  case 144:
+#line 632 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1272 "dhcp6_parser.cc"
+#line 1213 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 144: // ddns_replace_client_name_value: "when-present"
-#line 636 "dhcp6_parser.yy"
-                 {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+  case 145:
+#line 638 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1280 "dhcp6_parser.cc"
+#line 1221 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 145: // ddns_replace_client_name_value: "never"
-#line 639 "dhcp6_parser.yy"
-          {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+  case 146:
+#line 641 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1288 "dhcp6_parser.cc"
+#line 1229 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 146: // ddns_replace_client_name_value: "always"
-#line 642 "dhcp6_parser.yy"
-           {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+  case 147:
+#line 644 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1296 "dhcp6_parser.cc"
+#line 1237 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 147: // ddns_replace_client_name_value: "when-not-present"
-#line 645 "dhcp6_parser.yy"
-                     {
-      yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+  case 148:
+#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1304 "dhcp6_parser.cc"
+#line 1245 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 148: // ddns_replace_client_name_value: "boolean"
-#line 648 "dhcp6_parser.yy"
-            {
+  case 149:
+#line 650 "dhcp6_parser.yy" // lalr1.cc:859
+    {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 1313 "dhcp6_parser.cc"
+#line 1254 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 149: // $@23: %empty
-#line 654 "dhcp6_parser.yy"
-                                             {
+  case 150:
+#line 656 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1322 "dhcp6_parser.cc"
+#line 1263 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 150: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 657 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 151:
+#line 659 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
     ctx.leave();
 }
-#line 1332 "dhcp6_parser.cc"
+#line 1273 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 151: // $@24: %empty
-#line 663 "dhcp6_parser.yy"
-                                               {
+  case 152:
+#line 665 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1341 "dhcp6_parser.cc"
+#line 1282 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 152: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 666 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 153:
+#line 668 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
     ctx.leave();
 }
-#line 1351 "dhcp6_parser.cc"
+#line 1292 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 153: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 672 "dhcp6_parser.yy"
-                                                         {
+  case 154:
+#line 674 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
-    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("ddns-update-on-renew", b);
 }
-#line 1361 "dhcp6_parser.cc"
+#line 1302 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 154: // $@25: %empty
-#line 678 "dhcp6_parser.yy"
-                                     {
+  case 155:
+#line 680 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+}
+#line 1312 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 156:
+#line 686 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1370 "dhcp6_parser.cc"
+#line 1321 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 155: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
-#line 681 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 157:
+#line 689 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 1380 "dhcp6_parser.cc"
+#line 1331 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 156: // $@26: %empty
-#line 687 "dhcp6_parser.yy"
-                                                     {
+  case 158:
+#line 695 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1389 "dhcp6_parser.cc"
+#line 1340 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 157: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
-#line 690 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 159:
+#line 698 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 1399 "dhcp6_parser.cc"
+#line 1350 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 158: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 696 "dhcp6_parser.yy"
-                                                       {
+  case 160:
+#line 704 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
-    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("store-extended-info", b);
 }
-#line 1409 "dhcp6_parser.cc"
+#line 1360 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 159: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 702 "dhcp6_parser.yy"
-                                                                             {
+  case 161:
+#line 710 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
-    ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1419 "dhcp6_parser.cc"
+#line 1370 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 708 "dhcp6_parser.yy"
-                                                                         {
+  case 162:
+#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
-    ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1429 "dhcp6_parser.cc"
+#line 1380 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161: // $@27: %empty
-#line 714 "dhcp6_parser.yy"
-                       {
+  case 163:
+#line 722 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1438 "dhcp6_parser.cc"
+#line 1389 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 162: // server_tag: "server-tag" $@27 ":" "constant string"
-#line 717 "dhcp6_parser.yy"
-               {
-    ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 164:
+#line 725 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    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 1448 "dhcp6_parser.cc"
+#line 1399 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 163: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 723 "dhcp6_parser.yy"
-                                                             {
+  case 165:
+#line 731 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
-    ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr unique(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-reservations-unique", unique);
 }
-#line 1458 "dhcp6_parser.cc"
+#line 1409 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164: // $@28: %empty
-#line 729 "dhcp6_parser.yy"
-                                     {
+  case 166:
+#line 737 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     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 1470 "dhcp6_parser.cc"
+#line 1421 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
-#line 735 "dhcp6_parser.yy"
-                                                               {
+  case 167:
+#line 743 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1480 "dhcp6_parser.cc"
+#line 1431 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166: // $@29: %empty
-#line 741 "dhcp6_parser.yy"
-                                {
+  case 168:
+#line 749 "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 1490 "dhcp6_parser.cc"
+#line 1441 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
-#line 745 "dhcp6_parser.yy"
-                                          {
+  case 169:
+#line 753 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1499 "dhcp6_parser.cc"
+#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175: // $@30: %empty
-#line 761 "dhcp6_parser.yy"
-                            {
+  case 177:
+#line 769 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     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 1511 "dhcp6_parser.cc"
+#line 1462 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176: // interfaces_list: "interfaces" $@30 ":" list_strings
-#line 767 "dhcp6_parser.yy"
-                     {
+  case 178:
+#line 775 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1520 "dhcp6_parser.cc"
+#line 1471 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177: // re_detect: "re-detect" ":" "boolean"
-#line 772 "dhcp6_parser.yy"
-                                   {
+  case 179:
+#line 780 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
-    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 1530 "dhcp6_parser.cc"
+#line 1481 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178: // $@31: %empty
-#line 778 "dhcp6_parser.yy"
-                               {
+  case 180:
+#line 786 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     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 1542 "dhcp6_parser.cc"
+#line 1493 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
-#line 784 "dhcp6_parser.yy"
-                                                          {
+  case 181:
+#line 792 "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 1553 "dhcp6_parser.cc"
+#line 1504 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180: // $@32: %empty
-#line 791 "dhcp6_parser.yy"
-                               {
+  case 182:
+#line 799 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     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 1565 "dhcp6_parser.cc"
+#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 181: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
-#line 797 "dhcp6_parser.yy"
-                                                          {
+  case 183:
+#line 805 "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 1576 "dhcp6_parser.cc"
+#line 1527 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 182: // $@33: %empty
-#line 804 "dhcp6_parser.yy"
-                                 {
+  case 184:
+#line 812 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     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 1588 "dhcp6_parser.cc"
+#line 1539 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 183: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
-#line 810 "dhcp6_parser.yy"
-                                                      {
+  case 185:
+#line 818 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1597 "dhcp6_parser.cc"
+#line 1548 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188: // $@34: %empty
-#line 823 "dhcp6_parser.yy"
-                         {
+  case 190:
+#line 831 "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 1607 "dhcp6_parser.cc"
+#line 1558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 189: // database: "{" $@34 database_map_params "}"
-#line 827 "dhcp6_parser.yy"
-                                     {
+  case 191:
+#line 835 "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 1617 "dhcp6_parser.cc"
+#line 1568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 213: // $@35: %empty
-#line 860 "dhcp6_parser.yy"
-                    {
+  case 215:
+#line 868 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1626 "dhcp6_parser.cc"
+#line 1577 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 214: // database_type: "type" $@35 ":" db_type
-#line 863 "dhcp6_parser.yy"
-                {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+  case 216:
+#line 871 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1635 "dhcp6_parser.cc"
+#line 1586 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 215: // db_type: "memfile"
-#line 868 "dhcp6_parser.yy"
-                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1641 "dhcp6_parser.cc"
+  case 217:
+#line 876 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1592 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 216: // db_type: "mysql"
-#line 869 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1647 "dhcp6_parser.cc"
+  case 218:
+#line 877 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1598 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 217: // db_type: "postgresql"
-#line 870 "dhcp6_parser.yy"
-                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1653 "dhcp6_parser.cc"
+  case 219:
+#line 878 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1604 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 218: // db_type: "cql"
-#line 871 "dhcp6_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1659 "dhcp6_parser.cc"
+  case 220:
+#line 879 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1610 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 219: // $@36: %empty
-#line 874 "dhcp6_parser.yy"
-           {
+  case 221:
+#line 882 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1668 "dhcp6_parser.cc"
+#line 1619 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 220: // user: "user" $@36 ":" "constant string"
-#line 877 "dhcp6_parser.yy"
-               {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 222:
+#line 885 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1678 "dhcp6_parser.cc"
+#line 1629 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 221: // $@37: %empty
-#line 883 "dhcp6_parser.yy"
-                   {
+  case 223:
+#line 891 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1687 "dhcp6_parser.cc"
+#line 1638 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 222: // password: "password" $@37 ":" "constant string"
-#line 886 "dhcp6_parser.yy"
-               {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 224:
+#line 894 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1697 "dhcp6_parser.cc"
+#line 1648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 223: // $@38: %empty
-#line 892 "dhcp6_parser.yy"
-           {
+  case 225:
+#line 900 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1706 "dhcp6_parser.cc"
+#line 1657 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 224: // host: "host" $@38 ":" "constant string"
-#line 895 "dhcp6_parser.yy"
-               {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 226:
+#line 903 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1716 "dhcp6_parser.cc"
+#line 1667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 225: // port: "port" ":" "integer"
-#line 901 "dhcp6_parser.yy"
-                         {
+  case 227:
+#line 909 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
-    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 1726 "dhcp6_parser.cc"
+#line 1677 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 226: // $@39: %empty
-#line 907 "dhcp6_parser.yy"
-           {
+  case 228:
+#line 915 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1735 "dhcp6_parser.cc"
+#line 1686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 227: // name: "name" $@39 ":" "constant string"
-#line 910 "dhcp6_parser.yy"
-               {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 229:
+#line 918 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1745 "dhcp6_parser.cc"
+#line 1696 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 228: // persist: "persist" ":" "boolean"
-#line 916 "dhcp6_parser.yy"
-                               {
+  case 230:
+#line 924 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
-    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 1755 "dhcp6_parser.cc"
+#line 1706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 229: // lfc_interval: "lfc-interval" ":" "integer"
-#line 922 "dhcp6_parser.yy"
-                                         {
+  case 231:
+#line 930 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
-    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 1765 "dhcp6_parser.cc"
+#line 1716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 230: // readonly: "readonly" ":" "boolean"
-#line 928 "dhcp6_parser.yy"
-                                 {
+  case 232:
+#line 936 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
-    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 1775 "dhcp6_parser.cc"
+#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 231: // connect_timeout: "connect-timeout" ":" "integer"
-#line 934 "dhcp6_parser.yy"
-                                               {
+  case 233:
+#line 942 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
-    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 1785 "dhcp6_parser.cc"
+#line 1736 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 232: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 940 "dhcp6_parser.yy"
-                                                       {
+  case 234:
+#line 948 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 1795 "dhcp6_parser.cc"
+#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233: // max_row_errors: "max-row-errors" ":" "integer"
-#line 946 "dhcp6_parser.yy"
-                                             {
+  case 235:
+#line 954 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
-    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-row-errors", n);
 }
-#line 1805 "dhcp6_parser.cc"
+#line 1756 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 234: // request_timeout: "request-timeout" ":" "integer"
-#line 952 "dhcp6_parser.yy"
-                                               {
+  case 236:
+#line 960 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location));
-    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 1815 "dhcp6_parser.cc"
+#line 1766 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 235: // tcp_keepalive: "tcp-keepalive" ":" "integer"
-#line 958 "dhcp6_parser.yy"
-                                           {
+  case 237:
+#line 966 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location));
-    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 1825 "dhcp6_parser.cc"
+#line 1776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
-#line 964 "dhcp6_parser.yy"
-                                       {
+  case 238:
+#line 972 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location));
-    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 1835 "dhcp6_parser.cc"
+#line 1786 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237: // $@40: %empty
-#line 970 "dhcp6_parser.yy"
-                               {
+  case 239:
+#line 978 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1844 "dhcp6_parser.cc"
+#line 1795 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238: // contact_points: "contact-points" $@40 ":" "constant string"
-#line 973 "dhcp6_parser.yy"
-               {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 240:
+#line 981 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1854 "dhcp6_parser.cc"
+#line 1805 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 239: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 979 "dhcp6_parser.yy"
-                                                       {
+  case 241:
+#line 987 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
-    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 1864 "dhcp6_parser.cc"
+#line 1815 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 240: // $@41: %empty
-#line 985 "dhcp6_parser.yy"
-                   {
+  case 242:
+#line 993 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1873 "dhcp6_parser.cc"
+#line 1824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 241: // keyspace: "keyspace" $@41 ":" "constant string"
-#line 988 "dhcp6_parser.yy"
-               {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 243:
+#line 996 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1883 "dhcp6_parser.cc"
+#line 1834 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 242: // $@42: %empty
-#line 994 "dhcp6_parser.yy"
-                         {
+  case 244:
+#line 1002 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1892 "dhcp6_parser.cc"
+#line 1843 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243: // consistency: "consistency" $@42 ":" "constant string"
-#line 997 "dhcp6_parser.yy"
-               {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 245:
+#line 1005 "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 1902 "dhcp6_parser.cc"
+#line 1853 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244: // $@43: %empty
-#line 1003 "dhcp6_parser.yy"
-                                       {
+  case 246:
+#line 1011 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1911 "dhcp6_parser.cc"
+#line 1862 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
-#line 1006 "dhcp6_parser.yy"
-               {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 247:
+#line 1014 "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 1921 "dhcp6_parser.cc"
+#line 1872 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246: // $@44: %empty
-#line 1012 "dhcp6_parser.yy"
-                             {
+  case 248:
+#line 1020 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     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 1933 "dhcp6_parser.cc"
+#line 1884 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
-#line 1018 "dhcp6_parser.yy"
-                                                           {
+  case 249:
+#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1942 "dhcp6_parser.cc"
+#line 1893 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251: // $@45: %empty
-#line 1028 "dhcp6_parser.yy"
-                           {
+  case 253:
+#line 1036 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1951 "dhcp6_parser.cc"
+#line 1902 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 252: // lease_checks: "lease-checks" $@45 ":" "constant string"
-#line 1031 "dhcp6_parser.yy"
-               {
+  case 254:
+#line 1039 "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 1971 "dhcp6_parser.cc"
+#line 1922 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253: // $@46: %empty
-#line 1047 "dhcp6_parser.yy"
-                         {
+  case 255:
+#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
     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 1983 "dhcp6_parser.cc"
+#line 1934 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
-#line 1053 "dhcp6_parser.yy"
-                                                         {
+  case 256:
+#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1992 "dhcp6_parser.cc"
+#line 1943 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 259: // duid_id: "duid"
-#line 1066 "dhcp6_parser.yy"
-               {
+  case 261:
+#line 1074 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2001 "dhcp6_parser.cc"
+#line 1952 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 260: // string_id: "constant string"
-#line 1071 "dhcp6_parser.yy"
-                   {
-    ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 262:
+#line 1079 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2010 "dhcp6_parser.cc"
+#line 1961 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 261: // $@47: %empty
-#line 1076 "dhcp6_parser.yy"
-                                                           {
+  case 263:
+#line 1084 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     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 2022 "dhcp6_parser.cc"
+#line 1973 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 262: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
-#line 1082 "dhcp6_parser.yy"
-                                                                          {
+  case 264:
+#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2031 "dhcp6_parser.cc"
+#line 1982 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 268: // hw_address_id: "hw-address"
-#line 1096 "dhcp6_parser.yy"
-                           {
+  case 270:
+#line 1104 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 2040 "dhcp6_parser.cc"
+#line 1991 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 269: // flex_id: "flex-id"
-#line 1101 "dhcp6_parser.yy"
-                  {
+  case 271:
+#line 1109 "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 2049 "dhcp6_parser.cc"
+#line 2000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 270: // $@48: %empty
-#line 1108 "dhcp6_parser.yy"
-                                               {
+  case 272:
+#line 1116 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
     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 2061 "dhcp6_parser.cc"
+#line 2012 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 271: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
-#line 1114 "dhcp6_parser.yy"
-                                                     {
+  case 273:
+#line 1122 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2070 "dhcp6_parser.cc"
+#line 2021 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272: // $@49: %empty
-#line 1121 "dhcp6_parser.yy"
-                                           {
+  case 274:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("multi-threading", mt);
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2082 "dhcp6_parser.cc"
+#line 2033 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 273: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
-#line 1127 "dhcp6_parser.yy"
-                                                             {
+  case 275:
+#line 1135 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2093 "dhcp6_parser.cc"
+#line 2044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 282: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1146 "dhcp6_parser.yy"
-                                                             {
+  case 284:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
-    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-multi-threading", b);
 }
-#line 2103 "dhcp6_parser.cc"
+#line 2054 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 283: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1152 "dhcp6_parser.yy"
-                                                 {
+  case 285:
+#line 1160 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
-    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("thread-pool-size", prf);
 }
-#line 2113 "dhcp6_parser.cc"
+#line 2064 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 284: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1158 "dhcp6_parser.yy"
-                                                   {
+  case 286:
+#line 1166 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
-    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("packet-queue-size", prf);
 }
-#line 2123 "dhcp6_parser.cc"
+#line 2074 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 285: // $@50: %empty
-#line 1164 "dhcp6_parser.yy"
-                                 {
+  case 287:
+#line 1172 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     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 2135 "dhcp6_parser.cc"
+#line 2086 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
-#line 1170 "dhcp6_parser.yy"
-                                                             {
+  case 288:
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2144 "dhcp6_parser.cc"
+#line 2095 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291: // $@51: %empty
-#line 1183 "dhcp6_parser.yy"
-                              {
+  case 293:
+#line 1191 "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 2154 "dhcp6_parser.cc"
+#line 2105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 292: // hooks_library: "{" $@51 hooks_params "}"
-#line 1187 "dhcp6_parser.yy"
-                              {
+  case 294:
+#line 1195 "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 2164 "dhcp6_parser.cc"
+#line 2115 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 293: // $@52: %empty
-#line 1193 "dhcp6_parser.yy"
-                                  {
+  case 295:
+#line 1201 "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 2174 "dhcp6_parser.cc"
+#line 2125 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294: // sub_hooks_library: "{" $@52 hooks_params "}"
-#line 1197 "dhcp6_parser.yy"
-                              {
+  case 296:
+#line 1205 "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 2184 "dhcp6_parser.cc"
+#line 2135 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 300: // $@53: %empty
-#line 1212 "dhcp6_parser.yy"
-                 {
+  case 302:
+#line 1220 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2193 "dhcp6_parser.cc"
+#line 2144 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 301: // library: "library" $@53 ":" "constant string"
-#line 1215 "dhcp6_parser.yy"
-               {
-    ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 303:
+#line 1223 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 2203 "dhcp6_parser.cc"
+#line 2154 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 302: // $@54: %empty
-#line 1221 "dhcp6_parser.yy"
-                       {
+  case 304:
+#line 1229 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2212 "dhcp6_parser.cc"
+#line 2163 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303: // parameters: "parameters" $@54 ":" map_value
-#line 1224 "dhcp6_parser.yy"
-                  {
-    ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
+  case 305:
+#line 1232 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2221 "dhcp6_parser.cc"
+#line 2172 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304: // $@55: %empty
-#line 1230 "dhcp6_parser.yy"
-                                                     {
+  case 306:
+#line 1238 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     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 2233 "dhcp6_parser.cc"
+#line 2184 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 305: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
-#line 1236 "dhcp6_parser.yy"
-                                                            {
+  case 307:
+#line 1244 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2243 "dhcp6_parser.cc"
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1254 "dhcp6_parser.yy"
-                                                               {
+  case 316:
+#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 2253 "dhcp6_parser.cc"
+#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1260 "dhcp6_parser.yy"
-                                                                               {
+  case 317:
+#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
-    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 2263 "dhcp6_parser.cc"
+#line 2214 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1266 "dhcp6_parser.yy"
-                                                       {
+  case 318:
+#line 1274 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
-    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 2273 "dhcp6_parser.cc"
+#line 2224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1272 "dhcp6_parser.yy"
-                                                     {
+  case 319:
+#line 1280 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
-    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 2283 "dhcp6_parser.cc"
+#line 2234 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 318: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1278 "dhcp6_parser.yy"
-                                                 {
+  case 320:
+#line 1286 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
-    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 2293 "dhcp6_parser.cc"
+#line 2244 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 319: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1284 "dhcp6_parser.yy"
-                                                               {
+  case 321:
+#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
-    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 2303 "dhcp6_parser.cc"
+#line 2254 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 320: // $@56: %empty
-#line 1293 "dhcp6_parser.yy"
-                      {
+  case 322:
+#line 1301 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
     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 2315 "dhcp6_parser.cc"
+#line 2266 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 321: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
-#line 1299 "dhcp6_parser.yy"
-                                                             {
+  case 323:
+#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2324 "dhcp6_parser.cc"
+#line 2275 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326: // $@57: %empty
-#line 1319 "dhcp6_parser.yy"
-                        {
+  case 328:
+#line 1327 "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 2334 "dhcp6_parser.cc"
+#line 2285 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327: // subnet6: "{" $@57 subnet6_params "}"
-#line 1323 "dhcp6_parser.yy"
-                                {
+  case 329:
+#line 1331 "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.
     // In particular we can do things like this:
@@ -2356,596 +2307,596 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2360 "dhcp6_parser.cc"
+#line 2311 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 328: // $@58: %empty
-#line 1345 "dhcp6_parser.yy"
-                            {
+  case 330:
+#line 1353 "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 2370 "dhcp6_parser.cc"
+#line 2321 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 329: // sub_subnet6: "{" $@58 subnet6_params "}"
-#line 1349 "dhcp6_parser.yy"
-                                {
+  case 331:
+#line 1357 "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 2380 "dhcp6_parser.cc"
+#line 2331 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 371: // $@59: %empty
-#line 1402 "dhcp6_parser.yy"
-               {
+  case 374:
+#line 1411 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2389 "dhcp6_parser.cc"
+#line 2340 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 372: // subnet: "subnet" $@59 ":" "constant string"
-#line 1405 "dhcp6_parser.yy"
-               {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 375:
+#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2399 "dhcp6_parser.cc"
+#line 2350 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 373: // $@60: %empty
-#line 1411 "dhcp6_parser.yy"
-                     {
+  case 376:
+#line 1420 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2408 "dhcp6_parser.cc"
+#line 2359 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 374: // interface: "interface" $@60 ":" "constant string"
-#line 1414 "dhcp6_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 377:
+#line 1423 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2418 "dhcp6_parser.cc"
+#line 2369 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375: // $@61: %empty
-#line 1420 "dhcp6_parser.yy"
-                           {
+  case 378:
+#line 1429 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2427 "dhcp6_parser.cc"
+#line 2378 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376: // interface_id: "interface-id" $@61 ":" "constant string"
-#line 1423 "dhcp6_parser.yy"
-               {
-    ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 379:
+#line 1432 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 2437 "dhcp6_parser.cc"
+#line 2388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377: // $@62: %empty
-#line 1429 "dhcp6_parser.yy"
-                           {
+  case 380:
+#line 1438 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2446 "dhcp6_parser.cc"
+#line 2397 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378: // client_class: "client-class" $@62 ":" "constant string"
-#line 1432 "dhcp6_parser.yy"
-               {
-    ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 381:
+#line 1441 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2456 "dhcp6_parser.cc"
+#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379: // $@63: %empty
-#line 1438 "dhcp6_parser.yy"
-                                               {
+  case 382:
+#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     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 2468 "dhcp6_parser.cc"
+#line 2419 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380: // require_client_classes: "require-client-classes" $@63 ":" list_strings
-#line 1444 "dhcp6_parser.yy"
-                     {
+  case 383:
+#line 1453 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2477 "dhcp6_parser.cc"
+#line 2428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381: // $@64: %empty
-#line 1449 "dhcp6_parser.yy"
-                                   {
+  case 384:
+#line 1458 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2486 "dhcp6_parser.cc"
+#line 2437 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
-#line 1452 "dhcp6_parser.yy"
-                {
-    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
+  case 385:
+#line 1461 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2495 "dhcp6_parser.cc"
+#line 2446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383: // hr_mode: "disabled"
-#line 1457 "dhcp6_parser.yy"
-                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2501 "dhcp6_parser.cc"
+  case 386:
+#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2452 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 384: // hr_mode: "out-of-pool"
-#line 1458 "dhcp6_parser.yy"
-                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2507 "dhcp6_parser.cc"
+  case 387:
+#line 1467 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2458 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 385: // hr_mode: "global"
-#line 1459 "dhcp6_parser.yy"
-                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2513 "dhcp6_parser.cc"
+  case 388:
+#line 1468 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2464 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386: // hr_mode: "all"
-#line 1460 "dhcp6_parser.yy"
-             { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2519 "dhcp6_parser.cc"
+  case 389:
+#line 1469 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2470 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387: // id: "id" ":" "integer"
-#line 1463 "dhcp6_parser.yy"
-                     {
+  case 390:
+#line 1472 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
-    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 2529 "dhcp6_parser.cc"
+#line 2480 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388: // rapid_commit: "rapid-commit" ":" "boolean"
-#line 1469 "dhcp6_parser.yy"
-                                         {
+  case 391:
+#line 1478 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location));
-    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 2539 "dhcp6_parser.cc"
+#line 2490 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389: // $@65: %empty
-#line 1477 "dhcp6_parser.yy"
-                                 {
+  case 392:
+#line 1486 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     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 2551 "dhcp6_parser.cc"
+#line 2502 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
-#line 1483 "dhcp6_parser.yy"
-                                                                {
+  case 393:
+#line 1492 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2560 "dhcp6_parser.cc"
+#line 2511 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 395: // $@66: %empty
-#line 1498 "dhcp6_parser.yy"
-                               {
+  case 398:
+#line 1507 "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 2570 "dhcp6_parser.cc"
+#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 396: // shared_network: "{" $@66 shared_network_params "}"
-#line 1502 "dhcp6_parser.yy"
-                                       {
+  case 399:
+#line 1511 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 2578 "dhcp6_parser.cc"
+#line 2529 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 435: // $@67: %empty
-#line 1552 "dhcp6_parser.yy"
-                            {
+  case 439:
+#line 1562 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     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 2590 "dhcp6_parser.cc"
+#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
-#line 1558 "dhcp6_parser.yy"
-                                                                {
+  case 440:
+#line 1568 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2599 "dhcp6_parser.cc"
+#line 2550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 437: // $@68: %empty
-#line 1566 "dhcp6_parser.yy"
-                                    {
+  case 441:
+#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2608 "dhcp6_parser.cc"
+#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 438: // sub_option_def_list: "{" $@68 option_def_list "}"
-#line 1569 "dhcp6_parser.yy"
-                                 {
+  case 442:
+#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // parsing completed
 }
-#line 2616 "dhcp6_parser.cc"
+#line 2567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443: // $@69: %empty
-#line 1585 "dhcp6_parser.yy"
-                                 {
+  case 447:
+#line 1595 "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 2626 "dhcp6_parser.cc"
+#line 2577 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444: // option_def_entry: "{" $@69 option_def_params "}"
-#line 1589 "dhcp6_parser.yy"
-                                   {
+  case 448:
+#line 1599 "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));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2638 "dhcp6_parser.cc"
+#line 2589 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445: // $@70: %empty
-#line 1600 "dhcp6_parser.yy"
-                               {
+  case 449:
+#line 1610 "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 2648 "dhcp6_parser.cc"
+#line 2599 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 446: // sub_option_def: "{" $@70 option_def_params "}"
-#line 1604 "dhcp6_parser.yy"
-                                   {
+  case 450:
+#line 1614 "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));
     ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2660 "dhcp6_parser.cc"
+#line 2611 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 462: // code: "code" ":" "integer"
-#line 1636 "dhcp6_parser.yy"
-                         {
+  case 466:
+#line 1646 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
-    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 2670 "dhcp6_parser.cc"
+#line 2621 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 464: // $@71: %empty
-#line 1644 "dhcp6_parser.yy"
-                      {
+  case 468:
+#line 1654 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2679 "dhcp6_parser.cc"
+#line 2630 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 465: // option_def_type: "type" $@71 ":" "constant string"
-#line 1647 "dhcp6_parser.yy"
-               {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 469:
+#line 1657 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2689 "dhcp6_parser.cc"
+#line 2640 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 466: // $@72: %empty
-#line 1653 "dhcp6_parser.yy"
-                                      {
+  case 470:
+#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2698 "dhcp6_parser.cc"
+#line 2649 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 467: // option_def_record_types: "record-types" $@72 ":" "constant string"
-#line 1656 "dhcp6_parser.yy"
-               {
-    ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 471:
+#line 1666 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2708 "dhcp6_parser.cc"
+#line 2659 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468: // $@73: %empty
-#line 1662 "dhcp6_parser.yy"
-             {
+  case 472:
+#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2717 "dhcp6_parser.cc"
+#line 2668 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469: // space: "space" $@73 ":" "constant string"
-#line 1665 "dhcp6_parser.yy"
-               {
-    ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 473:
+#line 1675 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2727 "dhcp6_parser.cc"
+#line 2678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471: // $@74: %empty
-#line 1673 "dhcp6_parser.yy"
-                                    {
+  case 475:
+#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2736 "dhcp6_parser.cc"
+#line 2687 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
-#line 1676 "dhcp6_parser.yy"
-               {
-    ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 476:
+#line 1686 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2746 "dhcp6_parser.cc"
+#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473: // option_def_array: "array" ":" "boolean"
-#line 1682 "dhcp6_parser.yy"
-                                      {
+  case 477:
+#line 1692 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
-    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 2756 "dhcp6_parser.cc"
+#line 2707 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474: // $@75: %empty
-#line 1692 "dhcp6_parser.yy"
-                              {
+  case 478:
+#line 1702 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     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 2768 "dhcp6_parser.cc"
+#line 2719 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
-#line 1698 "dhcp6_parser.yy"
-                                                                 {
+  case 479:
+#line 1708 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2777 "dhcp6_parser.cc"
+#line 2728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480: // $@76: %empty
-#line 1717 "dhcp6_parser.yy"
-                                  {
+  case 484:
+#line 1727 "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 2787 "dhcp6_parser.cc"
+#line 2738 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481: // option_data_entry: "{" $@76 option_data_params "}"
-#line 1721 "dhcp6_parser.yy"
-                                    {
+  case 485:
+#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2796 "dhcp6_parser.cc"
+#line 2747 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482: // $@77: %empty
-#line 1729 "dhcp6_parser.yy"
-                                {
+  case 486:
+#line 1739 "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 2806 "dhcp6_parser.cc"
+#line 2757 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483: // sub_option_data: "{" $@77 option_data_params "}"
-#line 1733 "dhcp6_parser.yy"
-                                    {
+  case 487:
+#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2815 "dhcp6_parser.cc"
+#line 2766 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 498: // $@78: %empty
-#line 1766 "dhcp6_parser.yy"
-                       {
+  case 502:
+#line 1776 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2824 "dhcp6_parser.cc"
+#line 2775 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 499: // option_data_data: "data" $@78 ":" "constant string"
-#line 1769 "dhcp6_parser.yy"
-               {
-    ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 503:
+#line 1779 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2834 "dhcp6_parser.cc"
+#line 2785 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 502: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1779 "dhcp6_parser.yy"
-                                                 {
+  case 506:
+#line 1789 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
-    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 2844 "dhcp6_parser.cc"
+#line 2795 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503: // option_data_always_send: "always-send" ":" "boolean"
-#line 1785 "dhcp6_parser.yy"
-                                                   {
+  case 507:
+#line 1795 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
-    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 2854 "dhcp6_parser.cc"
+#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504: // $@79: %empty
-#line 1794 "dhcp6_parser.yy"
-                  {
+  case 508:
+#line 1804 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     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 2866 "dhcp6_parser.cc"
+#line 2817 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 505: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
-#line 1800 "dhcp6_parser.yy"
-                                                           {
+  case 509:
+#line 1810 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2875 "dhcp6_parser.cc"
+#line 2826 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 510: // $@80: %empty
-#line 1815 "dhcp6_parser.yy"
-                                {
+  case 514:
+#line 1825 "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 2885 "dhcp6_parser.cc"
+#line 2836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 511: // pool_list_entry: "{" $@80 pool_params "}"
-#line 1819 "dhcp6_parser.yy"
-                             {
+  case 515:
+#line 1829 "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 2895 "dhcp6_parser.cc"
+#line 2846 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 512: // $@81: %empty
-#line 1825 "dhcp6_parser.yy"
-                          {
+  case 516:
+#line 1835 "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 2905 "dhcp6_parser.cc"
+#line 2856 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 513: // sub_pool6: "{" $@81 pool_params "}"
-#line 1829 "dhcp6_parser.yy"
-                             {
+  case 517:
+#line 1839 "dhcp6_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 2915 "dhcp6_parser.cc"
+#line 2866 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 523: // $@82: %empty
-#line 1848 "dhcp6_parser.yy"
-                 {
+  case 527:
+#line 1858 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2924 "dhcp6_parser.cc"
+#line 2875 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 524: // pool_entry: "pool" $@82 ":" "constant string"
-#line 1851 "dhcp6_parser.yy"
-               {
-    ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 528:
+#line 1861 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2934 "dhcp6_parser.cc"
+#line 2885 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 525: // $@83: %empty
-#line 1857 "dhcp6_parser.yy"
-                           {
+  case 529:
+#line 1867 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2942 "dhcp6_parser.cc"
+#line 2893 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 526: // user_context: "user-context" $@83 ":" map_value
-#line 1859 "dhcp6_parser.yy"
-                  {
+  case 530:
+#line 1869 "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
@@ -2965,23 +2916,23 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2969 "dhcp6_parser.cc"
+#line 2920 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 527: // $@84: %empty
-#line 1882 "dhcp6_parser.yy"
-                 {
+  case 531:
+#line 1892 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2977 "dhcp6_parser.cc"
+#line 2928 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 528: // comment: "comment" $@84 ":" "constant string"
-#line 1884 "dhcp6_parser.yy"
-               {
+  case 532:
+#line 1894 "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
@@ -3002,1263 +2953,1259 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3006 "dhcp6_parser.cc"
+#line 2957 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 529: // $@85: %empty
-#line 1912 "dhcp6_parser.yy"
-                        {
+  case 533:
+#line 1922 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
     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 3018 "dhcp6_parser.cc"
+#line 2969 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 530: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
-#line 1918 "dhcp6_parser.yy"
-                                                              {
+  case 534:
+#line 1928 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3027 "dhcp6_parser.cc"
+#line 2978 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535: // $@86: %empty
-#line 1933 "dhcp6_parser.yy"
-                              {
+  case 539:
+#line 1943 "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 3037 "dhcp6_parser.cc"
+#line 2988 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 536: // pd_pool_entry: "{" $@86 pd_pool_params "}"
-#line 1937 "dhcp6_parser.yy"
-                                {
+  case 540:
+#line 1947 "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));
     ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3049 "dhcp6_parser.cc"
+#line 3000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 537: // $@87: %empty
-#line 1945 "dhcp6_parser.yy"
-                            {
+  case 541:
+#line 1955 "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 3059 "dhcp6_parser.cc"
+#line 3010 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 538: // sub_pd_pool: "{" $@87 pd_pool_params "}"
-#line 1949 "dhcp6_parser.yy"
-                                {
+  case 542:
+#line 1959 "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));
     ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3071 "dhcp6_parser.cc"
+#line 3022 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 552: // $@88: %empty
-#line 1974 "dhcp6_parser.yy"
-                  {
+  case 556:
+#line 1984 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3080 "dhcp6_parser.cc"
+#line 3031 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 553: // pd_prefix: "prefix" $@88 ":" "constant string"
-#line 1977 "dhcp6_parser.yy"
-               {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 557:
+#line 1987 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 3090 "dhcp6_parser.cc"
+#line 3041 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 554: // pd_prefix_len: "prefix-len" ":" "integer"
-#line 1983 "dhcp6_parser.yy"
-                                        {
+  case 558:
+#line 1993 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location));
-    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 3100 "dhcp6_parser.cc"
+#line 3051 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 555: // $@89: %empty
-#line 1989 "dhcp6_parser.yy"
-                                 {
+  case 559:
+#line 1999 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3109 "dhcp6_parser.cc"
+#line 3060 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 556: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
-#line 1992 "dhcp6_parser.yy"
-               {
-    ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 560:
+#line 2002 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 3119 "dhcp6_parser.cc"
+#line 3070 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 557: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
-#line 1998 "dhcp6_parser.yy"
-                                                       {
+  case 561:
+#line 2008 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location));
-    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 3129 "dhcp6_parser.cc"
+#line 3080 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 558: // pd_delegated_len: "delegated-len" ":" "integer"
-#line 2004 "dhcp6_parser.yy"
-                                              {
+  case 562:
+#line 2014 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location));
-    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 3139 "dhcp6_parser.cc"
+#line 3090 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 559: // $@90: %empty
-#line 2013 "dhcp6_parser.yy"
-                           {
+  case 563:
+#line 2023 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     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 3151 "dhcp6_parser.cc"
+#line 3102 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 560: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
-#line 2019 "dhcp6_parser.yy"
-                                                          {
+  case 564:
+#line 2029 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3160 "dhcp6_parser.cc"
+#line 3111 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 565: // $@91: %empty
-#line 2032 "dhcp6_parser.yy"
-                            {
+  case 569:
+#line 2042 "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 3170 "dhcp6_parser.cc"
+#line 3121 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 566: // reservation: "{" $@91 reservation_params "}"
-#line 2036 "dhcp6_parser.yy"
-                                    {
+  case 570:
+#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3179 "dhcp6_parser.cc"
+#line 3130 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 567: // $@92: %empty
-#line 2041 "dhcp6_parser.yy"
-                                {
+  case 571:
+#line 2051 "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 3189 "dhcp6_parser.cc"
+#line 3140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 568: // sub_reservation: "{" $@92 reservation_params "}"
-#line 2045 "dhcp6_parser.yy"
-                                    {
+  case 572:
+#line 2055 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3198 "dhcp6_parser.cc"
+#line 3149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 584: // $@93: %empty
-#line 2072 "dhcp6_parser.yy"
-                           {
+  case 588:
+#line 2082 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     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 3210 "dhcp6_parser.cc"
+#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 585: // ip_addresses: "ip-addresses" $@93 ":" list_strings
-#line 2078 "dhcp6_parser.yy"
-                     {
+  case 589:
+#line 2088 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3219 "dhcp6_parser.cc"
+#line 3170 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 586: // $@94: %empty
-#line 2083 "dhcp6_parser.yy"
-                   {
+  case 590:
+#line 2093 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
     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 3231 "dhcp6_parser.cc"
+#line 3182 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 587: // prefixes: "prefixes" $@94 ":" list_strings
-#line 2089 "dhcp6_parser.yy"
-                     {
+  case 591:
+#line 2099 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3240 "dhcp6_parser.cc"
+#line 3191 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 588: // $@95: %empty
-#line 2094 "dhcp6_parser.yy"
-           {
+  case 592:
+#line 2104 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3249 "dhcp6_parser.cc"
+#line 3200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 589: // duid: "duid" $@95 ":" "constant string"
-#line 2097 "dhcp6_parser.yy"
-               {
-    ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 593:
+#line 2107 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3259 "dhcp6_parser.cc"
+#line 3210 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 590: // $@96: %empty
-#line 2103 "dhcp6_parser.yy"
-                       {
+  case 594:
+#line 2113 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3268 "dhcp6_parser.cc"
+#line 3219 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 591: // hw_address: "hw-address" $@96 ":" "constant string"
-#line 2106 "dhcp6_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 595:
+#line 2116 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 3278 "dhcp6_parser.cc"
+#line 3229 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 592: // $@97: %empty
-#line 2112 "dhcp6_parser.yy"
-                   {
+  case 596:
+#line 2122 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3287 "dhcp6_parser.cc"
+#line 3238 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 593: // hostname: "hostname" $@97 ":" "constant string"
-#line 2115 "dhcp6_parser.yy"
-               {
-    ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 597:
+#line 2125 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3297 "dhcp6_parser.cc"
+#line 3248 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 594: // $@98: %empty
-#line 2121 "dhcp6_parser.yy"
-                       {
+  case 598:
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3306 "dhcp6_parser.cc"
+#line 3257 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 595: // flex_id_value: "flex-id" $@98 ":" "constant string"
-#line 2124 "dhcp6_parser.yy"
-               {
-    ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 599:
+#line 2134 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 3316 "dhcp6_parser.cc"
+#line 3267 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 596: // $@99: %empty
-#line 2130 "dhcp6_parser.yy"
-                                           {
+  case 600:
+#line 2140 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     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 3328 "dhcp6_parser.cc"
+#line 3279 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 597: // reservation_client_classes: "client-classes" $@99 ":" list_strings
-#line 2136 "dhcp6_parser.yy"
-                     {
+  case 601:
+#line 2146 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3337 "dhcp6_parser.cc"
+#line 3288 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 598: // $@100: %empty
-#line 2144 "dhcp6_parser.yy"
-             {
+  case 602:
+#line 2154 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     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 3349 "dhcp6_parser.cc"
+#line 3300 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 599: // relay: "relay" $@100 ":" "{" relay_map "}"
-#line 2150 "dhcp6_parser.yy"
-                                                {
+  case 603:
+#line 2160 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3358 "dhcp6_parser.cc"
+#line 3309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 602: // $@101: %empty
-#line 2159 "dhcp6_parser.yy"
-                       {
+  case 606:
+#line 2169 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3367 "dhcp6_parser.cc"
+#line 3318 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 603: // ip_address: "ip-address" $@101 ":" "constant string"
-#line 2162 "dhcp6_parser.yy"
-               {
-    ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 607:
+#line 2172 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 3377 "dhcp6_parser.cc"
+#line 3328 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 604: // $@102: %empty
-#line 2171 "dhcp6_parser.yy"
-                               {
+  case 608:
+#line 2181 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     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 3389 "dhcp6_parser.cc"
+#line 3340 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 605: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
-#line 2177 "dhcp6_parser.yy"
-                                                            {
+  case 609:
+#line 2187 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3398 "dhcp6_parser.cc"
+#line 3349 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 608: // $@103: %empty
-#line 2186 "dhcp6_parser.yy"
-                                   {
+  case 612:
+#line 2196 "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 3408 "dhcp6_parser.cc"
+#line 3359 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 609: // client_class_entry: "{" $@103 client_class_params "}"
-#line 2190 "dhcp6_parser.yy"
-                                     {
+  case 613:
+#line 2200 "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 3418 "dhcp6_parser.cc"
+#line 3369 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 622: // $@104: %empty
-#line 2215 "dhcp6_parser.yy"
-                        {
+  case 626:
+#line 2225 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3427 "dhcp6_parser.cc"
+#line 3378 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 623: // client_class_test: "test" $@104 ":" "constant string"
-#line 2218 "dhcp6_parser.yy"
-               {
-    ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 627:
+#line 2228 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3437 "dhcp6_parser.cc"
+#line 3388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 624: // only_if_required: "only-if-required" ":" "boolean"
-#line 2224 "dhcp6_parser.yy"
-                                                 {
+  case 628:
+#line 2234 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
-    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 3447 "dhcp6_parser.cc"
+#line 3398 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 625: // $@105: %empty
-#line 2233 "dhcp6_parser.yy"
-                     {
+  case 629:
+#line 2243 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
     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 3459 "dhcp6_parser.cc"
+#line 3410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 626: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
-#line 2239 "dhcp6_parser.yy"
-                                                       {
+  case 630:
+#line 2249 "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 3470 "dhcp6_parser.cc"
+#line 3421 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 638: // $@106: %empty
-#line 2261 "dhcp6_parser.yy"
-                     {
+  case 642:
+#line 2271 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3479 "dhcp6_parser.cc"
+#line 3430 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 639: // server_id_type: "type" $@106 ":" duid_type
-#line 2264 "dhcp6_parser.yy"
-                  {
-    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+  case 643:
+#line 2274 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3488 "dhcp6_parser.cc"
+#line 3439 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 640: // duid_type: "LLT"
-#line 2269 "dhcp6_parser.yy"
-               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3494 "dhcp6_parser.cc"
+  case 644:
+#line 2279 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 3445 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 641: // duid_type: "EN"
-#line 2270 "dhcp6_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3500 "dhcp6_parser.cc"
+  case 645:
+#line 2280 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 3451 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 642: // duid_type: "LL"
-#line 2271 "dhcp6_parser.yy"
-              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3506 "dhcp6_parser.cc"
+  case 646:
+#line 2281 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 3457 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 643: // htype: "htype" ":" "integer"
-#line 2274 "dhcp6_parser.yy"
-                           {
+  case 647:
+#line 2284 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("htype", ctx.loc2pos(yystack_[2].location));
-    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 3516 "dhcp6_parser.cc"
+#line 3467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 644: // $@107: %empty
-#line 2280 "dhcp6_parser.yy"
-                       {
+  case 648:
+#line 2290 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3525 "dhcp6_parser.cc"
+#line 3476 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 645: // identifier: "identifier" $@107 ":" "constant string"
-#line 2283 "dhcp6_parser.yy"
-               {
-    ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 649:
+#line 2293 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3535 "dhcp6_parser.cc"
+#line 3486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 646: // time: "time" ":" "integer"
-#line 2289 "dhcp6_parser.yy"
-                         {
+  case 650:
+#line 2299 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("time", ctx.loc2pos(yystack_[2].location));
-    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 3545 "dhcp6_parser.cc"
+#line 3496 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 647: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2295 "dhcp6_parser.yy"
-                                           {
+  case 651:
+#line 2305 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location));
-    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 3555 "dhcp6_parser.cc"
+#line 3506 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 648: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2303 "dhcp6_parser.yy"
-                                         {
+  case 652:
+#line 2313 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
-    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 3565 "dhcp6_parser.cc"
+#line 3516 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 649: // $@108: %empty
-#line 2311 "dhcp6_parser.yy"
-                               {
+  case 653:
+#line 2321 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     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 3577 "dhcp6_parser.cc"
+#line 3528 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 650: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
-#line 2317 "dhcp6_parser.yy"
-                                                            {
+  case 654:
+#line 2327 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3586 "dhcp6_parser.cc"
+#line 3537 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 658: // $@109: %empty
-#line 2333 "dhcp6_parser.yy"
-                         {
+  case 662:
+#line 2343 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3595 "dhcp6_parser.cc"
+#line 3546 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 659: // socket_type: "socket-type" $@109 ":" "constant string"
-#line 2336 "dhcp6_parser.yy"
-               {
-    ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 663:
+#line 2346 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3605 "dhcp6_parser.cc"
+#line 3556 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 660: // $@110: %empty
-#line 2342 "dhcp6_parser.yy"
-                         {
+  case 664:
+#line 2352 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3614 "dhcp6_parser.cc"
+#line 3565 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 661: // socket_name: "socket-name" $@110 ":" "constant string"
-#line 2345 "dhcp6_parser.yy"
-               {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 665:
+#line 2355 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3624 "dhcp6_parser.cc"
+#line 3575 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 662: // $@111: %empty
-#line 2354 "dhcp6_parser.yy"
-                                       {
+  case 666:
+#line 2364 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3636 "dhcp6_parser.cc"
+#line 3587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 663: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
-#line 2360 "dhcp6_parser.yy"
-                                                           {
+  case 667:
+#line 2370 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3647 "dhcp6_parser.cc"
+#line 3598 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 672: // enable_queue: "enable-queue" ":" "boolean"
-#line 2379 "dhcp6_parser.yy"
-                                         {
+  case 676:
+#line 2389 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
-    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-queue", b);
 }
-#line 3657 "dhcp6_parser.cc"
+#line 3608 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 673: // $@112: %empty
-#line 2385 "dhcp6_parser.yy"
-                       {
+  case 677:
+#line 2395 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3666 "dhcp6_parser.cc"
+#line 3617 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 674: // queue_type: "queue-type" $@112 ":" "constant string"
-#line 2388 "dhcp6_parser.yy"
-               {
-    ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 678:
+#line 2398 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3676 "dhcp6_parser.cc"
+#line 3627 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 675: // capacity: "capacity" ":" "integer"
-#line 2394 "dhcp6_parser.yy"
-                                 {
+  case 679:
+#line 2404 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
-    ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3686 "dhcp6_parser.cc"
+#line 3637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 676: // $@113: %empty
-#line 2400 "dhcp6_parser.yy"
-                            {
-    ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
+  case 680:
+#line 2410 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.unique(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3695 "dhcp6_parser.cc"
+#line 3646 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 677: // arbitrary_map_entry: "constant string" $@113 ":" value
-#line 2403 "dhcp6_parser.yy"
-              {
-    ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
+  case 681:
+#line 2413 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3704 "dhcp6_parser.cc"
+#line 3655 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 678: // $@114: %empty
-#line 2410 "dhcp6_parser.yy"
-                     {
+  case 682:
+#line 2420 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     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 3716 "dhcp6_parser.cc"
+#line 3667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 679: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
-#line 2416 "dhcp6_parser.yy"
-                                                       {
+  case 683:
+#line 2426 "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 3727 "dhcp6_parser.cc"
+#line 3678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 680: // $@115: %empty
-#line 2423 "dhcp6_parser.yy"
-                              {
+  case 684:
+#line 2433 "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 3737 "dhcp6_parser.cc"
+#line 3688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 681: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
-#line 2427 "dhcp6_parser.yy"
-                                  {
+  case 685:
+#line 2437 "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 3747 "dhcp6_parser.cc"
+#line 3698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 702: // enable_updates: "enable-updates" ":" "boolean"
-#line 2457 "dhcp6_parser.yy"
-                                             {
+  case 706:
+#line 2467 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
-    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 3757 "dhcp6_parser.cc"
+#line 3708 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 703: // $@116: %empty
-#line 2464 "dhcp6_parser.yy"
-                                         {
+  case 707:
+#line 2474 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3766 "dhcp6_parser.cc"
+#line 3717 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 704: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
-#line 2467 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 708:
+#line 2477 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3776 "dhcp6_parser.cc"
+#line 3727 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 705: // $@117: %empty
-#line 2473 "dhcp6_parser.yy"
-                     {
+  case 709:
+#line 2483 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3785 "dhcp6_parser.cc"
+#line 3736 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 706: // server_ip: "server-ip" $@117 ":" "constant string"
-#line 2476 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 710:
+#line 2486 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3795 "dhcp6_parser.cc"
+#line 3746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 707: // server_port: "server-port" ":" "integer"
-#line 2482 "dhcp6_parser.yy"
-                                       {
+  case 711:
+#line 2492 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
-    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 3805 "dhcp6_parser.cc"
+#line 3756 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 708: // $@118: %empty
-#line 2488 "dhcp6_parser.yy"
-                     {
+  case 712:
+#line 2498 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3814 "dhcp6_parser.cc"
+#line 3765 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 709: // sender_ip: "sender-ip" $@118 ":" "constant string"
-#line 2491 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 713:
+#line 2501 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3824 "dhcp6_parser.cc"
+#line 3775 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 710: // sender_port: "sender-port" ":" "integer"
-#line 2497 "dhcp6_parser.yy"
-                                       {
+  case 714:
+#line 2507 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
-    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 3834 "dhcp6_parser.cc"
+#line 3785 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 711: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2503 "dhcp6_parser.yy"
-                                             {
+  case 715:
+#line 2513 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
-    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 3844 "dhcp6_parser.cc"
+#line 3795 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 712: // $@119: %empty
-#line 2509 "dhcp6_parser.yy"
-                           {
+  case 716:
+#line 2519 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3853 "dhcp6_parser.cc"
+#line 3804 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 713: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
-#line 2512 "dhcp6_parser.yy"
-                           {
-    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
+  case 717:
+#line 2522 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3862 "dhcp6_parser.cc"
+#line 3813 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 714: // ncr_protocol_value: "UDP"
-#line 2518 "dhcp6_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3868 "dhcp6_parser.cc"
+  case 718:
+#line 2528 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3819 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 715: // ncr_protocol_value: "TCP"
-#line 2519 "dhcp6_parser.yy"
-        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3874 "dhcp6_parser.cc"
+  case 719:
+#line 2529 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3825 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 716: // $@120: %empty
-#line 2522 "dhcp6_parser.yy"
-                       {
+  case 720:
+#line 2532 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3883 "dhcp6_parser.cc"
+#line 3834 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 717: // ncr_format: "ncr-format" $@120 ":" "JSON"
-#line 2525 "dhcp6_parser.yy"
-             {
+  case 721:
+#line 2535 "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 3893 "dhcp6_parser.cc"
+#line 3844 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 718: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2532 "dhcp6_parser.yy"
-                                                         {
+  case 722:
+#line 2542 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
-    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 3903 "dhcp6_parser.cc"
+#line 3854 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 719: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2539 "dhcp6_parser.yy"
-                                                                 {
+  case 723:
+#line 2549 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
-    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 3913 "dhcp6_parser.cc"
+#line 3864 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 720: // $@121: %empty
-#line 2546 "dhcp6_parser.yy"
-                                             {
+  case 724:
+#line 2556 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3922 "dhcp6_parser.cc"
+#line 3873 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 721: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
-#line 2549 "dhcp6_parser.yy"
-                                       {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
+  case 725:
+#line 2559 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3931 "dhcp6_parser.cc"
+#line 3882 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 722: // $@122: %empty
-#line 2555 "dhcp6_parser.yy"
-                                       {
+  case 726:
+#line 2565 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3940 "dhcp6_parser.cc"
+#line 3891 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 723: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
-#line 2558 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 727:
+#line 2568 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3950 "dhcp6_parser.cc"
+#line 3901 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 724: // $@123: %empty
-#line 2565 "dhcp6_parser.yy"
-                                         {
+  case 728:
+#line 2575 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3959 "dhcp6_parser.cc"
+#line 3910 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 725: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
-#line 2568 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 729:
+#line 2578 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3969 "dhcp6_parser.cc"
+#line 3920 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 726: // $@124: %empty
-#line 2575 "dhcp6_parser.yy"
-                                                         {
+  case 730:
+#line 2585 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3978 "dhcp6_parser.cc"
+#line 3929 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 727: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
-#line 2578 "dhcp6_parser.yy"
-               {
-    ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 731:
+#line 2588 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3988 "dhcp6_parser.cc"
+#line 3939 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 728: // $@125: %empty
-#line 2587 "dhcp6_parser.yy"
-                               {
+  case 732:
+#line 2597 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     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 4000 "dhcp6_parser.cc"
+#line 3951 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 729: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
-#line 2593 "dhcp6_parser.yy"
-                                                            {
+  case 733:
+#line 2603 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4010 "dhcp6_parser.cc"
+#line 3961 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 730: // $@126: %empty
-#line 2599 "dhcp6_parser.yy"
-                                   {
+  case 734:
+#line 2609 "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 4020 "dhcp6_parser.cc"
+#line 3971 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 731: // sub_config_control: "{" $@126 config_control_params "}"
-#line 2603 "dhcp6_parser.yy"
-                                       {
+  case 735:
+#line 2613 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     // No config_control params are required
     // parsing completed
 }
-#line 4029 "dhcp6_parser.cc"
+#line 3980 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 736: // $@127: %empty
-#line 2618 "dhcp6_parser.yy"
-                                   {
+  case 740:
+#line 2628 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     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 4041 "dhcp6_parser.cc"
+#line 3992 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 737: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
-#line 2624 "dhcp6_parser.yy"
-                                                      {
+  case 741:
+#line 2634 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4050 "dhcp6_parser.cc"
+#line 4001 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 738: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2629 "dhcp6_parser.yy"
-                                                             {
+  case 742:
+#line 2639 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
-    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("config-fetch-wait-time", value);
 }
-#line 4060 "dhcp6_parser.cc"
+#line 4011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 739: // $@128: %empty
-#line 2637 "dhcp6_parser.yy"
-                 {
+  case 743:
+#line 2647 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     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 4072 "dhcp6_parser.cc"
+#line 4023 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 740: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
-#line 2643 "dhcp6_parser.yy"
-                                                         {
+  case 744:
+#line 2653 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4081 "dhcp6_parser.cc"
+#line 4032 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 743: // $@129: %empty
-#line 2655 "dhcp6_parser.yy"
-                             {
+  case 747:
+#line 2665 "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 4091 "dhcp6_parser.cc"
+#line 4042 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 744: // logger_entry: "{" $@129 logger_params "}"
-#line 2659 "dhcp6_parser.yy"
-                               {
+  case 748:
+#line 2669 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 4099 "dhcp6_parser.cc"
+#line 4050 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 754: // debuglevel: "debuglevel" ":" "integer"
-#line 2676 "dhcp6_parser.yy"
-                                     {
+  case 758:
+#line 2686 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
-    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 4109 "dhcp6_parser.cc"
+#line 4060 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 755: // $@130: %empty
-#line 2682 "dhcp6_parser.yy"
-                   {
+  case 759:
+#line 2692 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4118 "dhcp6_parser.cc"
+#line 4069 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 756: // severity: "severity" $@130 ":" "constant string"
-#line 2685 "dhcp6_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 760:
+#line 2695 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 4128 "dhcp6_parser.cc"
+#line 4079 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 757: // $@131: %empty
-#line 2691 "dhcp6_parser.yy"
-                                    {
+  case 761:
+#line 2701 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     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 4140 "dhcp6_parser.cc"
+#line 4091 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 758: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
-#line 2697 "dhcp6_parser.yy"
-                                                                    {
+  case 762:
+#line 2707 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4149 "dhcp6_parser.cc"
+#line 4100 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 761: // $@132: %empty
-#line 2706 "dhcp6_parser.yy"
-                             {
+  case 765:
+#line 2716 "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 4159 "dhcp6_parser.cc"
+#line 4110 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 762: // output_entry: "{" $@132 output_params_list "}"
-#line 2710 "dhcp6_parser.yy"
-                                    {
+  case 766:
+#line 2720 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.stack_.pop_back();
 }
-#line 4167 "dhcp6_parser.cc"
+#line 4118 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 770: // $@133: %empty
-#line 2725 "dhcp6_parser.yy"
-               {
+  case 774:
+#line 2735 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4176 "dhcp6_parser.cc"
+#line 4127 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 771: // output: "output" $@133 ":" "constant string"
-#line 2728 "dhcp6_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 775:
+#line 2738 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4186 "dhcp6_parser.cc"
+#line 4137 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 772: // flush: "flush" ":" "boolean"
-#line 2734 "dhcp6_parser.yy"
-                           {
+  case 776:
+#line 2744 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
-    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 4196 "dhcp6_parser.cc"
+#line 4147 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 773: // maxsize: "maxsize" ":" "integer"
-#line 2740 "dhcp6_parser.yy"
-                               {
+  case 777:
+#line 2750 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
-    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 4206 "dhcp6_parser.cc"
+#line 4157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 774: // maxver: "maxver" ":" "integer"
-#line 2746 "dhcp6_parser.yy"
-                             {
+  case 778:
+#line 2756 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
-    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 4216 "dhcp6_parser.cc"
+#line 4167 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 775: // $@134: %empty
-#line 2752 "dhcp6_parser.yy"
-                 {
+  case 779:
+#line 2762 "dhcp6_parser.yy" // lalr1.cc:859
+    {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4225 "dhcp6_parser.cc"
+#line 4176 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 776: // pattern: "pattern" $@134 ":" "constant string"
-#line 2755 "dhcp6_parser.yy"
-               {
-    ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+  case 780:
+#line 2765 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4235 "dhcp6_parser.cc"
+#line 4186 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 4239 "dhcp6_parser.cc"
-
+#line 4190 "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.  |
   `--------------------------------------*/
@@ -4267,9 +4214,7 @@ namespace isc { namespace dhcp {
     if (!yyerrstatus_)
       {
         ++yynerrs_;
-        context yyctx (*this, yyla);
-        std::string msg = yysyntax_error_ (yyctx);
-        error (yyla.location, YY_MOVE (msg));
+        error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
       }
 
 
@@ -4280,7 +4225,7 @@ namespace isc { namespace dhcp {
            error, discard it.  */
 
         // Return failure if at end of input.
-        if (yyla.kind () == symbol_kind::S_YYEOF)
+        if (yyla.type_get () == yyeof_)
           YYABORT;
         else if (!yyla.empty ())
           {
@@ -4297,81 +4242,69 @@ 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;
-    YY_STACK_PRINT ();
     goto yyerrlab1;
 
-
   /*-------------------------------------------------------------.
   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   `-------------------------------------------------------------*/
   yyerrlab1:
     yyerrstatus_ = 3;   // Each real token shifted decrements this.
-    // Pop stack until we find a state that shifts the error token.
-    for (;;)
-      {
-        yyn = yypact_[+yystack_[0].state];
-        if (!yy_pact_value_is_default_ (yyn))
-          {
-            yyn += symbol_kind::S_YYerror;
-            if (0 <= yyn && yyn <= yylast_
-                && yycheck_[yyn] == symbol_kind::S_YYerror)
-              {
-                yyn = yytable_[yyn];
-                if (0 < yyn)
-                  break;
-              }
-          }
-
-        // Pop the current state because it cannot handle the error token.
-        if (yystack_.size () == 1)
-          YYABORT;
-
-        yyerror_range[1].location = yystack_[0].location;
-        yy_destroy_ ("Error: popping", yystack_[0]);
-        yypop_ ();
-        YY_STACK_PRINT ();
-      }
     {
       stack_symbol_type error_token;
+      for (;;)
+        {
+          yyn = yypact_[yystack_[0].state];
+          if (!yy_pact_value_is_default_ (yyn))
+            {
+              yyn += yyterror_;
+              if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+                {
+                  yyn = yytable_[yyn];
+                  if (0 < yyn)
+                    break;
+                }
+            }
+
+          // Pop the current state because it cannot handle the error token.
+          if (yystack_.size () == 1)
+            YYABORT;
+
+          yyerror_range[1].location = yystack_[0].location;
+          yy_destroy_ ("Error: popping", yystack_[0]);
+          yypop_ ();
+          YY_STACK_PRINT ();
+        }
 
       yyerror_range[2].location = yyla.location;
       YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
 
       // Shift the error token.
-      error_token.state = state_type (yyn);
-      yypush_ ("Shifting", YY_MOVE (error_token));
+      error_token.state = yyn;
+      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);
@@ -4379,7 +4312,6 @@ namespace isc { namespace dhcp {
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
-    YY_STACK_PRINT ();
     while (1 < yystack_.size ())
       {
         yy_destroy_ ("Cleanup: popping", yystack_[0]);
@@ -4388,12 +4320,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);
 
@@ -4404,109 +4336,26 @@ namespace isc { namespace dhcp {
           }
         throw;
       }
-#endif // YY_EXCEPTIONS
   }
 
   void
   Dhcp6Parser::error (const syntax_error& yyexc)
   {
-    error (yyexc.location, yyexc.what ());
-  }
-
-  /* Return YYSTR after stripping away unnecessary quotes and
-     backslashes, so that it's suitable for yyerror.  The heuristic is
-     that double-quoting is unnecessary unless the string contains an
-     apostrophe, a comma, or backslash (other than backslash-backslash).
-     YYSTR is taken from yytname.  */
-  std::string
-  Dhcp6Parser::yytnamerr_ (const char *yystr)
-  {
-    if (*yystr == '"')
-      {
-        std::string yyr;
-        char const *yyp = yystr;
-
-        for (;;)
-          switch (*++yyp)
-            {
-            case '\'':
-            case ',':
-              goto do_not_strip_quotes;
-
-            case '\\':
-              if (*++yyp != '\\')
-                goto do_not_strip_quotes;
-              else
-                goto append;
-
-            append:
-            default:
-              yyr += *yyp;
-              break;
-
-            case '"':
-              return yyr;
-            }
-      do_not_strip_quotes: ;
-      }
-
-    return yystr;
+    error (yyexc.location, yyexc.what());
   }
 
+  // Generate an error message.
   std::string
-  Dhcp6Parser::symbol_name (symbol_kind_type yysymbol)
-  {
-    return yytnamerr_ (yytname_[yysymbol]);
-  }
-
-
-
-  // Dhcp6Parser::context.
-  Dhcp6Parser::context::context (const Dhcp6Parser& yyparser, const symbol_type& yyla)
-    : yyparser_ (yyparser)
-    , yyla_ (yyla)
-  {}
-
-  int
-  Dhcp6Parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const
+  Dhcp6Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
   {
-    // Actual number of expected tokens
-    int yycount = 0;
-
-    int yyn = yypact_[+yyparser_.yystack_[0].state];
-    if (!yy_pact_value_is_default_ (yyn))
-      {
-        /* Start YYX at -YYN if negative to avoid negative indexes in
-           YYCHECK.  In other words, skip the first -YYN actions for
-           this state because they are default actions.  */
-        int yyxbegin = yyn < 0 ? -yyn : 0;
-        // Stay within bounds of both yycheck and yytname.
-        int yychecklim = yylast_ - yyn + 1;
-        int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-        for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
-          if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror
-              && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
-            {
-              if (!yyarg)
-                ++yycount;
-              else if (yycount == yyargn)
-                return 0;
-              else
-                yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx);
-            }
-      }
-
-    if (yyarg && yycount == 0 && 0 < yyargn)
-      yyarg[0] = symbol_kind::S_YYEMPTY;
-    return yycount;
-  }
-
-
+    // Number of reported tokens (one for the "unexpected", one per
+    // "expected").
+    size_t yycount = 0;
+    // Its maximum.
+    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+    // Arguments of yyformat.
+    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 
-  int
-  Dhcp6Parser::yy_syntax_error_arguments_ (const context& yyctx,
-                                                 symbol_kind_type yyarg[], int yyargn) const
-  {
     /* There are many possibilities here to consider:
        - If this state is a consistent state with a default action, then
          the only way this function was invoked is if the default action
@@ -4525,32 +4374,41 @@ namespace isc { namespace dhcp {
        - Of course, the expected token list depends on states to have
          correct lookahead information, and it depends on the parser not
          to perform extra reductions after fetching a lookahead from the
-         scanner and before detecting a syntax error.  Thus, state merging
-         (from LALR or IELR) and default reductions corrupt the expected
-         token list.  However, the list is correct for canonical LR with
-         one exception: it will still contain any token that will not be
-         accepted due to an error action in a later state.
+         scanner and before detecting a syntax error.  Thus, state
+         merging (from LALR or IELR) and default reductions corrupt the
+         expected token list.  However, the list is correct for
+         canonical LR with one exception: it will still contain any
+         token that will not be accepted due to an error action in a
+         later state.
     */
-
-    if (!yyctx.lookahead ().empty ())
+    if (!yyla.empty ())
       {
-        if (yyarg)
-          yyarg[0] = yyctx.token ();
-        int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
-        return yyn + 1;
+        int yytoken = yyla.type_get ();
+        yyarg[yycount++] = yytname_[yytoken];
+        int yyn = yypact_[yystate];
+        if (!yy_pact_value_is_default_ (yyn))
+          {
+            /* Start YYX at -YYN if negative to avoid negative indexes in
+               YYCHECK.  In other words, skip the first -YYN actions for
+               this state because they are default actions.  */
+            int yyxbegin = yyn < 0 ? -yyn : 0;
+            // Stay within bounds of both yycheck and yytname.
+            int yychecklim = yylast_ - yyn + 1;
+            int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
+            for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
+              if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
+                  && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
+                {
+                  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                    {
+                      yycount = 1;
+                      break;
+                    }
+                  else
+                    yyarg[yycount++] = yytname_[yyx];
+                }
+          }
       }
-    return 0;
-  }
-
-  // Generate an error message.
-  std::string
-  Dhcp6Parser::yysyntax_error_ (const context& yyctx) const
-  {
-    // Its maximum.
-    enum { YYARGS_MAX = 5 };
-    // Arguments of yyformat.
-    symbol_kind_type yyarg[YYARGS_MAX];
-    int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
 
     char const* yyformat = YY_NULLPTR;
     switch (yycount)
@@ -4559,23 +4417,22 @@ 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_
       }
 
     std::string yyres;
     // Argument number.
-    std::ptrdiff_t yyi = 0;
+    size_t yyi = 0;
     for (char const* yyp = yyformat; *yyp; ++yyp)
       if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
         {
-          yyres += symbol_name (yyarg[yyi++]);
+          yyres += yytnamerr_ (yyarg[yyi++]);
           ++yyp;
         }
       else
@@ -4584,841 +4441,847 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -944;
+  const short int Dhcp6Parser::yypact_ninf_ = -949;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
-  const short
+  const short int
   Dhcp6Parser::yypact_[] =
   {
-     186,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,    37,    33,    44,    62,    64,
-      87,    95,    99,   103,   107,   116,   118,   147,   148,   205,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,    33,    -4,
-     203,   115,    39,   499,    10,   235,   222,   151,   117,    67,
-     -74,   605,    71,  -944,   223,   225,   234,   233,   247,  -944,
-     299,  -944,  -944,  -944,  -944,  -944,  -944,   263,   304,   312,
-     322,   330,   341,   363,   384,   390,   391,   406,   407,   409,
-     410,  -944,   412,   413,   420,   424,   426,  -944,  -944,  -944,
-     428,   438,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   444,  -944,
-    -944,  -944,  -944,  -944,  -944,   448,  -944,   449,  -944,    51,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   452,  -944,
-      54,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   458,   460,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-      75,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,   101,  -944,  -944,  -944,  -944,  -944,   463,  -944,
-     464,   465,  -944,  -944,  -944,  -944,  -944,  -944,   109,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   377,   294,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   379,  -944,  -944,   468,
-    -944,  -944,  -944,   469,  -944,  -944,   470,   473,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   480,   484,  -944,  -944,  -944,  -944,   481,   488,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   150,  -944,  -944,  -944,   489,  -944,  -944,   490,  -944,
-     491,   492,  -944,  -944,   494,   496,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,   206,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   497,   207,  -944,  -944,  -944,  -944,    33,    33,  -944,
-     307,   504,  -944,   506,   508,   509,   511,   516,   519,   326,
-     328,   329,   332,   333,   334,   336,   337,   355,   340,   357,
-     358,   360,   369,   525,   370,   372,   371,   373,   374,   534,
-     535,   569,   375,   376,   574,   575,   577,   579,   580,   581,
-     582,   583,   592,   593,   594,   595,   596,   597,   599,   600,
-     415,   602,   604,   608,   609,   611,   612,   408,   613,  -944,
-     115,  -944,   615,   419,    39,  -944,   618,   619,   620,   621,
-     622,   429,   430,   623,   625,   626,   499,  -944,   628,    10,
-    -944,   629,   435,   631,   437,   442,   235,  -944,   633,   639,
-     640,   641,   642,   643,   644,  -944,   222,  -944,   645,   646,
-     453,   647,   649,   655,   459,  -944,   117,   657,   462,   466,
-    -944,    67,   660,   661,    14,  -944,   467,   662,   665,   471,
-     669,   475,   476,   672,   674,   478,   479,   692,   703,   711,
-     712,   605,  -944,   713,   520,    71,  -944,  -944,  -944,   714,
-     485,   522,   715,   716,   717,   718,   723,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   523,  -944,  -944,  -944,  -944,  -944,    55,   533,   536,
-    -944,  -944,   730,   731,   732,   733,   540,   382,   734,   736,
-     737,   738,   739,   742,   744,   745,   746,   747,  -944,   748,
-     763,   764,   765,   546,   553,  -944,   768,  -944,   769,  -944,
-    -944,   770,   771,   554,   584,   585,  -944,  -944,   769,   586,
-     772,  -944,   587,  -944,   588,  -944,   589,  -944,  -944,  -944,
-     769,   769,   769,   590,   591,   598,   601,  -944,   603,   606,
-    -944,   607,   610,   614,  -944,  -944,   616,  -944,  -944,  -944,
-     617,   733,  -944,  -944,   624,   627,  -944,   630,  -944,  -944,
-     -19,   635,  -944,  -944,    55,   632,   634,   636,  -944,   775,
-    -944,  -944,    33,   115,  -944,    71,    39,   242,   242,   774,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   783,
-     784,   785,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-     786,   -76,    33,   290,   688,   788,   790,   791,    73,   228,
-     -46,    42,   202,   605,  -944,  -944,   793,  -944,  -944,   799,
-     800,  -944,  -944,  -944,  -944,  -944,   -52,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   774,  -944,   227,   239,
-     245,  -944,  -944,  -944,  -944,   807,   809,   812,   813,   814,
-    -944,   815,   816,  -944,  -944,  -944,   817,   819,   820,   822,
-    -944,   291,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,   292,  -944,   821,   826,  -944,  -944,   825,
-     830,  -944,  -944,   831,   833,  -944,  -944,   832,   836,  -944,
-    -944,   834,   838,  -944,  -944,  -944,    57,  -944,  -944,  -944,
-     837,  -944,  -944,  -944,   187,  -944,  -944,  -944,  -944,   293,
-    -944,  -944,  -944,   254,  -944,  -944,   839,   841,  -944,  -944,
-     840,   844,  -944,   845,   846,   847,   848,   849,   850,   302,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   851,
-     852,   853,  -944,  -944,  -944,  -944,   324,  -944,  -944,  -944,
-    -944,  -944,  -944,   854,   855,   856,  -944,   325,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   339,
-    -944,  -944,  -944,   857,  -944,   858,  -944,  -944,  -944,   350,
-    -944,  -944,  -944,  -944,  -944,   351,  -944,   258,  -944,   650,
-    -944,   859,   860,  -944,  -944,   861,   863,  -944,  -944,  -944,
-     862,  -944,   865,  -944,  -944,  -944,   864,   868,   869,   870,
-     670,   663,   676,   675,   678,   874,   680,   681,   877,   878,
-     879,   685,   686,   687,   690,   242,  -944,  -944,   242,  -944,
-     774,   499,  -944,   783,   117,  -944,   784,    67,  -944,   785,
-     637,  -944,   786,   -76,  -944,  -944,   290,  -944,   882,   688,
-    -944,   259,   788,  -944,   222,  -944,   790,   -74,  -944,   791,
-     693,   695,   696,   699,   706,   708,    73,  -944,   883,   887,
-     709,   724,   725,   228,  -944,   735,   726,   740,   -46,  -944,
-     913,   941,    42,  -944,   750,   960,   777,   966,   202,  -944,
-    -944,   214,   793,  -944,  -944,   967,   974,    10,  -944,   799,
-     235,  -944,   800,   976,  -944,  -944,   414,   794,   805,   808,
-    -944,  -944,  -944,  -944,  -944,   818,  -944,  -944,   823,   827,
-     828,  -944,  -944,  -944,  -944,  -944,   352,  -944,   353,  -944,
-     999,  -944,  1004,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   354,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,   829,  -944,  -944,   980,  -944,
-    -944,  -944,  -944,  -944,  1006,  1014,  -944,  -944,  -944,  -944,
-    -944,  1010,  -944,   381,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,   289,   835,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,   843,   866,  -944,  -944,   867,  -944,    33,  -944,
-    -944,  1016,  -944,  -944,  -944,  -944,  -944,   383,  -944,  -944,
-    -944,  -944,  -944,  -944,   871,   393,  -944,   399,  -944,   872,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   637,  -944,  -944,  1019,
-     873,  -944,   259,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  1020,   880,  1025,   214,  -944,  -944,
-    -944,  -944,  -944,  -944,   875,  -944,  -944,  1027,  -944,   884,
-    -944,  -944,  1023,  -944,  -944,   338,  -944,   -32,  1023,  -944,
-    -944,  1030,  1031,  1032,  -944,   401,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  1033,   876,   881,   885,  1034,   -32,  -944,
-     888,  -944,  -944,  -944,   889,  -944,  -944,  -944
+     190,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,    39,    33,    62,    64,    78,
+      89,    99,   103,   107,   131,   138,   217,   231,   244,   254,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,    33,  -132,
+     119,   115,    49,   505,   258,   235,   221,   127,   120,   283,
+     -75,   537,   144,  -949,   311,   226,   239,   242,   294,  -949,
+     323,  -949,  -949,  -949,  -949,  -949,  -949,   328,   338,   339,
+     358,   386,   404,   405,   408,   409,   411,   414,   417,   424,
+     426,  -949,   428,   433,   436,   437,   439,  -949,  -949,  -949,
+     440,   442,   448,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   452,
+    -949,  -949,  -949,  -949,  -949,  -949,   457,  -949,   462,  -949,
+      60,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+     464,  -949,    94,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,   467,   468,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,   101,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,   109,  -949,  -949,  -949,  -949,
+    -949,   469,  -949,   472,   473,  -949,  -949,  -949,  -949,  -949,
+    -949,   113,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   357,
+     343,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   390,
+    -949,  -949,   476,  -949,  -949,  -949,   479,  -949,  -949,   477,
+     481,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   482,   484,  -949,  -949,  -949,  -949,
+     485,   489,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   128,  -949,  -949,  -949,   491,  -949,
+    -949,   492,  -949,   493,   494,  -949,  -949,   495,   496,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,   129,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   498,   186,  -949,  -949,  -949,  -949,
+      33,    33,  -949,   306,   500,  -949,   508,   510,   512,   513,
+     515,   520,   309,   327,   329,   331,   333,   334,   335,   336,
+     337,   341,   344,   346,   340,   362,   534,   363,   364,   373,
+     374,   376,   539,   561,   575,   378,   379,   380,   579,   580,
+     581,   582,   584,   586,   587,   588,   589,   590,   599,   600,
+     601,   602,   604,   605,   412,   607,   609,   611,   612,   615,
+     616,   419,   618,  -949,   115,  -949,   619,   422,    49,  -949,
+     625,   626,   627,   628,   629,   434,   435,   631,   632,   634,
+     505,  -949,   635,   258,  -949,   636,   441,   638,   446,   449,
+     235,  -949,   644,   646,   647,   648,   649,   650,   651,  -949,
+     221,  -949,   652,   653,   458,   660,   661,   662,   466,  -949,
+     120,   665,   470,   471,  -949,   283,   666,   667,    67,  -949,
+     474,   670,   671,   480,   673,   483,   486,   677,   680,   487,
+     501,   681,   683,   684,   701,   537,  -949,   702,   507,   144,
+    -949,  -949,  -949,   704,   705,   514,   707,   726,   727,   728,
+     742,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,   551,  -949,  -949,  -949,  -949,
+    -949,  -110,   552,   553,  -949,  -949,  -949,   748,   749,   750,
+     751,   557,   326,   752,   754,   755,   756,   757,   758,   760,
+     763,   764,   767,  -949,   768,   769,   770,   771,   563,   583,
+    -949,   774,  -949,   775,  -949,  -949,   776,   778,   585,   591,
+     592,  -949,  -949,   775,   593,   779,  -949,   594,  -949,   595,
+    -949,   596,  -949,  -949,  -949,   775,   775,   775,   598,   603,
+     606,   608,  -949,   610,   613,  -949,   614,   617,   620,  -949,
+    -949,   621,  -949,  -949,  -949,   622,   751,  -949,  -949,   623,
+     624,  -949,   630,  -949,  -949,  -113,   541,  -949,  -949,  -110,
+     633,   637,   639,  -949,   782,  -949,  -949,    33,   115,  -949,
+     144,    49,   243,   243,   791,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   792,   793,   794,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,   796,   -79,    33,   149,   682,
+     797,   799,   801,    23,   167,     4,     9,    -7,   537,  -949,
+    -949,   803,  -949,  -949,   804,   807,  -949,  -949,  -949,  -949,
+    -949,   -70,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,   791,  -949,   199,   201,   219,  -949,  -949,  -949,  -949,
+     811,   813,   814,   820,   821,  -949,   822,   823,  -949,  -949,
+    -949,   824,   826,   827,   829,  -949,   222,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   223,  -949,
+     828,   832,  -949,  -949,   831,   836,  -949,  -949,   834,   838,
+    -949,  -949,   837,   839,  -949,  -949,   840,   841,  -949,  -949,
+    -949,    75,  -949,  -949,  -949,   842,  -949,  -949,  -949,   122,
+    -949,  -949,  -949,  -949,   233,  -949,  -949,  -949,   236,  -949,
+    -949,   845,   844,  -949,  -949,   846,   850,  -949,   851,   852,
+     853,   854,   855,   856,   246,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   857,   858,   859,  -949,  -949,  -949,
+    -949,   284,  -949,  -949,  -949,  -949,  -949,  -949,   860,   861,
+     862,  -949,   291,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,   292,  -949,  -949,  -949,   863,  -949,
+     864,  -949,  -949,  -949,   293,  -949,  -949,  -949,  -949,  -949,
+     305,  -949,   256,  -949,   655,  -949,   865,   866,  -949,  -949,
+     867,   869,  -949,  -949,  -949,   868,  -949,   871,  -949,  -949,
+    -949,   870,   874,   875,   876,   645,   668,   685,   679,   686,
+     878,   687,   688,   879,   880,   885,   690,   691,   692,   693,
+     243,  -949,  -949,   243,  -949,   791,   505,  -949,   792,   120,
+    -949,   793,   283,  -949,   794,   676,  -949,   796,   -79,  -949,
+    -949,   149,  -949,   888,   682,  -949,   261,   797,  -949,   221,
+    -949,   799,   -75,  -949,   801,   696,   697,   699,   700,   703,
+     710,    23,  -949,   908,   909,   722,   729,   730,   167,  -949,
+     739,   744,   781,     4,  -949,   924,   946,     9,  -949,   773,
+     952,   785,   965,    -7,  -949,  -949,   237,   803,  -949,  -949,
+     972,   979,   258,  -949,   804,   235,  -949,   807,   985,  -949,
+    -949,   191,   798,   812,   817,  -949,  -949,  -949,  -949,  -949,
+     830,  -949,  -949,   833,   835,   843,  -949,  -949,  -949,  -949,
+    -949,   342,  -949,   360,  -949,  1004,  -949,  1012,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,   361,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,   847,  -949,  -949,  1017,  -949,  -949,  -949,  -949,  -949,
+    1014,  1022,  -949,  -949,  -949,  -949,  -949,  1018,  -949,   388,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   220,   848,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   872,   873,
+    -949,  -949,   882,  -949,    33,  -949,  -949,  1024,  -949,  -949,
+    -949,  -949,  -949,   394,  -949,  -949,  -949,  -949,  -949,  -949,
+     883,   396,  -949,   402,  -949,   886,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,   676,  -949,  -949,  1026,   849,  -949,   261,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    1027,   877,  1031,   237,  -949,  -949,  -949,  -949,  -949,  -949,
+     887,  -949,  -949,  1032,  -949,   889,  -949,  -949,  1033,  -949,
+    -949,   312,  -949,   211,  1033,  -949,  -949,  1034,  1035,  1037,
+    -949,   403,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  1039,
+     890,   884,   891,  1040,   211,  -949,   894,  -949,  -949,  -949,
+     895,  -949,  -949,  -949
   };
 
-  const short
+  const unsigned short int
   Dhcp6Parser::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,    62,     7,   166,     9,   328,    11,
-     512,    13,   537,    15,   567,    17,   437,    19,   445,    21,
-     482,    23,   293,    25,   680,    27,   730,    29,    47,    41,
-       0,     0,     0,     0,     0,     0,   569,     0,   447,   484,
+      35,    36,    58,     5,    62,     7,   168,     9,   330,    11,
+     516,    13,   541,    15,   571,    17,   441,    19,   449,    21,
+     486,    23,   295,    25,   684,    27,   734,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   573,     0,   451,   488,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    60,
-       0,   123,   728,   164,   178,   180,   182,     0,     0,     0,
+       0,   124,   732,   166,   180,   182,   184,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   163,     0,     0,     0,     0,     0,   143,   150,   152,
+       0,     0,     0,   322,   439,   478,   529,   531,   384,   392,
+     255,   272,   263,   248,   608,   563,   287,   306,   629,     0,
+     274,   653,   666,   682,   156,   158,     0,   743,     0,   123,
+       0,    64,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,   102,   103,   104,   105,   106,    75,   110,   111,   112,
+     113,   114,   115,   116,   117,   108,   109,   118,   119,   120,
+     100,   122,    78,    79,    80,    81,    97,    82,    84,    83,
+     121,    88,    89,    76,   101,    77,    86,    87,    95,    96,
+      98,    85,    90,    91,    92,    93,    94,    99,   107,   177,
+       0,   176,     0,   170,   172,   173,   174,   175,   508,   533,
+     374,   376,   378,     0,     0,   382,   380,   602,   373,   334,
+     335,   336,   337,   338,   339,   340,   341,   357,   358,   359,
+     360,   361,   364,   365,   366,   367,   368,   369,   370,   371,
+     362,   363,   372,     0,   332,   345,   346,   347,   350,   351,
+     353,   348,   349,   342,   343,   355,   356,   344,   352,   354,
+     527,   526,   522,   523,   521,     0,   518,   520,   524,   525,
+     556,     0,   559,     0,     0,   555,   549,   550,   548,   553,
+     554,     0,   543,   545,   546,   551,   552,   547,   600,   588,
+     590,   592,   594,   596,   598,   587,   584,   585,   586,     0,
+     574,   575,   579,   580,   577,   581,   582,   583,   578,     0,
+     468,   228,     0,   472,   470,   475,     0,   464,   465,     0,
+     452,   453,   455,   467,   456,   457,   458,   474,   459,   460,
+     461,   462,   463,   502,     0,     0,   500,   501,   504,   505,
+       0,   489,   490,   492,   493,   494,   495,   496,   497,   498,
+     499,   302,   304,   299,     0,   297,   300,   301,     0,   707,
+     709,     0,   712,     0,     0,   716,   720,     0,     0,   724,
+     726,   728,   730,   705,   703,   704,     0,   686,   688,   700,
+     689,   690,   691,   692,   693,   694,   695,   696,   697,   698,
+     699,   701,   702,   740,     0,     0,   736,   738,   739,    46,
+       0,     0,    39,     0,     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,   161,     0,     0,     0,     0,     0,   142,   149,   151,
-       0,     0,   320,   435,   474,   525,   527,   381,   389,   253,
-     270,   261,   246,   604,   559,   285,   304,   625,     0,   272,
-     649,   662,   678,   154,   156,     0,   739,     0,   122,     0,
-      64,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-     102,   103,   104,   105,   106,    75,   110,   111,   112,   113,
-     114,   115,   116,   108,   109,   117,   118,   119,   100,   121,
-      78,    79,    80,    81,    97,    82,    84,    83,   120,    88,
-      89,    76,   101,    77,    86,    87,    95,    96,    98,    85,
-      90,    91,    92,    93,    94,    99,   107,   175,     0,   174,
-       0,   168,   170,   171,   172,   173,   504,   529,   371,   373,
-     375,     0,     0,   379,   377,   598,   370,   332,   333,   334,
-     335,   336,   337,   338,   339,   355,   356,   357,   358,   359,
-     362,   363,   364,   365,   366,   367,   368,   360,   361,   369,
-       0,   330,   343,   344,   345,   348,   349,   351,   346,   347,
-     340,   341,   353,   354,   342,   350,   352,   523,   522,   518,
-     519,   517,     0,   514,   516,   520,   521,   552,     0,   555,
-       0,     0,   551,   545,   546,   544,   549,   550,     0,   539,
-     541,   542,   547,   548,   543,   596,   584,   586,   588,   590,
-     592,   594,   583,   580,   581,   582,     0,   570,   571,   575,
-     576,   573,   577,   578,   579,   574,     0,   464,   226,     0,
-     468,   466,   471,     0,   460,   461,     0,   448,   449,   451,
-     463,   452,   453,   454,   470,   455,   456,   457,   458,   459,
-     498,     0,     0,   496,   497,   500,   501,     0,   485,   486,
-     488,   489,   490,   491,   492,   493,   494,   495,   300,   302,
-     297,     0,   295,   298,   299,     0,   703,   705,     0,   708,
-       0,     0,   712,   716,     0,     0,   720,   722,   724,   726,
-     701,   699,   700,     0,   682,   684,   696,   685,   686,   687,
-     688,   689,   690,   691,   692,   693,   694,   695,   697,   698,
-     736,     0,     0,   732,   734,   735,    46,     0,     0,    39,
-       0,     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,    57,     0,    63,     0,     0,     0,   169,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   331,     0,     0,   517,     0,     0,     0,     0,     0,
+       0,   542,     0,     0,     0,     0,     0,     0,     0,   572,
+       0,   442,     0,     0,     0,     0,     0,     0,     0,   450,
+       0,     0,     0,     0,   487,     0,     0,     0,     0,   296,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    57,
-       0,    63,     0,     0,     0,   167,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   329,     0,     0,
-     513,     0,     0,     0,     0,     0,     0,   538,     0,     0,
-       0,     0,     0,     0,     0,   568,     0,   438,     0,     0,
-       0,     0,     0,     0,     0,   446,     0,     0,     0,     0,
-     483,     0,     0,     0,     0,   294,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   685,     0,     0,     0,
+     735,    50,    43,     0,     0,     0,     0,     0,     0,     0,
+       0,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,     0,   161,   162,   140,   141,
+     142,     0,     0,     0,   154,   155,   160,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   681,     0,     0,     0,   731,    50,    43,     0,
-       0,     0,     0,     0,     0,     0,     0,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,     0,   159,   160,   139,   140,   141,     0,     0,     0,
-     153,   158,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   648,     0,
-       0,     0,     0,     0,     0,   163,     0,    65,     0,   177,
-     169,     0,     0,     0,     0,     0,   387,   388,     0,     0,
-       0,   331,     0,   515,     0,   554,     0,   557,   558,   540,
-       0,     0,     0,     0,     0,     0,     0,   572,     0,     0,
-     462,     0,     0,     0,   473,   450,     0,   502,   503,   487,
-       0,     0,   296,   702,     0,     0,   707,     0,   710,   711,
-       0,     0,   718,   719,     0,     0,     0,     0,   683,     0,
-     738,   733,     0,     0,   124,     0,     0,     0,     0,   184,
-     162,   144,   145,   146,   147,   148,   143,   150,   152,   322,
-     439,   476,    40,   526,   528,   383,   384,   385,   386,   382,
-     391,     0,    47,     0,     0,     0,   561,   287,     0,     0,
-       0,     0,     0,     0,   155,   157,     0,    51,   176,   506,
-     531,   372,   374,   376,   380,   378,     0,   524,   553,   556,
-     597,   585,   587,   589,   591,   593,   595,   465,   227,   469,
-     467,   472,   499,   301,   303,   704,   706,   709,   714,   715,
-     713,   717,   721,   723,   725,   727,   184,    44,     0,     0,
-       0,   213,   219,   221,   223,     0,     0,     0,     0,     0,
-     237,     0,     0,   240,   242,   244,     0,     0,     0,     0,
-     212,     0,   190,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   204,   211,   205,   206,   207,   202,   203,
-     208,   209,   210,     0,   188,     0,   185,   186,   326,     0,
-     323,   324,   443,     0,   440,   441,   480,     0,   477,   478,
-     395,     0,   392,   393,   259,   260,     0,   255,   257,   258,
-       0,   268,   269,   265,     0,   263,   266,   267,   251,     0,
-     248,   250,   608,     0,   606,   565,     0,   562,   563,   291,
-       0,   288,   289,     0,     0,     0,     0,     0,     0,     0,
-     306,   308,   309,   310,   311,   312,   313,   638,   644,     0,
-       0,     0,   637,   634,   635,   636,     0,   627,   629,   632,
-     630,   631,   633,     0,     0,     0,   281,     0,   274,   276,
-     277,   278,   279,   280,   658,   660,   657,   655,   656,     0,
-     651,   653,   654,     0,   673,     0,   676,   669,   670,     0,
-     664,   666,   667,   668,   671,     0,   743,     0,   741,    53,
-     510,     0,   507,   508,   535,     0,   532,   533,   602,   601,
-       0,   600,     0,    61,   729,   165,     0,     0,     0,     0,
+       0,     0,     0,   652,     0,     0,     0,     0,     0,     0,
+     165,     0,    65,     0,   179,   171,     0,     0,     0,     0,
+       0,   390,   391,     0,     0,     0,   333,     0,   519,     0,
+     558,     0,   561,   562,   544,     0,     0,     0,     0,     0,
+       0,     0,   576,     0,     0,   466,     0,     0,     0,   477,
+     454,     0,   506,   507,   491,     0,     0,   298,   706,     0,
+       0,   711,     0,   714,   715,     0,     0,   722,   723,     0,
+       0,     0,     0,   687,     0,   742,   737,     0,     0,   125,
+       0,     0,     0,     0,   186,   164,   145,   146,   147,   148,
+     149,   144,   151,   153,   324,   443,   480,    40,   530,   532,
+     386,   387,   388,   389,   385,   394,     0,    47,     0,     0,
+       0,   565,   289,     0,     0,     0,     0,     0,     0,   157,
+     159,     0,    51,   178,   510,   535,   375,   377,   379,   383,
+     381,     0,   528,   557,   560,   601,   589,   591,   593,   595,
+     597,   599,   469,   229,   473,   471,   476,   503,   303,   305,
+     708,   710,   713,   718,   719,   717,   721,   725,   727,   729,
+     731,   186,    44,     0,     0,     0,   215,   221,   223,   225,
+       0,     0,     0,     0,     0,   239,     0,     0,   242,   244,
+     246,     0,     0,     0,     0,   214,     0,   192,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   206,   213,
+     207,   208,   209,   204,   205,   210,   211,   212,     0,   190,
+       0,   187,   188,   328,     0,   325,   326,   447,     0,   444,
+     445,   484,     0,   481,   482,   398,     0,   395,   396,   261,
+     262,     0,   257,   259,   260,     0,   270,   271,   267,     0,
+     265,   268,   269,   253,     0,   250,   252,   612,     0,   610,
+     569,     0,   566,   567,   293,     0,   290,   291,     0,     0,
+       0,     0,     0,     0,     0,   308,   310,   311,   312,   313,
+     314,   315,   642,   648,     0,     0,     0,   641,   638,   639,
+     640,     0,   631,   633,   636,   634,   635,   637,     0,     0,
+       0,   283,     0,   276,   278,   279,   280,   281,   282,   662,
+     664,   661,   659,   660,     0,   655,   657,   658,     0,   677,
+       0,   680,   673,   674,     0,   668,   670,   671,   672,   675,
+       0,   747,     0,   745,    53,   514,     0,   511,   512,   539,
+       0,   536,   537,   606,   605,     0,   604,     0,    61,   733,
+     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,   179,   181,     0,   183,
-       0,     0,   321,     0,   447,   436,     0,   484,   475,     0,
-       0,   390,     0,     0,   254,   271,     0,   262,     0,     0,
-     247,   610,     0,   605,   569,   560,     0,     0,   286,     0,
-       0,     0,     0,     0,     0,     0,     0,   305,     0,     0,
-       0,     0,     0,     0,   626,     0,     0,     0,     0,   273,
-       0,     0,     0,   650,     0,     0,     0,     0,     0,   663,
-     679,     0,     0,   740,    55,     0,    54,     0,   505,     0,
-       0,   530,     0,     0,   599,   737,     0,     0,     0,     0,
-     225,   228,   229,   230,   231,     0,   239,   232,     0,     0,
-       0,   234,   235,   236,   233,   191,     0,   187,     0,   325,
-       0,   442,     0,   479,   434,   410,   411,   412,   414,   415,
-     416,   403,   404,   419,   420,   421,   422,   423,   426,   427,
-     428,   429,   430,   431,   432,   424,   425,   433,   399,   400,
-     401,   402,   408,   409,   407,   413,     0,   397,   405,   417,
-     418,   406,   394,   256,   264,     0,   249,   622,     0,   620,
-     621,   617,   618,   619,     0,   611,   612,   614,   615,   616,
-     607,     0,   564,     0,   290,   314,   315,   316,   317,   318,
-     319,   307,     0,     0,   643,   646,   647,   628,   282,   283,
-     284,   275,     0,     0,   652,   672,     0,   675,     0,   665,
-     757,     0,   755,   753,   747,   751,   752,     0,   745,   749,
-     750,   748,   742,    52,     0,     0,   509,     0,   534,     0,
-     215,   216,   217,   218,   214,   220,   222,   224,   238,   241,
-     243,   245,   189,   327,   444,   481,     0,   396,   252,     0,
-       0,   609,     0,   566,   292,   640,   641,   642,   639,   645,
-     659,   661,   674,   677,     0,     0,     0,     0,   744,    56,
-     511,   536,   603,   398,     0,   624,   613,     0,   754,     0,
-     746,   623,     0,   756,   761,     0,   759,     0,     0,   758,
-     770,     0,     0,     0,   775,     0,   763,   765,   766,   767,
-     768,   769,   760,     0,     0,     0,     0,     0,     0,   762,
-       0,   772,   773,   774,     0,   764,   771,   776
+       0,   181,   183,     0,   185,     0,     0,   323,     0,   451,
+     440,     0,   488,   479,     0,     0,   393,     0,     0,   256,
+     273,     0,   264,     0,     0,   249,   614,     0,   609,   573,
+     564,     0,     0,   288,     0,     0,     0,     0,     0,     0,
+       0,     0,   307,     0,     0,     0,     0,     0,     0,   630,
+       0,     0,     0,     0,   275,     0,     0,     0,   654,     0,
+       0,     0,     0,     0,   667,   683,     0,     0,   744,    55,
+       0,    54,     0,   509,     0,     0,   534,     0,     0,   603,
+     741,     0,     0,     0,     0,   227,   230,   231,   232,   233,
+       0,   241,   234,     0,     0,     0,   236,   237,   238,   235,
+     193,     0,   189,     0,   327,     0,   446,     0,   483,   438,
+     413,   414,   415,   417,   418,   419,   406,   407,   422,   423,
+     424,   425,   426,   429,   430,   431,   432,   433,   434,   435,
+     436,   427,   428,   437,   402,   403,   404,   405,   411,   412,
+     410,   416,     0,   400,   408,   420,   421,   409,   397,   258,
+     266,     0,   251,   626,     0,   624,   625,   621,   622,   623,
+       0,   615,   616,   618,   619,   620,   611,     0,   568,     0,
+     292,   316,   317,   318,   319,   320,   321,   309,     0,     0,
+     647,   650,   651,   632,   284,   285,   286,   277,     0,     0,
+     656,   676,     0,   679,     0,   669,   761,     0,   759,   757,
+     751,   755,   756,     0,   749,   753,   754,   752,   746,    52,
+       0,     0,   513,     0,   538,     0,   217,   218,   219,   220,
+     216,   222,   224,   226,   240,   243,   245,   247,   191,   329,
+     448,   485,     0,   399,   254,     0,     0,   613,     0,   570,
+     294,   644,   645,   646,   643,   649,   663,   665,   678,   681,
+       0,     0,     0,     0,   748,    56,   515,   540,   607,   401,
+       0,   628,   617,     0,   758,     0,   750,   627,     0,   760,
+     765,     0,   763,     0,     0,   762,   774,     0,     0,     0,
+     779,     0,   767,   769,   770,   771,   772,   773,   764,     0,
+       0,     0,     0,     0,     0,   766,     0,   776,   777,   778,
+       0,   768,   775,   780
   };
 
-  const short
+  const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   -10,  -944,  -544,  -944,
-     191,  -944,  -944,  -944,  -944,   342,  -944,  -565,  -944,  -944,
-    -944,   -71,  -944,  -944,  -944,  -944,  -944,  -944,   366,   572,
-    -944,  -944,   -59,   -43,   -42,   -40,   -39,   -28,   -27,   -26,
-     -23,   -21,   -15,    -9,    -3,  -944,    -1,    17,    18,    20,
-    -944,   385,    25,  -944,    28,  -944,    30,    32,  -944,    35,
-    -944,    38,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,   378,   571,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,   295,  -944,    86,  -944,  -656,    92,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   -67,  -944,
-    -694,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,    69,  -944,  -944,  -944,  -944,  -944,    77,  -678,  -944,
-    -944,  -944,  -944,    76,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,    47,  -944,  -944,  -944,  -944,  -944,  -944,  -944,    68,
-    -944,  -944,  -944,    66,   532,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,    63,  -944,  -944,  -944,  -944,  -944,  -944,  -943,
-    -944,  -944,  -944,    97,  -944,  -944,  -944,   100,   576,  -944,
-    -944,  -942,  -944,  -941,  -944,    41,  -944,    45,  -944,    40,
-    -944,  -944,  -944,  -935,  -944,  -944,  -944,  -944,    91,  -944,
-    -944,  -128,   989,  -944,  -944,  -944,  -944,  -944,   110,  -944,
-    -944,  -944,   114,  -944,   551,  -944,   -66,  -944,  -944,  -944,
-    -944,  -944,   -47,  -944,  -944,  -944,  -944,  -944,    13,  -944,
-    -944,  -944,   112,  -944,  -944,  -944,   121,  -944,   562,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-      56,  -944,  -944,  -944,    65,   652,  -944,  -944,   -55,  -944,
-       1,  -944,  -944,  -944,  -944,  -944,    58,  -944,  -944,  -944,
-      59,   638,  -944,  -944,  -944,  -944,  -944,  -944,  -944,   -57,
-    -944,  -944,  -944,   105,  -944,  -944,  -944,   111,  -944,   648,
-     367,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -934,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,   119,  -944,  -944,  -944,   -98,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,    93,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,    85,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,    80,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,   386,   559,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944,  -944,   427,   558,  -944,
-    -944,  -944,  -944,  -944,  -944,    82,  -944,  -944,  -102,  -944,
-    -944,  -944,  -944,  -944,  -944,  -122,  -944,  -944,  -141,  -944,
-    -944,  -944,  -944,  -944,  -944,  -944
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,   -10,  -949,  -549,  -949,
+     393,  -949,  -949,  -949,  -949,   345,  -949,  -580,  -949,  -949,
+    -949,   -71,  -949,  -949,  -949,  -949,  -949,  -949,   372,   640,
+    -949,  -949,   -59,   -43,   -42,   -40,   -39,   -28,   -27,   -26,
+     -23,   -21,   -15,    -9,    -3,  -949,    -1,    17,    18,    20,
+    -949,   384,    25,  -949,    28,  -949,    30,    32,    35,  -949,
+      38,  -949,    40,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,   375,   576,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,   296,  -949,    90,  -949,  -661,    98,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   -67,
+    -949,  -699,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,    76,  -949,  -949,  -949,  -949,  -949,    81,  -683,
+    -949,  -949,  -949,  -949,    80,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,    50,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+      68,  -949,  -949,  -949,    72,   538,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,    66,  -949,  -949,  -949,  -949,  -949,  -949,
+    -948,  -949,  -949,  -949,    97,  -949,  -949,  -949,   102,   597,
+    -949,  -949,  -947,  -949,  -946,  -949,    44,  -949,    48,  -949,
+      42,  -949,  -949,  -949,  -940,  -949,  -949,  -949,  -949,    92,
+    -949,  -949,  -122,   996,  -949,  -949,  -949,  -949,  -949,   104,
+    -949,  -949,  -949,   105,  -949,   558,  -949,   -66,  -949,  -949,
+    -949,  -949,  -949,   -47,  -949,  -949,  -949,  -949,  -949,    13,
+    -949,  -949,  -949,   116,  -949,  -949,  -949,   117,  -949,   570,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,    63,  -949,  -949,  -949,    69,   641,  -949,  -949,   -55,
+    -949,     1,  -949,  -949,  -949,  -949,  -949,    59,  -949,  -949,
+    -949,    65,   654,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+     -57,  -949,  -949,  -949,   108,  -949,  -949,  -949,   114,  -949,
+     657,   367,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -939,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,   118,  -949,  -949,  -949,   -96,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,    96,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,    91,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,    83,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,   389,   564,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   430,   562,
+    -949,  -949,  -949,  -949,  -949,  -949,    85,  -949,  -949,  -100,
+    -949,  -949,  -949,  -949,  -949,  -949,  -119,  -949,  -949,  -138,
+    -949,  -949,  -949,  -949,  -949,  -949,  -949
   };
 
-  const short
+  const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     693,    87,    88,    41,    68,    84,    85,   718,   919,  1025,
-    1026,   780,    43,    70,    90,   411,    45,    71,   149,   150,
-     151,   413,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     439,   686,   170,   440,   171,   441,   172,   173,   465,   174,
-     466,   175,   176,   177,   178,   433,   179,   180,   415,    47,
-      72,   210,   211,   212,   472,   213,   181,   416,   182,   417,
-     183,   418,   805,   806,   807,   958,   781,   782,   783,   936,
-    1174,   784,   937,   785,   938,   786,   939,   787,   788,   509,
-     789,   790,   791,   792,   793,   794,   795,   796,   797,   798,
-     945,   799,   800,   948,   801,   949,   802,   950,   184,   454,
-     839,   840,   841,   978,   185,   451,   826,   827,   828,   829,
-     186,   453,   834,   835,   836,   837,   187,   452,   188,   461,
-     887,   888,   889,   890,   891,   189,   457,   850,   851,   852,
-     987,    63,    80,   361,   362,   363,   522,   364,   523,   190,
-     458,   859,   860,   861,   862,   863,   864,   865,   866,   191,
-     444,   809,   810,   811,   961,    49,    73,   250,   251,   252,
-     478,   253,   479,   254,   480,   255,   484,   256,   483,   192,
-     449,   699,   258,   259,   193,   450,   821,   822,   823,   970,
-    1096,  1097,   194,   445,    57,    77,   813,   814,   815,   964,
-      59,    78,   326,   327,   328,   329,   330,   331,   332,   508,
-     333,   512,   334,   511,   335,   336,   513,   337,   195,   446,
-     817,   818,   819,   967,    61,    79,   347,   348,   349,   350,
-     351,   517,   352,   353,   354,   355,   261,   476,   921,   922,
-     923,  1027,    51,    74,   272,   273,   274,   488,   196,   447,
-     197,   448,   264,   477,   925,   926,   927,  1030,    53,    75,
-     288,   289,   290,   491,   291,   292,   493,   293,   294,   198,
-     456,   846,   847,   848,   984,    55,    76,   306,   307,   308,
-     309,   499,   310,   500,   311,   501,   312,   502,   313,   503,
-     314,   504,   315,   498,   266,   485,   930,   931,  1033,   199,
-     455,   843,   844,   981,  1114,  1115,  1116,  1117,  1118,  1189,
-    1119,   200,   459,   876,   877,   878,   998,  1198,   879,   880,
-     999,   881,   882,   201,   202,   462,   899,   900,   901,  1010,
-     902,  1011,   203,   463,   909,   910,   911,   912,  1015,   913,
-     914,  1017,   204,   464,    65,    81,   383,   384,   385,   386,
-     527,   387,   528,   388,   389,   530,   390,   391,   392,   533,
-     750,   393,   534,   394,   395,   396,   537,   397,   538,   398,
-     539,   399,   540,   205,   414,    67,    82,   402,   403,   404,
-     543,   405,   206,   468,   917,   918,  1021,  1157,  1158,  1159,
-    1160,  1206,  1161,  1204,  1225,  1226,  1227,  1235,  1236,  1237,
-    1243,  1238,  1239,  1240,  1241,  1247
+     698,    87,    88,    41,    68,    84,    85,   723,   924,  1030,
+    1031,   785,    43,    70,    90,   414,    45,    71,   150,   151,
+     152,   416,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     442,   691,   171,   443,   172,   444,   173,   174,   175,   469,
+     176,   470,   177,   178,   179,   180,   436,   181,   182,   418,
+      47,    72,   212,   213,   214,   476,   215,   183,   419,   184,
+     420,   185,   421,   810,   811,   812,   963,   786,   787,   788,
+     941,  1180,   789,   942,   790,   943,   791,   944,   792,   793,
+     513,   794,   795,   796,   797,   798,   799,   800,   801,   802,
+     803,   950,   804,   805,   953,   806,   954,   807,   955,   186,
+     458,   844,   845,   846,   983,   187,   455,   831,   832,   833,
+     834,   188,   457,   839,   840,   841,   842,   189,   456,   190,
+     465,   892,   893,   894,   895,   896,   191,   461,   855,   856,
+     857,   992,    63,    80,   364,   365,   366,   526,   367,   527,
+     192,   462,   864,   865,   866,   867,   868,   869,   870,   871,
+     193,   448,   814,   815,   816,   966,    49,    73,   253,   254,
+     255,   482,   256,   483,   257,   484,   258,   488,   259,   487,
+     194,   453,   704,   261,   262,   195,   454,   826,   827,   828,
+     975,  1102,  1103,   196,   449,    57,    77,   818,   819,   820,
+     969,    59,    78,   329,   330,   331,   332,   333,   334,   335,
+     512,   336,   516,   337,   515,   338,   339,   517,   340,   197,
+     450,   822,   823,   824,   972,    61,    79,   350,   351,   352,
+     353,   354,   521,   355,   356,   357,   358,   264,   480,   926,
+     927,   928,  1032,    51,    74,   275,   276,   277,   492,   198,
+     451,   199,   452,   267,   481,   930,   931,   932,  1035,    53,
+      75,   291,   292,   293,   495,   294,   295,   497,   296,   297,
+     200,   460,   851,   852,   853,   989,    55,    76,   309,   310,
+     311,   312,   503,   313,   504,   314,   505,   315,   506,   316,
+     507,   317,   508,   318,   502,   269,   489,   935,   936,  1038,
+     201,   459,   848,   849,   986,  1120,  1121,  1122,  1123,  1124,
+    1195,  1125,   202,   463,   881,   882,   883,  1003,  1204,   884,
+     885,  1004,   886,   887,   203,   204,   466,   904,   905,   906,
+    1015,   907,  1016,   205,   467,   914,   915,   916,   917,  1020,
+     918,   919,  1022,   206,   468,    65,    81,   386,   387,   388,
+     389,   531,   390,   532,   391,   392,   534,   393,   394,   395,
+     537,   755,   396,   538,   397,   398,   399,   541,   400,   542,
+     401,   543,   402,   544,   207,   417,    67,    82,   405,   406,
+     407,   547,   408,   208,   472,   922,   923,  1026,  1163,  1164,
+    1165,  1166,  1212,  1167,  1210,  1231,  1232,  1233,  1241,  1242,
+    1243,  1249,  1244,  1245,  1246,  1247,  1253
   };
 
-  const short
+  const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-     148,   209,   226,   268,   282,   302,    38,   324,   343,   360,
-     380,   325,   344,   345,   227,   873,   265,   214,   262,   275,
-     286,   304,   803,   338,   356,   833,   381,  1089,  1090,  1091,
-     228,   229,   346,   230,   231,  1095,  1101,    30,    31,   824,
-      32,   692,    33,   125,   126,   232,   233,   234,   358,   359,
-     235,    42,   236,   724,   470,   207,   208,   474,   237,   471,
-     973,   296,   475,   974,   238,   730,   731,   732,   928,    44,
-     239,    46,   240,   215,   263,   276,   287,   305,   486,   339,
-     357,   124,   382,   487,   400,   401,   260,   271,   285,   303,
-     241,   242,   267,   243,    48,   883,   884,   885,   244,   125,
-     126,   245,    50,   246,   489,   247,    52,   692,   248,   490,
-      54,   249,   496,   257,    56,   269,   283,   497,   223,   270,
-     284,   224,   825,    58,   147,    60,    91,    92,   125,   126,
-      93,   125,   126,    94,    95,    96,   358,   359,   317,   318,
-     340,   319,   320,   341,   342,  1230,   748,   749,  1231,  1232,
-    1233,  1234,   147,   524,    62,    64,   125,   126,   525,    97,
+     149,   211,   228,   271,   285,   305,    38,   327,   346,   363,
+     383,   328,   347,   348,   229,   878,   268,   216,   265,   278,
+     289,   307,   808,   341,   359,   838,   384,  1095,  1096,  1097,
+     230,   231,   349,   232,   233,  1101,  1107,   829,    31,    30,
+      32,   697,    33,   729,   299,   234,   235,   236,   361,   362,
+     237,   933,   238,   753,   754,   735,   736,   737,   239,   686,
+     687,   688,   689,   474,   240,   209,   210,    86,   475,    42,
+     241,    44,   242,   217,   266,   279,   290,   308,   978,   342,
+     360,   979,   385,   126,   127,    46,   263,   274,   288,   306,
+     243,   244,   690,   245,   126,   127,    48,   478,   246,   126,
+     127,   247,   479,   248,   490,   249,    50,   697,   250,   491,
+      52,   251,   493,   252,    54,   260,   500,   494,   272,   286,
+     830,   501,   273,   287,   148,   981,    91,    92,   982,    89,
+      93,   528,   545,    94,    95,    96,   529,   546,    56,   126,
+     127,   320,   908,   909,   910,    58,   888,   889,   890,   858,
+     859,   860,   861,   862,   863,   899,   900,   403,   404,    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,   894,   895,   318,
-     976,   319,   320,   977,    86,   321,   322,   323,   853,   854,
-     855,   856,   857,   858,   125,   126,   125,   126,   147,   541,
-     545,   127,    66,    89,   542,   546,   128,   129,   130,   131,
-     132,   123,   133,   681,   682,   683,   684,   134,   407,   406,
-     470,    34,    35,    36,    37,   933,   135,   147,   408,   136,
-     147,   409,   545,  1089,  1090,  1091,   137,   934,   474,   867,
-     410,  1095,  1101,   935,   138,   139,   685,   982,   766,   140,
-     983,  1022,   141,   761,  1023,   147,   142,   419,   762,   763,
-     764,   765,   766,   767,   768,   769,   770,   771,   772,   773,
-     774,   775,   776,   777,   778,   779,   318,   143,   144,   145,
-     146,   125,   126,   124,   955,   955,   979,   506,   833,   956,
-     957,   980,  1056,   125,   126,   996,   124,   412,   420,   873,
-     997,   125,   126,   147,   318,   147,   421,   125,   126,   277,
-     278,   279,   280,   281,   125,   126,   422,  1003,  1008,   295,
-     124,   318,  1004,  1009,   423,   296,   297,   298,   299,   300,
-     301,  1228,  1012,   223,  1229,   424,   224,  1013,   125,   126,
-     903,   904,   905,  1018,   541,   955,   486,  1186,  1019,  1020,
-    1182,  1183,  1187,   868,   869,   870,   871,   425,  1107,  1108,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,   524,   505,  1207,   507,   426,  1194,
-    1150,  1208,  1151,  1152,   427,   428,   489,   547,   548,   148,
-     906,  1210,   496,   209,  1248,   824,   831,  1211,   832,  1249,
-     429,   430,   147,   431,   432,   226,   434,   435,   268,   214,
-     147,  1195,  1196,  1197,   436,   282,   147,   227,   437,   265,
-     438,   262,   442,   147,   275,   302,  1170,  1171,  1172,  1173,
-     147,   286,   443,   228,   229,   324,   230,   231,   460,   325,
-     343,   304,   467,   469,   344,   345,   473,   147,   232,   233,
-     234,   338,   481,   235,   482,   236,   356,   492,   494,   495,
-     380,   237,   510,   514,   346,   215,   516,   238,   515,   695,
-     696,   697,   698,   239,   518,   240,   381,   263,   519,   520,
-     276,   521,   673,   526,   529,   531,   532,   287,   535,   260,
-     536,   544,   271,   241,   242,   549,   243,   305,   550,   285,
-     551,   244,   552,   553,   245,   554,   246,   339,   247,   303,
-     555,   248,   357,   556,   249,   557,   257,   558,   559,   571,
-     269,   560,   561,   562,   270,   563,   564,   283,   577,   578,
-     566,   284,   382,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   565,   567,   568,   569,
-     114,   115,   116,   117,   118,   119,   120,   121,   570,   572,
-     124,   573,   574,   579,   575,   576,   580,   581,   582,   583,
-     216,   584,   217,   585,   586,   587,   588,   589,   125,   126,
-     218,   219,   220,   221,   222,   127,   590,   591,   592,   593,
-     594,   595,   148,   596,   597,   209,   599,   223,   600,   605,
-     224,   134,   601,   602,   598,   603,   604,   606,   225,   608,
-     609,   214,   611,   612,   613,   614,   615,   618,   616,   619,
-     620,   617,   622,   624,   625,   626,   627,   630,   872,   886,
-     896,   628,   380,   631,   632,   633,   634,   635,   636,   638,
-     639,   641,   640,   642,   874,   892,   897,   907,   381,   643,
-     644,   646,   757,   647,   650,   651,   654,   648,   653,   655,
-     656,   143,   144,   657,   658,   659,   660,   215,   661,   662,
-     663,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   125,   126,   664,   147,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   665,   124,   318,
-     875,   893,   898,   908,   382,   666,   667,   669,   672,   670,
-     674,   680,   675,   676,   677,   678,   125,   126,   679,   219,
-     220,   687,   222,   127,   688,   689,   690,   691,   694,   700,
-      32,   701,   702,   703,   714,   223,   704,   705,   224,   706,
-     707,   715,   721,   708,   709,   710,   225,   365,   366,   367,
+     118,   119,   120,   121,   122,   123,   124,   125,   872,   549,
+     361,   362,   911,   321,   550,   322,   323,   771,   124,   324,
+     325,   326,   474,   148,   549,   126,   127,   938,   148,   939,
+     126,   127,   128,  1176,  1177,  1178,  1179,   129,   130,   131,
+     132,   133,   478,   134,    60,   960,   960,   940,   135,   410,
+     961,   962,    34,    35,    36,    37,   984,   136,    62,   987,
+     137,   985,   988,   411,  1095,  1096,  1097,   138,   148,  1001,
+     412,    64,  1101,  1107,  1002,   139,   140,   126,   127,  1027,
+     141,    66,  1028,   142,   766,   829,   836,   143,   837,   767,
+     768,   769,   770,   771,   772,   773,   774,   775,   776,   777,
+     778,   779,   780,   781,   782,   783,   784,  1008,   144,   145,
+     146,   147,  1009,   125,  1013,  1017,  1023,   413,   838,  1014,
+    1018,  1024,  1061,   873,   874,   875,   876,   125,   545,   878,
+     321,   126,   127,  1025,   148,  1234,   321,   409,  1235,   148,
+     280,   281,   282,   283,   284,   126,   127,   126,   127,   298,
+     125,   415,   422,   125,   321,   299,   300,   301,   302,   303,
+     304,   270,   423,   424,   225,   960,   510,   226,   126,   127,
+    1188,   126,   127,  1201,  1202,  1203,   321,   343,   322,   323,
+     344,   345,   425,   490,  1192,   509,   148,   225,  1189,  1193,
+     226,  1113,  1114,   126,   127,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,  1236,
+     426,   528,  1237,  1238,  1239,  1240,  1200,  1213,   511,   493,
+     551,   552,  1214,   149,  1216,   500,  1254,   211,   427,   428,
+    1217,  1255,   429,   430,  1156,   431,  1157,  1158,   432,   228,
+     148,   433,   271,   216,   700,   701,   702,   703,   434,   285,
+     435,   229,   437,   268,   148,   265,   148,   438,   278,   305,
+     439,   440,   148,   441,   445,   289,   446,   230,   231,   327,
+     232,   233,   447,   328,   346,   307,   464,   148,   347,   348,
+     148,   471,   234,   235,   236,   341,   473,   237,   477,   238,
+     359,   485,   486,   496,   383,   239,   498,   499,   349,   217,
+     514,   240,   148,   518,   520,   519,   522,   241,   523,   242,
+     384,   266,   525,   524,   279,   530,   533,   535,   536,   539,
+     540,   290,   548,   263,   554,   553,   274,   243,   244,   561,
+     245,   308,   555,   288,   556,   246,   557,   558,   247,   559,
+     248,   342,   249,   306,   560,   250,   360,   562,   251,   563,
+     252,   564,   260,   565,   566,   567,   568,   272,   575,   569,
+     573,   273,   570,   581,   286,   571,   385,   572,   287,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   574,   576,   577,   582,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   578,   579,   125,   580,   583,
+     584,   585,   586,   587,   588,   589,   590,   218,   591,   219,
+     592,   593,   594,   595,   596,   126,   127,   220,   221,   222,
+     223,   224,   128,   597,   598,   599,   600,   149,   601,   602,
+     211,   604,   603,   605,   225,   606,   607,   226,   135,   608,
+     609,   610,   611,   613,   614,   227,   216,   126,   127,   616,
+     617,   618,   619,   620,   621,   623,   624,   622,   625,   627,
+     629,   630,   631,   877,   891,   901,   632,   383,   635,   633,
+     636,   637,   638,   639,   640,   641,   643,   644,   645,   879,
+     897,   902,   912,   384,   646,   647,   648,   762,   649,   651,
+     655,   656,   652,   653,   659,   660,   658,   662,   144,   145,
+     661,   665,   217,   663,   666,   669,   664,   670,   671,   667,
      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-     711,   712,   713,   716,   717,   719,   720,   378,   379,   726,
-     756,   804,   722,   723,   725,   727,   728,   729,   733,   734,
-     808,   812,   816,   820,   838,   842,   735,   845,   849,   736,
-     916,   737,   751,   147,   738,   739,   920,   924,   740,   143,
-     144,   940,   741,   941,   742,   743,   942,   943,   944,   946,
-     947,   951,   745,   952,   953,   746,   954,   959,   747,   960,
-     753,   962,   754,   963,   755,   147,   966,   965,   968,   969,
-     971,   972,   744,   975,   986,   985,   988,   989,  1024,   990,
-     991,   992,   993,   994,   995,  1000,  1001,  1002,  1005,  1006,
-    1007,  1014,  1016,  1029,  1041,  1028,  1032,  1031,  1036,  1040,
-    1034,  1035,  1037,  1038,  1039,  1042,  1043,  1044,  1045,  1046,
-    1047,  1048,  1049,  1050,  1051,  1052,  1105,  1132,  1053,  1054,
-     226,  1133,  1125,   324,  1126,  1127,   343,   325,  1128,  1064,
-     344,   345,   227,  1088,   265,  1129,   262,  1130,  1134,   338,
-    1109,  1065,   356,   302,  1110,  1099,   360,  1142,   228,   229,
-     346,   230,   231,  1135,  1136,  1139,  1112,  1066,  1067,   304,
-    1068,  1069,   872,   232,   233,   234,  1138,   886,   235,  1140,
-     236,   896,  1070,  1071,  1072,  1143,   237,  1073,   874,  1074,
-    1153,  1145,   238,   892,  1154,  1075,   268,   897,   239,   282,
-     240,  1076,   263,   907,  1146,   339,  1155,  1077,   357,  1078,
-    1148,  1100,   275,  1163,   260,   286,  1147,  1164,   241,   242,
-    1169,   243,  1113,  1098,  1190,   305,   244,  1079,  1080,   245,
-    1081,   246,  1175,   247,  1111,  1082,   248,   303,  1083,   249,
-    1084,   257,  1085,  1176,   875,  1086,  1177,  1184,  1087,   893,
-    1094,  1092,  1185,   898,  1191,  1093,  1178,  1192,  1193,   908,
-    1205,  1179,  1156,  1214,  1217,  1180,  1181,  1188,   276,  1219,
-    1224,   287,  1222,  1199,  1244,  1245,  1246,  1250,  1254,   758,
-     271,  1200,   607,   285,   830,   610,  1057,  1055,  1106,   752,
-    1103,   932,  1104,  1123,   760,  1141,   652,  1124,  1213,  1131,
-    1059,  1058,   621,  1102,  1201,  1202,   316,   645,   269,  1209,
-    1212,   283,   270,  1221,  1215,   284,  1061,  1251,  1060,  1218,
-    1252,  1063,  1223,   649,  1253,  1166,  1256,  1257,  1062,  1167,
-    1168,  1122,  1165,   929,  1216,  1121,  1137,  1144,  1149,   915,
-     668,  1120,   759,   671,  1162,  1220,  1242,  1255,     0,     0,
-       0,     0,     0,     0,     0,  1064,     0,     0,     0,  1088,
-       0,  1109,     0,     0,     0,  1110,     0,  1065,     0,     0,
-       0,  1099,     0,     0,   629,     0,  1153,  1112,  1203,     0,
-    1154,   623,     0,  1066,  1067,     0,  1068,  1069,     0,     0,
-       0,     0,  1155,     0,   637,     0,     0,     0,  1070,  1071,
-    1072,     0,     0,  1073,     0,  1074,     0,     0,     0,     0,
-       0,  1075,     0,     0,     0,     0,     0,  1076,     0,     0,
-       0,     0,     0,  1077,     0,  1078,     0,  1100,     0,     0,
-       0,     0,     0,  1113,     0,     0,     0,     0,     0,  1098,
-       0,     0,     0,  1079,  1080,  1111,  1081,     0,  1156,     0,
-       0,  1082,     0,     0,  1083,     0,  1084,     0,  1085,     0,
-       0,  1086,     0,     0,  1087,     0,  1094,  1092,     0,     0,
-       0,  1093
+     378,   379,   380,   668,   148,   672,   674,   675,   677,   756,
+     381,   382,   678,   679,   680,   880,   898,   903,   913,   385,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   681,   682,   683,   148,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   684,   125,   321,
+     685,   692,   693,   694,   695,   696,   699,   705,    32,   706,
+     707,   708,   719,   710,   709,   711,   126,   127,   712,   221,
+     222,   713,   224,   128,   714,   715,   716,   717,   718,   721,
+     722,   724,   720,   725,   726,   225,   731,   761,   226,   843,
+     727,   728,   730,   732,   733,   734,   227,   738,   809,   813,
+     817,   821,   739,   825,   847,   740,   850,   741,   854,   742,
+     921,   925,   743,   744,   929,   945,   745,   946,   947,   746,
+     747,   748,   750,   751,   948,   949,   951,   952,   956,   752,
+     957,   958,   758,   959,   964,   965,   759,   967,   760,   968,
+     970,   971,   974,   973,   977,  1045,   976,   991,   980,   144,
+     145,   990,   993,   994,  1029,   995,   996,   997,   998,   999,
+    1000,  1005,  1006,  1007,  1010,  1011,  1012,  1019,  1021,  1034,
+    1046,  1033,  1037,  1036,  1041,   148,  1039,  1040,  1042,  1043,
+    1044,  1048,  1050,  1053,  1054,  1047,  1049,  1051,  1052,  1055,
+    1056,  1057,  1111,  1059,  1058,   228,  1131,  1132,   327,  1133,
+    1134,   346,   328,  1135,  1069,   347,   348,   229,  1094,   268,
+    1136,   265,  1138,  1139,   341,  1115,  1070,   359,   305,  1116,
+    1105,   363,  1140,   230,   231,   349,   232,   233,  1148,  1141,
+    1142,  1118,  1071,  1072,   307,  1073,  1074,   877,   234,   235,
+     236,  1144,   891,   237,  1145,   238,   901,  1075,  1076,  1077,
+    1149,   239,  1078,   879,  1079,  1159,  1152,   240,   897,  1160,
+    1080,   271,   902,   241,   285,   242,  1081,   266,   912,  1154,
+     342,  1161,  1082,   360,  1083,  1151,  1106,   278,  1169,   263,
+     289,  1146,  1170,   243,   244,  1153,   245,  1119,  1104,  1175,
+     308,   246,  1084,  1085,   247,  1086,   248,  1181,   249,  1117,
+    1087,   250,   306,  1088,   251,  1089,   252,  1090,   260,   880,
+    1091,  1182,  1190,  1092,   898,  1093,  1183,  1100,   903,  1098,
+    1191,  1196,  1197,  1099,   913,  1198,  1199,  1162,  1211,  1184,
+    1220,  1223,  1185,   279,  1186,  1225,   290,  1228,  1250,  1251,
+    1230,  1252,  1187,  1256,  1260,   274,  1194,  1205,   288,   749,
+     763,  1221,   835,   757,   615,  1062,   765,   937,  1060,  1109,
+    1112,  1110,  1130,  1147,  1129,  1064,   657,  1137,  1063,  1108,
+    1219,  1206,  1207,   319,  1065,  1066,   272,  1224,   650,   286,
+     273,  1208,  1215,   287,  1258,  1218,  1227,   626,  1229,  1067,
+    1068,  1259,  1257,  1262,  1263,   654,  1174,  1172,   934,  1128,
+    1173,  1171,  1222,  1127,  1143,  1126,  1155,   920,  1150,   673,
+     764,   676,  1168,  1226,   612,  1248,  1261,     0,     0,     0,
+       0,  1069,     0,     0,     0,  1094,     0,  1115,     0,     0,
+       0,  1116,     0,  1070,   628,     0,     0,  1105,     0,     0,
+       0,     0,  1159,  1118,  1209,     0,  1160,     0,     0,  1071,
+    1072,     0,  1073,  1074,   634,     0,     0,     0,  1161,     0,
+       0,     0,     0,     0,  1075,  1076,  1077,   642,     0,  1078,
+       0,  1079,     0,     0,     0,     0,     0,  1080,     0,     0,
+       0,     0,     0,  1081,     0,     0,     0,     0,     0,  1082,
+       0,  1083,     0,  1106,     0,     0,     0,     0,     0,  1119,
+       0,     0,     0,     0,     0,  1104,     0,     0,     0,  1084,
+    1085,  1117,  1086,     0,  1162,     0,     0,  1087,     0,     0,
+    1088,     0,  1089,     0,  1090,     0,     0,  1091,     0,     0,
+    1092,     0,  1093,     0,  1100,     0,  1098,     0,     0,     0,
+    1099
   };
 
-  const short
+  const short int
   Dhcp6Parser::yycheck_[] =
   {
       71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
-      81,    78,    79,    79,    73,   709,    73,    72,    73,    74,
-      75,    76,   678,    78,    79,   703,    81,   970,   970,   970,
-      73,    73,    79,    73,    73,   970,   970,     0,     5,   115,
-       7,   585,     9,    89,    90,    73,    73,    73,   122,   123,
-      73,     7,    73,   618,     3,    16,    17,     3,    73,     8,
-       3,   113,     8,     6,    73,   630,   631,   632,   120,     7,
+      81,    78,    79,    79,    73,   714,    73,    72,    73,    74,
+      75,    76,   683,    78,    79,   708,    81,   975,   975,   975,
+      73,    73,    79,    73,    73,   975,   975,   116,     5,     0,
+       7,   590,     9,   623,   114,    73,    73,    73,   123,   124,
+      73,   121,    73,   166,   167,   635,   636,   637,    73,   169,
+     170,   171,   172,     3,    73,    16,    17,   199,     8,     7,
       73,     7,    73,    72,    73,    74,    75,    76,     3,    78,
-      79,    71,    81,     8,    13,    14,    73,    74,    75,    76,
-      73,    73,    82,    73,     7,   141,   142,   143,    73,    89,
-      90,    73,     7,    73,     3,    73,     7,   651,    73,     8,
-       7,    73,     3,    73,     7,    74,    75,     8,   108,    74,
-      75,   111,   198,     7,   198,     7,    11,    12,    89,    90,
-      15,    89,    90,    18,    19,    20,   122,   123,    21,    72,
-      73,    74,    75,    76,    77,   177,   165,   166,   180,   181,
-     182,   183,   198,     3,     7,     7,    89,    90,     8,    44,
+      79,     6,    81,    90,    91,     7,    73,    74,    75,    76,
+      73,    73,   202,    73,    90,    91,     7,     3,    73,    90,
+      91,    73,     8,    73,     3,    73,     7,   656,    73,     8,
+       7,    73,     3,    73,     7,    73,     3,     8,    74,    75,
+     199,     8,    74,    75,   199,     3,    11,    12,     6,    10,
+      15,     3,     3,    18,    19,    20,     8,     8,     7,    90,
+      91,    21,   149,   150,   151,     7,   142,   143,   144,   126,
+     127,   128,   129,   130,   131,   146,   147,    13,    14,    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,   145,   146,    72,
-       3,    74,    75,     6,   198,    78,    79,    80,   125,   126,
-     127,   128,   129,   130,    89,    90,    89,    90,   198,     3,
-       3,    96,     7,    10,     8,     8,   101,   102,   103,   104,
-     105,    70,   107,   168,   169,   170,   171,   112,     3,     6,
-       3,   198,   199,   200,   201,     8,   121,   198,     4,   124,
-     198,     8,     3,  1186,  1186,  1186,   131,     8,     3,    21,
-       3,  1186,  1186,     8,   139,   140,   201,     3,    30,   144,
-       6,     3,   147,    21,     6,   198,   151,     4,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    72,   172,   173,   174,
-     175,    89,    90,    71,     3,     3,     3,     3,   976,     8,
-       8,     8,   958,    89,    90,     3,    71,     8,     4,  1003,
-       8,    89,    90,   198,    72,   198,     4,    89,    90,    84,
-      85,    86,    87,    88,    89,    90,     4,     3,     3,   107,
-      71,    72,     8,     8,     4,   113,   114,   115,   116,   117,
-     118,     3,     3,   108,     6,     4,   111,     8,    89,    90,
-     148,   149,   150,     3,     3,     3,     3,     3,     8,     8,
-       8,     8,     8,   135,   136,   137,   138,     4,   109,   110,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,     3,     8,     3,     8,     4,     8,
-     176,     8,   178,   179,     4,     4,     3,   407,   408,   470,
-     198,     8,     3,   474,     3,   115,   116,     8,   118,     8,
-       4,     4,   198,     4,     4,   486,     4,     4,   489,   474,
-     198,   132,   133,   134,     4,   496,   198,   486,     4,   486,
-       4,   486,     4,   198,   489,   506,    22,    23,    24,    25,
-     198,   496,     4,   486,   486,   516,   486,   486,     4,   516,
-     521,   506,     4,     4,   521,   521,     4,   198,   486,   486,
-     486,   516,     4,   486,     4,   486,   521,     4,     4,     4,
-     541,   486,     4,     4,   521,   474,     3,   486,     8,    97,
-      98,    99,   100,   486,     4,   486,   541,   486,     4,     8,
-     489,     3,     7,     4,     4,     4,     4,   496,     4,   486,
-       4,     4,   489,   486,   486,   198,   486,   506,     4,   496,
-       4,   486,     4,     4,   486,     4,   486,   516,   486,   506,
-       4,   486,   521,     4,   486,   199,   486,   199,   199,     4,
-     489,   199,   199,   199,   489,   199,   199,   496,     4,     4,
-     200,   496,   541,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,   201,   200,   200,   199,
-      61,    62,    63,    64,    65,    66,    67,    68,   199,   199,
-      71,   199,   201,     4,   201,   201,   201,   201,     4,     4,
-      81,     4,    83,     4,     4,     4,     4,     4,    89,    90,
-      91,    92,    93,    94,    95,    96,     4,     4,     4,     4,
-       4,     4,   673,     4,     4,   676,     4,   108,     4,   201,
-     111,   112,     4,     4,   199,     4,     4,     4,   119,     4,
-     201,   676,     4,     4,     4,     4,     4,     4,   199,     4,
-       4,   201,     4,     4,   199,     4,   199,     4,   709,   710,
-     711,   199,   713,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   199,     4,   709,   710,   711,   712,   713,     4,
-     201,     4,   672,   201,     4,     4,     4,   201,   201,     4,
-     199,   172,   173,     4,   199,   199,     4,   676,     4,   201,
-     201,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    89,    90,     4,   198,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,     4,    71,    72,
-     709,   710,   711,   712,   713,     4,     4,     4,     4,   199,
-     198,   198,     7,     7,     7,     7,    89,    90,     5,    92,
-      93,   198,    95,    96,   198,     5,     5,     5,   198,     5,
-       7,     5,     5,     5,   198,   108,     7,     5,   111,     5,
-       5,   198,   198,     7,     7,     7,   119,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-       7,     7,     7,     5,     5,     5,     5,   172,   173,     7,
-       5,     7,   198,   198,   198,   198,   198,   198,   198,   198,
-       7,     7,     7,     7,   106,     7,   198,     7,     7,   198,
-       7,   198,   167,   198,   198,   198,     7,     7,   198,   172,
-     173,     4,   198,     4,   198,   198,     4,     4,     4,     4,
-       4,     4,   198,     4,     4,   198,     4,     6,   198,     3,
-     198,     6,   198,     3,   198,   198,     3,     6,     6,     3,
-       6,     3,   651,     6,     3,     6,     6,     3,   198,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     3,   201,     6,     3,     6,     4,   199,
-       8,     6,     4,     4,     4,   199,   201,   199,     4,   199,
-     199,     4,     4,     4,   199,   199,     4,     4,   201,   199,
-     961,     4,   199,   964,   199,   199,   967,   964,   199,   970,
-     967,   967,   961,   970,   961,   199,   961,   199,   199,   964,
-     981,   970,   967,   984,   981,   970,   987,     4,   961,   961,
-     967,   961,   961,   199,   199,   199,   981,   970,   970,   984,
-     970,   970,  1003,   961,   961,   961,   201,  1008,   961,   199,
-     961,  1012,   970,   970,   970,     4,   961,   970,  1003,   970,
-    1021,   201,   961,  1008,  1021,   970,  1027,  1012,   961,  1030,
-     961,   970,   961,  1018,     4,   964,  1021,   970,   967,   970,
-       4,   970,  1027,     6,   961,  1030,   199,     3,   961,   961,
-       4,   961,   981,   970,     4,   984,   961,   970,   970,   961,
-     970,   961,   198,   961,   981,   970,   961,   984,   970,   961,
-     970,   961,   970,   198,  1003,   970,   198,     8,   970,  1008,
-     970,   970,     8,  1012,     8,   970,   198,     3,     8,  1018,
-       4,   198,  1021,     4,     4,   198,   198,   198,  1027,     4,
-       7,  1030,     5,   198,     4,     4,     4,     4,     4,   673,
-    1027,   198,   470,  1030,   702,   474,   960,   955,   979,   664,
-     973,   756,   976,   987,   676,  1008,   524,   989,  1186,   996,
-     963,   961,   486,   972,   198,   198,    77,   516,  1027,   198,
-     198,  1030,  1027,   198,   201,  1030,   966,   201,   964,   199,
-     199,   969,   198,   521,   199,  1029,   198,   198,   967,  1030,
-    1032,   986,  1027,   726,  1192,   984,  1003,  1012,  1018,   713,
-     541,   982,   675,   545,  1022,  1207,  1228,  1248,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1186,    -1,    -1,    -1,  1186,
-      -1,  1192,    -1,    -1,    -1,  1192,    -1,  1186,    -1,    -1,
-      -1,  1186,    -1,    -1,   496,    -1,  1207,  1192,  1148,    -1,
-    1207,   489,    -1,  1186,  1186,    -1,  1186,  1186,    -1,    -1,
-      -1,    -1,  1207,    -1,   506,    -1,    -1,    -1,  1186,  1186,
-    1186,    -1,    -1,  1186,    -1,  1186,    -1,    -1,    -1,    -1,
-      -1,  1186,    -1,    -1,    -1,    -1,    -1,  1186,    -1,    -1,
-      -1,    -1,    -1,  1186,    -1,  1186,    -1,  1186,    -1,    -1,
-      -1,    -1,    -1,  1192,    -1,    -1,    -1,    -1,    -1,  1186,
-      -1,    -1,    -1,  1186,  1186,  1192,  1186,    -1,  1207,    -1,
-      -1,  1186,    -1,    -1,  1186,    -1,  1186,    -1,  1186,    -1,
-      -1,  1186,    -1,    -1,  1186,    -1,  1186,  1186,    -1,    -1,
-      -1,  1186
+      65,    66,    67,    68,    69,    70,    71,    72,    21,     3,
+     123,   124,   199,    73,     8,    75,    76,    30,    71,    79,
+      80,    81,     3,   199,     3,    90,    91,     8,   199,     8,
+      90,    91,    97,    22,    23,    24,    25,   102,   103,   104,
+     105,   106,     3,   108,     7,     3,     3,     8,   113,     3,
+       8,     8,   199,   200,   201,   202,     3,   122,     7,     3,
+     125,     8,     6,     4,  1192,  1192,  1192,   132,   199,     3,
+       8,     7,  1192,  1192,     8,   140,   141,    90,    91,     3,
+     145,     7,     6,   148,    21,   116,   117,   152,   119,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,     3,   173,   174,
+     175,   176,     8,    72,     3,     3,     3,     3,   981,     8,
+       8,     8,   963,   136,   137,   138,   139,    72,     3,  1008,
+      73,    90,    91,     8,   199,     3,    73,     6,     6,   199,
+      85,    86,    87,    88,    89,    90,    91,    90,    91,   108,
+      72,     8,     4,    72,    73,   114,   115,   116,   117,   118,
+     119,    83,     4,     4,   109,     3,     3,   112,    90,    91,
+       8,    90,    91,   133,   134,   135,    73,    74,    75,    76,
+      77,    78,     4,     3,     3,     8,   199,   109,     8,     8,
+     112,   110,   111,    90,    91,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   178,
+       4,     3,   181,   182,   183,   184,     8,     3,     8,     3,
+     410,   411,     8,   474,     8,     3,     3,   478,     4,     4,
+       8,     8,     4,     4,   177,     4,   179,   180,     4,   490,
+     199,     4,   493,   478,    98,    99,   100,   101,     4,   500,
+       4,   490,     4,   490,   199,   490,   199,     4,   493,   510,
+       4,     4,   199,     4,     4,   500,     4,   490,   490,   520,
+     490,   490,     4,   520,   525,   510,     4,   199,   525,   525,
+     199,     4,   490,   490,   490,   520,     4,   490,     4,   490,
+     525,     4,     4,     4,   545,   490,     4,     4,   525,   478,
+       4,   490,   199,     4,     3,     8,     4,   490,     4,   490,
+     545,   490,     3,     8,   493,     4,     4,     4,     4,     4,
+       4,   500,     4,   490,     4,   199,   493,   490,   490,   200,
+     490,   510,     4,   500,     4,   490,     4,     4,   490,     4,
+     490,   520,   490,   510,     4,   490,   525,   200,   490,   200,
+     490,   200,   490,   200,   200,   200,   200,   493,     4,   202,
+     200,   493,   201,     4,   500,   201,   545,   201,   500,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,   200,   200,   200,     4,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,   202,   202,    72,   202,     4,
+     202,   202,   202,     4,     4,     4,     4,    82,     4,    84,
+       4,     4,     4,     4,     4,    90,    91,    92,    93,    94,
+      95,    96,    97,     4,     4,     4,     4,   678,     4,     4,
+     681,     4,   200,     4,   109,     4,     4,   112,   113,     4,
+       4,   202,     4,     4,   202,   120,   681,    90,    91,     4,
+       4,     4,     4,     4,   200,     4,     4,   202,     4,     4,
+       4,   200,     4,   714,   715,   716,   200,   718,     4,   200,
+       4,     4,     4,     4,     4,     4,     4,     4,   200,   714,
+     715,   716,   717,   718,     4,     4,     4,   677,   202,     4,
+       4,     4,   202,   202,     4,     4,   202,     4,   173,   174,
+     200,     4,   681,   200,     4,     4,   200,     4,     4,   202,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   202,   199,     4,     4,   200,     4,   168,
+     173,   174,     7,   199,     7,   714,   715,   716,   717,   718,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     7,     7,     7,   199,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,     5,    72,    73,
+     199,   199,   199,     5,     5,     5,   199,     5,     7,     5,
+       5,     5,   199,     5,     7,     5,    90,    91,     5,    93,
+      94,     7,    96,    97,     7,     7,     7,     7,     7,     5,
+       5,     5,   199,     5,   199,   109,     7,     5,   112,   107,
+     199,   199,   199,   199,   199,   199,   120,   199,     7,     7,
+       7,     7,   199,     7,     7,   199,     7,   199,     7,   199,
+       7,     7,   199,   199,     7,     4,   199,     4,     4,   199,
+     199,   199,   199,   199,     4,     4,     4,     4,     4,   199,
+       4,     4,   199,     4,     6,     3,   199,     6,   199,     3,
+       6,     3,     3,     6,     3,   200,     6,     3,     6,   173,
+     174,     6,     6,     3,   199,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
+     202,     6,     3,     6,     4,   199,     8,     6,     4,     4,
+       4,   202,     4,     4,     4,   200,   200,   200,   200,     4,
+     200,   200,     4,   200,   202,   966,   200,   200,   969,   200,
+     200,   972,   969,   200,   975,   972,   972,   966,   975,   966,
+     200,   966,     4,     4,   969,   986,   975,   972,   989,   986,
+     975,   992,   200,   966,   966,   972,   966,   966,     4,   200,
+     200,   986,   975,   975,   989,   975,   975,  1008,   966,   966,
+     966,   202,  1013,   966,   200,   966,  1017,   975,   975,   975,
+       4,   966,   975,  1008,   975,  1026,     4,   966,  1013,  1026,
+     975,  1032,  1017,   966,  1035,   966,   975,   966,  1023,     4,
+     969,  1026,   975,   972,   975,   202,   975,  1032,     6,   966,
+    1035,   200,     3,   966,   966,   200,   966,   986,   975,     4,
+     989,   966,   975,   975,   966,   975,   966,   199,   966,   986,
+     975,   966,   989,   975,   966,   975,   966,   975,   966,  1008,
+     975,   199,     8,   975,  1013,   975,   199,   975,  1017,   975,
+       8,     4,     8,   975,  1023,     3,     8,  1026,     4,   199,
+       4,     4,   199,  1032,   199,     4,  1035,     5,     4,     4,
+       7,     4,   199,     4,     4,  1032,   199,   199,  1035,   656,
+     678,   202,   707,   669,   478,   965,   681,   761,   960,   978,
+     984,   981,   994,  1013,   992,   968,   528,  1001,   966,   977,
+    1192,   199,   199,    77,   969,   971,  1032,   200,   520,  1035,
+    1032,   199,   199,  1035,   200,   199,   199,   490,   199,   972,
+     974,   200,   202,   199,   199,   525,  1037,  1034,   731,   991,
+    1035,  1032,  1198,   989,  1008,   987,  1023,   718,  1017,   545,
+     680,   549,  1027,  1213,   474,  1234,  1254,    -1,    -1,    -1,
+      -1,  1192,    -1,    -1,    -1,  1192,    -1,  1198,    -1,    -1,
+      -1,  1198,    -1,  1192,   493,    -1,    -1,  1192,    -1,    -1,
+      -1,    -1,  1213,  1198,  1154,    -1,  1213,    -1,    -1,  1192,
+    1192,    -1,  1192,  1192,   500,    -1,    -1,    -1,  1213,    -1,
+      -1,    -1,    -1,    -1,  1192,  1192,  1192,   510,    -1,  1192,
+      -1,  1192,    -1,    -1,    -1,    -1,    -1,  1192,    -1,    -1,
+      -1,    -1,    -1,  1192,    -1,    -1,    -1,    -1,    -1,  1192,
+      -1,  1192,    -1,  1192,    -1,    -1,    -1,    -1,    -1,  1198,
+      -1,    -1,    -1,    -1,    -1,  1192,    -1,    -1,    -1,  1192,
+    1192,  1198,  1192,    -1,  1213,    -1,    -1,  1192,    -1,    -1,
+    1192,    -1,  1192,    -1,  1192,    -1,    -1,  1192,    -1,    -1,
+    1192,    -1,  1192,    -1,  1192,    -1,  1192,    -1,    -1,    -1,
+    1192
   };
 
-  const short
+  const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-       0,     5,     7,     9,   198,   199,   200,   201,   218,   219,
-     220,   225,     7,   234,     7,   238,     7,   281,     7,   387,
-       7,   464,     7,   480,     7,   497,     7,   416,     7,   422,
-       7,   446,     7,   363,     7,   566,     7,   597,   226,   221,
-     235,   239,   282,   388,   465,   481,   498,   417,   423,   447,
-     364,   567,   598,   218,   227,   228,   198,   223,   224,    10,
-     236,    11,    12,    15,    18,    19,    20,    44,    45,    46,
+       0,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+       0,     5,     7,     9,   199,   200,   201,   202,   219,   220,
+     221,   226,     7,   235,     7,   239,     7,   283,     7,   389,
+       7,   466,     7,   482,     7,   499,     7,   418,     7,   424,
+       7,   448,     7,   365,     7,   568,     7,   599,   227,   222,
+     236,   240,   284,   390,   467,   483,   500,   419,   425,   449,
+     366,   569,   600,   219,   228,   229,   199,   224,   225,    10,
+     237,    11,    12,    15,    18,    19,    20,    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,    89,    90,    96,   101,   102,
-     103,   104,   105,   107,   112,   121,   124,   131,   139,   140,
-     144,   147,   151,   172,   173,   174,   175,   198,   233,   240,
-     241,   242,   244,   245,   246,   247,   248,   249,   250,   251,
+      67,    68,    69,    70,    71,    72,    90,    91,    97,   102,
+     103,   104,   105,   106,   108,   113,   122,   125,   132,   140,
+     141,   145,   148,   152,   173,   174,   175,   176,   199,   234,
+     241,   242,   243,   245,   246,   247,   248,   249,   250,   251,
      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     264,   266,   268,   269,   271,   273,   274,   275,   276,   278,
-     279,   288,   290,   292,   330,   336,   342,   348,   350,   357,
-     371,   381,   401,   406,   414,   440,   470,   472,   491,   521,
-     533,   545,   546,   554,   564,   595,   604,    16,    17,   233,
-     283,   284,   285,   287,   470,   472,    81,    83,    91,    92,
-      93,    94,    95,   108,   111,   119,   233,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     258,   259,   260,   261,   264,   266,   268,   269,   271,   273,
-     389,   390,   391,   393,   395,   397,   399,   401,   404,   405,
-     440,   458,   470,   472,   474,   491,   516,    82,   233,   397,
-     399,   440,   466,   467,   468,   470,   472,    84,    85,    86,
-      87,    88,   233,   397,   399,   440,   470,   472,   482,   483,
-     484,   486,   487,   489,   490,   107,   113,   114,   115,   116,
-     117,   118,   233,   440,   470,   472,   499,   500,   501,   502,
-     504,   506,   508,   510,   512,   514,   414,    21,    72,    74,
-      75,    78,    79,    80,   233,   310,   424,   425,   426,   427,
-     428,   429,   430,   432,   434,   436,   437,   439,   470,   472,
-      73,    76,    77,   233,   310,   428,   434,   448,   449,   450,
-     451,   452,   454,   455,   456,   457,   470,   472,   122,   123,
-     233,   365,   366,   367,   369,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   172,   173,
-     233,   470,   472,   568,   569,   570,   571,   573,   575,   576,
-     578,   579,   580,   583,   585,   586,   587,   589,   591,   593,
-      13,    14,   599,   600,   601,   603,     6,     3,     4,     8,
-       3,   237,     8,   243,   596,   280,   289,   291,   293,     4,
+     262,   265,   267,   269,   270,   271,   273,   275,   276,   277,
+     278,   280,   281,   290,   292,   294,   332,   338,   344,   350,
+     352,   359,   373,   383,   403,   408,   416,   442,   472,   474,
+     493,   523,   535,   547,   548,   556,   566,   597,   606,    16,
+      17,   234,   285,   286,   287,   289,   472,   474,    82,    84,
+      92,    93,    94,    95,    96,   109,   112,   120,   234,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   259,   260,   261,   262,   265,   267,   269,   270,
+     271,   273,   275,   391,   392,   393,   395,   397,   399,   401,
+     403,   406,   407,   442,   460,   472,   474,   476,   493,   518,
+      83,   234,   399,   401,   442,   468,   469,   470,   472,   474,
+      85,    86,    87,    88,    89,   234,   399,   401,   442,   472,
+     474,   484,   485,   486,   488,   489,   491,   492,   108,   114,
+     115,   116,   117,   118,   119,   234,   442,   472,   474,   501,
+     502,   503,   504,   506,   508,   510,   512,   514,   516,   416,
+      21,    73,    75,    76,    79,    80,    81,   234,   312,   426,
+     427,   428,   429,   430,   431,   432,   434,   436,   438,   439,
+     441,   472,   474,    74,    77,    78,   234,   312,   430,   436,
+     450,   451,   452,   453,   454,   456,   457,   458,   459,   472,
+     474,   123,   124,   234,   367,   368,   369,   371,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   173,   174,   234,   472,   474,   570,   571,   572,   573,
+     575,   577,   578,   580,   581,   582,   585,   587,   588,   589,
+     591,   593,   595,    13,    14,   601,   602,   603,   605,     6,
+       3,     4,     8,     3,   238,     8,   244,   598,   282,   291,
+     293,   295,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   279,     4,     4,     4,
+       4,     4,   263,   266,   268,     4,     4,     4,   384,   417,
+     443,   473,   475,   404,   409,   339,   351,   345,   333,   524,
+     494,   360,   374,   536,     4,   353,   549,   557,   567,   272,
+     274,     4,   607,     4,     3,     8,   288,     4,     3,     8,
+     461,   477,   394,   396,   398,     4,     4,   402,   400,   519,
+       3,     8,   471,     3,     8,   487,     4,   490,     4,     4,
+       3,     8,   517,   505,   507,   509,   511,   513,   515,     8,
+       3,     8,   433,   313,     4,   437,   435,   440,     4,     8,
+       3,   455,     4,     4,     8,     3,   370,   372,     3,     8,
+       4,   574,   576,     4,   579,     4,     4,   583,   586,     4,
+       4,   590,   592,   594,   596,     3,     8,   604,     4,     3,
+       8,   219,   219,   199,     4,     4,     4,     4,     4,     4,
+       4,   200,   200,   200,   200,   200,   200,   200,   200,   202,
+     201,   201,   201,   200,   200,     4,   200,   200,   202,   202,
+     202,     4,     4,     4,   202,   202,   202,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,   277,     4,     4,     4,     4,     4,   262,
-     265,   267,     4,     4,   382,   415,   441,   471,   473,   402,
-     407,   337,   349,   343,   331,   522,   492,   358,   372,   534,
-       4,   351,   547,   555,   565,   270,   272,     4,   605,     4,
-       3,     8,   286,     4,     3,     8,   459,   475,   392,   394,
-     396,     4,     4,   400,   398,   517,     3,     8,   469,     3,
-       8,   485,     4,   488,     4,     4,     3,     8,   515,   503,
-     505,   507,   509,   511,   513,     8,     3,     8,   431,   311,
-       4,   435,   433,   438,     4,     8,     3,   453,     4,     4,
-       8,     3,   368,   370,     3,     8,     4,   572,   574,     4,
-     577,     4,     4,   581,   584,     4,     4,   588,   590,   592,
-     594,     3,     8,   602,     4,     3,     8,   218,   218,   198,
-       4,     4,     4,     4,     4,     4,     4,   199,   199,   199,
-     199,   199,   199,   199,   199,   201,   200,   200,   200,   199,
-     199,     4,   199,   199,   201,   201,   201,     4,     4,     4,
-     201,   201,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   199,     4,
-       4,     4,     4,     4,     4,   201,     4,   241,     4,   201,
-     284,     4,     4,     4,     4,     4,   199,   201,     4,     4,
-       4,   390,     4,   467,     4,   199,     4,   199,   199,   483,
-       4,     4,     4,     4,     4,     4,     4,   501,     4,     4,
-     199,     4,     4,     4,   201,   426,     4,   201,   201,   450,
-       4,     4,   366,   201,     4,     4,   199,     4,   199,   199,
-       4,     4,   201,   201,     4,     4,     4,     4,   569,     4,
-     199,   600,     4,     7,   198,     7,     7,     7,     7,     5,
-     198,   168,   169,   170,   171,   201,   263,   198,   198,     5,
-       5,     5,   220,   222,   198,    97,    98,    99,   100,   403,
-       5,     5,     5,     5,     7,     5,     5,     5,     7,     7,
-       7,     7,     7,     7,   198,   198,     5,     5,   229,     5,
-       5,   198,   198,   198,   229,   198,     7,   198,   198,   198,
-     229,   229,   229,   198,   198,   198,   198,   198,   198,   198,
-     198,   198,   198,   198,   222,   198,   198,   198,   165,   166,
-     582,   167,   263,   198,   198,   198,     5,   218,   240,   599,
-     283,    21,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-     233,   298,   299,   300,   303,   305,   307,   309,   310,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,   323,
-     324,   326,   328,   298,     7,   294,   295,   296,     7,   383,
-     384,   385,     7,   418,   419,   420,     7,   442,   443,   444,
-       7,   408,   409,   410,   115,   198,   338,   339,   340,   341,
-     227,   116,   118,   340,   344,   345,   346,   347,   106,   332,
-     333,   334,     7,   523,   524,     7,   493,   494,   495,     7,
-     359,   360,   361,   125,   126,   127,   128,   129,   130,   373,
-     374,   375,   376,   377,   378,   379,   380,    21,   135,   136,
-     137,   138,   233,   312,   470,   472,   535,   536,   537,   540,
-     541,   543,   544,   141,   142,   143,   233,   352,   353,   354,
-     355,   356,   470,   472,   145,   146,   233,   470,   472,   548,
-     549,   550,   552,   148,   149,   150,   198,   470,   472,   556,
-     557,   558,   559,   561,   562,   568,     7,   606,   607,   230,
-       7,   460,   461,   462,     7,   476,   477,   478,   120,   502,
-     518,   519,   294,     8,     8,     8,   301,   304,   306,   308,
-       4,     4,     4,     4,     4,   322,     4,     4,   325,   327,
-     329,     4,     4,     4,     4,     3,     8,     8,   297,     6,
-       3,   386,     6,     3,   421,     6,     3,   445,     6,     3,
-     411,     6,     3,     3,     6,     6,     3,     6,   335,     3,
-       8,   525,     3,     6,   496,     6,     3,   362,     6,     3,
-       4,     4,     4,     4,     4,     4,     3,     8,   538,   542,
-       4,     4,     4,     3,     8,     4,     4,     4,     3,     8,
-     551,   553,     3,     8,     4,   560,     4,   563,     3,     8,
-       8,   608,     3,     6,   198,   231,   232,   463,     6,     3,
-     479,     6,     3,   520,     8,     6,     4,     4,     4,     4,
-     199,   201,   199,   201,   199,     4,   199,   199,     4,     4,
-       4,   199,   199,   201,   199,   299,   298,   296,   389,   385,
-     424,   420,   448,   444,   233,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   258,   259,
-     260,   261,   264,   266,   268,   269,   271,   273,   310,   381,
-     393,   395,   397,   399,   401,   405,   412,   413,   440,   470,
-     472,   516,   410,   339,   345,     4,   333,   109,   110,   233,
-     310,   440,   470,   472,   526,   527,   528,   529,   530,   532,
-     524,   499,   495,   365,   361,   199,   199,   199,   199,   199,
-     199,   374,     4,     4,   199,   199,   199,   536,   201,   199,
-     199,   353,     4,     4,   549,   201,     4,   199,     4,   557,
-     176,   178,   179,   233,   310,   470,   472,   609,   610,   611,
-     612,   614,   607,     6,     3,   466,   462,   482,   478,     4,
-      22,    23,    24,    25,   302,   198,   198,   198,   198,   198,
-     198,   198,     8,     8,     8,     8,     3,     8,   198,   531,
-       4,     8,     3,     8,     8,   132,   133,   134,   539,   198,
-     198,   198,   198,   218,   615,     4,   613,     3,     8,   198,
-       8,     8,   198,   413,     4,   201,   528,     4,   199,     4,
-     610,   198,     5,   198,     7,   616,   617,   618,     3,     6,
-     177,   180,   181,   182,   183,   619,   620,   621,   623,   624,
-     625,   626,   617,   622,     4,     4,     4,   627,     3,     8,
-       4,   201,   199,   199,     4,   620,   198,   198
+       4,     4,     4,   200,     4,     4,     4,     4,     4,     4,
+     202,     4,   242,     4,   202,   286,     4,     4,     4,     4,
+       4,   200,   202,     4,     4,     4,   392,     4,   469,     4,
+     200,     4,   200,   200,   485,     4,     4,     4,     4,     4,
+       4,     4,   503,     4,     4,   200,     4,     4,     4,   202,
+     428,     4,   202,   202,   452,     4,     4,   368,   202,     4,
+       4,   200,     4,   200,   200,     4,     4,   202,   202,     4,
+       4,     4,     4,   571,     4,   200,   602,     4,     7,   199,
+       7,     7,     7,     7,     5,   199,   169,   170,   171,   172,
+     202,   264,   199,   199,     5,     5,     5,   221,   223,   199,
+      98,    99,   100,   101,   405,     5,     5,     5,     5,     7,
+       5,     5,     5,     7,     7,     7,     7,     7,     7,   199,
+     199,     5,     5,   230,     5,     5,   199,   199,   199,   230,
+     199,     7,   199,   199,   199,   230,   230,   230,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   223,
+     199,   199,   199,   166,   167,   584,   168,   264,   199,   199,
+     199,     5,   219,   241,   601,   285,    21,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,   234,   300,   301,   302,   305,
+     307,   309,   311,   312,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   325,   326,   328,   330,   300,     7,
+     296,   297,   298,     7,   385,   386,   387,     7,   420,   421,
+     422,     7,   444,   445,   446,     7,   410,   411,   412,   116,
+     199,   340,   341,   342,   343,   228,   117,   119,   342,   346,
+     347,   348,   349,   107,   334,   335,   336,     7,   525,   526,
+       7,   495,   496,   497,     7,   361,   362,   363,   126,   127,
+     128,   129,   130,   131,   375,   376,   377,   378,   379,   380,
+     381,   382,    21,   136,   137,   138,   139,   234,   314,   472,
+     474,   537,   538,   539,   542,   543,   545,   546,   142,   143,
+     144,   234,   354,   355,   356,   357,   358,   472,   474,   146,
+     147,   234,   472,   474,   550,   551,   552,   554,   149,   150,
+     151,   199,   472,   474,   558,   559,   560,   561,   563,   564,
+     570,     7,   608,   609,   231,     7,   462,   463,   464,     7,
+     478,   479,   480,   121,   504,   520,   521,   296,     8,     8,
+       8,   303,   306,   308,   310,     4,     4,     4,     4,     4,
+     324,     4,     4,   327,   329,   331,     4,     4,     4,     4,
+       3,     8,     8,   299,     6,     3,   388,     6,     3,   423,
+       6,     3,   447,     6,     3,   413,     6,     3,     3,     6,
+       6,     3,     6,   337,     3,     8,   527,     3,     6,   498,
+       6,     3,   364,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   540,   544,     4,     4,     4,     3,     8,
+       4,     4,     4,     3,     8,   553,   555,     3,     8,     4,
+     562,     4,   565,     3,     8,     8,   610,     3,     6,   199,
+     232,   233,   465,     6,     3,   481,     6,     3,   522,     8,
+       6,     4,     4,     4,     4,   200,   202,   200,   202,   200,
+       4,   200,   200,     4,     4,     4,   200,   200,   202,   200,
+     301,   300,   298,   391,   387,   426,   422,   450,   446,   234,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   259,   260,   261,   262,   265,   267,   269,
+     270,   271,   273,   275,   312,   383,   395,   397,   399,   401,
+     403,   407,   414,   415,   442,   472,   474,   518,   412,   341,
+     347,     4,   335,   110,   111,   234,   312,   442,   472,   474,
+     528,   529,   530,   531,   532,   534,   526,   501,   497,   367,
+     363,   200,   200,   200,   200,   200,   200,   376,     4,     4,
+     200,   200,   200,   538,   202,   200,   200,   355,     4,     4,
+     551,   202,     4,   200,     4,   559,   177,   179,   180,   234,
+     312,   472,   474,   611,   612,   613,   614,   616,   609,     6,
+       3,   468,   464,   484,   480,     4,    22,    23,    24,    25,
+     304,   199,   199,   199,   199,   199,   199,   199,     8,     8,
+       8,     8,     3,     8,   199,   533,     4,     8,     3,     8,
+       8,   133,   134,   135,   541,   199,   199,   199,   199,   219,
+     617,     4,   615,     3,     8,   199,     8,     8,   199,   415,
+       4,   202,   530,     4,   200,     4,   612,   199,     5,   199,
+       7,   618,   619,   620,     3,     6,   178,   181,   182,   183,
+     184,   621,   622,   623,   625,   626,   627,   628,   619,   624,
+       4,     4,     4,   629,     3,     8,     4,   202,   200,   200,
+       4,   622,   199,   199
   };
 
-  const short
+  const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   202,   204,   203,   205,   203,   206,   203,   207,   203,
-     208,   203,   209,   203,   210,   203,   211,   203,   212,   203,
-     213,   203,   214,   203,   215,   203,   216,   203,   217,   203,
-     218,   218,   218,   218,   218,   218,   218,   219,   221,   220,
-     222,   223,   223,   224,   224,   226,   225,   227,   227,   228,
-     228,   230,   229,   231,   231,   232,   232,   233,   235,   234,
-     237,   236,   239,   238,   240,   240,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   243,   242,   244,   245,   246,   247,   248,
+       0,   203,   205,   204,   206,   204,   207,   204,   208,   204,
+     209,   204,   210,   204,   211,   204,   212,   204,   213,   204,
+     214,   204,   215,   204,   216,   204,   217,   204,   218,   204,
+     219,   219,   219,   219,   219,   219,   219,   220,   222,   221,
+     223,   224,   224,   225,   225,   227,   226,   228,   228,   229,
+     229,   231,   230,   232,   232,   233,   233,   234,   236,   235,
+     238,   237,   240,   239,   241,   241,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   244,   243,   245,   246,   247,   248,
      249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   262,   261,   263,   263,   263,   263,   263,   265,
-     264,   267,   266,   268,   270,   269,   272,   271,   273,   274,
-     275,   277,   276,   278,   280,   279,   282,   281,   283,   283,
-     284,   284,   284,   284,   284,   286,   285,   287,   289,   288,
-     291,   290,   293,   292,   294,   294,   295,   295,   297,   296,
-     298,   298,   299,   299,   299,   299,   299,   299,   299,   299,
-     299,   299,   299,   299,   299,   299,   299,   299,   299,   299,
-     299,   299,   299,   301,   300,   302,   302,   302,   302,   304,
-     303,   306,   305,   308,   307,   309,   311,   310,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   322,   321,   323,
-     325,   324,   327,   326,   329,   328,   331,   330,   332,   332,
-     333,   335,   334,   337,   336,   338,   338,   339,   339,   340,
-     341,   343,   342,   344,   344,   345,   345,   345,   346,   347,
-     349,   348,   351,   350,   352,   352,   353,   353,   353,   353,
-     353,   353,   354,   355,   356,   358,   357,   359,   359,   360,
-     360,   362,   361,   364,   363,   365,   365,   365,   366,   366,
-     368,   367,   370,   369,   372,   371,   373,   373,   374,   374,
-     374,   374,   374,   374,   375,   376,   377,   378,   379,   380,
-     382,   381,   383,   383,   384,   384,   386,   385,   388,   387,
-     389,   389,   390,   390,   390,   390,   390,   390,   390,   390,
-     390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
-     390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
-     390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
-     390,   392,   391,   394,   393,   396,   395,   398,   397,   400,
-     399,   402,   401,   403,   403,   403,   403,   404,   405,   407,
-     406,   408,   408,   409,   409,   411,   410,   412,   412,   413,
-     413,   413,   413,   413,   413,   413,   413,   413,   413,   413,
-     413,   413,   413,   413,   413,   413,   413,   413,   413,   413,
-     413,   413,   413,   413,   413,   413,   413,   413,   413,   413,
-     413,   413,   413,   413,   413,   415,   414,   417,   416,   418,
-     418,   419,   419,   421,   420,   423,   422,   424,   424,   425,
-     425,   426,   426,   426,   426,   426,   426,   426,   426,   426,
-     426,   427,   428,   429,   431,   430,   433,   432,   435,   434,
-     436,   438,   437,   439,   441,   440,   442,   442,   443,   443,
-     445,   444,   447,   446,   448,   448,   449,   449,   450,   450,
-     450,   450,   450,   450,   450,   450,   450,   451,   453,   452,
-     454,   455,   456,   457,   459,   458,   460,   460,   461,   461,
-     463,   462,   465,   464,   466,   466,   467,   467,   467,   467,
-     467,   467,   467,   469,   468,   471,   470,   473,   472,   475,
-     474,   476,   476,   477,   477,   479,   478,   481,   480,   482,
-     482,   483,   483,   483,   483,   483,   483,   483,   483,   483,
-     483,   483,   485,   484,   486,   488,   487,   489,   490,   492,
-     491,   493,   493,   494,   494,   496,   495,   498,   497,   499,
-     499,   500,   500,   501,   501,   501,   501,   501,   501,   501,
-     501,   501,   501,   501,   503,   502,   505,   504,   507,   506,
-     509,   508,   511,   510,   513,   512,   515,   514,   517,   516,
-     518,   518,   520,   519,   522,   521,   523,   523,   525,   524,
-     526,   526,   527,   527,   528,   528,   528,   528,   528,   528,
-     528,   529,   531,   530,   532,   534,   533,   535,   535,   536,
-     536,   536,   536,   536,   536,   536,   536,   536,   538,   537,
-     539,   539,   539,   540,   542,   541,   543,   544,   545,   547,
-     546,   548,   548,   549,   549,   549,   549,   549,   551,   550,
-     553,   552,   555,   554,   556,   556,   557,   557,   557,   557,
-     557,   557,   558,   560,   559,   561,   563,   562,   565,   564,
-     567,   566,   568,   568,   569,   569,   569,   569,   569,   569,
-     569,   569,   569,   569,   569,   569,   569,   569,   569,   569,
-     569,   569,   570,   572,   571,   574,   573,   575,   577,   576,
-     578,   579,   581,   580,   582,   582,   584,   583,   585,   586,
-     588,   587,   590,   589,   592,   591,   594,   593,   596,   595,
-     598,   597,   599,   599,   600,   600,   602,   601,   603,   605,
-     604,   606,   606,   608,   607,   609,   609,   610,   610,   610,
-     610,   610,   610,   610,   611,   613,   612,   615,   614,   616,
-     616,   618,   617,   619,   619,   620,   620,   620,   620,   620,
-     622,   621,   623,   624,   625,   627,   626
+     259,   260,   261,   263,   262,   264,   264,   264,   264,   264,
+     266,   265,   268,   267,   269,   270,   272,   271,   274,   273,
+     275,   276,   277,   279,   278,   280,   282,   281,   284,   283,
+     285,   285,   286,   286,   286,   286,   286,   288,   287,   289,
+     291,   290,   293,   292,   295,   294,   296,   296,   297,   297,
+     299,   298,   300,   300,   301,   301,   301,   301,   301,   301,
+     301,   301,   301,   301,   301,   301,   301,   301,   301,   301,
+     301,   301,   301,   301,   301,   303,   302,   304,   304,   304,
+     304,   306,   305,   308,   307,   310,   309,   311,   313,   312,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   324,
+     323,   325,   327,   326,   329,   328,   331,   330,   333,   332,
+     334,   334,   335,   337,   336,   339,   338,   340,   340,   341,
+     341,   342,   343,   345,   344,   346,   346,   347,   347,   347,
+     348,   349,   351,   350,   353,   352,   354,   354,   355,   355,
+     355,   355,   355,   355,   356,   357,   358,   360,   359,   361,
+     361,   362,   362,   364,   363,   366,   365,   367,   367,   367,
+     368,   368,   370,   369,   372,   371,   374,   373,   375,   375,
+     376,   376,   376,   376,   376,   376,   377,   378,   379,   380,
+     381,   382,   384,   383,   385,   385,   386,   386,   388,   387,
+     390,   389,   391,   391,   392,   392,   392,   392,   392,   392,
+     392,   392,   392,   392,   392,   392,   392,   392,   392,   392,
+     392,   392,   392,   392,   392,   392,   392,   392,   392,   392,
+     392,   392,   392,   392,   392,   392,   392,   392,   392,   392,
+     392,   392,   392,   392,   394,   393,   396,   395,   398,   397,
+     400,   399,   402,   401,   404,   403,   405,   405,   405,   405,
+     406,   407,   409,   408,   410,   410,   411,   411,   413,   412,
+     414,   414,   415,   415,   415,   415,   415,   415,   415,   415,
+     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
+     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
+     415,   415,   415,   415,   415,   415,   415,   415,   415,   417,
+     416,   419,   418,   420,   420,   421,   421,   423,   422,   425,
+     424,   426,   426,   427,   427,   428,   428,   428,   428,   428,
+     428,   428,   428,   428,   428,   429,   430,   431,   433,   432,
+     435,   434,   437,   436,   438,   440,   439,   441,   443,   442,
+     444,   444,   445,   445,   447,   446,   449,   448,   450,   450,
+     451,   451,   452,   452,   452,   452,   452,   452,   452,   452,
+     452,   453,   455,   454,   456,   457,   458,   459,   461,   460,
+     462,   462,   463,   463,   465,   464,   467,   466,   468,   468,
+     469,   469,   469,   469,   469,   469,   469,   471,   470,   473,
+     472,   475,   474,   477,   476,   478,   478,   479,   479,   481,
+     480,   483,   482,   484,   484,   485,   485,   485,   485,   485,
+     485,   485,   485,   485,   485,   485,   487,   486,   488,   490,
+     489,   491,   492,   494,   493,   495,   495,   496,   496,   498,
+     497,   500,   499,   501,   501,   502,   502,   503,   503,   503,
+     503,   503,   503,   503,   503,   503,   503,   503,   505,   504,
+     507,   506,   509,   508,   511,   510,   513,   512,   515,   514,
+     517,   516,   519,   518,   520,   520,   522,   521,   524,   523,
+     525,   525,   527,   526,   528,   528,   529,   529,   530,   530,
+     530,   530,   530,   530,   530,   531,   533,   532,   534,   536,
+     535,   537,   537,   538,   538,   538,   538,   538,   538,   538,
+     538,   538,   540,   539,   541,   541,   541,   542,   544,   543,
+     545,   546,   547,   549,   548,   550,   550,   551,   551,   551,
+     551,   551,   553,   552,   555,   554,   557,   556,   558,   558,
+     559,   559,   559,   559,   559,   559,   560,   562,   561,   563,
+     565,   564,   567,   566,   569,   568,   570,   570,   571,   571,
+     571,   571,   571,   571,   571,   571,   571,   571,   571,   571,
+     571,   571,   571,   571,   571,   571,   572,   574,   573,   576,
+     575,   577,   579,   578,   580,   581,   583,   582,   584,   584,
+     586,   585,   587,   588,   590,   589,   592,   591,   594,   593,
+     596,   595,   598,   597,   600,   599,   601,   601,   602,   602,
+     604,   603,   605,   607,   606,   608,   608,   610,   609,   611,
+     611,   612,   612,   612,   612,   612,   612,   612,   613,   615,
+     614,   617,   616,   618,   618,   620,   619,   621,   621,   622,
+     622,   622,   622,   622,   624,   623,   625,   626,   627,   629,
+     628
   };
 
-  const signed char
+  const unsigned char
   Dhcp6Parser::yyr2_[] =
   {
        0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
@@ -5433,84 +5296,85 @@ namespace isc { namespace dhcp {
        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,     0,     4,     3,     3,     3,     3,     3,
+       1,     1,     1,     1,     0,     4,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     0,     4,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     3,     0,     4,     0,     4,     3,     3,
-       3,     0,     4,     3,     0,     6,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     0,     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,
-       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,     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,     1,     3,     1,     1,     1,     1,
-       1,     1,     3,     3,     3,     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,
+       3,     3,     3,     0,     4,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     3,     3,     0,     4,     0,     4,
+       3,     3,     3,     0,     4,     3,     0,     6,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     0,     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,     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,     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,     1,     3,     1,     1,
+       1,     1,     1,     1,     3,     3,     3,     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,     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,
+       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,     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,     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,     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,     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,
-       1,     1,     1,     3,     0,     4,     3,     3,     3,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     3,     0,     4,     3,     0,     4,     0,     6,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       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,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     3,     0,     4,     0,     4,     3,     0,     4,
-       3,     3,     0,     4,     1,     1,     0,     4,     3,     3,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     6,
-       0,     4,     1,     3,     1,     1,     0,     6,     3,     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,     1,
-       0,     4,     3,     3,     3,     0,     4
+       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,     0,     4,     0,     4,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
+       0,     6,     3,     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,     1,     0,     4,     3,     3,     3,     0,
+       4
   };
 
 
-#if PARSER6_DEBUG || 1
+
   // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-  // First, the terminals, then, starting at \a YYNTOKENS, nonterminals.
+  // First, the terminals, then, starting at \a yyntokens_, nonterminals.
   const char*
   const Dhcp6Parser::yytname_[] =
   {
-  "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
-  "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
-  "\"data-directory\"", "\"config-control\"", "\"config-databases\"",
+  "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
+  "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"data-directory\"",
+  "\"config-control\"", "\"config-databases\"",
   "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"",
   "\"re-detect\"", "\"lease-database\"", "\"hosts-database\"",
   "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"",
@@ -5529,9 +5393,10 @@ namespace isc { namespace dhcp {
   "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
   "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
   "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
-  "\"ddns-update-on-renew\"", "\"store-extended-info\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"",
+  "\"store-extended-info\"", "\"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\"",
@@ -5585,22 +5450,23 @@ namespace isc { namespace dhcp {
   "ddns_override_client_update", "ddns_replace_client_name", "$@22",
   "ddns_replace_client_name_value", "ddns_generated_prefix", "$@23",
   "ddns_qualifying_suffix", "$@24", "ddns_update_on_renew",
-  "hostname_char_set", "$@25", "hostname_char_replacement", "$@26",
-  "store_extended_info", "statistic_default_sample_count",
-  "statistic_default_sample_age", "server_tag", "$@27",
-  "ip_reservations_unique", "interfaces_config", "$@28", "sub_interfaces6",
-  "$@29", "interfaces_config_params", "interfaces_config_param",
-  "interfaces_list", "$@30", "re_detect", "lease_database", "$@31",
-  "hosts_database", "$@32", "hosts_databases", "$@33", "database_list",
-  "not_empty_database_list", "database", "$@34", "database_map_params",
-  "database_map_param", "database_type", "$@35", "db_type", "user", "$@36",
-  "password", "$@37", "host", "$@38", "port", "name", "$@39", "persist",
-  "lfc_interval", "readonly", "connect_timeout", "reconnect_wait_time",
-  "max_row_errors", "request_timeout", "tcp_keepalive", "tcp_nodelay",
-  "contact_points", "$@40", "max_reconnect_tries", "keyspace", "$@41",
-  "consistency", "$@42", "serial_consistency", "$@43", "sanity_checks",
-  "$@44", "sanity_checks_params", "sanity_checks_param", "lease_checks",
-  "$@45", "mac_sources", "$@46", "mac_sources_list", "mac_sources_value",
+  "ddns_use_conflict_resolution", "hostname_char_set", "$@25",
+  "hostname_char_replacement", "$@26", "store_extended_info",
+  "statistic_default_sample_count", "statistic_default_sample_age",
+  "server_tag", "$@27", "ip_reservations_unique", "interfaces_config",
+  "$@28", "sub_interfaces6", "$@29", "interfaces_config_params",
+  "interfaces_config_param", "interfaces_list", "$@30", "re_detect",
+  "lease_database", "$@31", "hosts_database", "$@32", "hosts_databases",
+  "$@33", "database_list", "not_empty_database_list", "database", "$@34",
+  "database_map_params", "database_map_param", "database_type", "$@35",
+  "db_type", "user", "$@36", "password", "$@37", "host", "$@38", "port",
+  "name", "$@39", "persist", "lfc_interval", "readonly", "connect_timeout",
+  "reconnect_wait_time", "max_row_errors", "request_timeout",
+  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@40",
+  "max_reconnect_tries", "keyspace", "$@41", "consistency", "$@42",
+  "serial_consistency", "$@43", "sanity_checks", "$@44",
+  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@45",
+  "mac_sources", "$@46", "mac_sources_list", "mac_sources_value",
   "duid_id", "string_id", "host_reservation_identifiers", "$@47",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "flex_id", "relay_supplied_options", "$@48",
@@ -5675,113 +5541,114 @@ namespace isc { namespace dhcp {
   "output_params_list", "output_params", "output", "$@133", "flush",
   "maxsize", "maxver", "pattern", "$@134", YY_NULLPTR
   };
-#endif
-
 
 #if PARSER6_DEBUG
-  const short
+  const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   287,   287,   287,   288,   288,   289,   289,   290,   290,
-     291,   291,   292,   292,   293,   293,   294,   294,   295,   295,
-     296,   296,   297,   297,   298,   298,   299,   299,   300,   300,
-     308,   309,   310,   311,   312,   313,   314,   317,   322,   322,
-     333,   336,   337,   340,   345,   353,   353,   360,   361,   364,
-     368,   375,   375,   382,   383,   386,   390,   401,   410,   410,
-     425,   425,   442,   442,   451,   452,   457,   458,   459,   460,
-     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
-     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
-     481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
-     491,   492,   493,   494,   495,   496,   497,   498,   499,   500,
-     501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
-     511,   512,   513,   516,   516,   525,   531,   537,   543,   549,
-     555,   561,   567,   573,   579,   585,   591,   597,   603,   609,
-     615,   621,   627,   627,   636,   639,   642,   645,   648,   654,
-     654,   663,   663,   672,   678,   678,   687,   687,   696,   702,
-     708,   714,   714,   723,   729,   729,   741,   741,   750,   751,
-     754,   755,   756,   757,   758,   761,   761,   772,   778,   778,
-     791,   791,   804,   804,   815,   816,   819,   820,   823,   823,
-     833,   834,   837,   838,   839,   840,   841,   842,   843,   844,
-     845,   846,   847,   848,   849,   850,   851,   852,   853,   854,
-     855,   856,   857,   860,   860,   868,   869,   870,   871,   874,
-     874,   883,   883,   892,   892,   901,   907,   907,   916,   922,
-     928,   934,   940,   946,   952,   958,   964,   970,   970,   979,
-     985,   985,   994,   994,  1003,  1003,  1012,  1012,  1023,  1024,
-    1026,  1028,  1028,  1047,  1047,  1058,  1059,  1062,  1063,  1066,
-    1071,  1076,  1076,  1087,  1088,  1091,  1092,  1093,  1096,  1101,
-    1108,  1108,  1121,  1121,  1134,  1135,  1138,  1139,  1140,  1141,
-    1142,  1143,  1146,  1152,  1158,  1164,  1164,  1175,  1176,  1179,
-    1180,  1183,  1183,  1193,  1193,  1203,  1204,  1205,  1208,  1209,
-    1212,  1212,  1221,  1221,  1230,  1230,  1242,  1243,  1246,  1247,
-    1248,  1249,  1250,  1251,  1254,  1260,  1266,  1272,  1278,  1284,
-    1293,  1293,  1307,  1308,  1311,  1312,  1319,  1319,  1345,  1345,
-    1356,  1357,  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,  1402,  1402,  1411,  1411,  1420,  1420,  1429,  1429,  1438,
-    1438,  1449,  1449,  1457,  1458,  1459,  1460,  1463,  1469,  1477,
-    1477,  1489,  1490,  1494,  1495,  1498,  1498,  1506,  1507,  1510,
-    1511,  1512,  1513,  1514,  1515,  1516,  1517,  1518,  1519,  1520,
-    1521,  1522,  1523,  1524,  1525,  1526,  1527,  1528,  1529,  1530,
-    1531,  1532,  1533,  1534,  1535,  1536,  1537,  1538,  1539,  1540,
-    1541,  1542,  1543,  1544,  1545,  1552,  1552,  1566,  1566,  1575,
-    1576,  1579,  1580,  1585,  1585,  1600,  1600,  1614,  1615,  1618,
-    1619,  1622,  1623,  1624,  1625,  1626,  1627,  1628,  1629,  1630,
-    1631,  1634,  1636,  1642,  1644,  1644,  1653,  1653,  1662,  1662,
-    1671,  1673,  1673,  1682,  1692,  1692,  1705,  1706,  1711,  1712,
-    1717,  1717,  1729,  1729,  1741,  1742,  1747,  1748,  1753,  1754,
-    1755,  1756,  1757,  1758,  1759,  1760,  1761,  1764,  1766,  1766,
-    1775,  1777,  1779,  1785,  1794,  1794,  1807,  1808,  1811,  1812,
-    1815,  1815,  1825,  1825,  1835,  1836,  1839,  1840,  1841,  1842,
-    1843,  1844,  1845,  1848,  1848,  1857,  1857,  1882,  1882,  1912,
-    1912,  1925,  1926,  1929,  1930,  1933,  1933,  1945,  1945,  1957,
-    1958,  1961,  1962,  1963,  1964,  1965,  1966,  1967,  1968,  1969,
-    1970,  1971,  1974,  1974,  1983,  1989,  1989,  1998,  2004,  2013,
-    2013,  2024,  2025,  2028,  2029,  2032,  2032,  2041,  2041,  2050,
-    2051,  2054,  2055,  2059,  2060,  2061,  2062,  2063,  2064,  2065,
-    2066,  2067,  2068,  2069,  2072,  2072,  2083,  2083,  2094,  2094,
-    2103,  2103,  2112,  2112,  2121,  2121,  2130,  2130,  2144,  2144,
-    2155,  2156,  2159,  2159,  2171,  2171,  2182,  2183,  2186,  2186,
-    2196,  2197,  2200,  2201,  2204,  2205,  2206,  2207,  2208,  2209,
-    2210,  2213,  2215,  2215,  2224,  2233,  2233,  2246,  2247,  2250,
-    2251,  2252,  2253,  2254,  2255,  2256,  2257,  2258,  2261,  2261,
-    2269,  2270,  2271,  2274,  2280,  2280,  2289,  2295,  2303,  2311,
-    2311,  2322,  2323,  2326,  2327,  2328,  2329,  2330,  2333,  2333,
-    2342,  2342,  2354,  2354,  2367,  2368,  2371,  2372,  2373,  2374,
-    2375,  2376,  2379,  2385,  2385,  2394,  2400,  2400,  2410,  2410,
-    2423,  2423,  2433,  2434,  2437,  2438,  2439,  2440,  2441,  2442,
-    2443,  2444,  2445,  2446,  2447,  2448,  2449,  2450,  2451,  2452,
-    2453,  2454,  2457,  2464,  2464,  2473,  2473,  2482,  2488,  2488,
-    2497,  2503,  2509,  2509,  2518,  2519,  2522,  2522,  2532,  2539,
-    2546,  2546,  2555,  2555,  2565,  2565,  2575,  2575,  2587,  2587,
-    2599,  2599,  2609,  2610,  2614,  2615,  2618,  2618,  2629,  2637,
-    2637,  2650,  2651,  2655,  2655,  2663,  2664,  2667,  2668,  2669,
-    2670,  2671,  2672,  2673,  2676,  2682,  2682,  2691,  2691,  2702,
-    2703,  2706,  2706,  2714,  2715,  2718,  2719,  2720,  2721,  2722,
-    2725,  2725,  2734,  2740,  2746,  2752,  2752
+       0,   288,   288,   288,   289,   289,   290,   290,   291,   291,
+     292,   292,   293,   293,   294,   294,   295,   295,   296,   296,
+     297,   297,   298,   298,   299,   299,   300,   300,   301,   301,
+     309,   310,   311,   312,   313,   314,   315,   318,   323,   323,
+     334,   337,   338,   341,   346,   354,   354,   361,   362,   365,
+     369,   376,   376,   383,   384,   387,   391,   402,   411,   411,
+     426,   426,   443,   443,   452,   453,   458,   459,   460,   461,
+     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
+     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
+     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
+     492,   493,   494,   495,   496,   497,   498,   499,   500,   501,
+     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
+     512,   513,   514,   515,   518,   518,   527,   533,   539,   545,
+     551,   557,   563,   569,   575,   581,   587,   593,   599,   605,
+     611,   617,   623,   629,   629,   638,   641,   644,   647,   650,
+     656,   656,   665,   665,   674,   680,   686,   686,   695,   695,
+     704,   710,   716,   722,   722,   731,   737,   737,   749,   749,
+     758,   759,   762,   763,   764,   765,   766,   769,   769,   780,
+     786,   786,   799,   799,   812,   812,   823,   824,   827,   828,
+     831,   831,   841,   842,   845,   846,   847,   848,   849,   850,
+     851,   852,   853,   854,   855,   856,   857,   858,   859,   860,
+     861,   862,   863,   864,   865,   868,   868,   876,   877,   878,
+     879,   882,   882,   891,   891,   900,   900,   909,   915,   915,
+     924,   930,   936,   942,   948,   954,   960,   966,   972,   978,
+     978,   987,   993,   993,  1002,  1002,  1011,  1011,  1020,  1020,
+    1031,  1032,  1034,  1036,  1036,  1055,  1055,  1066,  1067,  1070,
+    1071,  1074,  1079,  1084,  1084,  1095,  1096,  1099,  1100,  1101,
+    1104,  1109,  1116,  1116,  1129,  1129,  1142,  1143,  1146,  1147,
+    1148,  1149,  1150,  1151,  1154,  1160,  1166,  1172,  1172,  1183,
+    1184,  1187,  1188,  1191,  1191,  1201,  1201,  1211,  1212,  1213,
+    1216,  1217,  1220,  1220,  1229,  1229,  1238,  1238,  1250,  1251,
+    1254,  1255,  1256,  1257,  1258,  1259,  1262,  1268,  1274,  1280,
+    1286,  1292,  1301,  1301,  1315,  1316,  1319,  1320,  1327,  1327,
+    1353,  1353,  1364,  1365,  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,  1411,  1411,  1420,  1420,  1429,  1429,
+    1438,  1438,  1447,  1447,  1458,  1458,  1466,  1467,  1468,  1469,
+    1472,  1478,  1486,  1486,  1498,  1499,  1503,  1504,  1507,  1507,
+    1515,  1516,  1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,
+    1527,  1528,  1529,  1530,  1531,  1532,  1533,  1534,  1535,  1536,
+    1537,  1538,  1539,  1540,  1541,  1542,  1543,  1544,  1545,  1546,
+    1547,  1548,  1549,  1550,  1551,  1552,  1553,  1554,  1555,  1562,
+    1562,  1576,  1576,  1585,  1586,  1589,  1590,  1595,  1595,  1610,
+    1610,  1624,  1625,  1628,  1629,  1632,  1633,  1634,  1635,  1636,
+    1637,  1638,  1639,  1640,  1641,  1644,  1646,  1652,  1654,  1654,
+    1663,  1663,  1672,  1672,  1681,  1683,  1683,  1692,  1702,  1702,
+    1715,  1716,  1721,  1722,  1727,  1727,  1739,  1739,  1751,  1752,
+    1757,  1758,  1763,  1764,  1765,  1766,  1767,  1768,  1769,  1770,
+    1771,  1774,  1776,  1776,  1785,  1787,  1789,  1795,  1804,  1804,
+    1817,  1818,  1821,  1822,  1825,  1825,  1835,  1835,  1845,  1846,
+    1849,  1850,  1851,  1852,  1853,  1854,  1855,  1858,  1858,  1867,
+    1867,  1892,  1892,  1922,  1922,  1935,  1936,  1939,  1940,  1943,
+    1943,  1955,  1955,  1967,  1968,  1971,  1972,  1973,  1974,  1975,
+    1976,  1977,  1978,  1979,  1980,  1981,  1984,  1984,  1993,  1999,
+    1999,  2008,  2014,  2023,  2023,  2034,  2035,  2038,  2039,  2042,
+    2042,  2051,  2051,  2060,  2061,  2064,  2065,  2069,  2070,  2071,
+    2072,  2073,  2074,  2075,  2076,  2077,  2078,  2079,  2082,  2082,
+    2093,  2093,  2104,  2104,  2113,  2113,  2122,  2122,  2131,  2131,
+    2140,  2140,  2154,  2154,  2165,  2166,  2169,  2169,  2181,  2181,
+    2192,  2193,  2196,  2196,  2206,  2207,  2210,  2211,  2214,  2215,
+    2216,  2217,  2218,  2219,  2220,  2223,  2225,  2225,  2234,  2243,
+    2243,  2256,  2257,  2260,  2261,  2262,  2263,  2264,  2265,  2266,
+    2267,  2268,  2271,  2271,  2279,  2280,  2281,  2284,  2290,  2290,
+    2299,  2305,  2313,  2321,  2321,  2332,  2333,  2336,  2337,  2338,
+    2339,  2340,  2343,  2343,  2352,  2352,  2364,  2364,  2377,  2378,
+    2381,  2382,  2383,  2384,  2385,  2386,  2389,  2395,  2395,  2404,
+    2410,  2410,  2420,  2420,  2433,  2433,  2443,  2444,  2447,  2448,
+    2449,  2450,  2451,  2452,  2453,  2454,  2455,  2456,  2457,  2458,
+    2459,  2460,  2461,  2462,  2463,  2464,  2467,  2474,  2474,  2483,
+    2483,  2492,  2498,  2498,  2507,  2513,  2519,  2519,  2528,  2529,
+    2532,  2532,  2542,  2549,  2556,  2556,  2565,  2565,  2575,  2575,
+    2585,  2585,  2597,  2597,  2609,  2609,  2619,  2620,  2624,  2625,
+    2628,  2628,  2639,  2647,  2647,  2660,  2661,  2665,  2665,  2673,
+    2674,  2677,  2678,  2679,  2680,  2681,  2682,  2683,  2686,  2692,
+    2692,  2701,  2701,  2712,  2713,  2716,  2716,  2724,  2725,  2728,
+    2729,  2730,  2731,  2732,  2735,  2735,  2744,  2750,  2756,  2762,
+    2762
   };
 
+  // Print the state stack on the debug stream.
   void
-  Dhcp6Parser::yy_stack_print_ () const
+  Dhcp6Parser::yystack_print_ ()
   {
     *yycdebug_ << "Stack now";
     for (stack_type::const_iterator
            i = yystack_.begin (),
            i_end = yystack_.end ();
          i != i_end; ++i)
-      *yycdebug_ << ' ' << int (i->state);
-    *yycdebug_ << '\n';
+      *yycdebug_ << ' ' << i->state;
+    *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) const
+  Dhcp6Parser::yy_reduce_print_ (int yyrule)
   {
-    int 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 << " =",
@@ -5790,11 +5657,10 @@ namespace isc { namespace dhcp {
 #endif // PARSER6_DEBUG
 
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 5796 "dhcp6_parser.cc"
-
-#line 2761 "dhcp6_parser.yy"
+#line 5663 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2771 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index a410fca6b05cfafe1861a95267efde628fdd61f7..b6cb6e538f789207ae011d306c70ed201f06fe46 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.7.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-2020 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.
 
-// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-// especially those whose name start with YY_ or yy_.  They are
-// private implementation details that can be changed or removed.
-
 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
-// "%code requires" blocks.
-#line 17 "dhcp6_parser.yy"
+// //                    "%code requires" blocks.
+#line 17 "dhcp6_parser.yy" // lalr1.cc:377
 
 #include <string>
 #include <cc/data.h>
@@ -57,7 +52,7 @@ using namespace isc::dhcp;
 using namespace isc::data;
 using namespace std;
 
-#line 61 "dhcp6_parser.h"
+#line 56 "dhcp6_parser.h" // lalr1.cc:377
 
 # include <cassert>
 # include <cstdlib> // std::abort
@@ -65,64 +60,39 @@ 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 YY_ASSERT
+#ifndef YYASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define YYASSERT assert
 #endif
 
 
-#ifndef YY_ATTRIBUTE_PURE
-# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
 # else
-#  define YY_ATTRIBUTE_PURE
+#  define YY_ATTRIBUTE(Spec) /* empty */
 # endif
 #endif
 
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
 #ifndef YY_ATTRIBUTE_UNUSED
-# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# 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 YY_ATTRIBUTE_UNUSED
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # endif
 #endif
 
@@ -133,13 +103,13 @@ 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")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -152,39 +122,6 @@ using namespace std;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
-# define YY_IGNORE_USELESS_CAST_BEGIN                          \
-    _Pragma ("GCC diagnostic push")                            \
-    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
-# define YY_IGNORE_USELESS_CAST_END            \
-    _Pragma ("GCC diagnostic pop")
-#endif
-#ifndef YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_END
-#endif
-
-# ifndef YY_CAST
-#  ifdef __cplusplus
-#   define YY_CAST(Type, Val) static_cast<Type> (Val)
-#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
-#  else
-#   define YY_CAST(Type, Val) ((Type) (Val))
-#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
-#  endif
-# 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
@@ -198,182 +135,120 @@ using namespace std;
 # endif /* ! defined YYDEBUG */
 #endif  /* ! defined PARSER6_DEBUG */
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // lalr1.cc:377
 namespace isc { namespace dhcp {
-#line 204 "dhcp6_parser.h"
-
+#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))
     {
-      YY_ASSERT (sizeof (T) <= size);
-      new (yyas_<T> ()) T (YY_MOVE (t));
+      YYASSERT (sizeof (T) <= S);
+      new (yyas_<T> ()) T (t);
     }
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    semantic_type (const self_type&) = delete;
-    /// Non copyable.
-    self_type& operator= (const self_type&) = delete;
-#endif
-
     /// Destruction, allowed only if empty.
-    ~semantic_type () YY_NOEXCEPT
+    ~variant ()
     {
-      YY_ASSERT (!yytypeid_);
+      YYASSERT (!yytypeid_);
     }
 
-# if 201103L <= YY_CPLUSPLUS
-    /// Instantiate a \a T in here from \a t.
-    template <typename T, typename... U>
-    T&
-    emplace (U&&... u)
-    {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (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 ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      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)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (!yytypeid_);
+      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 ()
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (*yytypeid_ == typeid (T));
+      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
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      YYASSERT (*yytypeid_ == typeid (T));
+      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)
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
-      std::swap (as<T> (), that.as<T> ());
+      YYASSERT (yytypeid_);
+      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.
@@ -386,17 +261,14 @@ namespace isc { namespace dhcp {
     }
 
   private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
-    semantic_type (const self_type&);
-    /// Non copyable.
-    self_type& operator= (const self_type&);
-#endif
+    /// Prohibit blind copies.
+    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);
@@ -405,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
     {
@@ -421,37 +311,23 @@ namespace isc { namespace dhcp {
       // hr_mode
       // duid_type
       // ncr_protocol_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
@@ -461,888 +337,235 @@ 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;
     };
 
-    /// Token kinds.
+    /// Tokens.
     struct token
     {
-      enum token_kind_type
-      {
-        TOKEN_PARSER6_EMPTY = -2,
-    TOKEN_END = 0,                 // "end of file"
-    TOKEN_PARSER6_error = 256,     // error
-    TOKEN_PARSER6_UNDEF = 257,     // "invalid token"
-    TOKEN_COMMA = 258,             // ","
-    TOKEN_COLON = 259,             // ":"
-    TOKEN_LSQUARE_BRACKET = 260,   // "["
-    TOKEN_RSQUARE_BRACKET = 261,   // "]"
-    TOKEN_LCURLY_BRACKET = 262,    // "{"
-    TOKEN_RCURLY_BRACKET = 263,    // "}"
-    TOKEN_NULL_TYPE = 264,         // "null"
-    TOKEN_DHCP6 = 265,             // "Dhcp6"
-    TOKEN_DATA_DIRECTORY = 266,    // "data-directory"
-    TOKEN_CONFIG_CONTROL = 267,    // "config-control"
-    TOKEN_CONFIG_DATABASES = 268,  // "config-databases"
-    TOKEN_CONFIG_FETCH_WAIT_TIME = 269, // "config-fetch-wait-time"
-    TOKEN_INTERFACES_CONFIG = 270, // "interfaces-config"
-    TOKEN_INTERFACES = 271,        // "interfaces"
-    TOKEN_RE_DETECT = 272,         // "re-detect"
-    TOKEN_LEASE_DATABASE = 273,    // "lease-database"
-    TOKEN_HOSTS_DATABASE = 274,    // "hosts-database"
-    TOKEN_HOSTS_DATABASES = 275,   // "hosts-databases"
-    TOKEN_TYPE = 276,              // "type"
-    TOKEN_MEMFILE = 277,           // "memfile"
-    TOKEN_MYSQL = 278,             // "mysql"
-    TOKEN_POSTGRESQL = 279,        // "postgresql"
-    TOKEN_CQL = 280,               // "cql"
-    TOKEN_USER = 281,              // "user"
-    TOKEN_PASSWORD = 282,          // "password"
-    TOKEN_HOST = 283,              // "host"
-    TOKEN_PORT = 284,              // "port"
-    TOKEN_PERSIST = 285,           // "persist"
-    TOKEN_LFC_INTERVAL = 286,      // "lfc-interval"
-    TOKEN_READONLY = 287,          // "readonly"
-    TOKEN_CONNECT_TIMEOUT = 288,   // "connect-timeout"
-    TOKEN_CONTACT_POINTS = 289,    // "contact-points"
-    TOKEN_MAX_RECONNECT_TRIES = 290, // "max-reconnect-tries"
-    TOKEN_RECONNECT_WAIT_TIME = 291, // "reconnect-wait-time"
-    TOKEN_KEYSPACE = 292,          // "keyspace"
-    TOKEN_CONSISTENCY = 293,       // "consistency"
-    TOKEN_SERIAL_CONSISTENCY = 294, // "serial-consistency"
-    TOKEN_REQUEST_TIMEOUT = 295,   // "request-timeout"
-    TOKEN_TCP_KEEPALIVE = 296,     // "tcp-keepalive"
-    TOKEN_TCP_NODELAY = 297,       // "tcp-nodelay"
-    TOKEN_MAX_ROW_ERRORS = 298,    // "max-row-errors"
-    TOKEN_PREFERRED_LIFETIME = 299, // "preferred-lifetime"
-    TOKEN_MIN_PREFERRED_LIFETIME = 300, // "min-preferred-lifetime"
-    TOKEN_MAX_PREFERRED_LIFETIME = 301, // "max-preferred-lifetime"
-    TOKEN_VALID_LIFETIME = 302,    // "valid-lifetime"
-    TOKEN_MIN_VALID_LIFETIME = 303, // "min-valid-lifetime"
-    TOKEN_MAX_VALID_LIFETIME = 304, // "max-valid-lifetime"
-    TOKEN_RENEW_TIMER = 305,       // "renew-timer"
-    TOKEN_REBIND_TIMER = 306,      // "rebind-timer"
-    TOKEN_CALCULATE_TEE_TIMES = 307, // "calculate-tee-times"
-    TOKEN_T1_PERCENT = 308,        // "t1-percent"
-    TOKEN_T2_PERCENT = 309,        // "t2-percent"
-    TOKEN_CACHE_THRESHOLD = 310,   // "cache-threshold"
-    TOKEN_CACHE_MAX_AGE = 311,     // "cache-max-age"
-    TOKEN_DECLINE_PROBATION_PERIOD = 312, // "decline-probation-period"
-    TOKEN_SERVER_TAG = 313,        // "server-tag"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 314, // "statistic-default-sample-count"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 315, // "statistic-default-sample-age"
-    TOKEN_DDNS_SEND_UPDATES = 316, // "ddns-send-updates"
-    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 317, // "ddns-override-no-update"
-    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 318, // "ddns-override-client-update"
-    TOKEN_DDNS_REPLACE_CLIENT_NAME = 319, // "ddns-replace-client-name"
-    TOKEN_DDNS_GENERATED_PREFIX = 320, // "ddns-generated-prefix"
-    TOKEN_DDNS_QUALIFYING_SUFFIX = 321, // "ddns-qualifying-suffix"
-    TOKEN_DDNS_UPDATE_ON_RENEW = 322, // "ddns-update-on-renew"
-    TOKEN_STORE_EXTENDED_INFO = 323, // "store-extended-info"
-    TOKEN_SUBNET6 = 324,           // "subnet6"
-    TOKEN_OPTION_DEF = 325,        // "option-def"
-    TOKEN_OPTION_DATA = 326,       // "option-data"
-    TOKEN_NAME = 327,              // "name"
-    TOKEN_DATA = 328,              // "data"
-    TOKEN_CODE = 329,              // "code"
-    TOKEN_SPACE = 330,             // "space"
-    TOKEN_CSV_FORMAT = 331,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 332,       // "always-send"
-    TOKEN_RECORD_TYPES = 333,      // "record-types"
-    TOKEN_ENCAPSULATE = 334,       // "encapsulate"
-    TOKEN_ARRAY = 335,             // "array"
-    TOKEN_POOLS = 336,             // "pools"
-    TOKEN_POOL = 337,              // "pool"
-    TOKEN_PD_POOLS = 338,          // "pd-pools"
-    TOKEN_PREFIX = 339,            // "prefix"
-    TOKEN_PREFIX_LEN = 340,        // "prefix-len"
-    TOKEN_EXCLUDED_PREFIX = 341,   // "excluded-prefix"
-    TOKEN_EXCLUDED_PREFIX_LEN = 342, // "excluded-prefix-len"
-    TOKEN_DELEGATED_LEN = 343,     // "delegated-len"
-    TOKEN_USER_CONTEXT = 344,      // "user-context"
-    TOKEN_COMMENT = 345,           // "comment"
-    TOKEN_SUBNET = 346,            // "subnet"
-    TOKEN_INTERFACE = 347,         // "interface"
-    TOKEN_INTERFACE_ID = 348,      // "interface-id"
-    TOKEN_ID = 349,                // "id"
-    TOKEN_RAPID_COMMIT = 350,      // "rapid-commit"
-    TOKEN_RESERVATION_MODE = 351,  // "reservation-mode"
-    TOKEN_DISABLED = 352,          // "disabled"
-    TOKEN_OUT_OF_POOL = 353,       // "out-of-pool"
-    TOKEN_GLOBAL = 354,            // "global"
-    TOKEN_ALL = 355,               // "all"
-    TOKEN_SHARED_NETWORKS = 356,   // "shared-networks"
-    TOKEN_MAC_SOURCES = 357,       // "mac-sources"
-    TOKEN_RELAY_SUPPLIED_OPTIONS = 358, // "relay-supplied-options"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 359, // "host-reservation-identifiers"
-    TOKEN_SANITY_CHECKS = 360,     // "sanity-checks"
-    TOKEN_LEASE_CHECKS = 361,      // "lease-checks"
-    TOKEN_CLIENT_CLASSES = 362,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 363, // "require-client-classes"
-    TOKEN_TEST = 364,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 365,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 366,      // "client-class"
-    TOKEN_RESERVATIONS = 367,      // "reservations"
-    TOKEN_IP_ADDRESSES = 368,      // "ip-addresses"
-    TOKEN_PREFIXES = 369,          // "prefixes"
-    TOKEN_DUID = 370,              // "duid"
-    TOKEN_HW_ADDRESS = 371,        // "hw-address"
-    TOKEN_HOSTNAME = 372,          // "hostname"
-    TOKEN_FLEX_ID = 373,           // "flex-id"
-    TOKEN_RELAY = 374,             // "relay"
-    TOKEN_IP_ADDRESS = 375,        // "ip-address"
-    TOKEN_HOOKS_LIBRARIES = 376,   // "hooks-libraries"
-    TOKEN_LIBRARY = 377,           // "library"
-    TOKEN_PARAMETERS = 378,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 379, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 380, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 381, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 382, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 383, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 384,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 385, // "unwarned-reclaim-cycles"
-    TOKEN_SERVER_ID = 386,         // "server-id"
-    TOKEN_LLT = 387,               // "LLT"
-    TOKEN_EN = 388,                // "EN"
-    TOKEN_LL = 389,                // "LL"
-    TOKEN_IDENTIFIER = 390,        // "identifier"
-    TOKEN_HTYPE = 391,             // "htype"
-    TOKEN_TIME = 392,              // "time"
-    TOKEN_ENTERPRISE_ID = 393,     // "enterprise-id"
-    TOKEN_DHCP4O6_PORT = 394,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 395, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 396, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 397,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 398, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 399,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 400,       // "socket-type"
-    TOKEN_SOCKET_NAME = 401,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 402, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 403,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 404,        // "queue-type"
-    TOKEN_CAPACITY = 405,          // "capacity"
-    TOKEN_DHCP_DDNS = 406,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 407,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 408, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 409,         // "server-ip"
-    TOKEN_SERVER_PORT = 410,       // "server-port"
-    TOKEN_SENDER_IP = 411,         // "sender-ip"
-    TOKEN_SENDER_PORT = 412,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 413,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 414,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 415,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 416, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 417, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 418, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 419,  // "generated-prefix"
-    TOKEN_UDP = 420,               // "UDP"
-    TOKEN_TCP = 421,               // "TCP"
-    TOKEN_JSON = 422,              // "JSON"
-    TOKEN_WHEN_PRESENT = 423,      // "when-present"
-    TOKEN_NEVER = 424,             // "never"
-    TOKEN_ALWAYS = 425,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 426,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 427, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 428, // "hostname-char-replacement"
-    TOKEN_IP_RESERVATIONS_UNIQUE = 429, // "ip-reservations-unique"
-    TOKEN_LOGGERS = 430,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 431,    // "output_options"
-    TOKEN_OUTPUT = 432,            // "output"
-    TOKEN_DEBUGLEVEL = 433,        // "debuglevel"
-    TOKEN_SEVERITY = 434,          // "severity"
-    TOKEN_FLUSH = 435,             // "flush"
-    TOKEN_MAXSIZE = 436,           // "maxsize"
-    TOKEN_MAXVER = 437,            // "maxver"
-    TOKEN_PATTERN = 438,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 439,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP6 = 440,    // TOPLEVEL_DHCP6
-    TOKEN_SUB_DHCP6 = 441,         // SUB_DHCP6
-    TOKEN_SUB_INTERFACES6 = 442,   // SUB_INTERFACES6
-    TOKEN_SUB_SUBNET6 = 443,       // SUB_SUBNET6
-    TOKEN_SUB_POOL6 = 444,         // SUB_POOL6
-    TOKEN_SUB_PD_POOL = 445,       // SUB_PD_POOL
-    TOKEN_SUB_RESERVATION = 446,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 447,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 448,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 449,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 450, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 451,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 452, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 453,            // "constant string"
-    TOKEN_INTEGER = 454,           // "integer"
-    TOKEN_FLOAT = 455,             // "floating point"
-    TOKEN_BOOLEAN = 456            // "boolean"
+      enum yytokentype
+      {
+        TOKEN_END = 0,
+        TOKEN_COMMA = 258,
+        TOKEN_COLON = 259,
+        TOKEN_LSQUARE_BRACKET = 260,
+        TOKEN_RSQUARE_BRACKET = 261,
+        TOKEN_LCURLY_BRACKET = 262,
+        TOKEN_RCURLY_BRACKET = 263,
+        TOKEN_NULL_TYPE = 264,
+        TOKEN_DHCP6 = 265,
+        TOKEN_DATA_DIRECTORY = 266,
+        TOKEN_CONFIG_CONTROL = 267,
+        TOKEN_CONFIG_DATABASES = 268,
+        TOKEN_CONFIG_FETCH_WAIT_TIME = 269,
+        TOKEN_INTERFACES_CONFIG = 270,
+        TOKEN_INTERFACES = 271,
+        TOKEN_RE_DETECT = 272,
+        TOKEN_LEASE_DATABASE = 273,
+        TOKEN_HOSTS_DATABASE = 274,
+        TOKEN_HOSTS_DATABASES = 275,
+        TOKEN_TYPE = 276,
+        TOKEN_MEMFILE = 277,
+        TOKEN_MYSQL = 278,
+        TOKEN_POSTGRESQL = 279,
+        TOKEN_CQL = 280,
+        TOKEN_USER = 281,
+        TOKEN_PASSWORD = 282,
+        TOKEN_HOST = 283,
+        TOKEN_PORT = 284,
+        TOKEN_PERSIST = 285,
+        TOKEN_LFC_INTERVAL = 286,
+        TOKEN_READONLY = 287,
+        TOKEN_CONNECT_TIMEOUT = 288,
+        TOKEN_CONTACT_POINTS = 289,
+        TOKEN_MAX_RECONNECT_TRIES = 290,
+        TOKEN_RECONNECT_WAIT_TIME = 291,
+        TOKEN_KEYSPACE = 292,
+        TOKEN_CONSISTENCY = 293,
+        TOKEN_SERIAL_CONSISTENCY = 294,
+        TOKEN_REQUEST_TIMEOUT = 295,
+        TOKEN_TCP_KEEPALIVE = 296,
+        TOKEN_TCP_NODELAY = 297,
+        TOKEN_MAX_ROW_ERRORS = 298,
+        TOKEN_PREFERRED_LIFETIME = 299,
+        TOKEN_MIN_PREFERRED_LIFETIME = 300,
+        TOKEN_MAX_PREFERRED_LIFETIME = 301,
+        TOKEN_VALID_LIFETIME = 302,
+        TOKEN_MIN_VALID_LIFETIME = 303,
+        TOKEN_MAX_VALID_LIFETIME = 304,
+        TOKEN_RENEW_TIMER = 305,
+        TOKEN_REBIND_TIMER = 306,
+        TOKEN_CALCULATE_TEE_TIMES = 307,
+        TOKEN_T1_PERCENT = 308,
+        TOKEN_T2_PERCENT = 309,
+        TOKEN_CACHE_THRESHOLD = 310,
+        TOKEN_CACHE_MAX_AGE = 311,
+        TOKEN_DECLINE_PROBATION_PERIOD = 312,
+        TOKEN_SERVER_TAG = 313,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 314,
+        TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 315,
+        TOKEN_DDNS_SEND_UPDATES = 316,
+        TOKEN_DDNS_OVERRIDE_NO_UPDATE = 317,
+        TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 318,
+        TOKEN_DDNS_REPLACE_CLIENT_NAME = 319,
+        TOKEN_DDNS_GENERATED_PREFIX = 320,
+        TOKEN_DDNS_QUALIFYING_SUFFIX = 321,
+        TOKEN_DDNS_UPDATE_ON_RENEW = 322,
+        TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 323,
+        TOKEN_STORE_EXTENDED_INFO = 324,
+        TOKEN_SUBNET6 = 325,
+        TOKEN_OPTION_DEF = 326,
+        TOKEN_OPTION_DATA = 327,
+        TOKEN_NAME = 328,
+        TOKEN_DATA = 329,
+        TOKEN_CODE = 330,
+        TOKEN_SPACE = 331,
+        TOKEN_CSV_FORMAT = 332,
+        TOKEN_ALWAYS_SEND = 333,
+        TOKEN_RECORD_TYPES = 334,
+        TOKEN_ENCAPSULATE = 335,
+        TOKEN_ARRAY = 336,
+        TOKEN_POOLS = 337,
+        TOKEN_POOL = 338,
+        TOKEN_PD_POOLS = 339,
+        TOKEN_PREFIX = 340,
+        TOKEN_PREFIX_LEN = 341,
+        TOKEN_EXCLUDED_PREFIX = 342,
+        TOKEN_EXCLUDED_PREFIX_LEN = 343,
+        TOKEN_DELEGATED_LEN = 344,
+        TOKEN_USER_CONTEXT = 345,
+        TOKEN_COMMENT = 346,
+        TOKEN_SUBNET = 347,
+        TOKEN_INTERFACE = 348,
+        TOKEN_INTERFACE_ID = 349,
+        TOKEN_ID = 350,
+        TOKEN_RAPID_COMMIT = 351,
+        TOKEN_RESERVATION_MODE = 352,
+        TOKEN_DISABLED = 353,
+        TOKEN_OUT_OF_POOL = 354,
+        TOKEN_GLOBAL = 355,
+        TOKEN_ALL = 356,
+        TOKEN_SHARED_NETWORKS = 357,
+        TOKEN_MAC_SOURCES = 358,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 359,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 360,
+        TOKEN_SANITY_CHECKS = 361,
+        TOKEN_LEASE_CHECKS = 362,
+        TOKEN_CLIENT_CLASSES = 363,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 364,
+        TOKEN_TEST = 365,
+        TOKEN_ONLY_IF_REQUIRED = 366,
+        TOKEN_CLIENT_CLASS = 367,
+        TOKEN_RESERVATIONS = 368,
+        TOKEN_IP_ADDRESSES = 369,
+        TOKEN_PREFIXES = 370,
+        TOKEN_DUID = 371,
+        TOKEN_HW_ADDRESS = 372,
+        TOKEN_HOSTNAME = 373,
+        TOKEN_FLEX_ID = 374,
+        TOKEN_RELAY = 375,
+        TOKEN_IP_ADDRESS = 376,
+        TOKEN_HOOKS_LIBRARIES = 377,
+        TOKEN_LIBRARY = 378,
+        TOKEN_PARAMETERS = 379,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 380,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 381,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 382,
+        TOKEN_HOLD_RECLAIMED_TIME = 383,
+        TOKEN_MAX_RECLAIM_LEASES = 384,
+        TOKEN_MAX_RECLAIM_TIME = 385,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 386,
+        TOKEN_SERVER_ID = 387,
+        TOKEN_LLT = 388,
+        TOKEN_EN = 389,
+        TOKEN_LL = 390,
+        TOKEN_IDENTIFIER = 391,
+        TOKEN_HTYPE = 392,
+        TOKEN_TIME = 393,
+        TOKEN_ENTERPRISE_ID = 394,
+        TOKEN_DHCP4O6_PORT = 395,
+        TOKEN_DHCP_MULTI_THREADING = 396,
+        TOKEN_ENABLE_MULTI_THREADING = 397,
+        TOKEN_THREAD_POOL_SIZE = 398,
+        TOKEN_PACKET_QUEUE_SIZE = 399,
+        TOKEN_CONTROL_SOCKET = 400,
+        TOKEN_SOCKET_TYPE = 401,
+        TOKEN_SOCKET_NAME = 402,
+        TOKEN_DHCP_QUEUE_CONTROL = 403,
+        TOKEN_ENABLE_QUEUE = 404,
+        TOKEN_QUEUE_TYPE = 405,
+        TOKEN_CAPACITY = 406,
+        TOKEN_DHCP_DDNS = 407,
+        TOKEN_ENABLE_UPDATES = 408,
+        TOKEN_QUALIFYING_SUFFIX = 409,
+        TOKEN_SERVER_IP = 410,
+        TOKEN_SERVER_PORT = 411,
+        TOKEN_SENDER_IP = 412,
+        TOKEN_SENDER_PORT = 413,
+        TOKEN_MAX_QUEUE_SIZE = 414,
+        TOKEN_NCR_PROTOCOL = 415,
+        TOKEN_NCR_FORMAT = 416,
+        TOKEN_OVERRIDE_NO_UPDATE = 417,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 418,
+        TOKEN_REPLACE_CLIENT_NAME = 419,
+        TOKEN_GENERATED_PREFIX = 420,
+        TOKEN_UDP = 421,
+        TOKEN_TCP = 422,
+        TOKEN_JSON = 423,
+        TOKEN_WHEN_PRESENT = 424,
+        TOKEN_NEVER = 425,
+        TOKEN_ALWAYS = 426,
+        TOKEN_WHEN_NOT_PRESENT = 427,
+        TOKEN_HOSTNAME_CHAR_SET = 428,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 429,
+        TOKEN_IP_RESERVATIONS_UNIQUE = 430,
+        TOKEN_LOGGERS = 431,
+        TOKEN_OUTPUT_OPTIONS = 432,
+        TOKEN_OUTPUT = 433,
+        TOKEN_DEBUGLEVEL = 434,
+        TOKEN_SEVERITY = 435,
+        TOKEN_FLUSH = 436,
+        TOKEN_MAXSIZE = 437,
+        TOKEN_MAXVER = 438,
+        TOKEN_PATTERN = 439,
+        TOKEN_TOPLEVEL_JSON = 440,
+        TOKEN_TOPLEVEL_DHCP6 = 441,
+        TOKEN_SUB_DHCP6 = 442,
+        TOKEN_SUB_INTERFACES6 = 443,
+        TOKEN_SUB_SUBNET6 = 444,
+        TOKEN_SUB_POOL6 = 445,
+        TOKEN_SUB_PD_POOL = 446,
+        TOKEN_SUB_RESERVATION = 447,
+        TOKEN_SUB_OPTION_DEFS = 448,
+        TOKEN_SUB_OPTION_DEF = 449,
+        TOKEN_SUB_OPTION_DATA = 450,
+        TOKEN_SUB_HOOKS_LIBRARY = 451,
+        TOKEN_SUB_DHCP_DDNS = 452,
+        TOKEN_SUB_CONFIG_CONTROL = 453,
+        TOKEN_STRING = 454,
+        TOKEN_INTEGER = 455,
+        TOKEN_FLOAT = 456,
+        TOKEN_BOOLEAN = 457
       };
-      /// Backward compatibility alias (Bison 3.6).
-      typedef token_kind_type yytokentype;
     };
 
-    /// Token kind, as returned by yylex.
-    typedef token::yytokentype token_kind_type;
+    /// (External) token type, as returned by yylex.
+    typedef token::yytokentype token_type;
 
-    /// Backward compatibility alias (Bison 3.6).
-    typedef token_kind_type token_type;
-
-    /// Symbol kinds.
-    struct symbol_kind
-    {
-      enum symbol_kind_type
-      {
-        YYNTOKENS = 202, ///< Number of tokens.
-        S_YYEMPTY = -2,
-        S_YYEOF = 0,                             // "end of file"
-        S_YYerror = 1,                           // error
-        S_YYUNDEF = 2,                           // "invalid token"
-        S_COMMA = 3,                             // ","
-        S_COLON = 4,                             // ":"
-        S_LSQUARE_BRACKET = 5,                   // "["
-        S_RSQUARE_BRACKET = 6,                   // "]"
-        S_LCURLY_BRACKET = 7,                    // "{"
-        S_RCURLY_BRACKET = 8,                    // "}"
-        S_NULL_TYPE = 9,                         // "null"
-        S_DHCP6 = 10,                            // "Dhcp6"
-        S_DATA_DIRECTORY = 11,                   // "data-directory"
-        S_CONFIG_CONTROL = 12,                   // "config-control"
-        S_CONFIG_DATABASES = 13,                 // "config-databases"
-        S_CONFIG_FETCH_WAIT_TIME = 14,           // "config-fetch-wait-time"
-        S_INTERFACES_CONFIG = 15,                // "interfaces-config"
-        S_INTERFACES = 16,                       // "interfaces"
-        S_RE_DETECT = 17,                        // "re-detect"
-        S_LEASE_DATABASE = 18,                   // "lease-database"
-        S_HOSTS_DATABASE = 19,                   // "hosts-database"
-        S_HOSTS_DATABASES = 20,                  // "hosts-databases"
-        S_TYPE = 21,                             // "type"
-        S_MEMFILE = 22,                          // "memfile"
-        S_MYSQL = 23,                            // "mysql"
-        S_POSTGRESQL = 24,                       // "postgresql"
-        S_CQL = 25,                              // "cql"
-        S_USER = 26,                             // "user"
-        S_PASSWORD = 27,                         // "password"
-        S_HOST = 28,                             // "host"
-        S_PORT = 29,                             // "port"
-        S_PERSIST = 30,                          // "persist"
-        S_LFC_INTERVAL = 31,                     // "lfc-interval"
-        S_READONLY = 32,                         // "readonly"
-        S_CONNECT_TIMEOUT = 33,                  // "connect-timeout"
-        S_CONTACT_POINTS = 34,                   // "contact-points"
-        S_MAX_RECONNECT_TRIES = 35,              // "max-reconnect-tries"
-        S_RECONNECT_WAIT_TIME = 36,              // "reconnect-wait-time"
-        S_KEYSPACE = 37,                         // "keyspace"
-        S_CONSISTENCY = 38,                      // "consistency"
-        S_SERIAL_CONSISTENCY = 39,               // "serial-consistency"
-        S_REQUEST_TIMEOUT = 40,                  // "request-timeout"
-        S_TCP_KEEPALIVE = 41,                    // "tcp-keepalive"
-        S_TCP_NODELAY = 42,                      // "tcp-nodelay"
-        S_MAX_ROW_ERRORS = 43,                   // "max-row-errors"
-        S_PREFERRED_LIFETIME = 44,               // "preferred-lifetime"
-        S_MIN_PREFERRED_LIFETIME = 45,           // "min-preferred-lifetime"
-        S_MAX_PREFERRED_LIFETIME = 46,           // "max-preferred-lifetime"
-        S_VALID_LIFETIME = 47,                   // "valid-lifetime"
-        S_MIN_VALID_LIFETIME = 48,               // "min-valid-lifetime"
-        S_MAX_VALID_LIFETIME = 49,               // "max-valid-lifetime"
-        S_RENEW_TIMER = 50,                      // "renew-timer"
-        S_REBIND_TIMER = 51,                     // "rebind-timer"
-        S_CALCULATE_TEE_TIMES = 52,              // "calculate-tee-times"
-        S_T1_PERCENT = 53,                       // "t1-percent"
-        S_T2_PERCENT = 54,                       // "t2-percent"
-        S_CACHE_THRESHOLD = 55,                  // "cache-threshold"
-        S_CACHE_MAX_AGE = 56,                    // "cache-max-age"
-        S_DECLINE_PROBATION_PERIOD = 57,         // "decline-probation-period"
-        S_SERVER_TAG = 58,                       // "server-tag"
-        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 59,   // "statistic-default-sample-count"
-        S_STATISTIC_DEFAULT_SAMPLE_AGE = 60,     // "statistic-default-sample-age"
-        S_DDNS_SEND_UPDATES = 61,                // "ddns-send-updates"
-        S_DDNS_OVERRIDE_NO_UPDATE = 62,          // "ddns-override-no-update"
-        S_DDNS_OVERRIDE_CLIENT_UPDATE = 63,      // "ddns-override-client-update"
-        S_DDNS_REPLACE_CLIENT_NAME = 64,         // "ddns-replace-client-name"
-        S_DDNS_GENERATED_PREFIX = 65,            // "ddns-generated-prefix"
-        S_DDNS_QUALIFYING_SUFFIX = 66,           // "ddns-qualifying-suffix"
-        S_DDNS_UPDATE_ON_RENEW = 67,             // "ddns-update-on-renew"
-        S_STORE_EXTENDED_INFO = 68,              // "store-extended-info"
-        S_SUBNET6 = 69,                          // "subnet6"
-        S_OPTION_DEF = 70,                       // "option-def"
-        S_OPTION_DATA = 71,                      // "option-data"
-        S_NAME = 72,                             // "name"
-        S_DATA = 73,                             // "data"
-        S_CODE = 74,                             // "code"
-        S_SPACE = 75,                            // "space"
-        S_CSV_FORMAT = 76,                       // "csv-format"
-        S_ALWAYS_SEND = 77,                      // "always-send"
-        S_RECORD_TYPES = 78,                     // "record-types"
-        S_ENCAPSULATE = 79,                      // "encapsulate"
-        S_ARRAY = 80,                            // "array"
-        S_POOLS = 81,                            // "pools"
-        S_POOL = 82,                             // "pool"
-        S_PD_POOLS = 83,                         // "pd-pools"
-        S_PREFIX = 84,                           // "prefix"
-        S_PREFIX_LEN = 85,                       // "prefix-len"
-        S_EXCLUDED_PREFIX = 86,                  // "excluded-prefix"
-        S_EXCLUDED_PREFIX_LEN = 87,              // "excluded-prefix-len"
-        S_DELEGATED_LEN = 88,                    // "delegated-len"
-        S_USER_CONTEXT = 89,                     // "user-context"
-        S_COMMENT = 90,                          // "comment"
-        S_SUBNET = 91,                           // "subnet"
-        S_INTERFACE = 92,                        // "interface"
-        S_INTERFACE_ID = 93,                     // "interface-id"
-        S_ID = 94,                               // "id"
-        S_RAPID_COMMIT = 95,                     // "rapid-commit"
-        S_RESERVATION_MODE = 96,                 // "reservation-mode"
-        S_DISABLED = 97,                         // "disabled"
-        S_OUT_OF_POOL = 98,                      // "out-of-pool"
-        S_GLOBAL = 99,                           // "global"
-        S_ALL = 100,                             // "all"
-        S_SHARED_NETWORKS = 101,                 // "shared-networks"
-        S_MAC_SOURCES = 102,                     // "mac-sources"
-        S_RELAY_SUPPLIED_OPTIONS = 103,          // "relay-supplied-options"
-        S_HOST_RESERVATION_IDENTIFIERS = 104,    // "host-reservation-identifiers"
-        S_SANITY_CHECKS = 105,                   // "sanity-checks"
-        S_LEASE_CHECKS = 106,                    // "lease-checks"
-        S_CLIENT_CLASSES = 107,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 108,          // "require-client-classes"
-        S_TEST = 109,                            // "test"
-        S_ONLY_IF_REQUIRED = 110,                // "only-if-required"
-        S_CLIENT_CLASS = 111,                    // "client-class"
-        S_RESERVATIONS = 112,                    // "reservations"
-        S_IP_ADDRESSES = 113,                    // "ip-addresses"
-        S_PREFIXES = 114,                        // "prefixes"
-        S_DUID = 115,                            // "duid"
-        S_HW_ADDRESS = 116,                      // "hw-address"
-        S_HOSTNAME = 117,                        // "hostname"
-        S_FLEX_ID = 118,                         // "flex-id"
-        S_RELAY = 119,                           // "relay"
-        S_IP_ADDRESS = 120,                      // "ip-address"
-        S_HOOKS_LIBRARIES = 121,                 // "hooks-libraries"
-        S_LIBRARY = 122,                         // "library"
-        S_PARAMETERS = 123,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 124,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 125,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 126, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 127,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 128,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 129,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 130,         // "unwarned-reclaim-cycles"
-        S_SERVER_ID = 131,                       // "server-id"
-        S_LLT = 132,                             // "LLT"
-        S_EN = 133,                              // "EN"
-        S_LL = 134,                              // "LL"
-        S_IDENTIFIER = 135,                      // "identifier"
-        S_HTYPE = 136,                           // "htype"
-        S_TIME = 137,                            // "time"
-        S_ENTERPRISE_ID = 138,                   // "enterprise-id"
-        S_DHCP4O6_PORT = 139,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 140,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 141,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 142,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 143,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 144,                  // "control-socket"
-        S_SOCKET_TYPE = 145,                     // "socket-type"
-        S_SOCKET_NAME = 146,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 147,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 148,                    // "enable-queue"
-        S_QUEUE_TYPE = 149,                      // "queue-type"
-        S_CAPACITY = 150,                        // "capacity"
-        S_DHCP_DDNS = 151,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 152,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 153,               // "qualifying-suffix"
-        S_SERVER_IP = 154,                       // "server-ip"
-        S_SERVER_PORT = 155,                     // "server-port"
-        S_SENDER_IP = 156,                       // "sender-ip"
-        S_SENDER_PORT = 157,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 158,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 159,                    // "ncr-protocol"
-        S_NCR_FORMAT = 160,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 161,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 162,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 163,             // "replace-client-name"
-        S_GENERATED_PREFIX = 164,                // "generated-prefix"
-        S_UDP = 165,                             // "UDP"
-        S_TCP = 166,                             // "TCP"
-        S_JSON = 167,                            // "JSON"
-        S_WHEN_PRESENT = 168,                    // "when-present"
-        S_NEVER = 169,                           // "never"
-        S_ALWAYS = 170,                          // "always"
-        S_WHEN_NOT_PRESENT = 171,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 172,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 173,       // "hostname-char-replacement"
-        S_IP_RESERVATIONS_UNIQUE = 174,          // "ip-reservations-unique"
-        S_LOGGERS = 175,                         // "loggers"
-        S_OUTPUT_OPTIONS = 176,                  // "output_options"
-        S_OUTPUT = 177,                          // "output"
-        S_DEBUGLEVEL = 178,                      // "debuglevel"
-        S_SEVERITY = 179,                        // "severity"
-        S_FLUSH = 180,                           // "flush"
-        S_MAXSIZE = 181,                         // "maxsize"
-        S_MAXVER = 182,                          // "maxver"
-        S_PATTERN = 183,                         // "pattern"
-        S_TOPLEVEL_JSON = 184,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP6 = 185,                  // TOPLEVEL_DHCP6
-        S_SUB_DHCP6 = 186,                       // SUB_DHCP6
-        S_SUB_INTERFACES6 = 187,                 // SUB_INTERFACES6
-        S_SUB_SUBNET6 = 188,                     // SUB_SUBNET6
-        S_SUB_POOL6 = 189,                       // SUB_POOL6
-        S_SUB_PD_POOL = 190,                     // SUB_PD_POOL
-        S_SUB_RESERVATION = 191,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 192,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 193,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 194,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 195,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 196,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 197,              // SUB_CONFIG_CONTROL
-        S_STRING = 198,                          // "constant string"
-        S_INTEGER = 199,                         // "integer"
-        S_FLOAT = 200,                           // "floating point"
-        S_BOOLEAN = 201,                         // "boolean"
-        S_YYACCEPT = 202,                        // $accept
-        S_start = 203,                           // start
-        S_204_1 = 204,                           // $@1
-        S_205_2 = 205,                           // $@2
-        S_206_3 = 206,                           // $@3
-        S_207_4 = 207,                           // $@4
-        S_208_5 = 208,                           // $@5
-        S_209_6 = 209,                           // $@6
-        S_210_7 = 210,                           // $@7
-        S_211_8 = 211,                           // $@8
-        S_212_9 = 212,                           // $@9
-        S_213_10 = 213,                          // $@10
-        S_214_11 = 214,                          // $@11
-        S_215_12 = 215,                          // $@12
-        S_216_13 = 216,                          // $@13
-        S_217_14 = 217,                          // $@14
-        S_value = 218,                           // value
-        S_sub_json = 219,                        // sub_json
-        S_map2 = 220,                            // map2
-        S_221_15 = 221,                          // $@15
-        S_map_value = 222,                       // map_value
-        S_map_content = 223,                     // map_content
-        S_not_empty_map = 224,                   // not_empty_map
-        S_list_generic = 225,                    // list_generic
-        S_226_16 = 226,                          // $@16
-        S_list_content = 227,                    // list_content
-        S_not_empty_list = 228,                  // not_empty_list
-        S_list_strings = 229,                    // list_strings
-        S_230_17 = 230,                          // $@17
-        S_list_strings_content = 231,            // list_strings_content
-        S_not_empty_list_strings = 232,          // not_empty_list_strings
-        S_unknown_map_entry = 233,               // unknown_map_entry
-        S_syntax_map = 234,                      // syntax_map
-        S_235_18 = 235,                          // $@18
-        S_global_object = 236,                   // global_object
-        S_237_19 = 237,                          // $@19
-        S_sub_dhcp6 = 238,                       // sub_dhcp6
-        S_239_20 = 239,                          // $@20
-        S_global_params = 240,                   // global_params
-        S_global_param = 241,                    // global_param
-        S_data_directory = 242,                  // data_directory
-        S_243_21 = 243,                          // $@21
-        S_preferred_lifetime = 244,              // preferred_lifetime
-        S_min_preferred_lifetime = 245,          // min_preferred_lifetime
-        S_max_preferred_lifetime = 246,          // max_preferred_lifetime
-        S_valid_lifetime = 247,                  // valid_lifetime
-        S_min_valid_lifetime = 248,              // min_valid_lifetime
-        S_max_valid_lifetime = 249,              // max_valid_lifetime
-        S_renew_timer = 250,                     // renew_timer
-        S_rebind_timer = 251,                    // rebind_timer
-        S_calculate_tee_times = 252,             // calculate_tee_times
-        S_t1_percent = 253,                      // t1_percent
-        S_t2_percent = 254,                      // t2_percent
-        S_cache_threshold = 255,                 // cache_threshold
-        S_cache_max_age = 256,                   // cache_max_age
-        S_decline_probation_period = 257,        // decline_probation_period
-        S_ddns_send_updates = 258,               // ddns_send_updates
-        S_ddns_override_no_update = 259,         // ddns_override_no_update
-        S_ddns_override_client_update = 260,     // ddns_override_client_update
-        S_ddns_replace_client_name = 261,        // ddns_replace_client_name
-        S_262_22 = 262,                          // $@22
-        S_ddns_replace_client_name_value = 263,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 264,           // ddns_generated_prefix
-        S_265_23 = 265,                          // $@23
-        S_ddns_qualifying_suffix = 266,          // ddns_qualifying_suffix
-        S_267_24 = 267,                          // $@24
-        S_ddns_update_on_renew = 268,            // ddns_update_on_renew
-        S_hostname_char_set = 269,               // hostname_char_set
-        S_270_25 = 270,                          // $@25
-        S_hostname_char_replacement = 271,       // hostname_char_replacement
-        S_272_26 = 272,                          // $@26
-        S_store_extended_info = 273,             // store_extended_info
-        S_statistic_default_sample_count = 274,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 275,    // statistic_default_sample_age
-        S_server_tag = 276,                      // server_tag
-        S_277_27 = 277,                          // $@27
-        S_ip_reservations_unique = 278,          // ip_reservations_unique
-        S_interfaces_config = 279,               // interfaces_config
-        S_280_28 = 280,                          // $@28
-        S_sub_interfaces6 = 281,                 // sub_interfaces6
-        S_282_29 = 282,                          // $@29
-        S_interfaces_config_params = 283,        // interfaces_config_params
-        S_interfaces_config_param = 284,         // interfaces_config_param
-        S_interfaces_list = 285,                 // interfaces_list
-        S_286_30 = 286,                          // $@30
-        S_re_detect = 287,                       // re_detect
-        S_lease_database = 288,                  // lease_database
-        S_289_31 = 289,                          // $@31
-        S_hosts_database = 290,                  // hosts_database
-        S_291_32 = 291,                          // $@32
-        S_hosts_databases = 292,                 // hosts_databases
-        S_293_33 = 293,                          // $@33
-        S_database_list = 294,                   // database_list
-        S_not_empty_database_list = 295,         // not_empty_database_list
-        S_database = 296,                        // database
-        S_297_34 = 297,                          // $@34
-        S_database_map_params = 298,             // database_map_params
-        S_database_map_param = 299,              // database_map_param
-        S_database_type = 300,                   // database_type
-        S_301_35 = 301,                          // $@35
-        S_db_type = 302,                         // db_type
-        S_user = 303,                            // user
-        S_304_36 = 304,                          // $@36
-        S_password = 305,                        // password
-        S_306_37 = 306,                          // $@37
-        S_host = 307,                            // host
-        S_308_38 = 308,                          // $@38
-        S_port = 309,                            // port
-        S_name = 310,                            // name
-        S_311_39 = 311,                          // $@39
-        S_persist = 312,                         // persist
-        S_lfc_interval = 313,                    // lfc_interval
-        S_readonly = 314,                        // readonly
-        S_connect_timeout = 315,                 // connect_timeout
-        S_reconnect_wait_time = 316,             // reconnect_wait_time
-        S_max_row_errors = 317,                  // max_row_errors
-        S_request_timeout = 318,                 // request_timeout
-        S_tcp_keepalive = 319,                   // tcp_keepalive
-        S_tcp_nodelay = 320,                     // tcp_nodelay
-        S_contact_points = 321,                  // contact_points
-        S_322_40 = 322,                          // $@40
-        S_max_reconnect_tries = 323,             // max_reconnect_tries
-        S_keyspace = 324,                        // keyspace
-        S_325_41 = 325,                          // $@41
-        S_consistency = 326,                     // consistency
-        S_327_42 = 327,                          // $@42
-        S_serial_consistency = 328,              // serial_consistency
-        S_329_43 = 329,                          // $@43
-        S_sanity_checks = 330,                   // sanity_checks
-        S_331_44 = 331,                          // $@44
-        S_sanity_checks_params = 332,            // sanity_checks_params
-        S_sanity_checks_param = 333,             // sanity_checks_param
-        S_lease_checks = 334,                    // lease_checks
-        S_335_45 = 335,                          // $@45
-        S_mac_sources = 336,                     // mac_sources
-        S_337_46 = 337,                          // $@46
-        S_mac_sources_list = 338,                // mac_sources_list
-        S_mac_sources_value = 339,               // mac_sources_value
-        S_duid_id = 340,                         // duid_id
-        S_string_id = 341,                       // string_id
-        S_host_reservation_identifiers = 342,    // host_reservation_identifiers
-        S_343_47 = 343,                          // $@47
-        S_host_reservation_identifiers_list = 344, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 345,     // host_reservation_identifier
-        S_hw_address_id = 346,                   // hw_address_id
-        S_flex_id = 347,                         // flex_id
-        S_relay_supplied_options = 348,          // relay_supplied_options
-        S_349_48 = 349,                          // $@48
-        S_dhcp_multi_threading = 350,            // dhcp_multi_threading
-        S_351_49 = 351,                          // $@49
-        S_multi_threading_params = 352,          // multi_threading_params
-        S_multi_threading_param = 353,           // multi_threading_param
-        S_enable_multi_threading = 354,          // enable_multi_threading
-        S_thread_pool_size = 355,                // thread_pool_size
-        S_packet_queue_size = 356,               // packet_queue_size
-        S_hooks_libraries = 357,                 // hooks_libraries
-        S_358_50 = 358,                          // $@50
-        S_hooks_libraries_list = 359,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 360,  // not_empty_hooks_libraries_list
-        S_hooks_library = 361,                   // hooks_library
-        S_362_51 = 362,                          // $@51
-        S_sub_hooks_library = 363,               // sub_hooks_library
-        S_364_52 = 364,                          // $@52
-        S_hooks_params = 365,                    // hooks_params
-        S_hooks_param = 366,                     // hooks_param
-        S_library = 367,                         // library
-        S_368_53 = 368,                          // $@53
-        S_parameters = 369,                      // parameters
-        S_370_54 = 370,                          // $@54
-        S_expired_leases_processing = 371,       // expired_leases_processing
-        S_372_55 = 372,                          // $@55
-        S_expired_leases_params = 373,           // expired_leases_params
-        S_expired_leases_param = 374,            // expired_leases_param
-        S_reclaim_timer_wait_time = 375,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 376, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 377,             // hold_reclaimed_time
-        S_max_reclaim_leases = 378,              // max_reclaim_leases
-        S_max_reclaim_time = 379,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 380,         // unwarned_reclaim_cycles
-        S_subnet6_list = 381,                    // subnet6_list
-        S_382_56 = 382,                          // $@56
-        S_subnet6_list_content = 383,            // subnet6_list_content
-        S_not_empty_subnet6_list = 384,          // not_empty_subnet6_list
-        S_subnet6 = 385,                         // subnet6
-        S_386_57 = 386,                          // $@57
-        S_sub_subnet6 = 387,                     // sub_subnet6
-        S_388_58 = 388,                          // $@58
-        S_subnet6_params = 389,                  // subnet6_params
-        S_subnet6_param = 390,                   // subnet6_param
-        S_subnet = 391,                          // subnet
-        S_392_59 = 392,                          // $@59
-        S_interface = 393,                       // interface
-        S_394_60 = 394,                          // $@60
-        S_interface_id = 395,                    // interface_id
-        S_396_61 = 396,                          // $@61
-        S_client_class = 397,                    // client_class
-        S_398_62 = 398,                          // $@62
-        S_require_client_classes = 399,          // require_client_classes
-        S_400_63 = 400,                          // $@63
-        S_reservation_mode = 401,                // reservation_mode
-        S_402_64 = 402,                          // $@64
-        S_hr_mode = 403,                         // hr_mode
-        S_id = 404,                              // id
-        S_rapid_commit = 405,                    // rapid_commit
-        S_shared_networks = 406,                 // shared_networks
-        S_407_65 = 407,                          // $@65
-        S_shared_networks_content = 408,         // shared_networks_content
-        S_shared_networks_list = 409,            // shared_networks_list
-        S_shared_network = 410,                  // shared_network
-        S_411_66 = 411,                          // $@66
-        S_shared_network_params = 412,           // shared_network_params
-        S_shared_network_param = 413,            // shared_network_param
-        S_option_def_list = 414,                 // option_def_list
-        S_415_67 = 415,                          // $@67
-        S_sub_option_def_list = 416,             // sub_option_def_list
-        S_417_68 = 417,                          // $@68
-        S_option_def_list_content = 418,         // option_def_list_content
-        S_not_empty_option_def_list = 419,       // not_empty_option_def_list
-        S_option_def_entry = 420,                // option_def_entry
-        S_421_69 = 421,                          // $@69
-        S_sub_option_def = 422,                  // sub_option_def
-        S_423_70 = 423,                          // $@70
-        S_option_def_params = 424,               // option_def_params
-        S_not_empty_option_def_params = 425,     // not_empty_option_def_params
-        S_option_def_param = 426,                // option_def_param
-        S_option_def_name = 427,                 // option_def_name
-        S_code = 428,                            // code
-        S_option_def_code = 429,                 // option_def_code
-        S_option_def_type = 430,                 // option_def_type
-        S_431_71 = 431,                          // $@71
-        S_option_def_record_types = 432,         // option_def_record_types
-        S_433_72 = 433,                          // $@72
-        S_space = 434,                           // space
-        S_435_73 = 435,                          // $@73
-        S_option_def_space = 436,                // option_def_space
-        S_option_def_encapsulate = 437,          // option_def_encapsulate
-        S_438_74 = 438,                          // $@74
-        S_option_def_array = 439,                // option_def_array
-        S_option_data_list = 440,                // option_data_list
-        S_441_75 = 441,                          // $@75
-        S_option_data_list_content = 442,        // option_data_list_content
-        S_not_empty_option_data_list = 443,      // not_empty_option_data_list
-        S_option_data_entry = 444,               // option_data_entry
-        S_445_76 = 445,                          // $@76
-        S_sub_option_data = 446,                 // sub_option_data
-        S_447_77 = 447,                          // $@77
-        S_option_data_params = 448,              // option_data_params
-        S_not_empty_option_data_params = 449,    // not_empty_option_data_params
-        S_option_data_param = 450,               // option_data_param
-        S_option_data_name = 451,                // option_data_name
-        S_option_data_data = 452,                // option_data_data
-        S_453_78 = 453,                          // $@78
-        S_option_data_code = 454,                // option_data_code
-        S_option_data_space = 455,               // option_data_space
-        S_option_data_csv_format = 456,          // option_data_csv_format
-        S_option_data_always_send = 457,         // option_data_always_send
-        S_pools_list = 458,                      // pools_list
-        S_459_79 = 459,                          // $@79
-        S_pools_list_content = 460,              // pools_list_content
-        S_not_empty_pools_list = 461,            // not_empty_pools_list
-        S_pool_list_entry = 462,                 // pool_list_entry
-        S_463_80 = 463,                          // $@80
-        S_sub_pool6 = 464,                       // sub_pool6
-        S_465_81 = 465,                          // $@81
-        S_pool_params = 466,                     // pool_params
-        S_pool_param = 467,                      // pool_param
-        S_pool_entry = 468,                      // pool_entry
-        S_469_82 = 469,                          // $@82
-        S_user_context = 470,                    // user_context
-        S_471_83 = 471,                          // $@83
-        S_comment = 472,                         // comment
-        S_473_84 = 473,                          // $@84
-        S_pd_pools_list = 474,                   // pd_pools_list
-        S_475_85 = 475,                          // $@85
-        S_pd_pools_list_content = 476,           // pd_pools_list_content
-        S_not_empty_pd_pools_list = 477,         // not_empty_pd_pools_list
-        S_pd_pool_entry = 478,                   // pd_pool_entry
-        S_479_86 = 479,                          // $@86
-        S_sub_pd_pool = 480,                     // sub_pd_pool
-        S_481_87 = 481,                          // $@87
-        S_pd_pool_params = 482,                  // pd_pool_params
-        S_pd_pool_param = 483,                   // pd_pool_param
-        S_pd_prefix = 484,                       // pd_prefix
-        S_485_88 = 485,                          // $@88
-        S_pd_prefix_len = 486,                   // pd_prefix_len
-        S_excluded_prefix = 487,                 // excluded_prefix
-        S_488_89 = 488,                          // $@89
-        S_excluded_prefix_len = 489,             // excluded_prefix_len
-        S_pd_delegated_len = 490,                // pd_delegated_len
-        S_reservations = 491,                    // reservations
-        S_492_90 = 492,                          // $@90
-        S_reservations_list = 493,               // reservations_list
-        S_not_empty_reservations_list = 494,     // not_empty_reservations_list
-        S_reservation = 495,                     // reservation
-        S_496_91 = 496,                          // $@91
-        S_sub_reservation = 497,                 // sub_reservation
-        S_498_92 = 498,                          // $@92
-        S_reservation_params = 499,              // reservation_params
-        S_not_empty_reservation_params = 500,    // not_empty_reservation_params
-        S_reservation_param = 501,               // reservation_param
-        S_ip_addresses = 502,                    // ip_addresses
-        S_503_93 = 503,                          // $@93
-        S_prefixes = 504,                        // prefixes
-        S_505_94 = 505,                          // $@94
-        S_duid = 506,                            // duid
-        S_507_95 = 507,                          // $@95
-        S_hw_address = 508,                      // hw_address
-        S_509_96 = 509,                          // $@96
-        S_hostname = 510,                        // hostname
-        S_511_97 = 511,                          // $@97
-        S_flex_id_value = 512,                   // flex_id_value
-        S_513_98 = 513,                          // $@98
-        S_reservation_client_classes = 514,      // reservation_client_classes
-        S_515_99 = 515,                          // $@99
-        S_relay = 516,                           // relay
-        S_517_100 = 517,                         // $@100
-        S_relay_map = 518,                       // relay_map
-        S_ip_address = 519,                      // ip_address
-        S_520_101 = 520,                         // $@101
-        S_client_classes = 521,                  // client_classes
-        S_522_102 = 522,                         // $@102
-        S_client_classes_list = 523,             // client_classes_list
-        S_client_class_entry = 524,              // client_class_entry
-        S_525_103 = 525,                         // $@103
-        S_client_class_params = 526,             // client_class_params
-        S_not_empty_client_class_params = 527,   // not_empty_client_class_params
-        S_client_class_param = 528,              // client_class_param
-        S_client_class_name = 529,               // client_class_name
-        S_client_class_test = 530,               // client_class_test
-        S_531_104 = 531,                         // $@104
-        S_only_if_required = 532,                // only_if_required
-        S_server_id = 533,                       // server_id
-        S_534_105 = 534,                         // $@105
-        S_server_id_params = 535,                // server_id_params
-        S_server_id_param = 536,                 // server_id_param
-        S_server_id_type = 537,                  // server_id_type
-        S_538_106 = 538,                         // $@106
-        S_duid_type = 539,                       // duid_type
-        S_htype = 540,                           // htype
-        S_identifier = 541,                      // identifier
-        S_542_107 = 542,                         // $@107
-        S_time = 543,                            // time
-        S_enterprise_id = 544,                   // enterprise_id
-        S_dhcp4o6_port = 545,                    // dhcp4o6_port
-        S_control_socket = 546,                  // control_socket
-        S_547_108 = 547,                         // $@108
-        S_control_socket_params = 548,           // control_socket_params
-        S_control_socket_param = 549,            // control_socket_param
-        S_socket_type = 550,                     // socket_type
-        S_551_109 = 551,                         // $@109
-        S_socket_name = 552,                     // socket_name
-        S_553_110 = 553,                         // $@110
-        S_dhcp_queue_control = 554,              // dhcp_queue_control
-        S_555_111 = 555,                         // $@111
-        S_queue_control_params = 556,            // queue_control_params
-        S_queue_control_param = 557,             // queue_control_param
-        S_enable_queue = 558,                    // enable_queue
-        S_queue_type = 559,                      // queue_type
-        S_560_112 = 560,                         // $@112
-        S_capacity = 561,                        // capacity
-        S_arbitrary_map_entry = 562,             // arbitrary_map_entry
-        S_563_113 = 563,                         // $@113
-        S_dhcp_ddns = 564,                       // dhcp_ddns
-        S_565_114 = 565,                         // $@114
-        S_sub_dhcp_ddns = 566,                   // sub_dhcp_ddns
-        S_567_115 = 567,                         // $@115
-        S_dhcp_ddns_params = 568,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 569,                 // dhcp_ddns_param
-        S_enable_updates = 570,                  // enable_updates
-        S_dep_qualifying_suffix = 571,           // dep_qualifying_suffix
-        S_572_116 = 572,                         // $@116
-        S_server_ip = 573,                       // server_ip
-        S_574_117 = 574,                         // $@117
-        S_server_port = 575,                     // server_port
-        S_sender_ip = 576,                       // sender_ip
-        S_577_118 = 577,                         // $@118
-        S_sender_port = 578,                     // sender_port
-        S_max_queue_size = 579,                  // max_queue_size
-        S_ncr_protocol = 580,                    // ncr_protocol
-        S_581_119 = 581,                         // $@119
-        S_ncr_protocol_value = 582,              // ncr_protocol_value
-        S_ncr_format = 583,                      // ncr_format
-        S_584_120 = 584,                         // $@120
-        S_dep_override_no_update = 585,          // dep_override_no_update
-        S_dep_override_client_update = 586,      // dep_override_client_update
-        S_dep_replace_client_name = 587,         // dep_replace_client_name
-        S_588_121 = 588,                         // $@121
-        S_dep_generated_prefix = 589,            // dep_generated_prefix
-        S_590_122 = 590,                         // $@122
-        S_dep_hostname_char_set = 591,           // dep_hostname_char_set
-        S_592_123 = 592,                         // $@123
-        S_dep_hostname_char_replacement = 593,   // dep_hostname_char_replacement
-        S_594_124 = 594,                         // $@124
-        S_config_control = 595,                  // config_control
-        S_596_125 = 596,                         // $@125
-        S_sub_config_control = 597,              // sub_config_control
-        S_598_126 = 598,                         // $@126
-        S_config_control_params = 599,           // config_control_params
-        S_config_control_param = 600,            // config_control_param
-        S_config_databases = 601,                // config_databases
-        S_602_127 = 602,                         // $@127
-        S_config_fetch_wait_time = 603,          // config_fetch_wait_time
-        S_loggers = 604,                         // loggers
-        S_605_128 = 605,                         // $@128
-        S_loggers_entries = 606,                 // loggers_entries
-        S_logger_entry = 607,                    // logger_entry
-        S_608_129 = 608,                         // $@129
-        S_logger_params = 609,                   // logger_params
-        S_logger_param = 610,                    // logger_param
-        S_debuglevel = 611,                      // debuglevel
-        S_severity = 612,                        // severity
-        S_613_130 = 613,                         // $@130
-        S_output_options_list = 614,             // output_options_list
-        S_615_131 = 615,                         // $@131
-        S_output_options_list_content = 616,     // output_options_list_content
-        S_output_entry = 617,                    // output_entry
-        S_618_132 = 618,                         // $@132
-        S_output_params_list = 619,              // output_params_list
-        S_output_params = 620,                   // output_params
-        S_output = 621,                          // output
-        S_622_133 = 622,                         // $@133
-        S_flush = 623,                           // flush
-        S_maxsize = 624,                         // maxsize
-        S_maxver = 625,                          // maxver
-        S_pattern = 626,                         // pattern
-        S_627_134 = 627                          // $@134
-      };
-    };
+    /// Symbol type: an internal symbol number.
+    typedef int symbol_number_type;
 
-    /// (Internal) symbol kind.
-    typedef symbol_kind::symbol_kind_type symbol_kind_type;
+    /// The symbol type number to denote an empty symbol.
+    enum { empty_symbol = -2 };
 
-    /// The number of tokens.
-    static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS;
+    /// Internal symbol number for tokens (subsumed by symbol_number_type).
+    typedef unsigned char token_number_type;
 
     /// A complete symbol.
     ///
-    /// Expects its Base type to provide access to the symbol kind
-    /// via kind ().
+    /// Expects its Base type to provide access to the symbol type
+    /// via type_get().
     ///
     /// Provide access to semantic value and location.
     template <typename Base>
@@ -1352,200 +575,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)
-        : Base (std::move (that))
-        , value ()
-        , location (std::move (that.location))
-      {
-        switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (std::move (that.value));
-        break;
-
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (std::move (that.value));
-        break;
-
-      default:
-        break;
-    }
-
-      }
-#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_kind_type yykind = this->kind ();
-        basic_symbol<Base>& yysym = *this;
-        (void) yysym;
-        switch (yykind)
-        {
-       default:
-          break;
-        }
-
-        // Value type destructor.
-switch (yykind)
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.template destroy< ElementPtr > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.template destroy< bool > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.template destroy< double > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.template destroy< int64_t > ();
-        break;
+  basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
 
-      case symbol_kind::S_STRING: // "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);
 
-      /// The user-facing name of this symbol.
-      std::string name () const YY_NOEXCEPT
-      {
-        return Dhcp6Parser::symbol_name (this->kind ());
-      }
+      /// Destroy the symbol.
+      ~basic_symbol ();
 
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      /// 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);
@@ -1557,3769 +619,2669 @@ switch (yykind)
       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.
-    struct by_kind
+    struct by_type
     {
       /// Default constructor.
-      by_kind ();
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Move constructor.
-      by_kind (by_kind&& that);
-#endif
+      by_type ();
 
       /// Copy constructor.
-      by_kind (const by_kind& that);
+      by_type (const by_type& other);
 
-      /// The symbol kind as needed by the constructor.
-      typedef token_kind_type kind_type;
+      /// The symbol type as needed by the constructor.
+      typedef token_type kind_type;
 
       /// Constructor from (external) token numbers.
-      by_kind (kind_type t);
+      by_type (kind_type t);
 
       /// Record that this symbol is empty.
       void clear ();
 
-      /// Steal the symbol kind from \a that.
-      void move (by_kind& that);
+      /// Steal the symbol type from \a that.
+      void move (by_type& that);
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+      symbol_number_type type_get () const;
 
-      /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      /// The token.
+      token_type token () const;
 
-      /// The symbol kind.
-      /// \a S_YYEMPTY when empty.
-      symbol_kind_type kind_;
+      /// The symbol type.
+      /// \a empty_symbol when empty.
+      /// An int, not token_number_type, to be able to store empty_symbol.
+      int type;
     };
 
-    /// Backward compatibility for a private implementation detail (Bison 3.6).
-    typedef by_kind by_type;
-
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_kind>
-    {
-      /// Superclass.
-      typedef basic_symbol<by_kind> 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))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || 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_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_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_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_IP_RESERVATIONS_UNIQUE || 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_PATTERN || 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_CONFIG_CONTROL);
-      }
-#else
-      symbol_type (int tok, const location_type& l)
-        : super_type(token_type (tok), l)
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || 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_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_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_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX_AGE || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_DDNS_UPDATE_ON_RENEW || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_IP_RESERVATIONS_UNIQUE || 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_PATTERN || 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_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))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
-#else
-      symbol_type (int tok, const bool& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
-#else
-      symbol_type (int tok, const double& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
-#else
-      symbol_type (int tok, const int64_t& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
-#else
-      symbol_type (int tok, const std::string& v, const location_type& l)
-        : super_type(token_type (tok), v, l)
-      {
-        YY_ASSERT (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);
 
-#if 201103L <= YY_CPLUSPLUS
-    /// Non copyable.
-    Dhcp6Parser (const Dhcp6Parser&) = delete;
-    /// Non copyable.
-    Dhcp6Parser& operator= (const Dhcp6Parser&) = delete;
-#endif
+    static inline
+    symbol_type
+    make_LSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.  An alias for parse ().
-    /// \returns  0 iff parsing succeeded.
-    int operator() ();
+    static inline
+    symbol_type
+    make_RSQUARE_BRACKET (const location_type& l);
 
-    /// Parse.
-    /// \returns  0 iff parsing succeeded.
-    virtual int parse ();
+    static inline
+    symbol_type
+    make_LCURLY_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_RCURLY_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_NULL_TYPE (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_DHCP6 (const location_type& l);
 
-    /// Report a syntax error.
-    void error (const syntax_error& err);
+    static inline
+    symbol_type
+    make_DATA_DIRECTORY (const location_type& l);
 
-    /// The user-facing name of the symbol whose (internal) number is
-    /// YYSYMBOL.  No bounds checking.
-    static std::string symbol_name (symbol_kind_type yysymbol);
+    static inline
+    symbol_type
+    make_CONFIG_CONTROL (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_PARSER6_error (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_error, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER6_error (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_error, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PARSER6_UNDEF (location_type l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_UNDEF, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PARSER6_UNDEF (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PARSER6_UNDEF, 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_CONFIG_FETCH_WAIT_TIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, 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);
-      }
+    static inline
+    symbol_type
+    make_CONFIG_DATABASES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONFIG_FETCH_WAIT_TIME (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_MAX_ROW_ERRORS (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PREFERRED_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MIN_PREFERRED_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_PREFERRED_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MIN_VALID_LIFETIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_MAX_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_CACHE_THRESHOLD (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CACHE_MAX_AGE (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_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_SEND_UPDATES (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_REPLACE_CLIENT_NAME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_GENERATED_PREFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_QUALIFYING_SUFFIX (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_UPDATE_ON_RENEW (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l);
+
+    static inline
+    symbol_type
+    make_STORE_EXTENDED_INFO (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_DHCP_MULTI_THREADING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_ENABLE_MULTI_THREADING (const location_type& l);
+
+    static inline
+    symbol_type
+    make_THREAD_POOL_SIZE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_PACKET_QUEUE_SIZE (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_ENABLE_QUEUE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_QUEUE_TYPE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CAPACITY (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_IP_RESERVATIONS_UNIQUE (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_PATTERN (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_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_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);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CONSISTENCY, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (location_type l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_SERIAL_CONSISTENCY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, 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_MAX_ROW_ERRORS (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_ROW_ERRORS (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_ROW_ERRORS, 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_MIN_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MIN_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_PREFERRED_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_PREFERRED_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_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_MIN_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MIN_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (location_type l)
-      {
-        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_MAX_VALID_LIFETIME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_MAX_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_CACHE_THRESHOLD (location_type l)
-      {
-        return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CACHE_THRESHOLD (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CACHE_MAX_AGE (location_type l)
-      {
-        return symbol_type (token::TOKEN_CACHE_MAX_AGE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CACHE_MAX_AGE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CACHE_MAX_AGE, 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_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_SEND_UPDATES (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_SEND_UPDATES (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_NO_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_REPLACE_CLIENT_NAME (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_GENERATED_PREFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_GENERATED_PREFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_QUALIFYING_SUFFIX (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_DDNS_UPDATE_ON_RENEW (location_type l)
-      {
-        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DDNS_UPDATE_ON_RENEW (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_STORE_EXTENDED_INFO (location_type l)
-      {
-        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_STORE_EXTENDED_INFO (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, 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_DHCP_MULTI_THREADING (location_type l)
-      {
-        return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_DHCP_MULTI_THREADING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_ENABLE_MULTI_THREADING (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_MULTI_THREADING (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_THREAD_POOL_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_THREAD_POOL_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_PACKET_QUEUE_SIZE (location_type l)
-      {
-        return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PACKET_QUEUE_SIZE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, 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_ENABLE_QUEUE (location_type l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_ENABLE_QUEUE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_QUEUE_TYPE (location_type l)
-      {
-        return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_QUEUE_TYPE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_QUEUE_TYPE, l);
-      }
-#endif
-#if 201103L <= YY_CPLUSPLUS
-      static
-      symbol_type
-      make_CAPACITY (location_type l)
-      {
-        return symbol_type (token::TOKEN_CAPACITY, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_CAPACITY (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_CAPACITY, 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_IP_RESERVATIONS_UNIQUE (location_type l)
-      {
-        return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_IP_RESERVATIONS_UNIQUE (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, 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_PATTERN (location_type l)
-      {
-        return symbol_type (token::TOKEN_PATTERN, std::move (l));
-      }
-#else
-      static
-      symbol_type
-      make_PATTERN (const location_type& l)
-      {
-        return symbol_type (token::TOKEN_PATTERN, 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_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_ = 1240,     ///< Last index in yytable_.
+      yynnts_ = 427,  ///< Number of nonterminal symbols.
+      yyfinal_ = 30, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 203  ///< 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,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202
+    };
+    const unsigned int user_token_number_max_ = 457;
+    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 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        value.copy< ElementPtr > (other.value);
+        break;
+
+      case 202: // "boolean"
+        value.copy< bool > (other.value);
+        break;
+
+      case 201: // "floating point"
+        value.copy< double > (other.value);
+        break;
+
+      case 200: // "integer"
+        value.copy< int64_t > (other.value);
+        break;
+
+      case 199: // "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 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        value.copy< ElementPtr > (v);
+        break;
+
+      case 202: // "boolean"
+        value.copy< bool > (v);
+        break;
+
+      case 201: // "floating point"
+        value.copy< double > (v);
+        break;
+
+      case 200: // "integer"
+        value.copy< int64_t > (v);
+        break;
+
+      case 199: // "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 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        value.template destroy< ElementPtr > ();
+        break;
+
+      case 202: // "boolean"
+        value.template destroy< bool > ();
+        break;
+
+      case 201: // "floating point"
+        value.template destroy< double > ();
+        break;
+
+      case 200: // "integer"
+        value.template destroy< int64_t > ();
+        break;
+
+      case 199: // "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 219: // value
+      case 223: // map_value
+      case 264: // ddns_replace_client_name_value
+      case 304: // db_type
+      case 405: // hr_mode
+      case 541: // duid_type
+      case 584: // ncr_protocol_value
+        value.move< ElementPtr > (s.value);
+        break;
+
+      case 202: // "boolean"
+        value.move< bool > (s.value);
+        break;
+
+      case 201: // "floating point"
+        value.move< double > (s.value);
+        break;
+
+      case 200: // "integer"
+        value.move< int64_t > (s.value);
+        break;
+
+      case 199: // "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,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   456,   457
+    };
+    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_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, 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_MAX_ROW_ERRORS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_ROW_ERRORS, 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_MIN_PREFERRED_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_PREFERRED_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_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_MIN_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAX_VALID_LIFETIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAX_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_CALCULATE_TEE_TIMES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T1_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T1_PERCENT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_T2_PERCENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_T2_PERCENT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CACHE_THRESHOLD (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CACHE_MAX_AGE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CACHE_MAX_AGE, 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_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_SEND_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
+  }
 
-    class context
-    {
-    public:
-      context (const Dhcp6Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
+  }
 
-      /// Put in YYARG at most YYARGN of the expected tokens, and return the
-      /// number of tokens stored in YYARG.  If YYARG is null, return the
-      /// number of expected tokens (guaranteed to be less than YYNTOKENS).
-      int expected_tokens (symbol_kind_type yyarg[], int yyargn) const;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
+  }
 
-    private:
-      const Dhcp6Parser& yyparser_;
-      const symbol_type& yyla_;
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
+  }
 
-  private:
-#if YY_CPLUSPLUS < 201103L
-    /// Non copyable.
-    Dhcp6Parser (const Dhcp6Parser&);
-    /// Non copyable.
-    Dhcp6Parser& operator= (const Dhcp6Parser&);
-#endif
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_GENERATED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
+  }
 
-    /// Stored state numbers (used for stacks).
-    typedef short state_type;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_UPDATE_ON_RENEW (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
+  }
 
-    /// The arguments of the error message.
-    int yy_syntax_error_arguments_ (const context& yyctx,
-                                    symbol_kind_type yyarg[], int yyargn) const;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l);
+  }
 
-    /// Generate an error message.
-    /// \param yyctx     the context in which the error occurred.
-    virtual std::string yysyntax_error_ (const context& yyctx) const;
-    /// Compute post-reduction state.
-    /// \param yystate   the current state
-    /// \param yysym     the nonterminal to push on the stack
-    static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_STORE_EXTENDED_INFO (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, 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_SUBNET6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET6, 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_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_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OPTION_DATA, l);
+  }
 
-    /// Convert a scanner token kind \a t to a symbol kind.
-    /// In theory \a t should be a token_kind_type, but character literals
-    /// are valid, yet not members of the token_type enum.
-    static symbol_kind_type yytranslate_ (int t);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NAME, l);
+  }
 
-    /// Convert the symbol name \a n to a form suitable for a diagnostic.
-    static std::string yytnamerr_ (const char *yystr);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DATA, l);
+  }
 
-    /// For a symbol, its name in clear.
-    static const char* const yytname_[];
+  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);
+  }
 
-    // Tables.
-    // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    // STATE-NUM.
-    static const short yypact_[];
+  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);
+  }
 
-    // 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 short yydefact_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ARRAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ARRAY, l);
+  }
 
-    // YYPGOTO[NTERM-NUM].
-    static const short yypgoto_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOLS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOLS, l);
+  }
 
-    // YYDEFGOTO[NTERM-NUM].
-    static const short yydefgoto_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_POOL, 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 short yytable_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PD_POOLS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PD_POOLS, l);
+  }
 
-    static const short yycheck_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIX, l);
+  }
 
-    // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    // symbol of state STATE-NUM.
-    static const short yystos_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIX_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIX_LEN, l);
+  }
 
-    // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
-    static const short yyr1_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
+  }
 
-    // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
-    static const signed char yyr2_[];
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DELEGATED_LEN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DELEGATED_LEN, l);
+  }
 
-#if PARSER6_DEBUG
-    // YYRLINE[YYN] -- Source line where rule number YYN was defined.
-    static const short yyrline_[];
-    /// Report on the debug stream that the rule \a r is going to be reduced.
-    virtual void yy_reduce_print_ (int r) const;
-    /// Print the state stack on the debug stream.
-    virtual void yy_stack_print_ () const;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_USER_CONTEXT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_USER_CONTEXT, l);
+  }
 
-    /// Debugging level.
-    int yydebug_;
-    /// Debug stream.
-    std::ostream* yycdebug_;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_COMMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMMENT, l);
+  }
 
-    /// \brief Display a symbol kind, 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_SUBNET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUBNET, 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_INTERFACE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTERFACE_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTERFACE_ID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RAPID_COMMIT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RAPID_COMMIT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATION_MODE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DISABLED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DISABLED, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUT_OF_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_GLOBAL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_GLOBAL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ALL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ALL, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SHARED_NETWORKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+  }
+
+  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);
+  }
+
+  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);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LEASE_CHECKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TEST (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TEST, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ONLY_IF_REQUIRED (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CLIENT_CLASS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RESERVATIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RESERVATIONS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESSES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PREFIXES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PREFIXES, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DUID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DUID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HW_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HW_ADDRESS, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLEX_ID (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLEX_ID, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RELAY, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_ADDRESS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_IP_ADDRESS, l);
+  }
+
+  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_DHCP_MULTI_THREADING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENABLE_MULTI_THREADING (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_THREAD_POOL_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
+  }
 
-  private:
-    /// Type access provider for state based symbols.
-    struct by_state
-    {
-      /// Default constructor.
-      by_state () YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PACKET_QUEUE_SIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
+  }
 
-      /// The symbol kind as needed by the constructor.
-      typedef state_type kind_type;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CONTROL_SOCKET (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+  }
 
-      /// Constructor.
-      by_state (kind_type s) YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+  }
 
-      /// Copy constructor.
-      by_state (const by_state& that) YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SOCKET_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SOCKET_NAME, l);
+  }
 
-      /// Record that this symbol is empty.
-      void clear () YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+  }
 
-      /// Steal the symbol kind from \a that.
-      void move (by_state& that);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENABLE_QUEUE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
+  }
 
-      /// The symbol kind (corresponding to \a state).
-      /// \a symbol_kind::S_YYEMPTY when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_QUEUE_TYPE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUEUE_TYPE, l);
+  }
 
-      /// The state number used to denote an empty symbol.
-      /// We use the initial state, as it does not have a value.
-      enum { empty_state = 0 };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CAPACITY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CAPACITY, l);
+  }
 
-      /// The state.
-      /// \a empty when empty.
-      state_type state;
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DHCP_DDNS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_DDNS, 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);
-
-      /// Assignment, needed by push_back by other implementations.
-      /// Needed by some other old implementations.
-      stack_symbol_type& operator= (const stack_symbol_type& that);
-#endif
-    };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_ENABLE_UPDATES (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_ENABLE_UPDATES, 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::iterator iterator;
-      typedef typename S::const_iterator const_iterator;
-      typedef typename S::size_type size_type;
-      typedef typename std::ptrdiff_t index_type;
-
-      stack (size_type n = 200)
-        : seq_ (n)
-      {}
-
-#if 201103L <= YY_CPLUSPLUS
-      /// Non copyable.
-      stack (const stack&) = delete;
-      /// Non copyable.
-      stack& operator= (const stack&) = delete;
-#endif
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_QUALIFYING_SUFFIX (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+  }
 
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      const T&
-      operator[] (index_type i) const
-      {
-        return seq_[size_type (size () - 1 - i)];
-      }
-
-      /// Random access.
-      ///
-      /// Index 0 returns the topmost element.
-      T&
-      operator[] (index_type i)
-      {
-        return seq_[size_type (size () - 1 - 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_SERVER_IP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SERVER_IP, l);
+  }
 
-      /// Pop elements from the stack.
-      void
-      pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
-      {
-        for (; 0 < n; --n)
-          seq_.pop_back ();
-      }
+  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.
-      index_type
-      size () const YY_NOEXCEPT
-      {
-        return index_type (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_.begin ();
-      }
+  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_.end ();
-      }
+  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, index_type range)
-          : stack_ (stack)
-          , range_ (range)
-        {}
-
-        const T&
-        operator[] (index_type i) const
-        {
-          return stack_[range_ - i];
-        }
-
-      private:
-        const stack& stack_;
-        index_type range_;
-      };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_NCR_FORMAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NCR_FORMAT, l);
+  }
 
-    private:
-#if YY_CPLUSPLUS < 201103L
-      /// Non copyable.
-      stack (const stack&);
-      /// Non copyable.
-      stack& operator= (const stack&);
-#endif
-      /// 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
-    {
-      yylast_ = 1231,     ///< Last index in yytable_.
-      yynnts_ = 426,  ///< Number of nonterminal symbols.
-      yyfinal_ = 30 ///< Termination state number.
-    };
+  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);
+  }
 
-  };
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_WHEN_NOT_PRESENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+  }
 
-  inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::yytranslate_ (int t)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
   {
-    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
-    // TOKEN-NUM as returned by yylex.
-    static
-    const unsigned char
-    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,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201
-    };
-    // Last valid token kind.
-    const int code_max = 456;
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+  }
 
-    if (t <= 0)
-      return symbol_kind::S_YYEOF;
-    else if (t <= code_max)
-      return YY_CAST (symbol_kind_type, translate_table[t]);
-    else
-      return symbol_kind::S_YYUNDEF;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
   }
 
-  // basic_symbol.
-  template <typename Base>
-  Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
-    : Base (that)
-    , value ()
-    , location (that.location)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_IP_RESERVATIONS_UNIQUE (const location_type& l)
   {
-    switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.copy< ElementPtr > (YY_MOVE (that.value));
-        break;
+    return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l);
+  }
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.copy< bool > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LOGGERS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LOGGERS, l);
+  }
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.copy< double > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT_OPTIONS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+  }
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.copy< int64_t > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_OUTPUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_OUTPUT, l);
+  }
 
-      case symbol_kind::S_STRING: // "constant string"
-        value.copy< std::string > (YY_MOVE (that.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_DEBUGLEVEL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SEVERITY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SEVERITY, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLUSH (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_FLUSH, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXSIZE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXSIZE, l);
+  }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_MAXVER (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_MAXVER, l);
+  }
 
-  template <typename Base>
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::basic_symbol<Base>::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_PATTERN (const location_type& l)
   {
-    return this->kind ();
+    return symbol_type (token::TOKEN_PATTERN, l);
   }
 
-  template <typename Base>
-  bool
-  Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TOPLEVEL_JSON (const location_type& l)
   {
-    return this->kind () == symbol_kind::S_YYEMPTY;
+    return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
   }
 
-  template <typename Base>
-  void
-  Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TOPLEVEL_DHCP6 (const location_type& l)
   {
-    super_type::move (s);
-    switch (this->kind ())
-    {
-      case symbol_kind::S_value: // value
-      case symbol_kind::S_map_value: // map_value
-      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-      case symbol_kind::S_db_type: // db_type
-      case symbol_kind::S_hr_mode: // hr_mode
-      case symbol_kind::S_duid_type: // duid_type
-      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-        value.move< ElementPtr > (YY_MOVE (s.value));
-        break;
+    return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
+  }
 
-      case symbol_kind::S_BOOLEAN: // "boolean"
-        value.move< bool > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_DHCP6, l);
+  }
 
-      case symbol_kind::S_FLOAT: // "floating point"
-        value.move< double > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_INTERFACES6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
+  }
 
-      case symbol_kind::S_INTEGER: // "integer"
-        value.move< int64_t > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_SUBNET6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_SUBNET6, l);
+  }
 
-      case symbol_kind::S_STRING: // "constant string"
-        value.move< std::string > (YY_MOVE (s.value));
-        break;
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_POOL6 (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_POOL6, l);
+  }
 
-      default:
-        break;
-    }
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_PD_POOL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_PD_POOL, l);
+  }
 
-    location = YY_MOVE (s.location);
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_RESERVATION (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_RESERVATION, l);
   }
 
-  // by_kind.
-  inline
-  Dhcp6Parser::by_kind::by_kind ()
-    : kind_ (symbol_kind::S_YYEMPTY)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEFS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+  }
 
-#if 201103L <= YY_CPLUSPLUS
-  inline
-  Dhcp6Parser::by_kind::by_kind (by_kind&& that)
-    : kind_ (that.kind_)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DEF (const location_type& l)
   {
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
   }
-#endif
 
-  inline
-  Dhcp6Parser::by_kind::by_kind (const by_kind& that)
-    : kind_ (that.kind_)
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_OPTION_DATA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+  }
 
-  inline
-  Dhcp6Parser::by_kind::by_kind (token_kind_type t)
-    : kind_ (yytranslate_ (t))
-  {}
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+  }
 
-  inline
-  void
-  Dhcp6Parser::by_kind::clear ()
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_DHCP_DDNS (const location_type& l)
   {
-    kind_ = symbol_kind::S_YYEMPTY;
+    return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
   }
 
-  inline
-  void
-  Dhcp6Parser::by_kind::move (by_kind& that)
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
   {
-    kind_ = that.kind_;
-    that.clear ();
+    return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
   }
 
-  inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_kind::kind () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_STRING (const std::string& v, const location_type& l)
   {
-    return kind_;
+    return symbol_type (token::TOKEN_STRING, v, l);
   }
 
-  inline
-  Dhcp6Parser::symbol_kind_type
-  Dhcp6Parser::by_kind::type_get () const YY_NOEXCEPT
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_INTEGER (const int64_t& v, const location_type& l)
+  {
+    return symbol_type (token::TOKEN_INTEGER, v, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_FLOAT (const double& v, const location_type& l)
   {
-    return this->kind ();
+    return symbol_type (token::TOKEN_FLOAT, v, l);
   }
 
-#line 14 "dhcp6_parser.yy"
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_BOOLEAN (const bool& v, const location_type& l)
+  {
+    return symbol_type (token::TOKEN_BOOLEAN, v, l);
+  }
+
+
+#line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 5323 "dhcp6_parser.h"
+#line 3285 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 367b27bc13d117526e6099d03184cb0bbe5f441a..e0fe3984044fb4e6a8e14d872728d7327f4bf648 100644 (file)
@@ -111,6 +111,7 @@ using namespace std;
   DDNS_GENERATED_PREFIX "ddns-generated-prefix"
   DDNS_QUALIFYING_SUFFIX "ddns-qualifying-suffix"
   DDNS_UPDATE_ON_RENEW "ddns-update-on-renew"
+  DDNS_USE_CONFLICT_RESOLUTION "ddns-use-conflict-resolution"
   STORE_EXTENDED_INFO "store-extended-info"
   SUBNET6 "subnet6"
   OPTION_DEF "option-def"
@@ -505,6 +506,7 @@ global_param: data_directory
             | ddns_generated_prefix
             | ddns_qualifying_suffix
             | ddns_update_on_renew
+            | ddns_use_conflict_resolution
             | store_extended_info
             | statistic_default_sample_count
             | statistic_default_sample_age
@@ -675,6 +677,12 @@ ddns_update_on_renew: DDNS_UPDATE_ON_RENEW COLON BOOLEAN {
     ctx.stack_.back()->set("ddns-update-on-renew", b);
 };
 
+ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1));
+    ElementPtr b(new BoolElement($3, ctx.loc2pos(@3)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+};
+
 hostname_char_set: HOSTNAME_CHAR_SET {
     ctx.unique("hostname-char-set", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1395,6 +1403,7 @@ subnet6_param: preferred_lifetime
              | ddns_generated_prefix
              | ddns_qualifying_suffix
              | ddns_update_on_renew
+             | ddns_use_conflict_resolution
              | store_extended_info
              | unknown_map_entry
              ;
@@ -1541,6 +1550,7 @@ shared_network_param: name
                     | ddns_generated_prefix
                     | ddns_qualifying_suffix
                     | ddns_update_on_renew
+                    | ddns_use_conflict_resolution
                     | store_extended_info
                     | unknown_map_entry
                     ;
index 1632aaddc628c80344d4e652876bd56a010ed25c..227fb54c16cecb68ddc378fd4e124eb04d7fece1 100644 (file)
@@ -776,6 +776,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
                  (config_pair.first == "ddns-generated-prefix") ||
                  (config_pair.first == "ddns-qualifying-suffix") ||
                  (config_pair.first == "ddns-update-on-renew") ||
+                 (config_pair.first == "ddns-use-conflict-resolution") ||
                  (config_pair.first == "store-extended-info") ||
                  (config_pair.first == "statistic-default-sample-count") ||
                  (config_pair.first == "statistic-default-sample-age") ||
index a24ac29e5480591c103a339e60c387b8372f7729..239704683c8fa2193dfd7c1bd8641c8df96d8a39 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.2.
+// A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 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 <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"
+#line 14 "dhcp6_parser.yy" // location.cc:296
 namespace isc { namespace dhcp {
-#line 59 "location.hh"
-
-  /// A point in a source file.
-  class position
-  {
-  public:
-    /// Type for file name.
-    typedef const std::string filename_type;
-    /// Type for line and column numbers.
-    typedef int counter_type;
-
-    /// Construct a position.
-    explicit position (filename_type* f = YY_NULLPTR,
-                       counter_type l = 1,
-                       counter_type c = 1)
-      : filename (f)
-      , line (l)
-      , column (c)
-    {}
-
-
-    /// Initialization.
-    void initialize (filename_type* fn = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
-    {
-      filename = fn;
-      line = l;
-      column = c;
-    }
-
-    /** \name Line and Column related manipulators
-     ** \{ */
-    /// (line related) Advance to the COUNT next lines.
-    void lines (counter_type count = 1)
-    {
-      if (count)
-        {
-          column = 1;
-          line = add_ (line, count, 1);
-        }
-    }
-
-    /// (column related) Advance to the COUNT next columns.
-    void columns (counter_type count = 1)
-    {
-      column = add_ (column, count, 1);
-    }
-    /** \} */
-
-    /// File name to which this position refers.
-    filename_type* filename;
-    /// Current line number.
-    counter_type line;
-    /// Current column number.
-    counter_type column;
-
-  private:
-    /// Compute max (min, lhs+rhs).
-    static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
-    {
-      return lhs + rhs < min ? min : lhs + rhs;
-    }
-  };
-
-  /// Add \a width columns, in place.
-  inline position&
-  operator+= (position& res, position::counter_type width)
-  {
-    res.columns (width);
-    return res;
-  }
-
-  /// Add \a width columns.
-  inline position
-  operator+ (position res, position::counter_type width)
-  {
-    return res += width;
-  }
-
-  /// Subtract \a width columns, in place.
-  inline position&
-  operator-= (position& res, position::counter_type width)
-  {
-    return res += -width;
-  }
-
-  /// Subtract \a width columns.
-  inline position
-  operator- (position res, position::counter_type width)
-  {
-    return res -= width;
-  }
-
-  /** \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:
-    /// Type for file name.
-    typedef position::filename_type filename_type;
-    /// Type for line and column numbers.
-    typedef position::counter_type counter_type;
 
     /// Construct a location from \a b to \a e.
     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 (filename_type* f,
-                       counter_type l = 1,
-                       counter_type c = 1)
+    explicit location (std::string* f,
+                       unsigned int l = 1u,
+                       unsigned int c = 1u)
       : begin (f, l, c)
       , end (f, l, c)
-    {}
+    {
+    }
 
 
     /// Initialization.
-    void initialize (filename_type* f = YY_NULLPTR,
-                     counter_type l = 1,
-                     counter_type c = 1)
+    void initialize (std::string* f = YY_NULLPTR,
+                     unsigned int l = 1u,
+                     unsigned int c = 1u)
     {
       begin.initialize (f, l, c);
       end = begin;
@@ -212,13 +91,13 @@ namespace isc { namespace dhcp {
     }
 
     /// Extend the current location to the COUNT next columns.
-    void columns (counter_type count = 1)
+    void columns (int count = 1)
     {
       end += count;
     }
 
     /// Extend the current location to the COUNT next lines.
-    void lines (counter_type count = 1)
+    void lines (int count = 1)
     {
       end.lines (count);
     }
@@ -233,49 +112,57 @@ namespace isc { namespace dhcp {
   };
 
   /// Join two locations, in place.
-  inline location&
-  operator+= (location& res, const location& end)
+  inline location& operator+= (location& res, const location& end)
   {
     res.end = end.end;
     return res;
   }
 
   /// Join two locations.
-  inline location
-  operator+ (location res, const location& end)
+  inline location operator+ (location res, const location& end)
   {
     return res += end;
   }
 
   /// Add \a width columns to the end position, in place.
-  inline location&
-  operator+= (location& res, location::counter_type width)
+  inline location& operator+= (location& res, int width)
   {
     res.columns (width);
     return res;
   }
 
   /// Add \a width columns to the end position.
-  inline location
-  operator+ (location res, location::counter_type width)
+  inline location operator+ (location res, int width)
   {
     return res += width;
   }
 
   /// Subtract \a width columns to the end position, in place.
-  inline location&
-  operator-= (location& res, location::counter_type width)
+  inline location& operator-= (location& res, int width)
   {
     return res += -width;
   }
 
   /// Subtract \a width columns to the end position.
-  inline location
-  operator- (location res, location::counter_type width)
+  inline location operator- (location res, int width)
   {
     return res -= width;
   }
 
+  /// Compare two location objects.
+  inline bool
+  operator== (const location& loc1, const location& loc2)
+  {
+    return loc1.begin == loc2.begin && loc1.end == loc2.end;
+  }
+
+  /// Compare two location objects.
+  inline bool
+  operator!= (const location& loc1, const location& loc2)
+  {
+    return !(loc1 == loc2);
+  }
+
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -283,11 +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)
   {
-    location::counter_type 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
@@ -300,8 +186,7 @@ namespace isc { namespace dhcp {
     return ostr;
   }
 
-#line 14 "dhcp6_parser.yy"
+#line 14 "dhcp6_parser.yy" // location.cc:296
 } } // isc::dhcp
-#line 305 "location.hh"
-
+#line 192 "location.hh" // location.cc:296
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index 48ecfcbf2b1d1649990e50251c14c2f477edb7c7..2ee80e6d0a22726887dabd52d10789130b8e5d56 100644 (file)
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.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 1bd3435effcea440b1d251684347fb943ad9f8e7..db2863a06ef4a89243bf39cc72557573857e8cf7 100644 (file)
@@ -1,9 +1,157 @@
-// Generated 202010091455
-// A Bison parser, made by GNU Bison 3.7.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
index 327812c8a0f997116a122f8aa040389577de3696..a8eb1291698f6f87b247e25a6a9d12f5704d44ac 100644 (file)
@@ -20,6 +20,7 @@
 #include <dhcp6/json_config_parser.h>
 #include <dhcp6/tests/dhcp6_test_utils.h>
 #include <dhcp6/tests/get_config_unittest.h>
+#include <testutils/gtest_utils.h>
 
 #include <boost/algorithm/string.hpp>
 #include <gtest/gtest.h>
@@ -1997,6 +1998,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2078,6 +2080,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2193,6 +2196,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2375,6 +2379,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2557,6 +2562,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2739,6 +2745,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2854,6 +2861,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -2962,6 +2970,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3070,6 +3079,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3210,6 +3220,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3317,6 +3328,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3426,6 +3438,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3537,6 +3550,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3663,6 +3677,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3772,6 +3787,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3861,6 +3877,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -3950,6 +3967,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4048,6 +4066,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4137,6 +4156,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4226,6 +4246,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4350,6 +4371,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4474,6 +4496,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4608,6 +4631,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4725,6 +4749,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -4885,6 +4910,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5035,6 +5061,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5195,6 +5222,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5317,6 +5345,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5443,6 +5472,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5524,6 +5554,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5605,6 +5636,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5712,6 +5744,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -5819,6 +5852,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6004,6 +6038,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6126,6 +6161,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6256,6 +6292,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -6363,6 +6400,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"when-present\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -6470,6 +6508,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"always\",\n"
 "        \"ddns-send-updates\": false,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": true,\n"
@@ -6577,6 +6616,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6809,6 +6849,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -6939,6 +6980,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7020,6 +7062,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7101,6 +7144,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7312,6 +7356,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7445,6 +7490,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7526,6 +7572,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7605,6 +7652,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7684,6 +7732,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 12345,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7763,6 +7812,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7856,6 +7906,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -7963,6 +8014,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8070,6 +8122,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8178,6 +8231,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8291,6 +8345,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8404,6 +8459,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8513,6 +8569,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8623,6 +8680,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8738,6 +8796,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -8862,6 +8921,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9060,6 +9120,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9259,6 +9320,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9340,6 +9402,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9419,6 +9482,7 @@ const char* UNPARSED_CONFIGS[] = {
 "        \"ddns-replace-client-name\": \"never\",\n"
 "        \"ddns-send-updates\": true,\n"
 "        \"ddns-update-on-renew\": false,\n"
+"        \"ddns-use-conflict-resolution\": true,\n"
 "        \"decline-probation-period\": 86400,\n"
 "        \"dhcp-ddns\": {\n"
 "            \"enable-updates\": false,\n"
@@ -9719,9 +9783,9 @@ TEST_P(Dhcp6GetConfigTest, run) {
     // unparse it
     ConstSrvConfigPtr extracted = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed;
-    ASSERT_NO_THROW(unparsed = extracted->toElement());
+    ASSERT_NO_THROW_LOG(unparsed = extracted->toElement());
     ConstElementPtr dhcp;
-    ASSERT_NO_THROW(dhcp = unparsed->get("Dhcp6"));
+    ASSERT_NO_THROW_LOG(dhcp = unparsed->get("Dhcp6"));
     ASSERT_TRUE(dhcp);
 
     // dump if wanted else check
@@ -9731,16 +9795,16 @@ TEST_P(Dhcp6GetConfigTest, run) {
             std::cerr << ",\n";
         }
         std::cerr << "    // CONFIGURATION " << config_counter;
-        ASSERT_NO_THROW(expected = prettyPrint(dhcp));
-        ASSERT_NO_THROW(outputFormatted(dhcp->str()));
+        ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp));
+        ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str()));
     } else {
         expected = UNPARSED_CONFIGS[config_counter];
         // get the expected config using the dhcpv6 syntax parser
         ElementPtr jsond;
-        ASSERT_NO_THROW(jsond = parseDHCP6(expected, true));
+        ASSERT_NO_THROW_LOG(jsond = parseDHCP6(expected, true));
         // get the expected config using the generic JSON syntax parser
         ElementPtr jsonj;
-        ASSERT_NO_THROW(jsonj = parseJSON(expected));
+        ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected));
         // the generic JSON parser does not handle comments
         EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
         // check that unparsed and expected values match
@@ -9761,7 +9825,7 @@ TEST_P(Dhcp6GetConfigTest, run) {
     // is it a fixed point?
     ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed2;
-    ASSERT_NO_THROW(unparsed2 = extracted2->toElement());
+    ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement());
     ASSERT_TRUE(unparsed2);
     EXPECT_TRUE(isEquivalent(unparsed, unparsed2));
 }
index 5c227dbc53881b59e8686676567e7e3046bbe9cf..0945e09fa6021e860a224e992c533185f8c7f1af 100644 (file)
@@ -20,6 +20,7 @@
 #include <dhcp6/json_config_parser.h>
 #include <dhcp6/tests/dhcp6_test_utils.h>
 #include <dhcp6/tests/get_config_unittest.h>
+#include <testutils/gtest_utils.h>
 
 #include <boost/algorithm/string.hpp>
 #include <gtest/gtest.h>
@@ -306,9 +307,9 @@ TEST_P(Dhcp6GetConfigTest, run) {
     // unparse it
     ConstSrvConfigPtr extracted = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed;
-    ASSERT_NO_THROW(unparsed = extracted->toElement());
+    ASSERT_NO_THROW_LOG(unparsed = extracted->toElement());
     ConstElementPtr dhcp;
-    ASSERT_NO_THROW(dhcp = unparsed->get("Dhcp6"));
+    ASSERT_NO_THROW_LOG(dhcp = unparsed->get("Dhcp6"));
     ASSERT_TRUE(dhcp);
 
     // dump if wanted else check
@@ -318,16 +319,16 @@ TEST_P(Dhcp6GetConfigTest, run) {
             std::cerr << ",\n";
         }
         std::cerr << "    // CONFIGURATION " << config_counter;
-        ASSERT_NO_THROW(expected = prettyPrint(dhcp));
-        ASSERT_NO_THROW(outputFormatted(dhcp->str()));
+        ASSERT_NO_THROW_LOG(expected = prettyPrint(dhcp));
+        ASSERT_NO_THROW_LOG(outputFormatted(dhcp->str()));
     } else {
         expected = UNPARSED_CONFIGS[config_counter];
         // get the expected config using the dhcpv6 syntax parser
         ElementPtr jsond;
-        ASSERT_NO_THROW(jsond = parseDHCP6(expected, true));
+        ASSERT_NO_THROW_LOG(jsond = parseDHCP6(expected, true));
         // get the expected config using the generic JSON syntax parser
         ElementPtr jsonj;
-        ASSERT_NO_THROW(jsonj = parseJSON(expected));
+        ASSERT_NO_THROW_LOG(jsonj = parseJSON(expected));
         // the generic JSON parser does not handle comments
         EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
         // check that unparsed and expected values match
@@ -348,7 +349,7 @@ TEST_P(Dhcp6GetConfigTest, run) {
     // is it a fixed point?
     ConstSrvConfigPtr extracted2 = CfgMgr::instance().getStagingCfg();
     ConstElementPtr unparsed2;
-    ASSERT_NO_THROW(unparsed2 = extracted2->toElement());
+    ASSERT_NO_THROW_LOG(unparsed2 = extracted2->toElement());
     ASSERT_TRUE(unparsed2);
     EXPECT_TRUE(isEquivalent(unparsed, unparsed2));
 }
index 79dc59ff57045f74fb379660f45bba10052ed473..abfc37bcace3072afd811309f9acd8d35a5f9225 100644 (file)
@@ -273,7 +273,7 @@ BaseNetworkParser::parseDdnsParams(const data::ConstElementPtr& network_data,
     }
 
     if (network_data->contains("ddns-use-conflict-resolution")) {
-        network->setDdnsUpdateOnRenew(getBoolean(network_data, "ddns-use-conflict-resolution"));
+        network->setDdnsUseConflictResolution(getBoolean(network_data, "ddns-use-conflict-resolution"));
     }
 }
 
index 7aa709e4a75942332efb9cbcbbf7efb3c54608a9..fe3a7059a2b5a8c648ce6d70bfbaec6d8ca181df 100644 (file)
@@ -287,8 +287,7 @@ const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = {
     "t2-percent",
     "store-extended-info",
     "cache-threshold",
-    "cache-max-age",
-    "ddns-use-conflict-resolution"
+    "cache-max-age"
 };
 
 /// @brief This table defines all pool parameters.