]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2958] add upgrade script
authorRazvan Becheriu <razvan@isc.org>
Tue, 21 May 2024 20:20:48 +0000 (23:20 +0300)
committerRazvan Becheriu <razvan@isc.org>
Wed, 22 May 2024 16:05:30 +0000 (19:05 +0300)
18 files changed:
configure.ac
src/bin/admin/tests/mysql_tests.sh.in
src/bin/admin/tests/pgsql_tests.sh.in
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/lib/pgsql/pgsql_connection.h
src/share/database/scripts/mysql/dhcpdb_create.mysql
src/share/database/scripts/mysql/upgrade_021_to_022.sh.in
src/share/database/scripts/pgsql/.gitignore
src/share/database/scripts/pgsql/Makefile.am
src/share/database/scripts/pgsql/dhcpdb_create.pgsql
src/share/database/scripts/pgsql/upgrade_021_to_022.sh.in [new file with mode: 0644]

index 2a78b127aa84b888cc5824135adda8d52e99bc2a..33a297bb950b40fd4fce6acd93633330e1f861a3 100644 (file)
@@ -1819,6 +1819,8 @@ AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_019_to_020.sh],
                 [chmod +x src/share/database/scripts/pgsql/upgrade_019_to_020.sh])
 AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_020_to_021.sh],
                 [chmod +x src/share/database/scripts/pgsql/upgrade_020_to_021.sh])
+AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_021_to_022.sh],
+                [chmod +x src/share/database/scripts/pgsql/upgrade_021_to_022.sh])
 AC_CONFIG_FILES([src/share/database/scripts/pgsql/wipe_data.sh],
                 [chmod +x src/share/database/scripts/pgsql/wipe_data.sh])
 AC_CONFIG_FILES([src/share/yang/Makefile])
index 7ab424bc95ae67a51527fed2704b95b661174b5c..84ce69e8cf981b851c8bbfb53ae7adab2453b0a8 100644 (file)
@@ -813,12 +813,6 @@ mysql_upgrade_18_to_19_test() {
     run_statement "ipv6_reservations_insert" "$qry" "3001::99"
 }
 
-mysql_upgrade_19_to_22_test() {
-    # For now this function only verifies version number.
-    version=$("${kea_admin}" db-version mysql -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}")
-    assert_str_eq "22.0" "${version}" "Expected kea-admin to return %s, returned value was %s"
-}
-
 mysql_upgrade_test() {
 
     test_start "mysql.upgrade"
@@ -1503,9 +1497,6 @@ SET @disable_audit = 0"
     # Check upgrade from 18.0 to 19.0.
     mysql_upgrade_18_to_19_test
 
-    # Check upgrade from 19.0 to 22.0.
-    mysql_upgrade_19_to_22_test
-
     # Let's wipe the whole database
     mysql_wipe
 
@@ -2936,6 +2927,77 @@ mysql_ddns_conflict_resolution_mode_update_test() {
     test_finish 0
 }
 
+# Verifies that deprecated dhcp-ddns global map parameters are removed.
+mysql_dhcp_ddns_global_parameters_test() {
+    test_start "mysql.dhcp_ddns_global_parameters_test"
+
+    # Let's wipe the whole database
+    mysql_wipe
+
+    # We need to create an older database.
+    # Initialize database to schema 1.0.
+    mysql -u"${db_user}" -p"${db_password}" "${db_name}" < "@abs_top_srcdir@/src/bin/admin/tests/dhcpdb_create_1.0.mysql"
+
+    # Now upgrade to schema 21.0.
+    mysql_upgrade_schema_to_version 21.0
+
+    # Now insert global parameter instances of dhcp-ddns.
+    sql=\
+"set @disable_audit = 1; \
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.generated-prefix', 'my-host', current_time(),4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.qualifying-suffix', '', current_time(),4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-no-update', 'true', current_time(),2);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-client-update', 'true', current_time(),2);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.replace-client-name', 'never', current_time(),4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-replacement', '', current_time(),4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-set', '[^A-Za-z0-9.-]', current_time(),4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.generated-prefix', 'my-host', current_time(),4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.qualifying-suffix', '', current_time(),4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-no-update', 'true', current_time(),2);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-client-update', 'true', current_time(),2);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.replace-client-name', 'never', current_time(),4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-replacement', '', current_time(),4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-set', '[^A-Za-z0-9.-]', current_time(),4);"
+
+    run_statement "insert dhcp-ddns map parameters" "$sql"
+
+    # Verify the inserted record counts.
+    qry="select count(*) from dhcp4_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 4_global parameter count before update" "$qry" 7
+
+    qry="select count(*) from dhcp6_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 6_global parameter count before update" "$qry" 7
+
+    # Upgrade to schema 22.0
+    mysql_upgrade_schema_to_version 22.0
+
+    # Verify the record have been removed.
+    qry="select count(*) from dhcp4_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 4_global parameter count before update" "$qry" 0
+
+    qry="select count(*) from dhcp6_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 6_global parameter count before update" "$qry" 0
+
+    # Let's wipe the whole database
+    mysql_wipe
+
+    test_finish 0
+}
+
 # Run tests.
 mysql_db_init_test
 mysql_host_reservation_init_test
@@ -2962,4 +3024,4 @@ mysql_shrink_server_tag_test
 mysql_update_empty_duid_test
 mysql_update_v6_addresses_to_binary
 mysql_ddns_conflict_resolution_mode_update_test
-
+mysql_dhcp_ddns_global_parameters_test
index 4ca9c22e9c29967bb57038df4932cac920ed6ac9..7e81cb5f35be10ba15505718a0dcab7746c3b19d 100644 (file)
@@ -142,7 +142,7 @@ pgsql_db_version_test() {
     run_command \
         "${kea_admin}" db-version pgsql -u "${db_user}" -p "${db_password}" -n "${db_name}"
     version="${OUTPUT}"
-    assert_str_eq "21.0" "${version}" "Expected kea-admin to return %s, returned value was %s"
+    assert_str_eq "22.0" "${version}" "Expected kea-admin to return %s, returned value was %s"
 
     # Let's wipe the whole database
     pgsql_wipe
@@ -927,7 +927,7 @@ pgsql_upgrade_test() {
 
     # Verify upgraded schema reports the latest version.
     version=$("${kea_admin}" db-version pgsql -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}")
-    assert_str_eq "21.0" "${version}" 'Expected kea-admin to return %s, returned value was %s'
+    assert_str_eq "22.0" "${version}" 'Expected kea-admin to return %s, returned value was %s'
 
     # Check 1.0 to 2.0 upgrade
     pgsql_upgrade_1_0_to_2_0_test
@@ -2101,7 +2101,7 @@ insert into ipv6_reservations (address, prefix_len, type, dhcp6_iaid, host_id) \
 # that reservation_mode values in subnet and shared network tables are
 # converted to new reservations flags.
 pgsql_ddns_conflict_resolution_mode_update_test() {
-    test_start "pgsql_ddns_conflict_resolution_mode_update_test"
+    test_start "pgsql.ddns_conflict_resolution_mode_update_test"
 
     # Let's wipe the whole database
     pgsql_wipe
@@ -2164,6 +2164,81 @@ pgsql_ddns_conflict_resolution_mode_update_test() {
     test_finish 0
 }
 
+# Verifies that deprecated dhcp-ddns global map parameters are removed.
+pgsql_dhcp_ddns_global_parameters_test() {
+    test_start "pgsql.dhcp_ddns_global_parameters_test"
+
+    # Let's wipe the whole database
+    pgsql_wipe
+
+    # We need to create an older database with lease data so we can
+    # verify the upgrade mechanisms which prepopulate the lease stat
+    # tables.
+    #
+    # Initialize database to schema 1.0.
+    pgsql_execute_script "@abs_top_srcdir@/src/bin/admin/tests/dhcpdb_create_1.0.pgsql"
+    assert_eq 0 "${EXIT_CODE}" "cannot initialize 1.0 database, expected exit code: %d, actual: %d"
+
+    # Now upgrade to schema 21.0
+    pgsql_upgrade_schema_to_version 21.0
+
+    # Now insert global parameter instances of dhcp-ddns.
+    sql=\
+"select set_config('kea.disable_audit', 'true', false);\
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.generated-prefix', 'my-host', current_timestamp,4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.qualifying-suffix', '', current_timestamp,4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-no-update', 'true', current_timestamp,2);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-client-update', 'true', current_timestamp,2);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.replace-client-name', 'never', current_timestamp,4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-replacement', '', current_timestamp,4);
+ insert into dhcp4_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-set', '[^A-Za-z0-9.-]', current_timestamp,4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.generated-prefix', 'my-host', current_timestamp,4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.qualifying-suffix', '', current_timestamp,4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-no-update', 'true', current_timestamp,2);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.override-client-update', 'true', current_timestamp,2);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.replace-client-name', 'never', current_timestamp,4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-replacement', '', current_timestamp,4);
+ insert into dhcp6_global_parameter (name,value, modification_ts,parameter_type)\
+    values ('dhcp-ddns.hostname-char-set', '[^A-Za-z0-9.-]', current_timestamp,4);"
+
+    run_statement "insert dhcp-ddns map parameters" "$sql"
+
+    # Verify the inserted record counts.
+    qry="select count(*) from dhcp4_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 4_global parameter count before update" "$qry" 7
+
+    qry="select count(*) from dhcp6_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 6_global parameter count before update" "$qry" 7
+
+    # Upgrade to schema 22.0
+    pgsql_upgrade_schema_to_version 22.0
+
+    # Verify the record have been removed.
+    qry="select count(*) from dhcp4_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 4_global parameter count before update" "$qry" 0
+
+    qry="select count(*) from dhcp6_global_parameter where name like '%dhcp-ddns%';"
+    run_statement "#get 6_global parameter count before update" "$qry" 0
+
+    # Let's wipe the whole database
+    pgsql_wipe
+
+    test_finish 0
+}
+
 # Run tests.
 pgsql_db_init_test
 pgsql_db_version_test
@@ -2184,3 +2259,4 @@ pgsql_unused_subnet_id_test
 pgsql_update_empty_duid_test
 pgsql_update_v6_addresses_to_binary
 pgsql_ddns_conflict_resolution_mode_update_test
+pgsql_dhcp_ddns_global_parameters_test
index 68e4b6c9f54ad522da96a217b485e1ba1a4b86ef..4befec409d6ceb7a270e2b01ef8b0c99277b7f1f 100644 (file)
@@ -1,6 +1,6 @@
-#line 1 "dhcp4_lexer.cc"
+#line 2 "dhcp4_lexer.cc"
 
-#line 3 "dhcp4_lexer.cc"
+#line 4 "dhcp4_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 235
-#define YY_END_OF_BUFFER 236
+#define YY_NUM_RULES 230
+#define YY_END_OF_BUFFER 231
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,269 +700,259 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[2373] =
+static const flex_int16_t yy_accept[2291] =
     {   0,
-      228,  228,    0,    0,    0,    0,    0,    0,    0,    0,
-      236,  234,   10,   11,  234,    1,  228,  225,  228,  228,
-      234,  227,  226,  234,  234,  234,  234,  234,  221,  222,
-      234,  234,  234,  223,  224,    5,    5,    5,  234,  234,
-      234,   10,   11,    0,    0,  216,    0,    0,    0,    0,
+      223,  223,    0,    0,    0,    0,    0,    0,    0,    0,
+      231,  229,   10,   11,  229,    1,  223,  220,  223,  223,
+      229,  222,  221,  229,  229,  229,  229,  229,  216,  217,
+      229,  229,  229,  218,  219,    5,    5,    5,  229,  229,
+      229,   10,   11,    0,    0,  211,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,
-      228,  228,    0,  227,  228,    3,    2,    6,    0,  228,
+      223,  223,    0,  222,  223,    3,    2,    6,    0,  223,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
 
-        0,  217,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  219,    0,    0,    0,
+        0,  212,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  214,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    2,    0,
+        0,    0,    0,    0,    0,    0,    8,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  218,  220,    0,    0,    0,    0,    0,    0,
+      213,  215,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  102,    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,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  228,
+      226,    0,  225,  224,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  184,    0,  183,    0,    0,  108,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  233,  231,    0,  230,  229,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  189,
-        0,  188,    0,    0,  108,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    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,    0,   18,    0,
+        0,  105,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   18,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   19,    0,    0,    0,    0,    0,  232,  229,    0,
-        0,    0,    0,    0,    0,    0,  190,    0,    0,  192,
+        0,   19,    0,    0,    0,    0,    0,  227,  224,    0,
+        0,    0,    0,    0,    0,    0,  185,    0,    0,  187,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,  112,    0,    0,    0,    0,    0,
-
         0,   92,    0,    0,    0,    0,    0,    0,  136,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   41,    0,    0,    0,    0,    0,    0,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   91,    0,    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,   96,    0,    0,   42,
+        0,    0,    0,    0,   96,    0,    0,   42,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      132,    0,    0,   35,    0,    0,   39,    0,    0,    0,
 
-        0,    0,    0,    0,  132,    0,    0,   35,    0,    0,
-       39,    0,    0,    0,    0,    0,    0,    0,    0,   12,
-      194,  193,    0,    0,    0,    0,    0,  146,    0,    0,
+        0,    0,    0,    0,    0,   12,  189,  188,    0,    0,
+        0,    0,    0,  146,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  124,    0,    0,    0,
+        0,    0,  124,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   37,    0,    0,    0,
+        0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+       95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  142,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   95,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  147,    0,    0,
+        0,    7,    0,    0,  190,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  142,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    7,
-        0,    0,  195,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  107,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  107,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  126,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  126,    0,    0,    0,
+        0,  122,    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,    0,    0,    0,    0,    0,    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,  100,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+       99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  140,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  140,    0,    0,    0,    0,
+        0,  152,  119,    0,    0,    0,    0,    0,    0,  125,
+       36,    0,    0,    0,    0,    0,    0,    0,   50,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  127,
+       43,   97,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  152,  119,    0,    0,    0,    0,
-        0,    0,  125,   36,    0,    0,    0,    0,    0,    0,
-        0,   50,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  127,   43,   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,   86,
+        0,    0,    0,   86,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  171,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  171,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  104,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  104,    0,    0,    0,    0,    0,    0,
+        0,  141,    0,    0,    0,    0,    0,    0,    0,    0,
+       59,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  141,    0,
-        0,    0,    0,    0,    0,    0,    0,   59,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   40,    0,    0,    0,
-        0,    0,   34,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   40,    0,
+        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,  128,    0,    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,   58,    0,    0,    0,  138,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    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,  101,    0,    0,    0,    0,    0,    0,    0,    0,
+      101,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   24,    0,    0,
+        0,    0,    0,   24,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  176,    0,    0,    0,  174,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-      177,    0,    0,    0,  175,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  199,    0,    0,
+        0,    0,  194,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,  139,    0,    0,    0,    0,
+        0,    0,    0,  143,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  123,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      139,    0,    0,    0,    0,    0,    0,    0,  143,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  123,    0,
+        0,    0,    0,  137,    0,    0,   23,    0,  148,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  137,
-        0,    0,   23,    0,  148,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  181,
-
-        0,   94,    0,    0,    0,    0,   89,    0,    0,    0,
-        0,    0,    0,    0,  151,    0,   38,    0,  170,    0,
+        0,    0,    0,  180,    0,   94,    0,    0,    0,    0,
+       89,    0,    0,    0,    0,    0,  151,    0,   38,  170,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   67,    0,    0,    0,    0,
+
         0,    0,    0,    0,  115,  116,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,   93,    0,    0,    0,    0,    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,  145,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  203,    0,    0,   90,  106,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       64,    0,    0,    0,    0,    0,    0,    0,  178,    0,
-        0,  176,    0,    0,  167,  166,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   22,    0,    0,    0,    0,
-        0,    0,    0,    0,  191,    0,    0,    0,    0,    0,
-      131,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  198,    0,    0,   90,  106,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   64,    0,    0,    0,
 
-      160,    0,    0,    0,  169,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  149,
-        0,   15,    0,    0,   44,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  180,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   46,   65,    0,    0,  144,
-        0,    0,    0,  135,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  177,    0,    0,  175,    0,    0,  167,
+      166,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       22,    0,    0,    0,    0,    0,    0,    0,    0,  186,
+        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       57,    0,   98,    0,    0,  197,    0,    0,    0,    0,
-        0,    0,  202,    0,  118,    0,    0,    0,  209,    0,
+        0,    0,    0,    0,    0,  160,    0,    0,    0,  169,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  149,    0,   15,    0,    0,   44,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  179,    0,
+        0,    0,    0,    0,    0,    0,   46,   65,    0,    0,
 
+      144,    0,    0,  135,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       57,    0,   98,    0,    0,  192,    0,    0,    0,    0,
+        0,    0,  197,    0,  118,    0,    0,    0,  204,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    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,    0,    0,    0,    0,    0,  133,    0,    0,
-        0,   47,    0,    0,    0,    0,    0,    0,  205,    0,
-        0,  129,   31,    0,    0,    0,  165,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,  200,    0,  173,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   29,    0,    0,    0,    0,    0,
-       28,    0,    0,  179,    0,    0,    0,   56,    0,    0,
-        0,  214,    0,    0,  121,  120,    0,    0,    0,    0,
+        0,   14,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  133,    0,    0,    0,   47,    0,    0,    0,
+        0,    0,    0,  200,    0,    0,  129,   31,    0,    0,
+        0,  165,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  195,    0,  173,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
+        0,    0,    0,    0,   28,    0,    0,  178,    0,    0,
+        0,   56,    0,    0,    0,  209,    0,    0,  121,  120,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,   61,    0,    0,    0,    0,    0,
         0,  117,    0,    0,    0,   45,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  150,    0,    0,
-
-        0,   30,    0,    0,    0,    0,    0,  201,    0,    0,
-        0,    0,    0,  161,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   21,    0,    0,  204,    0,   88,    0,    0,   51,
-        0,    0,    0,    0,  198,    0,   81,    0,    0,  196,
-        0,   32,    0,    0,    0,    0,    0,    0,    0,    0,
-       85,    0,    0,    0,    0,   17,    0,    0,    0,    0,
-        0,    0,  185,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  158,    0,    0,    0,  134,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
-
+        0,    0,    0,    0,    0,    0,  150,    0,    0,    0,
+       30,    0,    0,    0,    0,    0,  196,    0,    0,    0,
+        0,    0,  161,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   21,    0,    0,  199,
+        0,   88,    0,    0,   51,    0,    0,    0,    0,  193,
+        0,   81,    0,    0,  191,    0,   32,    0,    0,    0,
+        0,    0,    0,    0,    0,   85,    0,    0,    0,    0,
+
+       17,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  158,    0,    0,
+        0,  134,    0,    0,    0,    0,    0,    0,  103,    0,
         0,    0,    0,   54,    0,   52,    0,    0,    0,    0,
         0,   48,  163,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   72,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  186,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  181,
         0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  164,    0,  174,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      164,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  168,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  157,    0,
 
-       63,   62,   20,    0,  182,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   82,    0,  114,    0,    0,    0,    0,
+      168,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  157,    0,   63,   62,   20,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  156,    0,    0,    0,    0,    0,    0,   55,
-        0,   68,    0,   49,  184,    0,  109,    0,    0,    0,
-        0,    0,    0,    0,  215,    0,   87,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   78,    0,    0,
-        0,    0,    0,    0,   16,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   53,    0,
+        0,    0,    0,    0,    0,    0,   82,    0,  114,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  156,    0,    0,    0,    0,
+        0,    0,   55,   68,    0,   49,    0,  109,    0,    0,
+        0,    0,    0,    0,    0,  210,    0,   87,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   78,    0,
 
+        0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   53,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   76,    0,
-        0,    0,    0,    0,    0,    0,    0,  213,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  208,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   84,   33,    0,
+        0,    0,   77,    0,    0,    0,    0,  162,    0,    0,
+        0,    0,    0,    0,  202,  205,    0,  130,  110,    0,
+        0,    0,    0,    0,    0,    0,   83,    0,    0,   73,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   84,   33,
-        0,    0,    0,   77,    0,    0,    0,    0,  162,    0,
-        0,    0,    0,    0,    0,  207,  210,  183,    0,  130,
-      110,    0,    0,    0,    0,    0,    0,    0,   83,    0,
-        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  154,    0,    0,    0,    0,    0,    0,  159,
-        0,    0,   75,    0,   66,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  111,    0,    0,    0,    0,    0,    0,
-        0,    0,  153,    0,    0,  187,    0,  212,  208,    0,
+
+      154,    0,    0,    0,    0,    0,    0,  159,    0,    0,
+       75,    0,   66,    0,    0,    0,    0,    0,    0,    0,
+        0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
+      153,    0,    0,  182,    0,  207,  203,    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,   27,   25,    0,    0,    0,    0,   79,
-        0,    0,  113,    0,    0,   71,    0,   80,    0,    0,
-      211,    0,    0,    0,    0,    0,   70,    0,  155,   26,
-      206,    0
+        0,    0,    0,    0,    0,   74,    0,    0,    0,    0,
+        0,   27,   25,    0,    0,    0,    0,   79,    0,    0,
+      113,    0,    0,   71,    0,   80,    0,    0,  206,    0,
+        0,    0,    0,    0,   70,    0,  155,   26,  201,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -1009,554 +999,538 @@ static const YY_CHAR yy_meta[77] =
         1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[2381] =
+static const flex_int16_t yy_base[2299] =
     {   0,
         0,   75,   21,   28,   39,   47,   53,   61,   95,  103,
-     2822, 2823,   31, 2818,  151,    0,  216, 2823,  223,  230,
-       13,  237, 2823, 2798,  124,   17,    4,   34, 2823, 2823,
-       23,   43,   64, 2823, 2823, 2823,   56, 2806, 2756,    0,
-     2796,  106, 2813,    2,  274, 2823, 2752,   85,   90, 2758,
-       98,   77,  231,  235,   97,  200,  304,  229, 2750,  318,
-      218,   62,  219,  220,  214,  257, 2759,  298,  307,  342,
-      328,  229, 2742,   21,  347,  392,  327, 2761,  293,    0,
-      404,  420,  435,  452,  445, 2823,    0, 2823,  409,  460,
-      203,  228,  317,  260,  354,  343, 2823, 2758, 2802, 2823,
-
-      300, 2823,  474, 2789,  342,  254, 2755,  368,   17,  363,
-     2794,  366,  402,  418,  335, 2798,    0,  538,  439, 2737,
-     2734, 2738,  432, 2734,  299, 2742,  432, 2728, 2729, 2734,
-       76, 2744, 2727, 2736, 2726, 2735,  390,  438,   63, 2728,
-     2726,  428, 2777, 2781, 2724, 2717, 2773, 2710,  441, 2731,
-     2731, 2725,  243, 2718, 2716, 2717, 2709, 2714, 2708,  444,
-     2719,  395, 2704, 2703, 2717,  464, 2703,  434,  455, 2697,
-      508,  242,  447, 2718, 2715, 2716,  458, 2714, 2752, 2751,
-      475,  198, 2695,  472, 2696,  482, 2688, 2705, 2697, 2699,
-        0,  484,  490,  507,  500,  514,  518, 2695, 2823, 2743,
-
-      546,  552, 2689,  511,  545,  553,  557, 2746,  556, 2745,
-      550, 2744, 2823, 2823,  599,  393,  562, 2700, 2692, 2679,
-     2690, 2694, 2695, 2675, 2686, 2690, 2687, 2686,  465,  532,
-     2727, 2688, 2669, 2666, 2674, 2669, 2683, 2679, 2670, 2666,
-     2678, 2678, 2666, 2668, 2671, 2651, 2655, 2668, 2670, 2667,
-     2659, 2649, 2667, 2823, 2652, 2661,   82, 2702, 2645, 2654,
-     2699, 2643, 2653, 2656,  526, 2652, 2694, 2636, 2638, 2649,
-     2690,  575, 2632,   16, 2645, 2625, 2640,  570, 2630, 2636,
-      476, 2627, 2625, 2625, 2631, 2622, 2621, 2628, 2618, 2680,
-     2633, 2632, 2626,  538, 2633, 2628, 2620, 2610, 2625, 2611,
-
-     2623, 2618, 2622, 2603, 2619, 2605, 2611, 2618,  537,  533,
-     2606, 2603, 2602,  624, 2601, 2596, 2610,  591, 2609, 2655,
-     2611,  599, 2602, 2590,  592, 2823, 2823,  594, 2823, 2823,
-     2588,  572,  587,  600, 2639,  609, 2649,  600,  611, 2823,
-     2648, 2823, 2642,  654, 2823, 2601,  602, 2578, 2587, 2638,
-     2595, 2578, 2595, 2634, 2591, 2574, 2580, 2635, 2587, 2590,
-     2581, 2584, 2570, 2581, 2628, 2622, 2577, 2574,  516, 2580,
-     2623, 2555, 2616, 2566, 2561, 2555, 2557, 2560, 2610, 2564,
-     2553, 2569, 2606, 2549,  627, 2563, 2548, 2547, 2560, 2558,
-     2556, 2556, 2555, 2550, 2557, 2552, 2548,  591, 2546, 2549,
-
-     2544, 2530, 2542, 2538, 2591,  600,  618, 2585, 2823, 2529,
-     2545, 2582, 2529, 2528, 2527, 2520, 2522, 2534, 2525, 2532,
-     2513, 2530, 2525,  677, 2575, 2525, 2522, 2525, 2823, 2524,
-      285, 2514, 2526,  624, 2501, 2502, 2523, 2514, 2504, 2496,
-     2557, 2499, 2513,  634, 2499, 2511, 2510, 2509, 2505, 2503,
-     2548, 2505, 2504, 2503, 2502, 2485, 2493, 2546, 2502, 2482,
-     2543, 2823, 2482, 2481,  686, 2494, 2492, 2823, 2823, 2492,
-     2481, 2473,  635, 2530, 2534, 2533, 2823, 2532,  647, 2823,
-      659,  731, 2488,  647, 2530, 2469, 2480, 2522, 2472, 2474,
-     2476, 2463, 2471, 2459, 2823, 2464, 2457, 2469, 2472, 2459,
-
-     2458, 2823,  661, 2460, 2457,  644, 2455, 2457, 2823, 2505,
-     2464, 2461, 2446, 2460, 2458, 2458, 2452,  704, 2459, 2447,
-     2440, 2494, 2823, 2438, 2454, 2491, 2449, 2447, 2445, 2446,
-     2430, 2439, 2484, 2432, 2431, 2426, 2425, 2479, 2420,  669,
-     2439, 2413, 2420, 2425, 2435, 2472, 2476, 2823, 2418, 2414,
-      707, 2412, 2467, 2420, 2419, 2413, 2420, 2404, 2404, 2414,
-     2402, 2416, 2416, 2404, 2400, 2398, 2823, 2407, 2457, 2823,
-     2396, 2407, 2449, 2391, 2390, 2395, 2404, 2398, 2392, 2401,
-     2446, 2440, 2399, 2383, 2378, 2436, 2397, 2372, 2378,  632,
-     2392, 2385, 2389, 2372, 2433, 2427, 2370, 2370, 2424, 2366,
-
-     2367, 2366, 2364, 2381, 2823, 2377, 2417, 2823, 2365, 2363,
-     2823, 2374, 2413, 2412, 2369, 2353, 2370, 2413,  698, 2823,
-     2823, 2823,  692,  698,  694, 2350,  728, 2823, 2360, 2359,
-      674, 2366, 2346, 2356, 2401, 2343, 2399, 2341, 2351, 2396,
-     2338, 2345, 2338, 2340, 2349, 2331, 2331, 2346, 2345, 2329,
-      674, 2343, 2342, 2342, 2324, 2329, 2373, 2337, 2334, 2328,
-     2376, 2317, 2332, 2332, 2330, 2330, 2823, 2315, 2312, 2373,
-     2325, 2317, 2323, 2314, 2322, 2307, 2361, 2322, 2304, 2316,
-     2308,  590, 2299, 2298, 2292, 2297, 2312, 2309, 2310, 2289,
-     2299, 2305, 2351, 2303, 2295, 2286, 2823, 2287, 2289, 2284,
-
-     2297, 2289, 2288, 2293, 2335, 2334, 2282,  756, 2291, 2331,
-     2273, 2329, 2273, 2276, 2269, 2284, 2823, 2282, 2261, 2265,
-     2279, 2274, 2270, 2318, 2267, 2274, 2315, 2823, 2257, 2267,
-        8,   87,  255,  301,  398,  429,  420,  537,  610,  608,
-      688,  690, 2823,  670,  652,  683,  684,  746,  699,  702,
-      711,  697,  755,  719,  717,  702,  709,  713,  706, 2823,
-      722,  714, 2823,  734,  748,  754,  740,  761,  724,  722,
-      722,  731,  743,  737,  726,  722,  736,  737,  787,  750,
-      793,  750,  758,  791,  792,  750,  753,  754,  764,  769,
-      755,  758,  761,  770,  770,  754,  814,  764,  774,  777,
-
-      818,  778,  771,  775,  772,  774,  824,  825,  786,  833,
-      787,  789, 2823,  792,  787,  778,  793,  798,  795,  797,
-      799,  798,  786,  800,  798,  806,  845,  804,  852,  853,
-      800,  792,  802,  853,  809,  861, 2823,  862,  812,  814,
-      810,  804,  820,  808,  818,  870,  866,  826,  815,  828,
-     2823,  818,  819,  830,  819,  832,  822,  835,  882,  883,
-      884,  824,  835,  820,  843,  834,  823,  829,  887,  848,
-      832,  844,  891,  892,  836,  843,  895,  856,  851,  856,
-      854,  901,  840,  852,  855,  861,  862,  852,  849, 2823,
-      918,  872,  873,  861,  875,  865,  868,  879,  864,  871,
-
-      877,  878,  870,  884,  908,  900,  929,  930,  904,  877,
-      891,  896,  893,  875,  882,  896,  944,  898,  895,  896,
-      894,  903, 2823,  899,  894,  909,  906,  892,  894,  913,
-      909,  911,  900,  907,  909,  918,  961,  924,  963,  922,
-      912,  910,  909,  920,  916,  975,  919,  930,  915,  916,
-      922,  938,  934,  929,  979, 2823,  940,  940,  933,  944,
-      942,  990,  929,  931,  943,  951,  949,  936,  934,  999,
-      953,  939,  945,  943, 2823, 2823,  953,  958,  963,  951,
-      961,  963, 2823, 2823,  964,  951,  969,  956,  958,  951,
-      968, 2823,  957,  975,  962, 1015,  963,  965, 1019,  962,
-
-      966,  984, 1028, 2823, 2823, 2823,  970,  974,  973,  970,
-      986, 1034,  984,  974,  975,  971,  984,  995,  996,  991,
-     1038,  993,  995,  988,  990,  986,  992,  992,  994, 1009,
-      992, 1054, 1008, 1013,  990, 1011, 1014, 1000,  999, 2823,
-     1006, 1007, 1059, 1060, 1009, 1022, 1063, 1018, 1008, 1023,
-     1017, 1025, 1012, 1043, 1053, 1041, 1049, 1061, 1078, 1024,
-     1019, 1078, 1079, 1038, 1081, 2823, 1087, 1027, 1043, 1047,
-     1091, 1038, 1037, 1032, 1033, 1045, 1040, 1036, 1045, 1040,
-     1041, 1051, 1062, 1104, 1052, 1049, 1067, 1059, 1054, 1115,
-     1069, 1070, 1061, 2823, 1075, 1064, 1067, 1075, 1077, 1062,
-
-     1074, 1079, 1076, 1074, 1124, 1087, 1071, 1072, 2823, 1088,
-     1091, 1074, 1091, 1086, 1138, 1078, 1097, 2823, 1096, 1099,
-     1085, 1080, 1098, 1141, 1096, 1092, 1089, 1145, 1146, 1105,
-     1091, 1109, 1109, 1109, 1110, 1111, 1097, 1112, 1104, 1111,
-     1101, 1102, 1120, 1119, 1106, 1123, 2823, 1115, 1121, 1124,
-     1172, 1116, 2823, 1119, 1124, 1172, 1120, 1132, 1126, 1127,
-     1125, 1122, 1128, 1138, 1186, 1127, 1128, 1128, 1190, 1131,
-     1143, 1136, 2823, 1132, 1140, 1138, 1141, 1193, 1133, 1154,
-     1140, 1141, 1142, 1143, 1149, 1157, 1148, 1153, 1163, 1164,
-     1165, 1170, 1214, 1182, 1211, 1194, 1186, 1191, 2823, 1174,
-
-     1170, 1166, 1180, 1163, 1163, 2823, 1164, 1227, 1167, 2823,
-     1178, 1168, 1188, 1187, 1178, 1189, 1235, 1185, 1194, 1187,
-     1191, 1195, 1178, 1195, 1196, 1191, 1249, 1193, 2823, 1246,
-     1190, 1193, 1211, 1193, 1194, 1194, 1215, 1212, 1200, 1218,
-     1206, 1220, 1206, 1214, 1223, 1203, 1218, 1225, 1270, 1213,
-     1267, 2823, 1273, 1274, 1213, 1223, 1233, 1217, 1237, 1225,
-     1221, 1228, 1237, 1225, 1232, 1233, 1245, 1289, 1233, 1291,
-     1232, 1231, 1235, 1252, 1296, 1243, 1242, 1248, 1249, 1247,
-     1245, 1240, 1304, 1252, 1306, 1302, 1308, 2823, 1246, 1263,
-     1256, 1247, 1266, 1254, 1264, 1265, 1261, 1256, 1275, 1275,
-
-     2823, 1260, 1256, 1262, 2823, 1263, 1326, 1282, 1263, 1282,
-     1283, 1269, 1286, 1328, 1278, 1335, 1336, 1286, 1291, 1285,
-     1283, 1294, 1293, 1277, 1282, 1288, 1301, 2823, 1315, 1328,
-     1316, 1330, 1317, 1352, 1289, 1311, 1306, 1306, 1310, 1358,
-     2823, 1298, 1298, 1301, 1318, 1313, 1317, 1312, 2823, 1321,
-     1305, 1322, 1302, 1323, 1313, 1312, 1368, 1319, 2823, 1336,
-     1336, 1377, 1321, 1330, 1380, 1335, 1340, 1326, 1389, 1329,
-     1330, 1344, 1342, 1334, 1340, 1336, 1354, 1355, 1356, 2823,
-     1395, 1347, 2823, 1357, 2823, 1342, 1353, 1344, 1363, 1356,
-     1354, 1347, 1359, 1406, 1367, 1356, 1363, 1364, 1370, 2823,
-
-     1363, 2823, 1418, 1368, 1357, 1421, 2823, 1422, 1361, 1367,
-     1368, 1375, 1422, 1381, 2823, 1382, 2823, 1369, 2823, 1369,
-     1372, 1386, 1391, 1374, 1436, 1390, 1391, 1434, 1397, 1384,
-     1389, 1443, 1439, 1389, 1446, 2823, 1394, 1391, 1449, 1450,
-     1446, 1405, 1406, 1408, 2823, 2823, 1400, 1395, 1452, 1398,
-     1414, 1460, 1399, 1411, 1400, 1417, 1460, 1443, 1444, 1436,
-     1469, 2823, 1423, 1416, 1425, 1416, 1427, 2823, 1475, 1409,
-     1420, 1435, 1474, 1423, 1434, 1420, 1436, 1437, 1434, 1481,
-     1441, 1443, 1432, 1442, 1448, 1435, 1434, 1498, 1494, 1449,
-     1496, 1502, 1456, 2823, 1442, 1458, 1449, 1452, 1461, 1462,
-
-     1459, 1449, 1452, 1452, 1453, 1464, 1459, 1517, 1461, 1519,
-     1459, 1464, 1523, 1519, 1457, 1472, 1465, 1468, 1481, 1482,
-     1480, 1532, 2823, 1478, 1484, 2823, 2823, 1489, 1481, 1482,
-     1492, 1477, 1536, 1480, 1480, 1544, 1545, 1486, 1496, 1548,
-     2823, 1493, 1494, 1496, 1552, 1493, 1491, 1494, 2823, 1511,
-     1516, 2823, 1513, 1501, 2823, 2823, 1505, 1515, 1498, 1518,
-     1519, 1505, 1507, 1569, 1516, 2823, 1571, 1517, 1511, 1574,
-     1539, 1557, 1572, 1559, 2823, 1578, 1534, 1582, 1529, 1579,
-     2823, 1524, 1586, 1533, 1527, 1524, 1527, 1529, 1587, 1547,
-     1589, 1539, 1551, 1554, 1551, 1543, 1546, 1541, 1549, 1540,
-
-     2823, 1548, 1563, 1548, 2823, 1550, 1607, 1552, 1609, 1568,
-     1568, 1571, 1571, 1568, 1615, 1574, 1575, 1567, 1568, 2823,
-     1569, 2823, 1579, 1571, 2823, 1577, 1583, 1584, 1581, 1628,
-     1573, 1588, 1589, 1581, 2823, 1591, 1579, 1580, 1580, 1581,
-     1587, 1586, 1584, 1641, 1599, 2823, 2823, 1643, 1587, 2823,
-     1588, 1589, 1595, 2823, 1604, 1592, 1600, 1657, 1602, 1594,
-     1607, 1601, 1611, 1607, 1623, 1616, 1622, 1612, 1670, 1620,
-     2823, 1629, 2823, 1626, 1674, 2823, 1624, 1652, 1653, 1659,
-     1644, 1652, 2823, 1681, 2823, 1636, 1621, 1684, 2823, 1685,
-     1639, 1644, 1626, 1689, 1630, 1686, 1650, 1643, 1639, 1632,
-
-     1640, 1692, 1647, 1648, 1638, 1643, 1655, 1709, 1660, 1711,
-     1658, 1708, 1669, 1669, 1665, 1712, 1657, 1662, 1660, 1722,
-     1663, 1671, 1677, 1665, 1727, 1723, 1683, 1730, 1688, 1677,
-     1671, 1734, 1673, 1674, 1688, 1738, 1692, 1692, 1741, 1742,
-     1681, 1698, 1694, 1692, 1699, 1683, 1744, 1745, 1746, 1706,
-     1699, 1698, 1698, 1693, 1694, 1712, 2823, 1703, 1709, 1714,
-     1701, 1702, 1702, 1702, 1704, 1762, 1705, 2823, 1701, 1719,
-     1771, 2823, 1726, 1740, 1754, 1753, 1742, 1744, 2823, 1778,
-     1728, 2823, 2823, 1719, 1730, 1782, 2823, 1737, 1727, 1732,
-     1730, 1783, 1738, 1743, 1729, 1732, 1748, 1737, 1735, 1749,
-
-     1736, 2823, 1738, 2823, 1756, 1743, 1755, 1802, 1742, 1747,
-     1810, 1755, 1765, 1766, 2823, 1814, 1751, 1811, 1766, 1813,
-     2823, 1761, 1820, 2823, 1760, 1775, 1763, 2823, 1773, 1774,
-     1826, 2823, 1781, 1785, 2823, 2823, 1824, 1787, 1763, 1781,
-     1782, 1791, 1773, 1780, 1792, 1791, 1782, 1835, 1784, 1780,
-     1785, 1844, 1783, 1784, 1847, 1843, 1849, 1799, 1797, 1852,
-     1802, 1792, 1808, 1801, 2823, 1857, 1835, 1859, 1841, 1856,
-     1862, 2823, 1808, 1864, 1803, 2823, 1805, 1807, 1817, 1864,
-     1809, 1824, 1811, 1873, 1827, 1813, 1820, 1820, 1878, 1832,
-     1833, 1820, 1822, 1836, 1822, 1887, 1837, 2823, 1884, 1832,
-
-     1829, 2823, 1845, 1832, 1845, 1832, 1853, 2823, 1850, 1898,
-     1848, 1845, 1846, 2823, 1902, 1858, 1841, 1843, 1859, 1852,
-     1842, 1858, 1859, 1868, 1858, 1913, 1870, 1854, 1863, 1912,
-     1918, 2823, 1868, 1920, 2823, 1866, 2823, 1865, 1861, 2823,
-     1868, 1925, 1927, 1923, 2823, 1924, 2823, 1906, 1912, 2823,
-     1884, 2823, 1928, 1877, 1888, 1889, 1874, 1875, 1883, 1940,
-     2823, 1885, 1937, 1938, 1890, 2823, 1885, 1903, 1885, 1891,
-     1904, 1899, 2823, 1896, 1901, 1899, 1954, 1895, 1909, 1959,
-     1904, 1901, 1901, 2823, 1916, 1917, 1918, 2823, 1919, 1909,
-     1921, 1969, 1919, 1971, 1910, 1918, 1919, 1932, 2823, 1933,
-
-     1914, 1915, 1922, 2823, 1924, 2823, 1938, 1935, 1927, 1979,
-     1937, 2823, 2823, 1941, 1967, 1968, 1966, 1929, 1929, 1938,
-     1945, 1938, 1937, 1948, 1935, 2823, 1951, 1939, 1942, 2001,
-     1938, 1957, 1999, 1960, 1953, 1952, 1961, 1963, 1967, 2823,
-     2006, 1958, 2823, 1964, 1956, 2018, 1958, 2020, 2021, 2022,
-     1977, 2024, 2823, 1963, 2823, 2021, 1980, 1981, 1968, 1976,
-     1987, 1974, 1985, 1971, 1969, 1977, 1976, 1977, 1983, 1974,
-     2019, 2043, 2025, 2045, 1995, 1984, 1997, 1987, 2004, 2003,
-     2047, 1988, 2007, 2008, 2823, 2013, 2006, 2048, 2012, 1999,
-     2014, 2062, 2016, 2019, 2014, 2019, 2008, 2017, 2823, 2071,
-
-     2823, 2823, 2823, 2029, 2823, 2073, 2012, 2075, 2076, 2016,
-     2078, 2023, 2075, 2076, 2035, 2078, 2021, 2025, 2086, 2044,
-     2088, 2044, 2071, 2823, 2067, 2823, 2037, 2031, 2028, 2090,
-     2053, 2046, 2042, 2099, 2039, 2041, 2040, 2047, 2093, 2044,
-     2106, 2047, 2823, 2052, 2062, 2064, 2066, 2049, 2057, 2823,
-     2052, 2823, 2064, 2823, 2823, 2070, 2823, 2072, 2072, 2063,
-     2122, 2063, 2073, 2058, 2823, 2071, 2823, 2073, 2104, 2110,
-     2082, 2080, 2132, 2070, 2072, 2069, 2093, 2823, 2080, 2087,
-     2088, 2091, 2141, 2081, 2823, 2138, 2082, 2090, 2099, 2085,
-     2101, 2100, 2103, 2096, 2091, 2091, 2103, 2100, 2823, 2111,
-
-     2099, 2155, 2103, 2115, 2143, 2164, 2165, 2109, 2823, 2109,
-     2121, 2169, 2115, 2117, 2115, 2116, 2174, 2823, 2124, 2111,
-     2126, 2131, 2123, 2129, 2181, 2182, 2183, 2137, 2185, 2186,
-     2127, 2131, 2128, 2144, 2127, 2139, 2133, 2195, 2823, 2823,
-     2140, 2151, 2198, 2823, 2152, 2137, 2155, 2146, 2823, 2147,
-     2161, 2157, 2150, 2145, 2151, 2823, 2823, 2823, 2209, 2823,
-     2823, 2149, 2157, 2152, 2208, 2171, 2168, 2216, 2823, 2212,
-     2175, 2823, 2219, 2158, 2221, 2161, 2174, 2173, 2174, 2164,
-     2176, 2172, 2823, 2167, 2230, 2180, 2189, 2182, 2229, 2823,
-     2180, 2174, 2823, 2186, 2823, 2233, 2239, 2178, 2194, 2242,
-
-     2195, 2244, 2245, 2823, 2199, 2193, 2186, 2206, 2193, 2205,
-     2196, 2200, 2823, 2250, 2196, 2823, 2206, 2823, 2823, 2197,
-     2205, 2255, 2212, 2205, 2217, 2264, 2209, 2209, 2205, 2207,
-     2222, 2270, 2271, 2210, 2226, 2211, 2228, 2823, 2276, 2220,
-     2227, 2279, 2220, 2823, 2823, 2230, 2282, 2227, 2284, 2823,
-     2232, 2231, 2823, 2287, 2233, 2823, 2227, 2823, 2227, 2244,
-     2823, 2245, 2293, 2236, 2295, 2296, 2823, 2297, 2823, 2823,
-     2823, 2823, 2303, 2306, 2309, 2310, 2312, 2315, 2318, 2321
+     2740, 2741,   31, 2736,  151,    0,  216, 2741,  223,  230,
+       13,  237, 2741, 2716,  124,   17,    4,   34, 2741, 2741,
+       23,   43,   64, 2741, 2741, 2741,   56, 2724, 2674,    0,
+     2714,  106, 2731,    2,  274, 2741, 2670,   85,   90, 2676,
+       98,   77,  231,  235,   97,  200,  304,  229, 2668,  318,
+      218,   62,  219, 2670,  202,  257, 2676,  298,  307,  342,
+      242,  229, 2659,   21,  333,  383,  342, 2678,  293,    0,
+      397,  411,  426,  443,  451, 2741,    0, 2741,  457,  465,
+      203,  228,  323,  247,  260,  347, 2741, 2675, 2719, 2741,
+
+      342, 2741,  439, 2706,  348,  232, 2672,  324,   17,  362,
+     2711,  282,  377,  343,  250, 2715,    0,  503,  391, 2654,
+     2651, 2655,  426, 2651,  428, 2659,  369, 2645, 2646, 2651,
+       76, 2661, 2644, 2653, 2643, 2652,  446,  447,   63, 2644,
+      424, 2695, 2699, 2642, 2635, 2691, 2628,  414, 2649, 2649,
+     2643,  338, 2636, 2634, 2635, 2627, 2632, 2626,  462, 2637,
+      442, 2622, 2621,  471, 2622,  447, 2634, 2615,  512,  386,
+      474, 2636, 2633, 2634,  484, 2632, 2670, 2669,  452,  439,
+     2613,  472, 2614,  506, 2606, 2623, 2615, 2617,    0,  497,
+      491,  472,  508,  516,  516, 2613, 2741, 2661,  522,  533,
+
+     2607,  521,  516,  533,  540, 2664,  539, 2663,  533, 2662,
+     2741, 2741,  582,  359,  545, 2618, 2610, 2597, 2608, 2612,
+     2613, 2593, 2604, 2608, 2605, 2604,  521,  519, 2645, 2606,
+     2587, 2584, 2592, 2587, 2601, 2597, 2588, 2584, 2596, 2596,
+     2584, 2586, 2589, 2569, 2573, 2589, 2586, 2578, 2568, 2586,
+     2741, 2571, 2580,   82, 2621, 2564, 2573, 2618, 2562, 2572,
+     2575,  572, 2571, 2613, 2555, 2557, 2568, 2609,  562, 2551,
+       16, 2564, 2544, 2559,  579, 2556,  544, 2547, 2545, 2545,
+     2551, 2542, 2541, 2539, 2601, 2554, 2553, 2547,  541, 2554,
+     2549, 2532, 2547, 2533, 2545, 2540, 2544, 2525, 2541, 2527,
+
+     2533, 2540,  544,  550, 2528, 2525, 2524,  607, 2523, 2518,
+     2532,  592, 2531, 2577, 2533,  591, 2524, 2512,  593, 2741,
+     2741,  594, 2741, 2741, 2510,  560,  578,  591, 2561,  599,
+     2571,  587,  599, 2741, 2570, 2741, 2564,  646, 2741, 2523,
+      581, 2500, 2509, 2560, 2517, 2500, 2517, 2556, 2513, 2496,
+     2502, 2557, 2509, 2512, 2503, 2506, 2492, 2503, 2550, 2544,
+     2499, 2496,  627, 2502, 2545, 2477, 2538, 2488, 2483, 2477,
+     2479, 2482, 2532, 2486, 2492, 2529, 2472,  669, 2486, 2471,
+     2470, 2483, 2481, 2479, 2479, 2478, 2473, 2480, 2475, 2471,
+      611, 2469, 2472, 2467, 2453, 2465, 2461, 2514,  576,  600,
+
+     2508, 2741, 2452, 2468, 2505, 2452, 2451, 2450, 2443, 2458,
+     2449, 2456, 2437, 2454, 2449,  672, 2499, 2449, 2450, 2741,
+     2449,  630, 2439, 2451,  620, 2426, 2427, 2440, 2430, 2422,
+     2483, 2425, 2439,  631, 2425, 2437, 2436, 2435, 2431, 2429,
+     2474, 2431, 2430, 2429, 2428, 2411, 2419, 2472, 2428, 2408,
+     2469, 2741, 2408, 2407,  679, 2420, 2418, 2741, 2741, 2418,
+     2407, 2399,  620, 2456, 2460, 2459, 2741, 2458,  638, 2741,
+      658,  726, 2414,  641, 2456, 2395, 2406, 2448, 2398, 2400,
+     2402, 2389, 2397, 2385, 2741, 2390, 2383, 2395, 2398, 2385,
+     2384, 2741,  650, 2386, 2383,  637, 2381, 2383, 2741, 2431,
+
+     2390, 2387, 2372, 2386, 2384, 2384, 2378,  700, 2374, 2367,
+     2421, 2741, 2365, 2381, 2418, 2376, 2374, 2372, 2373, 2357,
+     2366, 2411, 2359, 2358, 2353, 2352, 2406, 2347,  661, 2366,
+     2340, 2347, 2352, 2362, 2399, 2403, 2741, 2345, 2341,  701,
+     2339, 2394, 2347, 2346, 2340, 2347, 2331, 2331, 2330, 2344,
+     2344, 2332, 2328, 2326, 2741, 2335, 2385, 2741, 2324, 2378,
+     2320, 2319, 2324, 2333, 2327, 2321, 2330, 2375, 2369, 2313,
+     2308, 2366, 2327, 2302, 2308,  637, 2322, 2315, 2319, 2302,
+     2363, 2357, 2300, 2300, 2354, 2296, 2297, 2296, 2294, 2311,
+     2741, 2307, 2347, 2741, 2295, 2293, 2741, 2304, 2343, 2342,
+
+     2299, 2283, 2300, 2343,  703, 2741, 2741, 2741,  684,  675,
+      689, 2280,  717, 2741, 2290, 2289,  588, 2296, 2276, 2286,
+     2331, 2273, 2329, 2271, 2281, 2326, 2268, 2275, 2268, 2270,
+     2279, 2261, 2261, 2276, 2275, 2259,  665, 2273, 2272, 2272,
+     2254, 2259, 2303, 2267, 2264, 2258, 2306, 2247, 2262, 2262,
+     2260, 2260, 2741, 2245, 2304, 2256, 2248, 2254, 2245, 2253,
+     2238, 2292, 2253, 2235, 2247, 2239,  616, 2230, 2229, 2223,
+     2228, 2243, 2240, 2241, 2220, 2230, 2236, 2282, 2234, 2226,
+     2217, 2741, 2218, 2220, 2215, 2228, 2220, 2219, 2224, 2266,
+     2265, 2213,  751, 2263, 2205, 2261, 2205, 2208, 2201, 2216,
+
+     2741, 2214, 2198, 2212, 2207, 2203, 2251, 2200, 2207, 2248,
+     2741, 2190, 2204, 2207, 2192, 2187, 2242, 2241, 2185, 2239,
+     2196, 2180, 2236, 2235, 2741, 2196, 2176, 2190, 2185,  731,
+       10,   85,  228,  247,  342,  313,  330,  331,  355,  394,
+      480, 2741,  668,  663, 2741,  691,  703,  714,  719,  732,
+      664,  680,  693,  704,  716,  710,  699,  695,  709,  710,
+      760,  731,  766,  731,  732,  778,  779,  730,  730,  731,
+      741,  746,  732,  735,  738,  748,  748,  732,  792,  742,
+      752,  755,  796,  756,  749,  753,  750,  752,  802,  803,
+      764,  811,  765, 2741,  769,  764,  755,  770,  775,  772,
+
+      774,  776,  775,  763,  777,  775,  783,  822,  781,  829,
+      830,  777,  769,  779,  830,  786,  838, 2741,  839,  789,
+      791,  787,  781,  797,  785,  795,  847,  843,  803,  792,
+      805, 2741,  795,  796,  795,  808,  798,  811,  858,  859,
+      860,  800,  795,  818,  809,  798,  804,  862,  823,  807,
+      819,  866,  810,  817,  869,  830,  825,  830,  828,  875,
+      814,  826,  829,  835,  836,  826,  823, 2741,  892,  846,
+      847,  835,  849,  839,  842,  853,  838,  845,  851,  852,
+      844,  858,  882,  874,  903,  904,  878,  851,  865,  870,
+      867,  849,  856,  870,  918,  872,  869,  870,  868,  877,
+
+     2741,  873,  868,  883,  880,  866,  868,  887,  883,  885,
+      874,  881,  883,  892,  935,  898,  937,  896,  886,  884,
+      883,  894,  890,  949,  893,  904,  889,  890,  896,  912,
+      908,  903,  953, 2741,  914,  906,  917,  915,  963,  902,
+      904,  916,  924,  922,  909,  907,  972,  926,  912,  918,
+      916, 2741, 2741,  926,  931,  936,  924,  934,  936, 2741,
+     2741,  937,  924,  942,  929,  931,  924,  941, 2741,  930,
+      948,  935,  988,  936,  938,  934,  938,  956, 1000, 2741,
+     2741, 2741,  942,  944,  941,  957, 1005,  955,  945,  946,
+      942,  955,  966,  961, 1008,  963,  965,  958,  960,  956,
+
+      962,  962,  964,  979,  962, 1024,  978,  983,  960,  981,
+      984,  970,  969, 2741,  976,  977, 1029, 1030,  979,  992,
+     1033,  988,  978,  993,  987,  995,  982, 1013, 1023, 1011,
+     1019, 1031, 1048,  994,  989, 1048, 1049, 1008, 1051, 2741,
+     1057,  997, 1013, 1017, 1061, 1008, 1007, 1002, 1003, 1015,
+     1010, 1006, 1015, 1010, 1011, 1021, 1032, 1074, 1022, 1019,
+     1037, 1029, 1024, 1085, 1039, 1040, 1031, 2741, 1045, 1034,
+     1037, 1045, 1047, 1032, 1044, 1049, 1046, 1044, 1056, 1040,
+     1041, 2741, 1057, 1060, 1043, 1060, 1055, 1107, 1047, 1066,
+     2741, 1065, 1068, 1054, 1049, 1067, 1110, 1065, 1061, 1058,
+
+     1114, 1115, 1074, 1060, 1078, 1078, 1078, 1079, 1080, 1066,
+     1081, 1073, 1080, 1070, 1071, 1087, 1074, 1091, 2741, 1083,
+     1091, 1139, 1083, 2741, 1086, 1091, 1138, 1086, 1098, 1092,
+     1090, 1087, 1093, 1103, 1151, 1092, 1093, 1093, 1155, 1096,
+     1108, 1101, 2741, 1097, 1105, 1103, 1106, 1158, 1097, 1118,
+     1104, 1105, 1107, 1108, 1114, 1122, 1113, 1118, 1128, 1129,
+     1130, 1135, 1179, 1147, 1176, 1159, 1151, 1156, 2741, 1139,
+     1135, 1131, 1145, 1128, 1128, 2741, 1129, 1192, 1132, 2741,
+     1143, 1133, 1153, 1152, 1143, 1154, 1200, 1150, 1159, 1152,
+     1156, 1160, 1143, 1160, 1161, 1156, 1214, 1158, 2741, 1211,
+
+     1155, 1158, 1176, 1158, 1159, 1159, 1180, 1177, 1165, 1183,
+     1171, 1185, 1178, 1187, 1167, 1182, 1189, 1234, 1177, 1231,
+     2741, 1237, 1238, 1177, 1187, 1197, 1181, 1201, 1189, 1185,
+     1192, 1201, 1189, 1196, 1197, 1209, 1253, 1197, 1255, 1196,
+     1195, 1199, 1216, 1260, 1207, 1206, 1212, 1213, 1202, 1266,
+     1214, 1268, 1269, 2741, 1207, 1224, 1217, 1208, 1227, 1215,
+     1225, 1221, 1216, 1235, 1235, 2741, 1219, 1215, 1221, 2741,
+     1222, 1286, 1242, 1223, 1242, 1243, 1229, 1246, 1288, 1238,
+     1295, 1296, 1246, 1251, 1245, 1243, 1254, 1253, 1237, 1242,
+     1248, 1261, 2741, 1275, 1288, 1276, 1290, 1277, 1312, 1249,
+
+     1271, 1266, 1266, 1270, 1318, 2741, 1258, 1258, 1261, 1278,
+     1273, 1277, 1272, 2741, 1281, 1265, 1282, 1262, 1283, 1273,
+     1272, 1328, 1279, 2741, 1296, 1296, 1337, 1281, 1290, 1340,
+     1295, 1300, 1286, 1349, 1289, 1290, 1304, 1302, 1299, 1295,
+     1313, 1314, 1315, 2741, 1354, 1306, 2741, 1316, 2741, 1301,
+     1312, 1303, 1322, 1315, 1313, 1306, 1318, 1365, 1326, 1315,
+     1322, 1323, 1329, 2741, 1322, 2741, 1377, 1327, 1316, 1380,
+     2741, 1381, 1320, 1326, 1327, 1338, 2741, 1339, 2741, 2741,
+     1325, 1328, 1342, 1347, 1330, 1392, 1346, 1389, 1352, 1339,
+     1344, 1398, 1394, 1344, 1401, 2741, 1349, 1346, 1404, 1405,
+
+     1401, 1360, 1361, 1363, 2741, 2741, 1355, 1350, 1407, 1353,
+     1369, 1415, 1354, 1366, 1355, 1372, 1415, 1398, 1399, 1391,
+     1424, 2741, 1378, 1371, 1380, 1371, 1382, 2741, 1430, 1364,
+     1375, 1390, 1429, 1378, 1389, 1375, 1391, 1392, 1389, 1436,
+     1396, 1398, 1387, 1397, 1403, 1390, 1389, 1453, 1449, 1404,
+     1451, 1457, 1411, 2741, 1397, 1413, 1404, 1407, 1416, 1413,
+     1403, 1406, 1406, 1407, 1418, 1413, 1471, 1415, 1473, 1413,
+     1418, 1476, 1473, 1411, 1426, 1419, 1422, 1435, 1436, 1434,
+     1486, 2741, 1432, 1438, 2741, 2741, 1443, 1435, 1436, 1488,
+     1432, 1495, 1496, 1437, 1447, 1499, 2741, 1444, 1446, 1502,
+
+     1443, 1441, 1444, 2741, 1461, 1466, 2741, 1463, 1451, 2741,
+     2741, 1455, 1465, 1448, 1468, 1469, 1455, 1457, 1519, 1466,
+     2741, 1521, 1467, 1461, 1524, 1489, 1507, 1522, 1509, 2741,
+     1528, 1484, 1532, 1479, 1529, 2741, 1474, 1536, 1483, 1477,
+     1474, 1477, 1479, 1537, 1497, 1539, 1489, 1501, 1504, 1501,
+     1493, 1496, 1491, 1499, 1490, 2741, 1498, 1513, 1498, 2741,
+     1500, 1557, 1502, 1559, 1518, 1520, 1520, 1517, 1564, 1523,
+     1524, 1516, 1517, 2741, 1518, 2741, 1528, 1520, 2741, 1526,
+     1531, 1533, 1530, 1577, 1522, 1537, 1538, 1530, 2741, 1540,
+     1528, 1529, 1529, 1530, 1531, 1588, 2741, 2741, 1589, 1533,
+
+     2741, 1534, 1540, 2741, 1549, 1537, 1545, 1602, 1547, 1539,
+     1552, 1546, 1556, 1552, 1568, 1561, 1567, 1557, 1615, 1565,
+     2741, 1574, 2741, 1571, 1619, 2741, 1569, 1597, 1598, 1604,
+     1589, 1597, 2741, 1626, 2741, 1581, 1566, 1629, 2741, 1630,
+     1584, 1589, 1571, 1634, 1575, 1631, 1595, 1588, 1584, 1577,
+     1585, 1637, 1592, 1593, 1583, 1588, 1600, 1654, 1605, 1656,
+     1603, 1653, 1614, 1614, 1656, 1601, 1606, 1604, 1666, 1607,
+     1615, 1621, 1609, 1671, 1667, 1627, 1674, 1632, 1621, 1615,
+     1678, 1617, 1618, 1632, 1682, 1636, 1636, 1685, 1686, 1636,
+     1634, 1624, 1685, 1686, 1646, 1639, 1638, 1638, 1633, 1634,
+
+     1652, 2741, 1643, 1649, 1654, 1641, 1642, 1642, 1642, 1644,
+     1702, 1645, 2741, 1641, 1659, 1711, 2741, 1666, 1680, 1694,
+     1693, 1682, 1684, 2741, 1718, 1668, 2741, 2741, 1659, 1670,
+     1722, 2741, 1676, 1666, 1671, 1669, 1723, 1678, 1683, 1669,
+     1672, 1688, 1677, 1675, 1689, 1676, 2741, 1678, 2741, 1696,
+     1683, 1695, 1742, 1686, 1749, 1694, 1704, 1705, 2741, 1753,
+     1690, 1750, 1705, 1752, 2741, 1700, 1759, 2741, 1699, 1714,
+     1702, 2741, 1712, 1713, 1765, 2741, 1720, 1724, 2741, 2741,
+     1700, 1718, 1727, 1709, 1727, 1726, 1717, 1770, 1719, 1715,
+     1720, 1779, 1718, 1719, 1782, 1778, 1784, 1734, 1732, 1787,
+
+     1737, 1727, 1743, 1736, 2741, 1792, 1770, 1794, 1776, 1791,
+     1797, 2741, 1743, 1799, 1738, 2741, 1740, 1742, 1752, 1799,
+     1744, 1759, 1746, 1808, 1762, 1748, 1755, 1755, 1813, 1767,
+     1768, 1755, 1757, 1771, 1757, 1771, 2741, 1818, 1766, 1763,
+     2741, 1779, 1766, 1779, 1766, 1787, 2741, 1784, 1832, 1782,
+     1779, 1780, 2741, 1836, 1792, 1791, 1784, 1789, 1790, 1788,
+     1843, 1800, 1784, 1793, 1842, 1848, 2741, 1798, 1850, 2741,
+     1796, 2741, 1795, 1791, 2741, 1798, 1855, 1857, 1853, 2741,
+     1854, 2741, 1836, 1842, 2741, 1814, 2741, 1858, 1807, 1818,
+     1819, 1804, 1805, 1813, 1870, 2741, 1815, 1867, 1868, 1820,
+
+     2741, 1815, 1833, 1815, 1821, 1834, 1829, 1826, 1831, 1829,
+     1884, 1825, 1839, 1889, 1834, 1831, 1831, 2741, 1846, 1847,
+     1848, 2741, 1849, 1897, 1847, 1837, 1845, 1858, 2741, 1859,
+     1840, 1841, 1848, 2741, 1850, 2741, 1864, 1861, 1853, 1905,
+     1863, 2741, 2741, 1867, 1893, 1894, 1892, 1855, 1855, 1864,
+     1871, 1864, 1863, 1874, 1861, 2741, 1877, 1865, 1868, 1927,
+     1864, 1883, 1925, 1886, 1879, 1878, 1887, 1889, 1893, 2741,
+     1932, 1884, 2741, 1890, 1882, 1944, 1884, 1946, 1947, 1948,
+     2741, 1887, 1945, 1904, 1891, 1899, 1910, 1897, 1908, 1894,
+     1892, 1900, 1899, 1900, 1906, 1897, 1942, 1966, 1948, 1968,
+
+     1918, 1907, 1920, 1910, 1927, 1926, 1970, 1911, 1930, 1931,
+     2741, 1936, 1929, 1971, 1935, 1922, 1937, 1985, 1939, 1942,
+     1937, 1942, 1931, 1940, 2741, 1994, 2741, 2741, 2741, 1995,
+     1934, 1997, 1937, 1999, 1944, 1996, 1997, 1956, 1999, 1942,
+     1946, 2007, 1965, 2009, 1965, 1992, 2741, 1988, 2741, 1958,
+     1952, 1949, 2011, 1974, 1967, 1963, 2020, 1960, 1962, 1961,
+     1968, 2014, 1965, 2027, 1968, 2741, 1973, 1983, 1985, 1987,
+     1970, 1978, 2741, 2741, 1984, 2741, 1989, 2741, 1991, 1992,
+     1983, 2042, 1983, 1993, 1978, 2741, 1991, 2741, 1993, 2024,
+     2030, 2002, 2000, 2052, 1990, 1992, 1989, 2013, 2741, 2000,
+
+     2007, 2008, 2011, 2061, 2001, 2741, 2058, 2002, 2010, 2019,
+     2005, 2021, 2020, 2015, 2010, 2010, 2022, 2017, 2741, 2030,
+     2018, 2074, 2022, 2034, 2062, 2083, 2084, 2028, 2741, 2028,
+     2040, 2088, 2034, 2036, 2034, 2035, 2093, 2741, 2043, 2030,
+     2045, 2050, 2042, 2048, 2100, 2101, 2055, 2103, 2104, 2045,
+     2049, 2045, 2062, 2045, 2057, 2051, 2113, 2741, 2741, 2058,
+     2069, 2116, 2741, 2070, 2055, 2073, 2064, 2741, 2065, 2079,
+     2075, 2068, 2063, 2069, 2741, 2741, 2127, 2741, 2741, 2067,
+     2075, 2070, 2126, 2089, 2086, 2134, 2741, 2130, 2093, 2741,
+     2137, 2076, 2139, 2079, 2092, 2091, 2092, 2082, 2094, 2090,
+
+     2741, 2085, 2148, 2098, 2107, 2100, 2147, 2741, 2098, 2092,
+     2741, 2104, 2741, 2151, 2157, 2096, 2112, 2160, 2113, 2162,
+     2163, 2741, 2117, 2111, 2104, 2124, 2111, 2123, 2114, 2118,
+     2741, 2168, 2114, 2741, 2124, 2741, 2741, 2115, 2123, 2173,
+     2130, 2123, 2135, 2182, 2127, 2127, 2123, 2125, 2140, 2188,
+     2189, 2128, 2144, 2129, 2146, 2741, 2194, 2138, 2145, 2197,
+     2138, 2741, 2741, 2148, 2200, 2145, 2202, 2741, 2150, 2149,
+     2741, 2205, 2151, 2741, 2145, 2741, 2145, 2162, 2741, 2163,
+     2211, 2154, 2213, 2214, 2741, 2215, 2741, 2741, 2741, 2741,
+     2221, 2224, 2227, 2228, 2230, 2233, 2236, 2239
+
     } ;
 
-static const flex_int16_t yy_def[2381] =
+static const flex_int16_t yy_def[2299] =
     {   0,
-     2373, 2373, 2374, 2374, 2373, 2373, 2373, 2373, 2373, 2373,
-     2372, 2372, 2372, 2372, 2372, 2375, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2376,
-     2372, 2372, 2372, 2377,   15, 2372,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2378,   45,   45,   45,
+     2291, 2291, 2292, 2292, 2291, 2291, 2291, 2291, 2291, 2291,
+     2290, 2290, 2290, 2290, 2290, 2293, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2294,
+     2290, 2290, 2290, 2295,   15, 2290,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2296,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2375,
-     2372, 2372, 2372, 2372, 2372, 2372, 2379, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2376, 2372,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2293,
+     2290, 2290, 2290, 2290, 2290, 2290, 2297, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2294, 2290,
 
-     2377, 2372, 2372,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2380,   45, 2378,   45,   45,
+     2295, 2290, 2290,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2298,   45, 2296,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2379, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2297, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2380, 2372, 2372,  118,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2298,
+     2290, 2290,  118,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45, 2290,   45,  118, 2290,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
-       45, 2372,   45,  118, 2372,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45,   45,   45,   45, 2372, 2372, 2372,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45, 2372,
+       45, 2290,   45,   45,   45,   45,   45, 2290, 2290, 2290,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45, 2290,
        45,  118,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2290,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45, 2290,   45,
 
-       45, 2372,   45,   45,   45,   45,   45,   45, 2372,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45, 2372,
+       45,   45,   45,   45, 2290,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45, 2290,   45,   45, 2290,   45,   45,   45,
 
-       45,   45,   45,   45, 2372,   45,   45, 2372,   45,   45,
-     2372,   45,   45,   45, 2372,   45,   45,   45,   45, 2372,
-     2372, 2372,   45,   45,   45,   45,   45, 2372,   45,   45,
+     2290,   45,   45,   45,   45, 2290, 2290, 2290,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
 
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2290,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
+       45, 2290,   45,   45, 2290,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2372,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
+       45, 2290, 2290,   45,   45,   45,   45,   45,   45, 2290,
+     2290,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2290,
+     2290, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372, 2372,   45,   45,   45,   45,
-       45,   45, 2372, 2372,   45,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 2372, 2372, 2372,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
 
-       45,   45,   45,   45,   45, 2372,   45,   45,   45, 2372,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
 
-     2372,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
+       45,   45,   45, 2290,   45,   45, 2290,   45, 2290,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2372,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
+       45,   45,   45, 2290,   45, 2290,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45, 2290,   45, 2290, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
-       45,   45, 2372,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
 
-       45, 2372,   45,   45,   45,   45, 2372,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45, 2372,   45, 2372,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372, 2372,   45,   45,   45,   45,
+       45,   45,   45,   45, 2290, 2290,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45,   45,   45,   45, 2372,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45, 2372, 2372,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2372,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45, 2372,   45,   45, 2372, 2372,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-     2372,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45, 2290, 2290,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45,   45,
 
-     2372,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
-       45, 2372,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372, 2372,   45,   45, 2372,
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45, 2290,   45,   45, 2290,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45, 2290,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2372,   45, 2372,   45,   45, 2372,   45,   45,   45,   45,
-       45,   45, 2372,   45, 2372,   45,   45,   45, 2372,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2290,   45, 2290,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45, 2290, 2290,   45,   45,
 
+     2290,   45,   45, 2290,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45, 2290,   45,   45, 2290,   45,   45,   45,   45,
+       45,   45, 2290,   45, 2290,   45,   45,   45, 2290,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2372,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
-       45, 2372,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45, 2372, 2372,   45,   45,   45, 2372,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45, 2372,   45, 2372,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-     2372,   45,   45, 2372,   45,   45,   45, 2372,   45,   45,
-       45, 2372,   45,   45, 2372, 2372,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2290,   45,   45,   45, 2290,   45,   45,   45,
+       45,   45,   45, 2290,   45,   45, 2290, 2290,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45, 2290,   45,   45, 2290,   45,   45,
+       45, 2290,   45,   45,   45, 2290,   45,   45, 2290, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45,   45, 2372,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
 
-       45, 2372,   45,   45,   45,   45,   45, 2372,   45,   45,
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2372,   45,   45, 2372,   45, 2372,   45,   45, 2372,
-       45,   45,   45,   45, 2372,   45, 2372,   45,   45, 2372,
-       45, 2372,   45,   45,   45,   45,   45,   45,   45,   45,
-     2372,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2372,   45,   45,   45, 2372,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-
-       45,   45,   45, 2372,   45, 2372,   45,   45,   45,   45,
-       45, 2372, 2372,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2372,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2372,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45, 2372,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2290,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45, 2290,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45, 2290,   45,   45,   45,
+       45,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45, 2290,
+       45, 2290,   45,   45, 2290,   45,   45,   45,   45, 2290,
+       45, 2290,   45,   45, 2290,   45, 2290,   45,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45, 2290,   45, 2290,   45,   45,   45,   45,
+       45, 2290, 2290,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2290,
+       45,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
 
-     2372, 2372, 2372,   45, 2372,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2372,   45, 2372,   45,   45,   45,   45,
+     2290,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2290,   45, 2290, 2290, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+       45,   45, 2290, 2290,   45, 2290,   45, 2290,   45,   45,
+       45,   45,   45,   45,   45, 2290,   45, 2290,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2290,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45, 2372,
-       45, 2372,   45, 2372, 2372,   45, 2372,   45,   45,   45,
-       45,   45,   45,   45, 2372,   45, 2372,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
-       45,   45,   45,   45, 2372,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2290, 2290,   45,
+       45,   45, 2290,   45,   45,   45,   45, 2290,   45,   45,
+       45,   45,   45,   45, 2290, 2290,   45, 2290, 2290,   45,
+       45,   45,   45,   45,   45,   45, 2290,   45,   45, 2290,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2372, 2372,
-       45,   45,   45, 2372,   45,   45,   45,   45, 2372,   45,
-       45,   45,   45,   45,   45, 2372, 2372, 2372,   45, 2372,
-     2372,   45,   45,   45,   45,   45,   45,   45, 2372,   45,
-       45, 2372,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45,   45,   45,   45,   45, 2372,
-       45,   45, 2372,   45, 2372,   45,   45,   45,   45,   45,
-
-       45,   45,   45, 2372,   45,   45,   45,   45,   45,   45,
-       45,   45, 2372,   45,   45, 2372,   45, 2372, 2372,   45,
+
+     2290,   45,   45,   45,   45,   45,   45, 2290,   45,   45,
+     2290,   45, 2290,   45,   45,   45,   45,   45,   45,   45,
+       45, 2290,   45,   45,   45,   45,   45,   45,   45,   45,
+     2290,   45,   45, 2290,   45, 2290, 2290,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2372,   45,   45,
-       45,   45,   45, 2372, 2372,   45,   45,   45,   45, 2372,
-       45,   45, 2372,   45,   45, 2372,   45, 2372,   45,   45,
-     2372,   45,   45,   45,   45,   45, 2372,   45, 2372, 2372,
-     2372,    0, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372
+       45,   45,   45,   45,   45, 2290,   45,   45,   45,   45,
+       45, 2290, 2290,   45,   45,   45,   45, 2290,   45,   45,
+     2290,   45,   45, 2290,   45, 2290,   45,   45, 2290,   45,
+       45,   45,   45,   45, 2290,   45, 2290, 2290, 2290,    0,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290
+
     } ;
 
-static const flex_int16_t yy_nxt[2900] =
+static const flex_int16_t yy_nxt[2818] =
     {   0,
-     2372,   13,   14,   13, 2372,   15,   16,  102,   17,   18,
+     2290,   13,   14,   13, 2290,   15,   16,  102,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       86,  409,   37,   14,   37,   87,   25,   26,   38,   37,
-       14,   37,   42,   27,   42,   38, 2372, 2372,   28,   91,
+       86,  402,   37,   14,   37,   87,   25,   26,   38,   37,
+       14,   37,   42,   27,   42,   38, 2290, 2290,   28,   91,
        13,   14,   13,   92,   29,   91,   30,  103,   13,   14,
-       13,  205,   25,   31,   13,   14,   13,   42,   40,   42,
-      874,   32,   13,   14,   13,   91,   40,   33,  410,  170,
-       93,   94,   92,  171,   34,   35,   13,   14,   13,  205,
+       13,  203,   25,   31,   13,   14,   13,   42,   40,   42,
+      870,   32,   13,   14,   13,   91,   40,   33,  403,  168,
+       93,   94,   92,  169,   34,   35,   13,   14,   13,  203,
        15,   16,   92,   17,   18,   19,   20,   21,   22,   22,
        22,   22,   22,   23,   24,   39,   13,   14,   13,   93,
 
        93,   25,   26,   39,   13,   14,   13,   42,   27,   42,
-      135,   95,  136,   28,  109,  246,   41,  105,  106,   29,
-      108,   30,  114,  137,   41,  234,  235,   25,   31,   96,
-      389,  247,   89,  138,   89,  875,   32,   90,   90,   90,
-       90,   90,   33,  109,  105,  106,  108,  390,  114,   34,
+      135,   95,  136,   28,  109,  244,   41,  105,  106,   29,
+      108,   30,  114,  137,   41,  232,  233,   25,   31,   96,
+      382,  245,   89,  138,   89,  871,   32,   90,   90,   90,
+       90,   90,   33,  109,  105,  106,  108,  383,  114,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   47,   45,   45,
        45,   45,   45,   48,   45,   49,   50,   45,   51,   45,
@@ -1566,311 +1540,302 @@ static const flex_int16_t yy_nxt[2900] =
        59,   60,   61,   62,   63,   64,   65,   66,   52,   67,
        68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
        78,   79,   45,   45,   45,   45,   45,   81,  115,   82,
-       82,   82,   82,   82,   81,  192,   84,   84,   84,   84,
+       82,   82,   82,   82,   81,  190,   84,   84,   84,   84,
        84,  108,   83,   85,   85,   85,   85,   85,   81,   83,
-       84,   84,   84,   84,   84,  115,   83,  110,  315,  112,
-      193,  105,  192,   83,  316,  111,  129,  108,   83,  130,
-      131,  113,  140,  132,  133,   83,  142,  166,  139,  141,
-      202,  167,   83,  110,  143,  112,  134,  193,  119,   83,
-       45,  168,  192,  111,  120,  575,   45,  121,   45,   45,
-
-      113,   45,  301,  302,   45,  102,  202,   45,  144,  117,
-      264,  145,   45,   45,  265,   45,   45,  876,  146,  195,
-      147,  115,   45,   45,   45,   45,   45,   45,   45,   45,
+       84,   84,   84,   84,   84,  115,   83,  110,  200,  112,
+      191,  105,  190,   83,  141,  111,  129,  108,   83,  130,
+      131,  113,  142,  132,  133,   83,  209,  164,  139,  190,
+      872,  165,   83,  110,  200,  112,  134,  191,  119,   83,
+       45,  166,  191,  111,  120,  160,   45,  121,   45,   45,
+
+      113,   45,  209,  161,   45,  162,  193,   45,  143,  117,
+      163,  144,   45,   45,  873,   45,   45,  206,  145,  194,
+      146,  115,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,  103,  106,  576,  115,   45,
-      149,  150,  114,   45,  151,  153,  194,   45,  190,  154,
-      152,  211,  225,  155,  226,   45,  123,  877,  110,   45,
-      124,   45,  118,  106,  125,  156,  111,  126,  186,  157,
-      127,  161,  194,  201,  128,  194,  193,  211,  187,  162,
-      158,  163,  159,  188,  160,  172,  164,  165,  345,  173,
-
-      204,  208,  174,  206,  111,  275,  179,  180,  878,  175,
-      176,  197,  201,  196,  177,  178,  112,   85,   85,   85,
-       85,   85,   90,   90,   90,   90,   90,  204,  113,  208,
-       83,   81,  206,   82,   82,   82,   82,   82,  241,  879,
-      242,  209,  181,   89,  182,   89,   83,  183,   90,   90,
-       90,   90,   90,  210,  276,  346,   83,  184,   85,   85,
-       85,   85,   85,   81,  185,   84,   84,   84,   84,   84,
-      209,   83,   83,   90,   90,   90,   90,   90,   83,  101,
-      201,  210,  221,  228,  206,  880,  101,  250,  243,  259,
-      251,  222,  229,  230,  252,  223,  285,   83,  216,  286,
-
-      287,  244,  260,  288,   83,  245,  309,  289,  303,  217,
-      208,  209,  304,  272,  280,  273,  305,  210,  291,  101,
-      310,  325,  326,  101,  419,  359,  506,  101,  360,  281,
-      282,  283,  507,  327,  420,  101,  398,  325,  314,  101,
-      318,  101,  101,  214,  327,  320,  326,  881,  336,  326,
-      325,  215,  215,  215,  215,  215,  292,  293,  294,  327,
-      215,  215,  215,  215,  215,  215,  328,  295,  333,  296,
-      330,  297,  298,  329,  299,  300,  334,  336,  337,  338,
-      414,  339,  341,  343,  333,  361,  215,  215,  215,  215,
-      215,  215,  399,  362,  333,  400,  451,  433,  452,  363,
-
-      434,  338,  334,  449,  450,  338,  337,  339,  341,  464,
-      347,  343,  344,  344,  344,  344,  344,  341,  468,  415,
-      468,  344,  344,  344,  344,  344,  344,  407,  471,  340,
-      473,  474,  523,  416,  456,  476,  478,  524,  472,  479,
-      825,  826,  737,  341,  468,  473,  469,  344,  344,  344,
-      344,  344,  344,  549,  478,  539,  540,  460,  474,  473,
-      541,  476,  882,  550,  465,  478,  479,  482,  482,  482,
-      482,  482,  618,  623,  484,  883,  482,  482,  482,  482,
-      482,  482,  567,  551,  618,  579,  590,  568,  525,  580,
-      591,  611,  624,  526,  625,  654,  612,  738,  884,  623,
-
-      885,  618,  482,  482,  482,  482,  482,  482,  655,  667,
-      656,  644,  622,  627,  668,  645,  766,  700,  886,  887,
-      624,  689,  625,  646,  764,  647,  648,  649,  650,  651,
-      768,  690,  767,  763,  773,  888,  889,  794,  770,  765,
-      795,  774,  766,  569,   45,   45,   45,   45,   45,  892,
-      764,  890,  893,   45,   45,   45,   45,   45,   45,  768,
-      767,  851,  891,  894,  895,  896,  852,  897,  765,  898,
-      899,  900,  901,  902,  903,  904,  905,  906,  908,   45,
-       45,   45,   45,   45,   45,  907,  910,  909,  911,  912,
-      913,  914,  915,  916,  917,  918,  919,  920,  923,  924,
-
-      921,  928,  929,  853,  906,  905,  922,  908,  925,  926,
-      930,  927,  907,  909,  931,  932,  933,  934,  935,  936,
-      937,  938,  939,  940,  941,  942,  943,  944,  945,  946,
-      947,  948,  949,  952,  953,  954,  950,  955,  956,  957,
-      951,  958,  959,  960,  961,  962,  963,  964,  965,  967,
-      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
-      978,  979,  966,  981,  980,  982,  983,  984,  985,  986,
+       45,   45,   45,   45,   45,  206,  106,  102,  115,   45,
+      148,  149,  874,   45,  150,  152,  202,   45,  188,  153,
+      151,  875,  192,  154,  339,   45,  123,  114,  110,   45,
+      124,   45,  118,  106,  125,  155,  111,  126,  208,  156,
+      127,  170,  876,  202,  128,  171,  192,  103,  172,  199,
+      157,  192,  158,  184,  159,  173,  174,  177,  178,  877,
+
+      175,  176,  204,  185,  111,  261,  208,  112,  186,  262,
+       85,   85,   85,   85,   85,  195,  207,  878,  199,  113,
+      226,  340,   81,   83,   82,   82,   82,   82,   82,  227,
+      228,  204,  199,  179,   89,  180,   89,   83,  181,   90,
+       90,   90,   90,   90,  101,  207,  295,  296,  182,   83,
+      214,  101,  272,  879,   81,  183,   84,   84,   84,   84,
+       84,  215,  256,   83,   85,   85,   85,   85,   85,   83,
+       90,   90,   90,   90,   90,  257,  219,   83,   90,   90,
+       90,   90,   90,  247,  101,  220,  248,  206,  101,  221,
+      249,  223,  101,  224,  239,   83,  240,  241,  321,  309,
+
+      101,  273,  204,   83,  101,  310,  101,  101,  212,  281,
+      242,  207,  282,  283,  243,  308,  213,  213,  213,  213,
+      213,  276,  286,  320,  321,  213,  213,  213,  213,  213,
+      213,  269,  303,  270,  319,  297,  277,  278,  279,  298,
+      312,  208,  321,  299,  327,  319,  304,  880,  320,  331,
+      320,  213,  213,  213,  213,  213,  213,  328,  330,  332,
+      287,  288,  289,  319,  333,  335,  337,  327,  324,  314,
+      327,  290,  355,  291,  322,  323,  292,  331,  293,  294,
+      356,  353,  391,  328,  354,  332,  357,  330,  332,  407,
+      333,  335,  411,  341,  337,  338,  338,  338,  338,  338,
+
+      424,  454,  412,  425,  338,  338,  338,  338,  338,  338,
+      439,  440,  334,  441,  400,  442,  461,  446,  335,  458,
+      458,  463,  464,  468,  463,  466,  462,  469,  408,  538,
+      338,  338,  338,  338,  338,  338,  468,  496,  392,  539,
+      562,  393,  409,  497,  335,  458,  459,  719,  755,  464,
+      463,  466,  468,  474,  469,  756,  455,  604,  450,  472,
+      472,  472,  472,  472,  609,  540,  806,  807,  472,  472,
+      472,  472,  472,  472,  512,  528,  529,  555,  604,  513,
+      530,  566,  556,  576,  597,  567,  604,  577,  640,  598,
+      609,  610,  563,  611,  472,  472,  472,  472,  472,  472,
+
+      630,  641,  720,  642,  631,  653,  608,  613,  748,  749,
+      654,  685,  632,  674,  633,  634,  635,  636,  637,  610,
+      881,  611,  745,  675,  882,  750,  888,  752,  776,  746,
+      514,  777,  884,  883,  748,  515,  868,  749,  557,   45,
+       45,   45,   45,   45,  747,  885,  889,  869,   45,   45,
+       45,   45,   45,   45,  750,  746,  832,  886,  887,  884,
+      890,  833,  883,  891,  892,  893,  894,  895,  896,  897,
+      898,  901,  885,  747,   45,   45,   45,   45,   45,   45,
+      902,  899,  903,  904,  887,  905,  886,  900,  906,  907,
+      908,  909,  910,  911,  912,  913,  914,  915,  834,  916,
+
+      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
+      927,  930,  931,  932,  928,  933,  934,  935,  929,  936,
+      937,  938,  939,  940,  941,  942,  944,  945,  946,  947,
+      948,  949,  950,  951,  952,  953,  954,  955,  956,  943,
+      958,  957,  959,  960,  961,  962,  963,  964,  965,  966,
+      967,  968,  969,  970,  971,  972,  973,  974,  975,  976,
+      977,  978,  979,  980,  981,  982,  983,  984,  985,  986,
       987,  988,  989,  990,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
-     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016,
-
-     1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1026, 1027,
-     1028, 1031, 1032, 1033, 1025, 1036, 1034, 1029, 1037, 1038,
-     1039, 1030, 1035, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
-     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
-     1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
-     1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
-     1077, 1078, 1079, 1080, 1054, 1081, 1082, 1055, 1083, 1084,
-     1058, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
+      997,  998, 1000, 1001, 1002, 1005, 1006, 1007,  999, 1010,
+     1008, 1003, 1011, 1012, 1013, 1004, 1009, 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, 1028, 1055,
+     1056, 1029, 1057, 1058, 1032, 1059, 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, 1086, 1087, 1083, 1088, 1089, 1090, 1091, 1092, 1093,
      1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
-     1104, 1105, 1106, 1107, 1108, 1109, 1111, 1112, 1113, 1114,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1114,
 
-     1110, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1111, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
      1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
-     1134, 1135, 1136, 1137, 1139, 1140, 1141, 1138, 1142, 1143,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
      1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
      1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
-     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
+     1164, 1165, 1166, 1169, 1167, 1170, 1171, 1168, 1172, 1173,
      1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
-     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
-     1194, 1195, 1196, 1199, 1197, 1200, 1201, 1198, 1202, 1203,
-     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
-
-     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1195, 1194,
-     1222, 1196, 1197, 1198, 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, 1254, 1255, 1256, 1257, 1258, 1259,
+     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1165, 1164,
+     1192, 1166, 1167, 1168, 1193, 1194, 1195, 1196, 1197, 1198,
+     1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
+
+     1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
+     1219, 1220, 1221, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
+     1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
+     1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249,
+     1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
      1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269,
      1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
-     1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
-     1291, 1281, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
-     1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
-
-     1310, 1311, 1312, 1313, 1253, 1314, 1315, 1316, 1317, 1318,
-     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
-     1329, 1330, 1332, 1331, 1333, 1334, 1335, 1336, 1337, 1338,
-     1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
-     1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1329,
-     1331, 1332, 1333, 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, 1385,
-     1387, 1388, 1389, 1384, 1390, 1391, 1392, 1393, 1394, 1395,
-     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
-
-     1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
-     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1430, 1431, 1386, 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, 1461, 1460, 1462, 1463, 1464,
-     1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474,
-     1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1458,
-     1484, 1457, 1460, 1459, 1461, 1485, 1486, 1487, 1488, 1489,
+     1280, 1281, 1282, 1222, 1283, 1284, 1285, 1286, 1287, 1288,
+     1289, 1290, 1291, 1292, 1293, 1294, 1295, 1297, 1296, 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, 1294, 1296, 1297, 1298, 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, 1349, 1351, 1352, 1353, 1348, 1354, 1355,
+     1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
+     1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
+     1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
+     1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
+     1350, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404,
+
+     1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414,
+     1415, 1416, 1417, 1418, 1419, 1421, 1420, 1422, 1423, 1424,
+     1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
+     1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1418,
+     1444, 1417, 1420, 1419, 1421, 1445, 1446, 1447, 1448, 1449,
+     1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459,
+     1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469,
+     1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479,
+     1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 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,
-     1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539,
-     1540, 1541, 1542, 1543, 1544, 1546, 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, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
-     1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1572, 1573,
-
-     1545, 1600, 1574, 1601, 1602, 1603, 1604, 1605, 1606, 1607,
-     1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617,
-     1618, 1619, 1620, 1621, 1622, 1623, 1624, 1582, 1625, 1626,
-     1627, 1628, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1629,
-     1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646,
-     1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1656, 1657,
-     1658, 1659, 1655, 1660, 1661, 1662, 1663, 1664, 1665, 1666,
-     1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676,
-     1678, 1679, 1680, 1683, 1677, 1682, 1684, 1685, 1686, 1687,
-     1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697,
+     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, 1530,
+     1531, 1532, 1533, 1534, 1535, 1536, 1538, 1539, 1540, 1541,
+     1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551,
+     1552, 1553, 1554, 1527, 1528, 1500, 1555, 1529, 1556, 1557,
+     1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
+     1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
+     1578, 1579, 1537, 1580, 1581, 1582, 1584, 1585, 1586, 1587,
+     1588, 1589, 1590, 1583, 1591, 1592, 1593, 1594, 1595, 1596,
+
+     1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1606, 1607,
+     1608, 1609, 1605, 1610, 1611, 1612, 1613, 1614, 1615, 1616,
+     1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626,
+     1628, 1629, 1630, 1633, 1627, 1632, 1634, 1635, 1636, 1637,
+     1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647,
+     1648, 1649, 1650, 1651, 1652, 1653, 1631, 1629, 1654, 1628,
+     1655, 1632, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663,
+     1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673,
+     1674, 1675, 1676, 1677, 1631, 1678, 1679, 1680, 1681, 1682,
+     1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692,
+
+     1693, 1694, 1695, 1696, 1700, 1697, 1701, 1702, 1698, 1703,
+     1704, 1699, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712,
+     1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1722, 1721,
+     1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
+     1733, 1734, 1737, 1738, 1739, 1735, 1740, 1741, 1742, 1743,
+     1744, 1745, 1746, 1719, 1720, 1721, 1736, 1722, 1723, 1747,
+     1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757,
+     1758, 1759, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768,
+     1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
+     1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788,
 
-     1698, 1699, 1700, 1701, 1702, 1703, 1681, 1679, 1704, 1678,
-     1705, 1682, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
-     1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723,
-     1724, 1725, 1726, 1727, 1681, 1728, 1729, 1730, 1731, 1732,
-     1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742,
-     1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1755,
-     1752, 1756, 1757, 1753, 1758, 1759, 1754, 1760, 1761, 1762,
-     1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772,
-     1773, 1774, 1775, 1777, 1776, 1778, 1779, 1780, 1781, 1782,
-     1783, 1784, 1785, 1786, 1787, 1788, 1789, 1792, 1793, 1794,
-
-     1790, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1774, 1775,
-     1776, 1791, 1777, 1778, 1802, 1803, 1804, 1805, 1806, 1807,
-     1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1817, 1818,
-     1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828,
-     1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838,
-     1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848,
-     1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858,
-     1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868,
-     1870, 1869, 1871, 1872, 1873, 1874, 1875, 1876, 1816, 1877,
-     1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887,
-
-     1888, 1889, 1890, 1891, 1892, 1868, 1893, 1867, 1869, 1870,
-     1894, 1871, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902,
-     1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
-     1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922,
-     1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932,
-     1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942,
-     1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952,
-     1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962,
-     1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972,
-     1946, 1948, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980,
-
-     1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990,
-     1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-     2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011,
-     2012, 2008, 2013, 2014, 2015, 2016, 2018, 2017, 2019, 2020,
-     2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030,
-     2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040,
-     2041, 2042, 2016, 2017, 2043, 2044, 2045, 2046, 2047, 2048,
-     2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058,
-     2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
-     2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
-
-     2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088,
-     2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2071, 2072,
-     2097, 2073, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105,
-     2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115,
-     2116, 2117, 2119, 2120, 2118, 2121, 2122, 2123, 2124, 2125,
-     2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135,
-     2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145,
-     2146, 2147, 2148, 2149, 2123, 2125, 2150, 2151, 2152, 2153,
-     2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163,
-     2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173,
-
-     2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183,
-     2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193,
-     2194, 2169, 2195, 2170, 2196, 2197, 2198, 2199, 2200, 2201,
-     2202, 2203, 2204, 2205, 2207, 2206, 2208, 2209, 2210, 2211,
-     2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221,
-     2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231,
-     2205, 2206, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239,
-     2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249,
-     2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259,
-     2260, 2261, 2262, 2263, 2238, 2264, 2265, 2266, 2267, 2268,
+     1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798,
+     1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808,
+     1810, 1809, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818,
+     1819, 1820, 1760, 1821, 1822, 1823, 1824, 1825, 1826, 1827,
+     1828, 1829, 1830, 1831, 1832, 1808, 1833, 1807, 1809, 1810,
+     1834, 1811, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842,
+     1843, 1844, 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, 1882,
+
+     1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892,
+     1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902,
+     1903, 1904, 1905, 1906, 1907, 1881, 1883, 1908, 1909, 1910,
+     1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920,
+     1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930,
+     1931, 1932, 1933, 1934, 1935, 1936, 1937, 1939, 1940, 1941,
+     1942, 1938, 1943, 1944, 1945, 1946, 1948, 1947, 1949, 1950,
+     1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960,
+     1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970,
+     1971, 1972, 1946, 1947, 1973, 1974, 1975, 1976, 1977, 1978,
+
+     1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988,
+     1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+     1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+     2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018,
+     2019, 2020, 2021, 2022, 1997, 1998, 2023, 1999, 2024, 2025,
+     2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035,
+     2036, 2037, 2038, 2039, 2040, 2042, 2043, 2041, 2044, 2045,
+     2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055,
+     2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065,
+     2066, 2067, 2068, 2069, 2070, 2071, 2072, 2046, 2048, 2073,
+
+     2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083,
+     2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093,
+     2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103,
+     2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113,
+     2114, 2115, 2090, 2116, 2091, 2117, 2118, 2119, 2120, 2121,
+     2122, 2123, 2124, 2125, 2127, 2126, 2128, 2129, 2130, 2131,
+     2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141,
+     2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151,
+     2125, 2126, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159,
+     2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169,
+
+     2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179,
+     2180, 2181, 2182, 2157, 2183, 2184, 2185, 2186, 2187, 2188,
+     2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198,
+     2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208,
+     2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218,
+     2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228,
+     2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238,
+     2239, 2240, 2241, 2243, 2242, 2244, 2245, 2246, 2247, 2248,
+     2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258,
+     2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268,
 
      2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278,
      2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288,
-     2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298,
-     2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308,
-     2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318,
-     2319, 2320, 2321, 2322, 2323, 2325, 2324, 2326, 2327, 2328,
-     2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338,
-     2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348,
-     2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358,
-     2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368,
-
-     2369, 2370, 2371,   12,   12,   12,   36,   36,   36,   80,
-       99,   80,  101,  101,  101,  116,  116,  116,  191,  873,
-      191,  212,  212,  212,  872,  871,  870,  869,  868,  867,
-      866,  865,  864,  863,  862,  861,  860,  859,  858,  857,
-      856,  855,  854,  850,  849,  848,  847,  846,  845,  844,
-      843,  842,  841,  840,  839,  838,  837,  836,  835,  834,
-      833,  832,  831,  830,  829,  828,  827,  824,  823,  822,
-      821,  820,  819,  818,  817,  816,  815,  814,  813,  812,
-      811,  810,  809,  808,  807,  806,  805,  804,  803,  802,
-      801,  800,  799,  798,  797,  796,  793,  792,  791,  790,
-
-      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
-      779,  778,  777,  776,  775,  772,  771,  769,  763,  762,
-      761,  760,  759,  758,  757,  756,  755,  754,  753,  752,
-      751,  750,  749,  748,  747,  746,  745,  744,  743,  742,
-      741,  740,  739,  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,  699,
-      698,  697,  696,  695,  694,  693,  692,  691,  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,  653,  652,
-      643,  642,  641,  640,  639,  638,  637,  636,  635,  634,
-      633,  632,  631,  630,  629,  628,  626,  622,  621,  620,
-      619,  617,  616,  615,  614,  613,  610,  609,  608,  607,
-      606,  605,  604,  603,  602,  601,  600,  599,  598,  597,
-      596,  595,  594,  593,  592,  589,  588,  587,  586,  585,
-      584,  583,  582,  581,  578,  577,  574,  573,  572,  571,
-      570,  566,  565,  564,  563,  562,  561,  560,  559,  558,
-      557,  556,  555,  554,  553,  552,  548,  547,  546,  545,
-
-      544,  543,  542,  538,  537,  536,  535,  534,  533,  532,
-      531,  530,  529,  528,  527,  522,  521,  520,  519,  518,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
-      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
-      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
-      485,  483,  481,  480,  477,  475,  470,  467,  466,  463,
-      462,  461,  459,  458,  457,  455,  454,  453,  448,  447,
-      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
-      436,  435,  432,  431,  430,  429,  428,  427,  426,  425,
-      424,  423,  422,  421,  418,  417,  413,  412,  411,  408,
-
-      406,  405,  404,  403,  402,  401,  397,  396,  395,  394,
-      393,  392,  391,  388,  387,  386,  385,  384,  383,  382,
-      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
-      371,  370,  369,  368,  367,  366,  365,  364,  358,  357,
-      356,  355,  354,  353,  352,  351,  350,  349,  348,  213,
-      342,  340,  335,  332,  331,  324,  323,  322,  321,  319,
-      317,  313,  312,  311,  308,  307,  306,  290,  284,  279,
-      278,  277,  274,  271,  270,  269,  268,  267,  266,  263,
-      262,  261,  258,  257,  256,  255,  254,  253,  249,  248,
-      240,  239,  238,  237,  236,  233,  232,  231,  227,  224,
-
-      220,  219,  218,  213,  207,  203,  200,  199,  198,  189,
-      169,  148,  122,  107,  104,   43,  100,   98,   97,   88,
-       43, 2372,   11, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372
-
+     2289,   12,   12,   12,   36,   36,   36,   80,   99,   80,
+      101,  101,  101,  116,  116,  116,  189,  867,  189,  210,
+      210,  210,  866,  865,  864,  863,  862,  861,  860,  859,
+      858,  857,  856,  855,  854,  853,  852,  851,  850,  849,
+      848,  847,  846,  845,  844,  843,  842,  841,  840,  839,
+      838,  837,  836,  835,  831,  830,  829,  828,  827,  826,
+      825,  824,  823,  822,  821,  820,  819,  818,  817,  816,
+      815,  814,  813,  812,  811,  810,  809,  808,  805,  804,
+
+      803,  802,  801,  800,  799,  798,  797,  796,  795,  794,
+      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
+      783,  782,  781,  780,  779,  778,  775,  774,  773,  772,
+      771,  770,  769,  768,  767,  766,  765,  764,  763,  762,
+      761,  760,  759,  758,  757,  754,  753,  751,  745,  744,
+      743,  742,  741,  740,  739,  738,  737,  736,  735,  734,
+      733,  732,  731,  730,  729,  728,  727,  726,  725,  724,
+      723,  722,  721,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
+      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
+
+      691,  690,  689,  688,  687,  686,  684,  683,  682,  681,
+      680,  679,  678,  677,  676,  673,  672,  671,  670,  669,
+      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
+      658,  657,  656,  655,  652,  651,  650,  649,  648,  647,
+      646,  645,  644,  643,  639,  638,  629,  628,  627,  626,
+      625,  624,  623,  622,  621,  620,  619,  618,  617,  616,
+      615,  614,  612,  608,  607,  606,  605,  603,  602,  601,
+      600,  599,  596,  595,  594,  593,  592,  591,  590,  589,
+      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
+      578,  575,  574,  573,  572,  571,  570,  569,  568,  565,
+
+      564,  561,  560,  559,  558,  554,  553,  552,  551,  550,
+      549,  548,  547,  546,  545,  544,  543,  542,  541,  537,
+      536,  535,  534,  533,  532,  531,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  511,  510,
+      509,  508,  507,  506,  505,  504,  503,  502,  501,  500,
+      499,  498,  495,  494,  493,  492,  491,  490,  489,  488,
+      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
+      477,  476,  475,  473,  471,  470,  467,  465,  460,  457,
+      456,  453,  452,  451,  449,  448,  447,  445,  444,  443,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+
+      428,  427,  426,  423,  422,  421,  420,  419,  418,  417,
+      416,  415,  414,  413,  410,  406,  405,  404,  401,  399,
+      398,  397,  396,  395,  394,  390,  389,  388,  387,  386,
+      385,  384,  381,  380,  379,  378,  377,  376,  375,  374,
+      373,  372,  371,  370,  369,  368,  367,  366,  365,  364,
+      363,  362,  361,  360,  359,  358,  352,  351,  350,  349,
+      348,  347,  346,  345,  344,  343,  342,  211,  336,  334,
+      329,  326,  325,  318,  317,  316,  315,  313,  311,  307,
+      306,  305,  302,  301,  300,  285,  284,  280,  275,  274,
+      271,  268,  267,  266,  265,  264,  263,  260,  259,  258,
+
+      255,  254,  253,  252,  251,  250,  246,  238,  237,  236,
+      235,  234,  231,  230,  229,  225,  222,  218,  217,  216,
+      211,  205,  201,  198,  197,  196,  187,  167,  147,  140,
+      122,  107,  104,   43,  100,   98,   97,   88,   43, 2290,
+       11, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290
     } ;
 
-static const flex_int16_t yy_chk[2900] =
+static const flex_int16_t yy_chk[2818] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,   44,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  274,    3,    3,    3,   21,    1,    1,    3,    4,
+       21,  271,    3,    3,    3,   21,    1,    1,    3,    4,
         4,    4,   13,    1,   13,    4,    0,    0,    1,   26,
         5,    5,    5,   27,    1,   31,    1,   44,    6,    6,
         6,  109,    1,    1,    7,    7,    7,   37,    7,   37,
-      731,    1,    8,    8,    8,   26,    8,    1,  274,   74,
+      731,    1,    8,    8,    8,   26,    8,    1,  271,   74,
        28,   31,   27,   74,    1,    1,    2,    2,    2,  109,
         2,    2,   32,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    2,    2,    2,    5,    9,    9,    9,   28,
@@ -1878,8 +1843,8 @@ static const flex_int16_t yy_chk[2900] =
        33,    2,    2,    6,   10,   10,   10,   42,    2,   42,
        62,   32,   62,    2,   52,  139,    9,   48,   49,    2,
        51,    2,   55,   62,   10,  131,  131,    2,    2,   33,
-      257,  139,   25,   62,   25,  732,    2,   25,   25,   25,
-       25,   25,    2,   52,   48,   49,   51,  257,   55,    2,
+      254,  139,   25,   62,   25,  732,    2,   25,   25,   25,
+       25,   25,    2,   52,   48,   49,   51,  254,   55,    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,
@@ -1891,298 +1856,289 @@ static const flex_int16_t yy_chk[2900] =
        15,   15,   15,   15,   15,   15,   15,   17,   56,   17,
        17,   17,   17,   17,   19,   91,   19,   19,   19,   19,
        19,   63,   17,   20,   20,   20,   20,   20,   22,   19,
-       22,   22,   22,   22,   22,   56,   20,   53,  182,   54,
-       92,   58,   91,   22,  182,   53,   61,   63,   17,   61,
-       61,   54,   64,   61,   61,   19,   65,   72,   63,   64,
-      106,   72,   20,   53,   65,   54,   61,   92,   58,   22,
-       45,   72,   94,   53,   58,  431,   45,   58,   45,   45,
-
-       54,   45,  172,  172,   45,  101,  106,   45,   66,   57,
-      153,   66,   45,   45,  153,   45,   57,  733,   66,   94,
+       22,   22,   22,   22,   22,   56,   20,   53,  106,   54,
+       92,   58,   91,   22,   65,   53,   61,   63,   17,   61,
+       61,   54,   65,   61,   61,   19,  115,   72,   63,   94,
+      733,   72,   20,   53,  106,   54,   61,   92,   58,   22,
+       45,   72,   95,   53,   58,   71,   45,   58,   45,   45,
+
+       54,   45,  115,   71,   45,   71,   94,   45,   66,   57,
+       71,   66,   45,   45,  734,   45,   57,  112,   66,   95,
        66,   79,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,  101,   60,  431,   79,   57,
-       68,   68,   77,   57,   68,   69,   93,   57,   79,   69,
-       68,  115,  125,   69,  125,   57,   60,  734,   70,   57,
-       60,   57,   57,   60,   60,   69,   70,   60,   77,   69,
-       60,   71,   96,  105,   60,   93,   95,  115,   77,   71,
-       70,   71,   70,   77,   70,   75,   71,   71,  216,   75,
-
-      108,  112,   75,  110,   70,  162,   76,   76,  735,   75,
-       75,   96,  105,   95,   75,   75,   76,   81,   81,   81,
-       81,   81,   89,   89,   89,   89,   89,  108,   76,  112,
-       81,   82,  110,   82,   82,   82,   82,   82,  137,  736,
-      137,  113,   76,   83,   76,   83,   82,   76,   83,   83,
-       83,   83,   83,  114,  162,  216,   81,   76,   85,   85,
-       85,   85,   85,   84,   76,   84,   84,   84,   84,   84,
-      113,   85,   82,   90,   90,   90,   90,   90,   84,  103,
-      119,  114,  123,  127,  160,  737,  103,  142,  138,  149,
-      142,  123,  127,  127,  142,  123,  168,   85,  119,  168,
-
-      168,  138,  149,  169,   84,  138,  177,  169,  173,  119,
-      181,  184,  173,  160,  166,  160,  173,  186,  171,  103,
-      177,  192,  193,  103,  281,  229,  369,  103,  229,  166,
-      166,  166,  369,  194,  281,  103,  265,  195,  181,  103,
-      184,  103,  103,  118,  197,  186,  196,  738,  204,  193,
-      192,  118,  118,  118,  118,  118,  171,  171,  171,  194,
-      118,  118,  118,  118,  118,  118,  195,  171,  201,  171,
-      197,  171,  171,  196,  171,  171,  202,  204,  205,  206,
-      278,  207,  209,  211,  217,  230,  118,  118,  118,  118,
-      118,  118,  265,  230,  201,  265,  310,  294,  310,  230,
-
-      294,  272,  202,  309,  309,  206,  205,  207,  209,  322,
-      217,  211,  215,  215,  215,  215,  215,  318,  325,  278,
-      328,  215,  215,  215,  215,  215,  215,  272,  332,  314,
-      333,  334,  385,  278,  314,  336,  338,  385,  332,  339,
-      682,  682,  590,  318,  325,  347,  328,  215,  215,  215,
-      215,  215,  215,  406,  407,  398,  398,  318,  334,  333,
-      398,  336,  739,  406,  322,  338,  339,  344,  344,  344,
-      344,  344,  473,  479,  347,  740,  344,  344,  344,  344,
-      344,  344,  424,  407,  484,  434,  444,  424,  385,  434,
-      444,  465,  481,  385,  481,  506,  465,  590,  741,  479,
-
-      742,  473,  344,  344,  344,  344,  344,  344,  506,  518,
-      506,  503,  551,  484,  518,  503,  623,  551,  744,  745,
-      481,  540,  481,  503,  619,  503,  503,  503,  503,  503,
-      625,  540,  624,  627,  631,  746,  747,  651,  627,  619,
-      651,  631,  623,  424,  482,  482,  482,  482,  482,  749,
-      619,  748,  750,  482,  482,  482,  482,  482,  482,  625,
-      624,  708,  748,  751,  752,  753,  708,  754,  619,  755,
-      756,  757,  758,  759,  761,  762,  764,  765,  767,  482,
-      482,  482,  482,  482,  482,  766,  769,  768,  770,  771,
-      772,  773,  774,  775,  776,  777,  778,  779,  781,  782,
-
-      780,  784,  785,  708,  765,  764,  780,  767,  783,  783,
-      786,  783,  766,  768,  787,  788,  789,  790,  791,  792,
-      793,  794,  795,  796,  797,  798,  799,  800,  801,  802,
-      803,  804,  805,  806,  807,  808,  805,  809,  810,  811,
-      805,  812,  814,  815,  816,  817,  818,  819,  820,  821,
-      822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
-      832,  833,  820,  834,  833,  835,  836,  838,  839,  840,
-      841,  842,  843,  844,  845,  846,  847,  848,  849,  850,
-      852,  853,  854,  855,  856,  857,  858,  859,  860,  861,
-      862,  863,  864,  865,  866,  867,  868,  869,  870,  871,
+       45,   45,   45,   45,   45,  112,   60,  101,   79,   57,
+       68,   68,  735,   57,   68,   69,  108,   57,   79,   69,
+       68,  736,   93,   69,  214,   57,   60,   77,   70,   57,
+       60,   57,   57,   60,   60,   69,   70,   60,  114,   69,
+       60,   75,  737,  108,   60,   75,   96,  101,   75,  105,
+       70,   93,   70,   77,   70,   75,   75,   76,   76,  738,
+
+       75,   75,  110,   77,   70,  152,  114,   76,   77,  152,
+       81,   81,   81,   81,   81,   96,  113,  739,  105,   76,
+      127,  214,   82,   81,   82,   82,   82,   82,   82,  127,
+      127,  110,  119,   76,   83,   76,   83,   82,   76,   83,
+       83,   83,   83,   83,  103,  113,  170,  170,   76,   81,
+      119,  103,  161,  740,   84,   76,   84,   84,   84,   84,
+       84,  119,  148,   82,   85,   85,   85,   85,   85,   84,
+       89,   89,   89,   89,   89,  148,  123,   85,   90,   90,
+       90,   90,   90,  141,  103,  123,  141,  179,  103,  123,
+      141,  125,  103,  125,  137,   84,  137,  138,  192,  180,
+
+      103,  161,  159,   85,  103,  180,  103,  103,  118,  166,
+      138,  182,  166,  166,  138,  179,  118,  118,  118,  118,
+      118,  164,  169,  191,  192,  118,  118,  118,  118,  118,
+      118,  159,  175,  159,  190,  171,  164,  164,  164,  171,
+      182,  184,  195,  171,  199,  193,  175,  741,  194,  203,
+      191,  118,  118,  118,  118,  118,  118,  200,  202,  204,
+      169,  169,  169,  190,  205,  207,  209,  215,  195,  184,
+      199,  169,  228,  169,  193,  194,  169,  203,  169,  169,
+      228,  227,  262,  200,  227,  204,  228,  202,  269,  275,
+      205,  207,  277,  215,  209,  213,  213,  213,  213,  213,
+
+      289,  316,  277,  289,  213,  213,  213,  213,  213,  213,
+      303,  303,  308,  304,  269,  304,  326,  308,  312,  319,
+      322,  327,  328,  332,  341,  330,  326,  333,  275,  399,
+      213,  213,  213,  213,  213,  213,  400,  363,  262,  399,
+      422,  262,  275,  363,  312,  319,  322,  576,  617,  328,
+      327,  330,  332,  341,  333,  617,  316,  463,  312,  338,
+      338,  338,  338,  338,  469,  400,  667,  667,  338,  338,
+      338,  338,  338,  338,  378,  391,  391,  416,  474,  378,
+      391,  425,  416,  434,  455,  425,  463,  434,  496,  455,
+      469,  471,  422,  471,  338,  338,  338,  338,  338,  338,
+
+      493,  496,  576,  496,  493,  508,  540,  474,  609,  610,
+      508,  540,  493,  529,  493,  493,  493,  493,  493,  471,
+      743,  471,  613,  529,  744,  611,  751,  613,  637,  605,
+      378,  637,  747,  746,  609,  378,  730,  610,  416,  472,
+      472,  472,  472,  472,  605,  748,  752,  730,  472,  472,
+      472,  472,  472,  472,  611,  605,  693,  749,  750,  747,
+      753,  693,  746,  754,  755,  756,  757,  758,  759,  760,
+      761,  763,  748,  605,  472,  472,  472,  472,  472,  472,
+      764,  762,  765,  765,  750,  765,  749,  762,  766,  767,
+      768,  769,  770,  771,  772,  773,  774,  775,  693,  776,
+
+      777,  778,  779,  780,  781,  782,  783,  784,  785,  786,
+      787,  788,  789,  790,  787,  791,  792,  793,  787,  795,
+      796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
+      806,  807,  808,  809,  810,  811,  812,  813,  814,  801,
+      815,  814,  816,  817,  819,  820,  821,  822,  823,  824,
+      825,  826,  827,  828,  829,  830,  831,  833,  834,  835,
+      836,  837,  838,  839,  840,  841,  842,  843,  844,  845,
+      846,  847,  848,  849,  850,  851,  852,  853,  854,  855,
+      856,  857,  858,  859,  859,  860,  861,  862,  857,  864,
+      863,  859,  865,  866,  867,  859,  863,  869,  870,  871,
 
       872,  873,  874,  875,  876,  877,  878,  879,  880,  881,
-      881,  882,  883,  884,  879,  886,  885,  881,  887,  888,
-      889,  881,  885,  891,  892,  893,  894,  895,  896,  897,
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      908,  909,  910,  911,  912,  913,  914,  915,  916,  917,
-      918,  919,  920,  921,  922,  924,  925,  926,  927,  928,
-      929,  930,  931,  932,  905,  933,  934,  906,  935,  936,
-      909,  937,  938,  939,  940,  941,  942,  943,  944,  945,
-      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
-      957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
-
-      962,  967,  968,  969,  970,  971,  972,  973,  974,  977,
-      978,  979,  980,  981,  982,  985,  986,  987,  988,  989,
-      990,  991,  993,  994,  995,  996,  997,  994,  998,  999,
-     1000, 1001, 1002, 1003, 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, 1041, 1042, 1043,
-     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1059, 1057, 1060, 1061, 1058, 1062, 1063,
-     1064, 1065, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-
-     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1055, 1054,
-     1083, 1056, 1057, 1058, 1084, 1085, 1086, 1087, 1088, 1089,
-     1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098, 1099, 1100,
-     1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1110, 1111,
-     1112, 1113, 1114, 1115, 1116, 1117, 1119, 1120, 1121, 1122,
-     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
-     1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
-     1143, 1144, 1145, 1146, 1148, 1149, 1150, 1151, 1152, 1154,
-     1155, 1143, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
-     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1174,
-
-     1175, 1176, 1177, 1178, 1115, 1179, 1180, 1181, 1182, 1183,
-     1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
-     1194, 1195, 1197, 1196, 1198, 1200, 1201, 1202, 1203, 1204,
-     1205, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215, 1216,
-     1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1194,
-     1196, 1197, 1198, 1226, 1227, 1228, 1230, 1231, 1232, 1233,
-     1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
-     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1253, 1254,
-     1255, 1256, 1257, 1253, 1258, 1259, 1260, 1261, 1262, 1263,
-     1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273,
-
-     1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
-     1284, 1285, 1286, 1287, 1289, 1290, 1291, 1292, 1293, 1294,
-     1295, 1296, 1297, 1298, 1299, 1300, 1254, 1302, 1303, 1304,
-     1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
-     1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325,
-     1326, 1327, 1329, 1330, 1331, 1333, 1332, 1334, 1335, 1336,
-     1337, 1338, 1339, 1340, 1342, 1343, 1344, 1345, 1346, 1347,
-     1348, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1330,
-     1358, 1329, 1332, 1331, 1333, 1360, 1361, 1362, 1363, 1364,
-     1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374,
-
-     1375, 1376, 1377, 1378, 1379, 1381, 1382, 1384, 1386, 1387,
-     1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397,
-     1398, 1399, 1401, 1403, 1404, 1405, 1406, 1408, 1409, 1410,
-     1411, 1412, 1413, 1414, 1416, 1418, 1420, 1421, 1422, 1423,
-     1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433,
-     1434, 1435, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444,
-     1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456,
-     1457, 1458, 1459, 1460, 1461, 1463, 1464, 1465, 1466, 1467,
-     1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478,
-     1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1458, 1459,
-
-     1428, 1487, 1460, 1488, 1489, 1490, 1491, 1492, 1493, 1495,
-     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1469, 1513, 1514,
-     1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1524, 1516,
-     1525, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
-     1537, 1538, 1539, 1540, 1542, 1543, 1544, 1545, 1546, 1547,
-     1548, 1550, 1545, 1550, 1551, 1553, 1554, 1557, 1558, 1559,
-     1560, 1561, 1562, 1563, 1564, 1565, 1567, 1568, 1569, 1570,
-     1571, 1572, 1573, 1576, 1570, 1574, 1577, 1578, 1579, 1580,
-     1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
-
-     1592, 1593, 1594, 1595, 1596, 1597, 1573, 1572, 1598, 1571,
-     1599, 1574, 1600, 1602, 1603, 1604, 1606, 1607, 1608, 1609,
-     1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
-     1621, 1623, 1624, 1626, 1573, 1627, 1628, 1629, 1630, 1631,
-     1632, 1633, 1634, 1636, 1637, 1638, 1639, 1640, 1641, 1642,
-     1643, 1644, 1645, 1648, 1649, 1651, 1652, 1653, 1655, 1656,
-     1655, 1657, 1658, 1655, 1659, 1660, 1655, 1661, 1662, 1663,
-     1664, 1665, 1666, 1667, 1668, 1669, 1670, 1672, 1674, 1675,
-     1677, 1678, 1679, 1681, 1680, 1682, 1684, 1686, 1687, 1688,
-     1690, 1691, 1692, 1693, 1694, 1695, 1696, 1698, 1699, 1700,
-
-     1697, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1678, 1679,
-     1680, 1697, 1681, 1682, 1708, 1709, 1710, 1711, 1712, 1713,
-     1714, 1715, 1716, 1717, 1718, 1719, 1719, 1720, 1721, 1722,
-     1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
-     1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742,
-     1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752,
-     1753, 1754, 1755, 1756, 1758, 1759, 1760, 1761, 1762, 1763,
-     1764, 1765, 1766, 1767, 1769, 1770, 1771, 1773, 1774, 1775,
-     1777, 1776, 1778, 1780, 1781, 1784, 1785, 1786, 1720, 1788,
-     1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798,
-
-     1799, 1800, 1801, 1803, 1805, 1775, 1806, 1774, 1776, 1777,
-     1807, 1778, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1816,
-     1817, 1818, 1819, 1820, 1822, 1823, 1825, 1826, 1827, 1829,
-     1830, 1831, 1833, 1834, 1837, 1838, 1839, 1840, 1841, 1842,
-     1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852,
-     1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862,
-     1863, 1864, 1866, 1867, 1868, 1869, 1870, 1871, 1873, 1874,
-     1875, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
-     1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895,
-     1867, 1869, 1896, 1897, 1899, 1900, 1901, 1903, 1904, 1905,
-
-     1906, 1907, 1909, 1910, 1911, 1912, 1913, 1915, 1916, 1917,
-     1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927,
-     1928, 1929, 1930, 1931, 1933, 1934, 1936, 1938, 1939, 1941,
-     1942, 1936, 1943, 1944, 1946, 1948, 1951, 1949, 1953, 1954,
-     1955, 1956, 1957, 1958, 1959, 1960, 1962, 1963, 1964, 1965,
-     1967, 1968, 1969, 1970, 1971, 1972, 1974, 1975, 1976, 1977,
-     1978, 1979, 1948, 1949, 1980, 1981, 1982, 1983, 1985, 1986,
-     1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-     1998, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010,
-     2011, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022,
-
-     2023, 2024, 2025, 2027, 2028, 2029, 2030, 2031, 2032, 2033,
-     2034, 2035, 2036, 2037, 2038, 2039, 2041, 2042, 2015, 2016,
-     2044, 2017, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052,
-     2054, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064,
-     2065, 2066, 2067, 2068, 2066, 2069, 2070, 2071, 2072, 2073,
-     2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083,
-     2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094,
-     2095, 2096, 2097, 2098, 2071, 2073, 2100, 2104, 2106, 2107,
-     2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117,
-     2118, 2119, 2120, 2121, 2122, 2123, 2125, 2127, 2128, 2129,
-
-     2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139,
-     2140, 2141, 2142, 2144, 2145, 2146, 2147, 2148, 2149, 2151,
-     2153, 2123, 2156, 2125, 2158, 2159, 2160, 2161, 2162, 2163,
-     2164, 2166, 2168, 2169, 2171, 2170, 2172, 2173, 2174, 2175,
-     2176, 2177, 2179, 2180, 2181, 2182, 2183, 2184, 2186, 2187,
-     2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197,
-     2169, 2170, 2198, 2200, 2201, 2202, 2203, 2204, 2205, 2206,
-     2207, 2208, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217,
-     2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228,
-     2229, 2230, 2231, 2232, 2205, 2233, 2234, 2235, 2236, 2237,
-
-     2238, 2241, 2242, 2243, 2245, 2246, 2247, 2248, 2250, 2251,
-     2252, 2253, 2254, 2255, 2259, 2262, 2263, 2264, 2265, 2266,
-     2267, 2268, 2270, 2271, 2273, 2274, 2275, 2276, 2277, 2278,
-     2279, 2280, 2281, 2282, 2284, 2285, 2286, 2287, 2288, 2289,
-     2291, 2292, 2294, 2296, 2297, 2298, 2299, 2300, 2301, 2302,
-     2303, 2305, 2306, 2307, 2308, 2309, 2308, 2310, 2311, 2312,
-     2314, 2315, 2317, 2320, 2321, 2322, 2323, 2324, 2325, 2326,
-     2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336,
-     2337, 2339, 2340, 2341, 2342, 2343, 2346, 2347, 2348, 2349,
-     2351, 2352, 2354, 2355, 2357, 2359, 2360, 2362, 2363, 2364,
-
-     2365, 2366, 2368, 2373, 2373, 2373, 2374, 2374, 2374, 2375,
-     2376, 2375, 2377, 2377, 2377, 2378, 2378, 2378, 2379,  730,
-     2379, 2380, 2380, 2380,  729,  727,  726,  725,  724,  723,
-      722,  721,  720,  719,  718,  716,  715,  714,  713,  712,
-      711,  710,  709,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  696,  695,  694,  693,  692,  691,  690,
-      689,  688,  687,  686,  685,  684,  683,  681,  680,  679,
-      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
-      668,  666,  665,  664,  663,  662,  661,  660,  659,  658,
-      657,  656,  655,  654,  653,  652,  650,  649,  648,  647,
-
-      646,  645,  644,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  630,  629,  626,  618,  617,
-      616,  615,  614,  613,  612,  610,  609,  607,  606,  604,
-      603,  602,  601,  600,  599,  598,  597,  596,  595,  594,
-      593,  592,  591,  589,  588,  587,  586,  585,  584,  583,
-      582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
-      572,  571,  569,  568,  566,  565,  564,  563,  562,  561,
-      560,  559,  558,  557,  556,  555,  554,  553,  552,  550,
-      549,  547,  546,  545,  544,  543,  542,  541,  539,  538,
-      537,  536,  535,  534,  533,  532,  531,  530,  529,  528,
-
-      527,  526,  525,  524,  522,  521,  520,  519,  517,  516,
-      515,  514,  513,  512,  511,  510,  508,  507,  505,  504,
-      501,  500,  499,  498,  497,  496,  494,  493,  492,  491,
-      490,  489,  488,  487,  486,  485,  483,  478,  476,  475,
-      474,  472,  471,  470,  467,  466,  464,  463,  461,  460,
-      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
-      449,  448,  447,  446,  445,  443,  442,  441,  440,  439,
-      438,  437,  436,  435,  433,  432,  430,  428,  427,  426,
-      425,  423,  422,  421,  420,  419,  418,  417,  416,  415,
-      414,  413,  412,  411,  410,  408,  405,  404,  403,  402,
-
-      401,  400,  399,  397,  396,  395,  394,  393,  392,  391,
-      390,  389,  388,  387,  386,  384,  383,  382,  381,  380,
-      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
-      368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
-      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
-      348,  346,  343,  341,  337,  335,  331,  324,  323,  321,
-      320,  319,  317,  316,  315,  313,  312,  311,  308,  307,
-      306,  305,  304,  303,  302,  301,  300,  299,  298,  297,
-      296,  295,  293,  292,  291,  290,  289,  288,  287,  286,
-      285,  284,  283,  282,  280,  279,  277,  276,  275,  273,
-
-      271,  270,  269,  268,  267,  266,  264,  263,  262,  261,
-      260,  259,  258,  256,  255,  253,  252,  251,  250,  249,
-      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
-      238,  237,  236,  235,  234,  233,  232,  231,  228,  227,
-      226,  225,  224,  223,  222,  221,  220,  219,  218,  212,
-      210,  208,  203,  200,  198,  190,  189,  188,  187,  185,
-      183,  180,  179,  178,  176,  175,  174,  170,  167,  165,
-      164,  163,  161,  159,  158,  157,  156,  155,  154,  152,
-      151,  150,  148,  147,  146,  145,  144,  143,  141,  140,
-      136,  135,  134,  133,  132,  130,  129,  128,  126,  124,
-
-      122,  121,  120,  116,  111,  107,  104,   99,   98,   78,
-       73,   67,   59,   50,   47,   43,   41,   39,   38,   24,
-       14,   11, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372,
-     2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372
+      882,  883,  884,  885,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  895,  896,  897,  898,  899,  900,  902,
+      903,  904,  905,  906,  907,  908,  909,  910,  883,  911,
+      912,  884,  913,  914,  887,  915,  916,  917,  918,  919,
+      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
+      930,  931,  932,  933,  935,  936,  937,  938,  939,  940,
+      941,  942,  943,  939,  944,  945,  946,  947,  948,  949,
+      950,  951,  954,  955,  956,  957,  958,  959,  962,  963,
+      964,  965,  966,  967,  968,  970,  971,  972,  973,  974,
+
+      971,  975,  976,  977,  978,  979,  983,  984,  985,  986,
+      987,  988,  989,  990,  991,  992,  993,  994,  995,  996,
+      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
+     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1015, 1016, 1017,
+     1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
+     1028, 1029, 1030, 1033, 1031, 1034, 1035, 1032, 1036, 1037,
+     1038, 1039, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
+     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1029, 1028,
+     1057, 1030, 1031, 1032, 1058, 1059, 1060, 1061, 1062, 1063,
+     1064, 1065, 1066, 1067, 1069, 1070, 1071, 1072, 1073, 1074,
+
+     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1083, 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, 1111, 1112, 1113, 1114, 1115, 1116,
+     1117, 1118, 1120, 1121, 1122, 1123, 1125, 1126, 1127, 1128,
+     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
+     1139, 1140, 1141, 1142, 1144, 1145, 1146, 1147, 1148, 1149,
+     1150, 1151, 1152, 1088, 1153, 1154, 1155, 1156, 1157, 1158,
+     1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1166, 1168,
+     1170, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1181,
+
+     1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
+     1192, 1193, 1194, 1195, 1164, 1166, 1167, 1168, 1196, 1197,
+     1198, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
+     1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
+     1219, 1220, 1222, 1223, 1224, 1225, 1226, 1222, 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, 1255, 1256, 1257, 1258, 1259,
+     1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1271,
+     1223, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280,
+
+     1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
+     1291, 1292, 1294, 1295, 1296, 1298, 1297, 1299, 1300, 1301,
+     1302, 1303, 1304, 1305, 1307, 1308, 1309, 1310, 1311, 1312,
+     1313, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1295,
+     1323, 1294, 1297, 1296, 1298, 1325, 1326, 1327, 1328, 1329,
+     1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
+     1340, 1341, 1342, 1343, 1345, 1346, 1348, 1350, 1351, 1352,
+     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+     1363, 1365, 1367, 1368, 1369, 1370, 1372, 1373, 1374, 1375,
+     1376, 1378, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
+
+     1389, 1390, 1391, 1392, 1393, 1394, 1395, 1397, 1398, 1399,
+     1400, 1401, 1402, 1403, 1404, 1407, 1408, 1409, 1410, 1411,
+     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
+     1423, 1424, 1425, 1426, 1427, 1429, 1430, 1431, 1432, 1433,
+     1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443,
+     1444, 1445, 1446, 1418, 1419, 1388, 1447, 1420, 1448, 1449,
+     1450, 1451, 1452, 1453, 1455, 1456, 1457, 1458, 1459, 1460,
+     1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470,
+     1471, 1472, 1429, 1473, 1474, 1475, 1476, 1477, 1478, 1479,
+     1480, 1481, 1483, 1475, 1484, 1487, 1488, 1489, 1490, 1491,
+
+     1492, 1493, 1494, 1495, 1496, 1498, 1499, 1500, 1501, 1502,
+     1503, 1505, 1500, 1505, 1506, 1508, 1509, 1512, 1513, 1514,
+     1515, 1516, 1517, 1518, 1519, 1520, 1522, 1523, 1524, 1525,
+     1526, 1527, 1528, 1531, 1525, 1529, 1532, 1533, 1534, 1535,
+     1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546,
+     1547, 1548, 1549, 1550, 1551, 1552, 1528, 1527, 1553, 1526,
+     1554, 1529, 1555, 1557, 1558, 1559, 1561, 1562, 1563, 1564,
+     1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575,
+     1577, 1578, 1580, 1581, 1528, 1582, 1583, 1584, 1585, 1586,
+     1587, 1588, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1599,
+
+     1600, 1602, 1603, 1605, 1606, 1605, 1607, 1608, 1605, 1609,
+     1610, 1605, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
+     1619, 1620, 1622, 1624, 1625, 1627, 1628, 1629, 1631, 1630,
+     1632, 1634, 1636, 1637, 1638, 1640, 1641, 1642, 1643, 1644,
+     1645, 1646, 1648, 1649, 1650, 1647, 1651, 1652, 1653, 1654,
+     1655, 1656, 1657, 1628, 1629, 1630, 1647, 1631, 1632, 1658,
+     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668,
+     1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
+     1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
+     1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697,
 
+     1698, 1699, 1700, 1701, 1703, 1704, 1705, 1706, 1707, 1708,
+     1709, 1710, 1711, 1712, 1714, 1715, 1716, 1718, 1719, 1720,
+     1722, 1721, 1723, 1725, 1726, 1729, 1730, 1731, 1733, 1734,
+     1735, 1736, 1669, 1737, 1738, 1739, 1740, 1741, 1742, 1743,
+     1744, 1745, 1746, 1748, 1750, 1720, 1751, 1719, 1721, 1722,
+     1752, 1723, 1753, 1754, 1755, 1756, 1757, 1758, 1760, 1761,
+     1762, 1763, 1764, 1766, 1767, 1769, 1770, 1771, 1773, 1774,
+     1775, 1777, 1778, 1781, 1782, 1783, 1784, 1785, 1786, 1787,
+     1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797,
+     1798, 1799, 1800, 1801, 1802, 1803, 1804, 1806, 1807, 1808,
+
+     1809, 1810, 1811, 1813, 1814, 1815, 1817, 1818, 1819, 1820,
+     1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830,
+     1831, 1832, 1833, 1834, 1835, 1807, 1809, 1836, 1838, 1839,
+     1840, 1842, 1843, 1844, 1845, 1846, 1848, 1849, 1850, 1851,
+     1852, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862,
+     1863, 1864, 1865, 1866, 1868, 1869, 1871, 1873, 1874, 1876,
+     1877, 1871, 1878, 1879, 1881, 1883, 1886, 1884, 1888, 1889,
+     1890, 1891, 1892, 1893, 1894, 1895, 1897, 1898, 1899, 1900,
+     1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911,
+     1912, 1913, 1883, 1884, 1914, 1915, 1916, 1917, 1919, 1920,
+
+     1921, 1923, 1924, 1925, 1926, 1927, 1928, 1930, 1931, 1932,
+     1933, 1935, 1937, 1938, 1939, 1940, 1941, 1944, 1945, 1946,
+     1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1957,
+     1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
+     1968, 1969, 1971, 1972, 1945, 1946, 1974, 1947, 1975, 1976,
+     1977, 1978, 1979, 1980, 1982, 1983, 1984, 1985, 1986, 1987,
+     1988, 1989, 1990, 1991, 1992, 1993, 1994, 1992, 1995, 1996,
+     1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+     2007, 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017,
+     2018, 2019, 2020, 2021, 2022, 2023, 2024, 1997, 1999, 2026,
+
+     2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039,
+     2040, 2041, 2042, 2043, 2044, 2045, 2046, 2048, 2050, 2051,
+     2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061,
+     2062, 2063, 2064, 2065, 2067, 2068, 2069, 2070, 2071, 2072,
+     2075, 2077, 2046, 2079, 2048, 2080, 2081, 2082, 2083, 2084,
+     2085, 2087, 2089, 2090, 2092, 2091, 2093, 2094, 2095, 2096,
+     2097, 2098, 2100, 2101, 2102, 2103, 2104, 2105, 2107, 2108,
+     2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118,
+     2090, 2091, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127,
+     2128, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2139,
+
+     2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149,
+     2150, 2151, 2152, 2125, 2153, 2154, 2155, 2156, 2157, 2160,
+     2161, 2162, 2164, 2165, 2166, 2167, 2169, 2170, 2171, 2172,
+     2173, 2174, 2177, 2180, 2181, 2182, 2183, 2184, 2185, 2186,
+     2188, 2189, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198,
+     2199, 2200, 2202, 2203, 2204, 2205, 2206, 2207, 2209, 2210,
+     2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2223,
+     2224, 2225, 2226, 2227, 2226, 2228, 2229, 2230, 2232, 2233,
+     2235, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246,
+     2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2257,
+
+     2258, 2259, 2260, 2261, 2264, 2265, 2266, 2267, 2269, 2270,
+     2272, 2273, 2275, 2277, 2278, 2280, 2281, 2282, 2283, 2284,
+     2286, 2291, 2291, 2291, 2292, 2292, 2292, 2293, 2294, 2293,
+     2295, 2295, 2295, 2296, 2296, 2296, 2297,  729, 2297, 2298,
+     2298, 2298,  728,  727,  726,  724,  723,  722,  721,  720,
+      719,  718,  717,  716,  715,  714,  713,  712,  710,  709,
+      708,  707,  706,  705,  704,  703,  702,  700,  699,  698,
+      697,  696,  695,  694,  692,  691,  690,  689,  688,  687,
+      686,  685,  684,  683,  681,  680,  679,  678,  677,  676,
+      675,  674,  673,  672,  671,  670,  669,  668,  666,  665,
+
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  652,  651,  650,  649,  648,  647,  646,  645,  644,
+      643,  642,  641,  640,  639,  638,  636,  635,  634,  633,
+      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  616,  615,  612,  604,  603,
+      602,  601,  600,  599,  598,  596,  595,  593,  592,  590,
+      589,  588,  587,  586,  585,  584,  583,  582,  581,  580,
+      579,  578,  577,  575,  574,  573,  572,  571,  570,  569,
+      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
+      557,  556,  554,  553,  552,  551,  550,  549,  548,  547,
+
+      546,  545,  544,  543,  542,  541,  539,  538,  536,  535,
+      534,  533,  532,  531,  530,  528,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
+      513,  511,  510,  509,  507,  506,  505,  504,  503,  502,
+      501,  500,  498,  497,  495,  494,  491,  490,  489,  488,
+      487,  486,  484,  483,  482,  481,  480,  479,  478,  477,
+      476,  475,  473,  468,  466,  465,  464,  462,  461,  460,
+      457,  456,  454,  453,  451,  450,  449,  448,  447,  446,
+      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
+      435,  433,  432,  431,  430,  429,  428,  427,  426,  424,
+
+      423,  421,  419,  418,  417,  415,  414,  413,  412,  411,
+      410,  409,  408,  407,  406,  405,  404,  403,  401,  398,
+      397,  396,  395,  394,  393,  392,  390,  389,  388,  387,
+      386,  385,  384,  383,  382,  381,  380,  379,  377,  376,
+      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  362,  361,  360,  359,  358,  357,  356,  355,
+      354,  353,  352,  351,  350,  349,  348,  347,  346,  345,
+      344,  343,  342,  340,  337,  335,  331,  329,  325,  318,
+      317,  315,  314,  313,  311,  310,  309,  307,  306,  305,
+      302,  301,  300,  299,  298,  297,  296,  295,  294,  293,
+
+      292,  291,  290,  288,  287,  286,  285,  284,  283,  282,
+      281,  280,  279,  278,  276,  274,  273,  272,  270,  268,
+      267,  266,  265,  264,  263,  261,  260,  259,  258,  257,
+      256,  255,  253,  252,  250,  249,  248,  247,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
+      234,  233,  232,  231,  230,  229,  226,  225,  224,  223,
+      222,  221,  220,  219,  218,  217,  216,  210,  208,  206,
+      201,  198,  196,  188,  187,  186,  185,  183,  181,  178,
+      177,  176,  174,  173,  172,  168,  167,  165,  163,  162,
+      160,  158,  157,  156,  155,  154,  153,  151,  150,  149,
+
+      147,  146,  145,  144,  143,  142,  140,  136,  135,  134,
+      133,  132,  130,  129,  128,  126,  124,  122,  121,  120,
+      116,  111,  107,  104,   99,   98,   78,   73,   67,   64,
+       59,   50,   47,   43,   41,   39,   38,   24,   14,   11,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+
+     2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
+     2290, 2290, 2290, 2290, 2290, 2290, 2290
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2191,7 +2147,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[235] =
+static const flex_int16_t yy_rule_linenum[230] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  254,  264,
@@ -2212,13 +2168,12 @@ static const flex_int16_t yy_rule_linenum[235] =
      1596, 1605, 1614, 1623, 1632, 1641, 1650, 1659, 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, 1923, 1935, 1945, 1955,
-     1965, 1975, 1985, 1995, 2005, 2015, 2025, 2034, 2043, 2052,
+     1866, 1877, 1888, 1898, 1908, 1918, 1928, 1938, 1948, 1958,
+     1968, 1978, 1987, 1996, 2005, 2014, 2025, 2036, 2049, 2062,
 
-     2061, 2072, 2083, 2096, 2109, 2122, 2131, 2140, 2149, 2158,
-     2167, 2176, 2185, 2194, 2206, 2215, 2316, 2332, 2381, 2389,
-     2404, 2405, 2406, 2407, 2408, 2409, 2411, 2429, 2442, 2447,
-     2451, 2453, 2455, 2457
+     2075, 2084, 2093, 2102, 2111, 2120, 2129, 2138, 2147, 2159,
+     2168, 2269, 2285, 2334, 2342, 2357, 2358, 2359, 2360, 2361,
+     2362, 2364, 2382, 2395, 2400, 2404, 2406, 2408, 2410
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2273,7 +2228,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 2276 "dhcp4_lexer.cc"
+#line 2232 "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
@@ -2299,8 +2254,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 2302 "dhcp4_lexer.cc"
-#line 2303 "dhcp4_lexer.cc"
+#line 2258 "dhcp4_lexer.cc"
+#line 2259 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2628,7 +2583,7 @@ YY_DECL
     }
 
 
-#line 2631 "dhcp4_lexer.cc"
+#line 2587 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2657,13 +2612,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 >= 2373 )
+                               if ( yy_current_state >= 2291 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 2372 );
+               while ( yy_current_state != 2290 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2682,13 +2637,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 < 235 )
+                       else if ( yy_act < 230 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 235 )
+                       else if ( yy_act == 230 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 236 )
+                       else if ( yy_act == 231 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -4890,18 +4845,6 @@ YY_RULE_SETUP
 case 174:
 YY_RULE_SETUP
 #line 1803 "dhcp4_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp4Parser::make_QUALIFYING_SUFFIX(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("qualifying-suffix", driver.loc_);
-    }
-}
-       YY_BREAK
-case 175:
-YY_RULE_SETUP
-#line 1812 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4911,9 +4854,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 175:
 YY_RULE_SETUP
-#line 1821 "dhcp4_lexer.ll"
+#line 1812 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4923,9 +4866,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 176:
 YY_RULE_SETUP
-#line 1830 "dhcp4_lexer.ll"
+#line 1821 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4935,9 +4878,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 177:
 YY_RULE_SETUP
-#line 1839 "dhcp4_lexer.ll"
+#line 1830 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4947,9 +4890,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 178:
 YY_RULE_SETUP
-#line 1848 "dhcp4_lexer.ll"
+#line 1839 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4959,9 +4902,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 179:
 YY_RULE_SETUP
-#line 1857 "dhcp4_lexer.ll"
+#line 1848 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4971,9 +4914,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 180:
 YY_RULE_SETUP
-#line 1866 "dhcp4_lexer.ll"
+#line 1857 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4983,61 +4926,12 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
-YY_RULE_SETUP
-#line 1875 "dhcp4_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp4Parser::make_OVERRIDE_NO_UPDATE(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("override-no-update", driver.loc_);
-    }
-}
-       YY_BREAK
-case 183:
-YY_RULE_SETUP
-#line 1884 "dhcp4_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("override-client-update", driver.loc_);
-    }
-}
-       YY_BREAK
-case 184:
-YY_RULE_SETUP
-#line 1893 "dhcp4_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp4Parser::make_REPLACE_CLIENT_NAME(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("replace-client-name", driver.loc_);
-    }
-}
-       YY_BREAK
-case 185:
-YY_RULE_SETUP
-#line 1902 "dhcp4_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp4Parser::make_GENERATED_PREFIX(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("generated-prefix", driver.loc_);
-    }
-}
-       YY_BREAK
-case 186:
+case 181:
 YY_RULE_SETUP
-#line 1911 "dhcp4_lexer.ll"
+#line 1866 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
     case isc::dhcp::Parser4Context::SUBNET4:
     case isc::dhcp::Parser4Context::SHARED_NETWORK:
         return isc::dhcp::Dhcp4Parser::make_HOSTNAME_CHAR_SET(driver.loc_);
@@ -5046,13 +4940,12 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 187:
+case 182:
 YY_RULE_SETUP
-#line 1923 "dhcp4_lexer.ll"
+#line 1877 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
-    case isc::dhcp::Parser4Context::DHCP_DDNS:
     case isc::dhcp::Parser4Context::SUBNET4:
     case isc::dhcp::Parser4Context::SHARED_NETWORK:
         return isc::dhcp::Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT(driver.loc_);
@@ -5061,9 +4954,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 188:
+case 183:
 YY_RULE_SETUP
-#line 1935 "dhcp4_lexer.ll"
+#line 1888 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -5074,9 +4967,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 189:
+case 184:
 YY_RULE_SETUP
-#line 1945 "dhcp4_lexer.ll"
+#line 1898 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -5087,9 +4980,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 190:
+case 185:
 YY_RULE_SETUP
-#line 1955 "dhcp4_lexer.ll"
+#line 1908 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -5100,9 +4993,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 191:
+case 186:
 YY_RULE_SETUP
-#line 1965 "dhcp4_lexer.ll"
+#line 1918 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5113,9 +5006,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 192:
+case 187:
 YY_RULE_SETUP
-#line 1975 "dhcp4_lexer.ll"
+#line 1928 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5126,9 +5019,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 193:
+case 188:
 YY_RULE_SETUP
-#line 1985 "dhcp4_lexer.ll"
+#line 1938 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5139,9 +5032,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 194:
+case 189:
 YY_RULE_SETUP
-#line 1995 "dhcp4_lexer.ll"
+#line 1948 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5152,9 +5045,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 195:
+case 190:
 YY_RULE_SETUP
-#line 2005 "dhcp4_lexer.ll"
+#line 1958 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5165,9 +5058,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 196:
+case 191:
 YY_RULE_SETUP
-#line 2015 "dhcp4_lexer.ll"
+#line 1968 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -5178,9 +5071,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 197:
+case 192:
 YY_RULE_SETUP
-#line 2025 "dhcp4_lexer.ll"
+#line 1978 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -5190,9 +5083,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 198:
+case 193:
 YY_RULE_SETUP
-#line 2034 "dhcp4_lexer.ll"
+#line 1987 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -5202,9 +5095,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 199:
+case 194:
 YY_RULE_SETUP
-#line 2043 "dhcp4_lexer.ll"
+#line 1996 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -5214,9 +5107,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 200:
+case 195:
 YY_RULE_SETUP
-#line 2052 "dhcp4_lexer.ll"
+#line 2005 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5226,9 +5119,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 201:
+case 196:
 YY_RULE_SETUP
-#line 2061 "dhcp4_lexer.ll"
+#line 2014 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5240,9 +5133,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 202:
+case 197:
 YY_RULE_SETUP
-#line 2072 "dhcp4_lexer.ll"
+#line 2025 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5254,9 +5147,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 203:
+case 198:
 YY_RULE_SETUP
-#line 2083 "dhcp4_lexer.ll"
+#line 2036 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5270,9 +5163,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 204:
+case 199:
 YY_RULE_SETUP
-#line 2096 "dhcp4_lexer.ll"
+#line 2049 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5286,9 +5179,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 205:
+case 200:
 YY_RULE_SETUP
-#line 2109 "dhcp4_lexer.ll"
+#line 2062 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5302,9 +5195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 206:
+case 201:
 YY_RULE_SETUP
-#line 2122 "dhcp4_lexer.ll"
+#line 2075 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5314,9 +5207,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 207:
+case 202:
 YY_RULE_SETUP
-#line 2131 "dhcp4_lexer.ll"
+#line 2084 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5326,9 +5219,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 208:
+case 203:
 YY_RULE_SETUP
-#line 2140 "dhcp4_lexer.ll"
+#line 2093 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5338,9 +5231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 209:
+case 204:
 YY_RULE_SETUP
-#line 2149 "dhcp4_lexer.ll"
+#line 2102 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5350,9 +5243,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 210:
+case 205:
 YY_RULE_SETUP
-#line 2158 "dhcp4_lexer.ll"
+#line 2111 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::COMPATIBILITY:
@@ -5362,9 +5255,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 211:
+case 206:
 YY_RULE_SETUP
-#line 2167 "dhcp4_lexer.ll"
+#line 2120 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::COMPATIBILITY:
@@ -5374,9 +5267,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 212:
+case 207:
 YY_RULE_SETUP
-#line 2176 "dhcp4_lexer.ll"
+#line 2129 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::COMPATIBILITY:
@@ -5386,9 +5279,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 213:
+case 208:
 YY_RULE_SETUP
-#line 2185 "dhcp4_lexer.ll"
+#line 2138 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::COMPATIBILITY:
@@ -5398,9 +5291,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 214:
+case 209:
 YY_RULE_SETUP
-#line 2194 "dhcp4_lexer.ll"
+#line 2147 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5413,9 +5306,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 215:
+case 210:
 YY_RULE_SETUP
-#line 2206 "dhcp4_lexer.ll"
+#line 2159 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -5425,9 +5318,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 216:
+case 211:
 YY_RULE_SETUP
-#line 2215 "dhcp4_lexer.ll"
+#line 2168 "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.
@@ -5529,10 +5422,10 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 217:
-/* rule 217 can match eol */
+case 212:
+/* rule 212 can match eol */
 YY_RULE_SETUP
-#line 2316 "dhcp4_lexer.ll"
+#line 2269 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     std::string raw(yytext+1);
@@ -5549,10 +5442,10 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 218:
-/* rule 218 can match eol */
+case 213:
+/* rule 213 can match eol */
 YY_RULE_SETUP
-#line 2332 "dhcp4_lexer.ll"
+#line 2285 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     std::string raw(yytext+1);
@@ -5602,9 +5495,9 @@ YY_RULE_SETUP
                  pos);
 }
        YY_BREAK
-case 219:
+case 214:
 YY_RULE_SETUP
-#line 2381 "dhcp4_lexer.ll"
+#line 2334 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     std::string raw(yytext+1);
@@ -5613,9 +5506,9 @@ YY_RULE_SETUP
                  raw.size() + 1);
 }
        YY_BREAK
-case 220:
+case 215:
 YY_RULE_SETUP
-#line 2389 "dhcp4_lexer.ll"
+#line 2342 "dhcp4_lexer.ll"
 {
     /* Bad string with an open unicode escape at the end */
     std::string raw(yytext+1);
@@ -5631,39 +5524,39 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 221:
+case 216:
 YY_RULE_SETUP
-#line 2404 "dhcp4_lexer.ll"
+#line 2357 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 222:
+case 217:
 YY_RULE_SETUP
-#line 2405 "dhcp4_lexer.ll"
+#line 2358 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 223:
+case 218:
 YY_RULE_SETUP
-#line 2406 "dhcp4_lexer.ll"
+#line 2359 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 224:
+case 219:
 YY_RULE_SETUP
-#line 2407 "dhcp4_lexer.ll"
+#line 2360 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 225:
+case 220:
 YY_RULE_SETUP
-#line 2408 "dhcp4_lexer.ll"
+#line 2361 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 226:
+case 221:
 YY_RULE_SETUP
-#line 2409 "dhcp4_lexer.ll"
+#line 2362 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 227:
+case 222:
 YY_RULE_SETUP
-#line 2411 "dhcp4_lexer.ll"
+#line 2364 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -5682,9 +5575,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 228:
+case 223:
 YY_RULE_SETUP
-#line 2429 "dhcp4_lexer.ll"
+#line 2382 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -5698,43 +5591,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 229:
+case 224:
 YY_RULE_SETUP
-#line 2442 "dhcp4_lexer.ll"
+#line 2395 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 230:
+case 225:
 YY_RULE_SETUP
-#line 2447 "dhcp4_lexer.ll"
+#line 2400 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 231:
+case 226:
 YY_RULE_SETUP
-#line 2451 "dhcp4_lexer.ll"
+#line 2404 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 232:
+case 227:
 YY_RULE_SETUP
-#line 2453 "dhcp4_lexer.ll"
+#line 2406 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 233:
+case 228:
 YY_RULE_SETUP
-#line 2455 "dhcp4_lexer.ll"
+#line 2408 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 234:
+case 229:
 YY_RULE_SETUP
-#line 2457 "dhcp4_lexer.ll"
+#line 2410 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2459 "dhcp4_lexer.ll"
+#line 2412 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -5758,12 +5651,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 235:
+case 230:
 YY_RULE_SETUP
-#line 2482 "dhcp4_lexer.ll"
+#line 2435 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 5766 "dhcp4_lexer.cc"
+#line 5660 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -6082,7 +5975,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 >= 2373 )
+                       if ( yy_current_state >= 2291 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -6115,11 +6008,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 >= 2373 )
+               if ( yy_current_state >= 2291 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 2372);
+       yy_is_jam = (yy_current_state == 2290);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6868,7 +6761,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2482 "dhcp4_lexer.ll"
+#line 2435 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 0c7384ad02f996ea49607c1543debfba204738a3..ca68d34020836f20f6a31be38ea7dee6dcbabefa 100644 (file)
@@ -411,85 +411,85 @@ namespace isc { namespace dhcp {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 417 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 423 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 429 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 435 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 441 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 447 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 453 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 459 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_socket_type: // socket_type
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 465 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 471 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_db_type: // db_type
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 477 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_on_fail_mode: // on_fail_mode
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 483 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_hr_mode: // hr_mode
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 489 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 312 "dhcp4_parser.yy"
+#line 307 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 495 "dhcp4_parser.cc"
         break;
@@ -771,127 +771,127 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 321 "dhcp4_parser.yy"
+#line 316 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 777 "dhcp4_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 322 "dhcp4_parser.yy"
+#line 317 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 783 "dhcp4_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 323 "dhcp4_parser.yy"
+#line 318 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 789 "dhcp4_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 324 "dhcp4_parser.yy"
+#line 319 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 795 "dhcp4_parser.cc"
     break;
 
   case 10: // $@5: %empty
-#line 325 "dhcp4_parser.yy"
+#line 320 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 801 "dhcp4_parser.cc"
     break;
 
   case 12: // $@6: %empty
-#line 326 "dhcp4_parser.yy"
+#line 321 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 807 "dhcp4_parser.cc"
     break;
 
   case 14: // $@7: %empty
-#line 327 "dhcp4_parser.yy"
+#line 322 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 813 "dhcp4_parser.cc"
     break;
 
   case 16: // $@8: %empty
-#line 328 "dhcp4_parser.yy"
+#line 323 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 819 "dhcp4_parser.cc"
     break;
 
   case 18: // $@9: %empty
-#line 329 "dhcp4_parser.yy"
+#line 324 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 825 "dhcp4_parser.cc"
     break;
 
   case 20: // $@10: %empty
-#line 330 "dhcp4_parser.yy"
+#line 325 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 831 "dhcp4_parser.cc"
     break;
 
   case 22: // $@11: %empty
-#line 331 "dhcp4_parser.yy"
+#line 326 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 837 "dhcp4_parser.cc"
     break;
 
   case 24: // $@12: %empty
-#line 332 "dhcp4_parser.yy"
+#line 327 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 843 "dhcp4_parser.cc"
     break;
 
   case 26: // $@13: %empty
-#line 333 "dhcp4_parser.yy"
+#line 328 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 849 "dhcp4_parser.cc"
     break;
 
   case 28: // value: "integer"
-#line 341 "dhcp4_parser.yy"
+#line 336 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 855 "dhcp4_parser.cc"
     break;
 
   case 29: // value: "floating point"
-#line 342 "dhcp4_parser.yy"
+#line 337 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 861 "dhcp4_parser.cc"
     break;
 
   case 30: // value: "boolean"
-#line 343 "dhcp4_parser.yy"
+#line 338 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 867 "dhcp4_parser.cc"
     break;
 
   case 31: // value: "constant string"
-#line 344 "dhcp4_parser.yy"
+#line 339 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 873 "dhcp4_parser.cc"
     break;
 
   case 32: // value: "null"
-#line 345 "dhcp4_parser.yy"
+#line 340 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 879 "dhcp4_parser.cc"
     break;
 
   case 33: // value: map2
-#line 346 "dhcp4_parser.yy"
+#line 341 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 885 "dhcp4_parser.cc"
     break;
 
   case 34: // value: list_generic
-#line 347 "dhcp4_parser.yy"
+#line 342 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 891 "dhcp4_parser.cc"
     break;
 
   case 35: // sub_json: value
-#line 350 "dhcp4_parser.yy"
+#line 345 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -900,7 +900,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36: // $@14: %empty
-#line 355 "dhcp4_parser.yy"
+#line 350 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -911,7 +911,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37: // map2: "{" $@14 map_content "}"
-#line 360 "dhcp4_parser.yy"
+#line 355 "dhcp4_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -921,13 +921,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 38: // map_value: map2
-#line 366 "dhcp4_parser.yy"
+#line 361 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 927 "dhcp4_parser.cc"
     break;
 
   case 41: // not_empty_map: "constant string" ":" value
-#line 373 "dhcp4_parser.yy"
+#line 368 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
@@ -937,7 +937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 378 "dhcp4_parser.yy"
+#line 373 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -948,7 +948,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43: // not_empty_map: not_empty_map ","
-#line 384 "dhcp4_parser.yy"
+#line 379 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -956,7 +956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44: // $@15: %empty
-#line 389 "dhcp4_parser.yy"
+#line 384 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -965,7 +965,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45: // list_generic: "[" $@15 list_content "]"
-#line 392 "dhcp4_parser.yy"
+#line 387 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -973,7 +973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48: // not_empty_list: value
-#line 400 "dhcp4_parser.yy"
+#line 395 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -982,7 +982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49: // not_empty_list: not_empty_list "," value
-#line 404 "dhcp4_parser.yy"
+#line 399 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -991,7 +991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50: // not_empty_list: not_empty_list ","
-#line 408 "dhcp4_parser.yy"
+#line 403 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -999,7 +999,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51: // $@16: %empty
-#line 414 "dhcp4_parser.yy"
+#line 409 "dhcp4_parser.yy"
                               {
     // List parsing about to start
 }
@@ -1007,7 +1007,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52: // list_strings: "[" $@16 list_strings_content "]"
-#line 416 "dhcp4_parser.yy"
+#line 411 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -1016,7 +1016,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55: // not_empty_list_strings: "constant string"
-#line 425 "dhcp4_parser.yy"
+#line 420 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1025,7 +1025,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 429 "dhcp4_parser.yy"
+#line 424 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1034,7 +1034,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57: // not_empty_list_strings: not_empty_list_strings ","
-#line 433 "dhcp4_parser.yy"
+#line 428 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -1042,7 +1042,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58: // unknown_map_entry: "constant string" ":"
-#line 443 "dhcp4_parser.yy"
+#line 438 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1053,7 +1053,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59: // $@17: %empty
-#line 452 "dhcp4_parser.yy"
+#line 447 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1064,7 +1064,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60: // syntax_map: "{" $@17 global_object "}"
-#line 457 "dhcp4_parser.yy"
+#line 452 "dhcp4_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1077,7 +1077,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61: // $@18: %empty
-#line 467 "dhcp4_parser.yy"
+#line 462 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1092,7 +1092,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}"
-#line 476 "dhcp4_parser.yy"
+#line 471 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1102,7 +1102,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64: // global_object_comma: global_object ","
-#line 484 "dhcp4_parser.yy"
+#line 479 "dhcp4_parser.yy"
                                          {
     ctx.warnAboutExtraCommas(yystack_[0].location);
 }
@@ -1110,7 +1110,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 65: // $@19: %empty
-#line 490 "dhcp4_parser.yy"
+#line 485 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1120,7 +1120,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66: // sub_dhcp4: "{" $@19 global_params "}"
-#line 494 "dhcp4_parser.yy"
+#line 489 "dhcp4_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1129,7 +1129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69: // global_params: global_params ","
-#line 501 "dhcp4_parser.yy"
+#line 496 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -1137,7 +1137,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 139: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 579 "dhcp4_parser.yy"
+#line 574 "dhcp4_parser.yy"
                                              {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1147,7 +1147,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 140: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 585 "dhcp4_parser.yy"
+#line 580 "dhcp4_parser.yy"
                                                      {
     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)));
@@ -1157,7 +1157,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 591 "dhcp4_parser.yy"
+#line 586 "dhcp4_parser.yy"
                                                      {
     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)));
@@ -1167,7 +1167,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142: // renew_timer: "renew-timer" ":" "integer"
-#line 597 "dhcp4_parser.yy"
+#line 592 "dhcp4_parser.yy"
                                        {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1177,7 +1177,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143: // rebind_timer: "rebind-timer" ":" "integer"
-#line 603 "dhcp4_parser.yy"
+#line 598 "dhcp4_parser.yy"
                                          {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1187,7 +1187,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 609 "dhcp4_parser.yy"
+#line 604 "dhcp4_parser.yy"
                                                        {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1197,7 +1197,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145: // t1_percent: "t1-percent" ":" "floating point"
-#line 615 "dhcp4_parser.yy"
+#line 610 "dhcp4_parser.yy"
                                    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1207,7 +1207,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146: // t2_percent: "t2-percent" ":" "floating point"
-#line 621 "dhcp4_parser.yy"
+#line 616 "dhcp4_parser.yy"
                                    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1217,7 +1217,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 627 "dhcp4_parser.yy"
+#line 622 "dhcp4_parser.yy"
                                              {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
     ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1227,7 +1227,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148: // cache_max_age: "cache-max-age" ":" "integer"
-#line 633 "dhcp4_parser.yy"
+#line 628 "dhcp4_parser.yy"
                                            {
     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)));
@@ -1237,7 +1237,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 639 "dhcp4_parser.yy"
+#line 634 "dhcp4_parser.yy"
                                                                  {
     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)));
@@ -1247,7 +1247,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150: // $@20: %empty
-#line 645 "dhcp4_parser.yy"
+#line 640 "dhcp4_parser.yy"
                        {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1256,7 +1256,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151: // server_tag: "server-tag" $@20 ":" "constant string"
-#line 648 "dhcp4_parser.yy"
+#line 643 "dhcp4_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
@@ -1266,7 +1266,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 152: // parked_packet_limit: "parked-packet-limit" ":" "integer"
-#line 654 "dhcp4_parser.yy"
+#line 649 "dhcp4_parser.yy"
                                                        {
     ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location));
     ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1276,7 +1276,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 153: // $@21: %empty
-#line 660 "dhcp4_parser.yy"
+#line 655 "dhcp4_parser.yy"
                      {
     ctx.unique("allocator", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1285,7 +1285,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 154: // allocator: "allocator" $@21 ":" "constant string"
-#line 663 "dhcp4_parser.yy"
+#line 658 "dhcp4_parser.yy"
                {
     ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("allocator", al);
@@ -1295,7 +1295,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 155: // echo_client_id: "echo-client-id" ":" "boolean"
-#line 669 "dhcp4_parser.yy"
+#line 664 "dhcp4_parser.yy"
                                              {
     ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1305,7 +1305,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 156: // match_client_id: "match-client-id" ":" "boolean"
-#line 675 "dhcp4_parser.yy"
+#line 670 "dhcp4_parser.yy"
                                                {
     ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1315,7 +1315,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 157: // authoritative: "authoritative" ":" "boolean"
-#line 681 "dhcp4_parser.yy"
+#line 676 "dhcp4_parser.yy"
                                            {
     ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1325,7 +1325,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 158: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 687 "dhcp4_parser.yy"
+#line 682 "dhcp4_parser.yy"
                                                    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1335,7 +1335,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 159: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 693 "dhcp4_parser.yy"
+#line 688 "dhcp4_parser.yy"
                                                                {
     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)));
@@ -1345,7 +1345,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 160: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 699 "dhcp4_parser.yy"
+#line 694 "dhcp4_parser.yy"
                                                                        {
     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)));
@@ -1355,7 +1355,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 161: // $@22: %empty
-#line 705 "dhcp4_parser.yy"
+#line 700 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
@@ -1364,7 +1364,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 708 "dhcp4_parser.yy"
+#line 703 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1373,7 +1373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163: // ddns_replace_client_name_value: "when-present"
-#line 714 "dhcp4_parser.yy"
+#line 709 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1381,7 +1381,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164: // ddns_replace_client_name_value: "never"
-#line 717 "dhcp4_parser.yy"
+#line 712 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1389,7 +1389,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165: // ddns_replace_client_name_value: "always"
-#line 720 "dhcp4_parser.yy"
+#line 715 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1397,7 +1397,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 166: // ddns_replace_client_name_value: "when-not-present"
-#line 723 "dhcp4_parser.yy"
+#line 718 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1405,16 +1405,16 @@ namespace isc { namespace dhcp {
     break;
 
   case 167: // ddns_replace_client_name_value: "boolean"
-#line 726 "dhcp4_parser.yy"
+#line 721 "dhcp4_parser.yy"
             {
-      error(yystack_[0].location, "boolean values for the replace-client-name are "
+      error(yystack_[0].location, "boolean values for the ddns-replace-client-name are "
                 "no longer supported");
       }
 #line 1414 "dhcp4_parser.cc"
     break;
 
   case 168: // $@23: %empty
-#line 732 "dhcp4_parser.yy"
+#line 727 "dhcp4_parser.yy"
                                              {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1423,7 +1423,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 169: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 735 "dhcp4_parser.yy"
+#line 730 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1433,7 +1433,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 170: // $@24: %empty
-#line 741 "dhcp4_parser.yy"
+#line 736 "dhcp4_parser.yy"
                                                {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1442,7 +1442,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 171: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 744 "dhcp4_parser.yy"
+#line 739 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1452,7 +1452,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 750 "dhcp4_parser.yy"
+#line 745 "dhcp4_parser.yy"
                                                          {
     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)));
@@ -1462,7 +1462,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 173: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 759 "dhcp4_parser.yy"
+#line 754 "dhcp4_parser.yy"
                                                                          {
     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)));
@@ -1476,7 +1476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 174: // $@25: %empty
-#line 769 "dhcp4_parser.yy"
+#line 764 "dhcp4_parser.yy"
                                                              {
     ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE);
@@ -1485,7 +1485,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 175: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value
-#line 772 "dhcp4_parser.yy"
+#line 767 "dhcp4_parser.yy"
                                             {
     ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1494,7 +1494,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 176: // ddns_conflict_resolution_mode_value: "check-with-dhcid"
-#line 778 "dhcp4_parser.yy"
+#line 773 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1502,7 +1502,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 177: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid"
-#line 781 "dhcp4_parser.yy"
+#line 776 "dhcp4_parser.yy"
                         {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1510,7 +1510,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 178: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid"
-#line 784 "dhcp4_parser.yy"
+#line 779 "dhcp4_parser.yy"
                             {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1518,7 +1518,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 179: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid"
-#line 787 "dhcp4_parser.yy"
+#line 782 "dhcp4_parser.yy"
                            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1526,7 +1526,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 180: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point"
-#line 792 "dhcp4_parser.yy"
+#line 787 "dhcp4_parser.yy"
                                                {
     ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1536,7 +1536,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181: // $@26: %empty
-#line 798 "dhcp4_parser.yy"
+#line 793 "dhcp4_parser.yy"
                                      {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1545,7 +1545,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 182: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string"
-#line 801 "dhcp4_parser.yy"
+#line 796 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -1555,7 +1555,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183: // $@27: %empty
-#line 807 "dhcp4_parser.yy"
+#line 802 "dhcp4_parser.yy"
                                                      {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1564,7 +1564,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string"
-#line 810 "dhcp4_parser.yy"
+#line 805 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -1574,7 +1574,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 185: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 816 "dhcp4_parser.yy"
+#line 811 "dhcp4_parser.yy"
                                                        {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1584,7 +1584,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 186: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 822 "dhcp4_parser.yy"
+#line 817 "dhcp4_parser.yy"
                                                                              {
     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)));
@@ -1594,7 +1594,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 187: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 828 "dhcp4_parser.yy"
+#line 823 "dhcp4_parser.yy"
                                                                          {
     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)));
@@ -1604,7 +1604,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 188: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
-#line 834 "dhcp4_parser.yy"
+#line 829 "dhcp4_parser.yy"
                                                                                  {
     ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
     ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1614,7 +1614,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 189: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 840 "dhcp4_parser.yy"
+#line 835 "dhcp4_parser.yy"
                                                              {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
     ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1624,7 +1624,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 190: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
-#line 846 "dhcp4_parser.yy"
+#line 841 "dhcp4_parser.yy"
                                                                    {
     ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
     ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1634,7 +1634,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 191: // offer_lifetime: "offer-lifetime" ":" "integer"
-#line 852 "dhcp4_parser.yy"
+#line 847 "dhcp4_parser.yy"
                                         {
     ctx.unique("offer-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr offer_lifetime(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1644,7 +1644,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 192: // stash_agent_options: "stash-agent-options" ":" "boolean"
-#line 858 "dhcp4_parser.yy"
+#line 853 "dhcp4_parser.yy"
                                                        {
     ctx.unique("stash-agent-options", ctx.loc2pos(yystack_[2].location));
     ElementPtr stash(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1654,7 +1654,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 193: // $@28: %empty
-#line 864 "dhcp4_parser.yy"
+#line 859 "dhcp4_parser.yy"
                                      {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1666,7 +1666,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 194: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
-#line 870 "dhcp4_parser.yy"
+#line 865 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
@@ -1676,7 +1676,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197: // interfaces_config_params: interfaces_config_params ","
-#line 878 "dhcp4_parser.yy"
+#line 873 "dhcp4_parser.yy"
                                                          {
                             ctx.warnAboutExtraCommas(yystack_[0].location);
                             }
@@ -1684,7 +1684,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 208: // $@29: %empty
-#line 895 "dhcp4_parser.yy"
+#line 890 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1694,7 +1694,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 209: // sub_interfaces4: "{" $@29 interfaces_config_params "}"
-#line 899 "dhcp4_parser.yy"
+#line 894 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
@@ -1703,7 +1703,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 210: // $@30: %empty
-#line 904 "dhcp4_parser.yy"
+#line 899 "dhcp4_parser.yy"
                             {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1715,7 +1715,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 211: // interfaces_list: "interfaces" $@30 ":" list_strings
-#line 910 "dhcp4_parser.yy"
+#line 905 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1724,7 +1724,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 212: // $@31: %empty
-#line 915 "dhcp4_parser.yy"
+#line 910 "dhcp4_parser.yy"
                                    {
     ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
@@ -1733,7 +1733,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 213: // dhcp_socket_type: "dhcp-socket-type" $@31 ":" socket_type
-#line 918 "dhcp4_parser.yy"
+#line 913 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1742,19 +1742,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 214: // socket_type: "raw"
-#line 923 "dhcp4_parser.yy"
+#line 918 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1748 "dhcp4_parser.cc"
     break;
 
   case 215: // socket_type: "udp"
-#line 924 "dhcp4_parser.yy"
+#line 919 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1754 "dhcp4_parser.cc"
     break;
 
   case 216: // $@32: %empty
-#line 927 "dhcp4_parser.yy"
+#line 922 "dhcp4_parser.yy"
                                        {
     ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.OUTBOUND_INTERFACE);
@@ -1763,7 +1763,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 217: // outbound_interface: "outbound-interface" $@32 ":" outbound_interface_value
-#line 930 "dhcp4_parser.yy"
+#line 925 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1772,7 +1772,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 218: // outbound_interface_value: "same-as-inbound"
-#line 935 "dhcp4_parser.yy"
+#line 930 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
@@ -1780,7 +1780,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 219: // outbound_interface_value: "use-routing"
-#line 937 "dhcp4_parser.yy"
+#line 932 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
@@ -1788,7 +1788,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 220: // re_detect: "re-detect" ":" "boolean"
-#line 941 "dhcp4_parser.yy"
+#line 936 "dhcp4_parser.yy"
                                    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1798,7 +1798,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 221: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
-#line 947 "dhcp4_parser.yy"
+#line 942 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1808,7 +1808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 222: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
-#line 953 "dhcp4_parser.yy"
+#line 948 "dhcp4_parser.yy"
                                                                                {
     ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1818,7 +1818,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 223: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
-#line 959 "dhcp4_parser.yy"
+#line 954 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1828,7 +1828,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 224: // $@33: %empty
-#line 965 "dhcp4_parser.yy"
+#line 960 "dhcp4_parser.yy"
                                {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1840,7 +1840,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 225: // lease_database: "lease-database" $@33 ":" "{" database_map_params "}"
-#line 971 "dhcp4_parser.yy"
+#line 966 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1851,7 +1851,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 226: // $@34: %empty
-#line 978 "dhcp4_parser.yy"
+#line 973 "dhcp4_parser.yy"
                              {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1863,7 +1863,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 227: // sanity_checks: "sanity-checks" $@34 ":" "{" sanity_checks_params "}"
-#line 984 "dhcp4_parser.yy"
+#line 979 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1872,7 +1872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 230: // sanity_checks_params: sanity_checks_params ","
-#line 991 "dhcp4_parser.yy"
+#line 986 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -1880,7 +1880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233: // $@35: %empty
-#line 1000 "dhcp4_parser.yy"
+#line 995 "dhcp4_parser.yy"
                            {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1889,7 +1889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 234: // lease_checks: "lease-checks" $@35 ":" "constant string"
-#line 1003 "dhcp4_parser.yy"
+#line 998 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1909,7 +1909,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 235: // $@36: %empty
-#line 1019 "dhcp4_parser.yy"
+#line 1014 "dhcp4_parser.yy"
                                            {
     ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1918,7 +1918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 236: // extended_info_checks: "extended-info-checks" $@36 ":" "constant string"
-#line 1022 "dhcp4_parser.yy"
+#line 1017 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1937,7 +1937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 237: // $@37: %empty
-#line 1037 "dhcp4_parser.yy"
+#line 1032 "dhcp4_parser.yy"
                                {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1949,7 +1949,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 238: // hosts_database: "hosts-database" $@37 ":" "{" database_map_params "}"
-#line 1043 "dhcp4_parser.yy"
+#line 1038 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1960,7 +1960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 239: // $@38: %empty
-#line 1050 "dhcp4_parser.yy"
+#line 1045 "dhcp4_parser.yy"
                                  {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1972,7 +1972,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 240: // hosts_databases: "hosts-databases" $@38 ":" "[" database_list "]"
-#line 1056 "dhcp4_parser.yy"
+#line 1051 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1981,7 +1981,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 245: // not_empty_database_list: not_empty_database_list ","
-#line 1067 "dhcp4_parser.yy"
+#line 1062 "dhcp4_parser.yy"
                                                        {
                            ctx.warnAboutExtraCommas(yystack_[0].location);
                            }
@@ -1989,7 +1989,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 246: // $@39: %empty
-#line 1072 "dhcp4_parser.yy"
+#line 1067 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1999,7 +1999,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 247: // database: "{" $@39 database_map_params "}"
-#line 1076 "dhcp4_parser.yy"
+#line 1071 "dhcp4_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2009,7 +2009,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 250: // database_map_params: database_map_params ","
-#line 1084 "dhcp4_parser.yy"
+#line 1079 "dhcp4_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -2017,7 +2017,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274: // $@40: %empty
-#line 1114 "dhcp4_parser.yy"
+#line 1109 "dhcp4_parser.yy"
                     {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
@@ -2026,7 +2026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275: // database_type: "type" $@40 ":" db_type
-#line 1117 "dhcp4_parser.yy"
+#line 1112 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2035,25 +2035,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 276: // db_type: "memfile"
-#line 1122 "dhcp4_parser.yy"
+#line 1117 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 2041 "dhcp4_parser.cc"
     break;
 
   case 277: // db_type: "mysql"
-#line 1123 "dhcp4_parser.yy"
+#line 1118 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 2047 "dhcp4_parser.cc"
     break;
 
   case 278: // db_type: "postgresql"
-#line 1124 "dhcp4_parser.yy"
+#line 1119 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 2053 "dhcp4_parser.cc"
     break;
 
   case 279: // $@41: %empty
-#line 1127 "dhcp4_parser.yy"
+#line 1122 "dhcp4_parser.yy"
            {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2062,7 +2062,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280: // user: "user" $@41 ":" "constant string"
-#line 1130 "dhcp4_parser.yy"
+#line 1125 "dhcp4_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -2072,7 +2072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 281: // $@42: %empty
-#line 1136 "dhcp4_parser.yy"
+#line 1131 "dhcp4_parser.yy"
                    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2081,7 +2081,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 282: // password: "password" $@42 ":" "constant string"
-#line 1139 "dhcp4_parser.yy"
+#line 1134 "dhcp4_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -2091,7 +2091,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 283: // $@43: %empty
-#line 1145 "dhcp4_parser.yy"
+#line 1140 "dhcp4_parser.yy"
            {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2100,7 +2100,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 284: // host: "host" $@43 ":" "constant string"
-#line 1148 "dhcp4_parser.yy"
+#line 1143 "dhcp4_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -2110,7 +2110,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 285: // port: "port" ":" "integer"
-#line 1154 "dhcp4_parser.yy"
+#line 1149 "dhcp4_parser.yy"
                          {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2120,7 +2120,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 286: // $@44: %empty
-#line 1160 "dhcp4_parser.yy"
+#line 1155 "dhcp4_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2129,7 +2129,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 287: // name: "name" $@44 ":" "constant string"
-#line 1163 "dhcp4_parser.yy"
+#line 1158 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -2139,7 +2139,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 288: // persist: "persist" ":" "boolean"
-#line 1169 "dhcp4_parser.yy"
+#line 1164 "dhcp4_parser.yy"
                                {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2149,7 +2149,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 289: // lfc_interval: "lfc-interval" ":" "integer"
-#line 1175 "dhcp4_parser.yy"
+#line 1170 "dhcp4_parser.yy"
                                          {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2159,7 +2159,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290: // readonly: "readonly" ":" "boolean"
-#line 1181 "dhcp4_parser.yy"
+#line 1176 "dhcp4_parser.yy"
                                  {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2169,7 +2169,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 291: // connect_timeout: "connect-timeout" ":" "integer"
-#line 1187 "dhcp4_parser.yy"
+#line 1182 "dhcp4_parser.yy"
                                                {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2179,7 +2179,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 292: // read_timeout: "read-timeout" ":" "integer"
-#line 1193 "dhcp4_parser.yy"
+#line 1188 "dhcp4_parser.yy"
                                          {
     ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2189,7 +2189,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 293: // write_timeout: "write-timeout" ":" "integer"
-#line 1199 "dhcp4_parser.yy"
+#line 1194 "dhcp4_parser.yy"
                                            {
     ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2199,7 +2199,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 294: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
-#line 1205 "dhcp4_parser.yy"
+#line 1200 "dhcp4_parser.yy"
                                                  {
     ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2209,7 +2209,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 295: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1211 "dhcp4_parser.yy"
+#line 1206 "dhcp4_parser.yy"
                                                        {
     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)));
@@ -2219,7 +2219,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 296: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1217 "dhcp4_parser.yy"
+#line 1212 "dhcp4_parser.yy"
                                                        {
     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)));
@@ -2229,7 +2229,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 297: // $@45: %empty
-#line 1223 "dhcp4_parser.yy"
+#line 1218 "dhcp4_parser.yy"
                  {
     ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_ON_FAIL);
@@ -2238,7 +2238,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 298: // on_fail: "on-fail" $@45 ":" on_fail_mode
-#line 1226 "dhcp4_parser.yy"
+#line 1221 "dhcp4_parser.yy"
                      {
     ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2247,25 +2247,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 299: // on_fail_mode: "stop-retry-exit"
-#line 1231 "dhcp4_parser.yy"
+#line 1226 "dhcp4_parser.yy"
                               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2253 "dhcp4_parser.cc"
     break;
 
   case 300: // on_fail_mode: "serve-retry-exit"
-#line 1232 "dhcp4_parser.yy"
+#line 1227 "dhcp4_parser.yy"
                                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2259 "dhcp4_parser.cc"
     break;
 
   case 301: // on_fail_mode: "serve-retry-continue"
-#line 1233 "dhcp4_parser.yy"
+#line 1228 "dhcp4_parser.yy"
                                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
 #line 2265 "dhcp4_parser.cc"
     break;
 
   case 302: // retry_on_startup: "retry-on-startup" ":" "boolean"
-#line 1236 "dhcp4_parser.yy"
+#line 1231 "dhcp4_parser.yy"
                                                  {
     ctx.unique("retry-on-startup", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2275,7 +2275,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 303: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1242 "dhcp4_parser.yy"
+#line 1237 "dhcp4_parser.yy"
                                              {
     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)));
@@ -2285,7 +2285,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 304: // $@46: %empty
-#line 1248 "dhcp4_parser.yy"
+#line 1243 "dhcp4_parser.yy"
                            {
     ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2294,7 +2294,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 305: // trust_anchor: "trust-anchor" $@46 ":" "constant string"
-#line 1251 "dhcp4_parser.yy"
+#line 1246 "dhcp4_parser.yy"
                {
     ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("trust-anchor", ca);
@@ -2304,7 +2304,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 306: // $@47: %empty
-#line 1257 "dhcp4_parser.yy"
+#line 1252 "dhcp4_parser.yy"
                      {
     ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2313,7 +2313,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 307: // cert_file: "cert-file" $@47 ":" "constant string"
-#line 1260 "dhcp4_parser.yy"
+#line 1255 "dhcp4_parser.yy"
                {
     ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cert-file", cert);
@@ -2323,7 +2323,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 308: // $@48: %empty
-#line 1266 "dhcp4_parser.yy"
+#line 1261 "dhcp4_parser.yy"
                    {
     ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2332,7 +2332,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 309: // key_file: "key-file" $@48 ":" "constant string"
-#line 1269 "dhcp4_parser.yy"
+#line 1264 "dhcp4_parser.yy"
                {
     ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("key-file", key);
@@ -2342,7 +2342,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 310: // $@49: %empty
-#line 1275 "dhcp4_parser.yy"
+#line 1270 "dhcp4_parser.yy"
                          {
     ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2351,7 +2351,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 311: // cipher_list: "cipher-list" $@49 ":" "constant string"
-#line 1278 "dhcp4_parser.yy"
+#line 1273 "dhcp4_parser.yy"
                {
     ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cipher-list", cl);
@@ -2361,7 +2361,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 312: // $@50: %empty
-#line 1284 "dhcp4_parser.yy"
+#line 1279 "dhcp4_parser.yy"
                                                            {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2373,7 +2373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 313: // host_reservation_identifiers: "host-reservation-identifiers" $@50 ":" "[" host_reservation_identifiers_list "]"
-#line 1290 "dhcp4_parser.yy"
+#line 1285 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2382,7 +2382,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 316: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
-#line 1297 "dhcp4_parser.yy"
+#line 1292 "dhcp4_parser.yy"
                                               {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2390,7 +2390,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 322: // duid_id: "duid"
-#line 1309 "dhcp4_parser.yy"
+#line 1304 "dhcp4_parser.yy"
               {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -2399,7 +2399,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 323: // hw_address_id: "hw-address"
-#line 1314 "dhcp4_parser.yy"
+#line 1309 "dhcp4_parser.yy"
                           {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -2408,7 +2408,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 324: // circuit_id: "circuit-id"
-#line 1319 "dhcp4_parser.yy"
+#line 1314 "dhcp4_parser.yy"
                        {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -2417,7 +2417,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 325: // client_id: "client-id"
-#line 1324 "dhcp4_parser.yy"
+#line 1319 "dhcp4_parser.yy"
                      {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -2426,7 +2426,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 326: // flex_id: "flex-id"
-#line 1329 "dhcp4_parser.yy"
+#line 1324 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -2435,7 +2435,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 327: // $@51: %empty
-#line 1336 "dhcp4_parser.yy"
+#line 1331 "dhcp4_parser.yy"
                                            {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2447,7 +2447,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 328: // dhcp_multi_threading: "multi-threading" $@51 ":" "{" multi_threading_params "}"
-#line 1342 "dhcp4_parser.yy"
+#line 1337 "dhcp4_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -2458,7 +2458,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 331: // multi_threading_params: multi_threading_params ","
-#line 1351 "dhcp4_parser.yy"
+#line 1346 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2466,7 +2466,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 338: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1364 "dhcp4_parser.yy"
+#line 1359 "dhcp4_parser.yy"
                                                              {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2476,7 +2476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 339: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1370 "dhcp4_parser.yy"
+#line 1365 "dhcp4_parser.yy"
                                                  {
     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)));
@@ -2486,7 +2486,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 340: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1376 "dhcp4_parser.yy"
+#line 1371 "dhcp4_parser.yy"
                                                    {
     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)));
@@ -2496,7 +2496,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 341: // $@52: %empty
-#line 1382 "dhcp4_parser.yy"
+#line 1377 "dhcp4_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2508,7 +2508,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 342: // hooks_libraries: "hooks-libraries" $@52 ":" "[" hooks_libraries_list "]"
-#line 1388 "dhcp4_parser.yy"
+#line 1383 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2517,7 +2517,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 347: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
-#line 1399 "dhcp4_parser.yy"
+#line 1394 "dhcp4_parser.yy"
                                            {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2525,7 +2525,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 348: // $@53: %empty
-#line 1404 "dhcp4_parser.yy"
+#line 1399 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2535,7 +2535,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 349: // hooks_library: "{" $@53 hooks_params "}"
-#line 1408 "dhcp4_parser.yy"
+#line 1403 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2545,7 +2545,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 350: // $@54: %empty
-#line 1414 "dhcp4_parser.yy"
+#line 1409 "dhcp4_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2555,7 +2555,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 351: // sub_hooks_library: "{" $@54 hooks_params "}"
-#line 1418 "dhcp4_parser.yy"
+#line 1413 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2565,7 +2565,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 354: // hooks_params: hooks_params ","
-#line 1426 "dhcp4_parser.yy"
+#line 1421 "dhcp4_parser.yy"
                                  {
                 ctx.warnAboutExtraCommas(yystack_[0].location);
                 }
@@ -2573,7 +2573,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 358: // $@55: %empty
-#line 1436 "dhcp4_parser.yy"
+#line 1431 "dhcp4_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2582,7 +2582,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 359: // library: "library" $@55 ":" "constant string"
-#line 1439 "dhcp4_parser.yy"
+#line 1434 "dhcp4_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -2592,7 +2592,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 360: // $@56: %empty
-#line 1445 "dhcp4_parser.yy"
+#line 1440 "dhcp4_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2601,7 +2601,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 361: // parameters: "parameters" $@56 ":" map_value
-#line 1448 "dhcp4_parser.yy"
+#line 1443 "dhcp4_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2610,7 +2610,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 362: // $@57: %empty
-#line 1454 "dhcp4_parser.yy"
+#line 1449 "dhcp4_parser.yy"
                                                      {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2622,7 +2622,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 363: // expired_leases_processing: "expired-leases-processing" $@57 ":" "{" expired_leases_params "}"
-#line 1460 "dhcp4_parser.yy"
+#line 1455 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
@@ -2632,7 +2632,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 366: // expired_leases_params: expired_leases_params ","
-#line 1468 "dhcp4_parser.yy"
+#line 1463 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -2640,7 +2640,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 373: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1481 "dhcp4_parser.yy"
+#line 1476 "dhcp4_parser.yy"
                                                                {
     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)));
@@ -2650,7 +2650,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 374: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1487 "dhcp4_parser.yy"
+#line 1482 "dhcp4_parser.yy"
                                                                                {
     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)));
@@ -2660,7 +2660,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 375: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1493 "dhcp4_parser.yy"
+#line 1488 "dhcp4_parser.yy"
                                                        {
     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)));
@@ -2670,7 +2670,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 376: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1499 "dhcp4_parser.yy"
+#line 1494 "dhcp4_parser.yy"
                                                      {
     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)));
@@ -2680,7 +2680,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 377: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1505 "dhcp4_parser.yy"
+#line 1500 "dhcp4_parser.yy"
                                                  {
     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)));
@@ -2690,7 +2690,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 378: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1511 "dhcp4_parser.yy"
+#line 1506 "dhcp4_parser.yy"
                                                                {
     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)));
@@ -2700,7 +2700,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 379: // $@58: %empty
-#line 1520 "dhcp4_parser.yy"
+#line 1515 "dhcp4_parser.yy"
                       {
     ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2712,7 +2712,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 380: // subnet4_list: "subnet4" $@58 ":" "[" subnet4_list_content "]"
-#line 1526 "dhcp4_parser.yy"
+#line 1521 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2721,7 +2721,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 385: // not_empty_subnet4_list: not_empty_subnet4_list ","
-#line 1540 "dhcp4_parser.yy"
+#line 1535 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2729,7 +2729,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 386: // $@59: %empty
-#line 1549 "dhcp4_parser.yy"
+#line 1544 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2739,7 +2739,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 387: // subnet4: "{" $@59 subnet4_params "}"
-#line 1553 "dhcp4_parser.yy"
+#line 1548 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2765,7 +2765,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 388: // $@60: %empty
-#line 1575 "dhcp4_parser.yy"
+#line 1570 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2775,7 +2775,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 389: // sub_subnet4: "{" $@60 subnet4_params "}"
-#line 1579 "dhcp4_parser.yy"
+#line 1574 "dhcp4_parser.yy"
                                 {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2785,7 +2785,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 392: // subnet4_params: subnet4_params ","
-#line 1588 "dhcp4_parser.yy"
+#line 1583 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -2793,7 +2793,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 442: // $@61: %empty
-#line 1645 "dhcp4_parser.yy"
+#line 1640 "dhcp4_parser.yy"
                {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2802,7 +2802,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 443: // subnet: "subnet" $@61 ":" "constant string"
-#line 1648 "dhcp4_parser.yy"
+#line 1643 "dhcp4_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -2812,7 +2812,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 444: // $@62: %empty
-#line 1654 "dhcp4_parser.yy"
+#line 1649 "dhcp4_parser.yy"
                                            {
     ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2821,7 +2821,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 445: // subnet_4o6_interface: "4o6-interface" $@62 ":" "constant string"
-#line 1657 "dhcp4_parser.yy"
+#line 1652 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
@@ -2831,7 +2831,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 446: // $@63: %empty
-#line 1663 "dhcp4_parser.yy"
+#line 1658 "dhcp4_parser.yy"
                                                  {
     ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2840,7 +2840,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 447: // subnet_4o6_interface_id: "4o6-interface-id" $@63 ":" "constant string"
-#line 1666 "dhcp4_parser.yy"
+#line 1661 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
@@ -2850,7 +2850,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 448: // $@64: %empty
-#line 1672 "dhcp4_parser.yy"
+#line 1667 "dhcp4_parser.yy"
                                      {
     ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2859,7 +2859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 449: // subnet_4o6_subnet: "4o6-subnet" $@64 ":" "constant string"
-#line 1675 "dhcp4_parser.yy"
+#line 1670 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
@@ -2869,7 +2869,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 450: // $@65: %empty
-#line 1681 "dhcp4_parser.yy"
+#line 1676 "dhcp4_parser.yy"
                      {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2878,7 +2878,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 451: // interface: "interface" $@65 ":" "constant string"
-#line 1684 "dhcp4_parser.yy"
+#line 1679 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -2888,7 +2888,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 452: // $@66: %empty
-#line 1690 "dhcp4_parser.yy"
+#line 1685 "dhcp4_parser.yy"
                            {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2897,7 +2897,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 453: // client_class: "client-class" $@66 ":" "constant string"
-#line 1693 "dhcp4_parser.yy"
+#line 1688 "dhcp4_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -2907,7 +2907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 454: // $@67: %empty
-#line 1699 "dhcp4_parser.yy"
+#line 1694 "dhcp4_parser.yy"
                                                {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2919,7 +2919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 455: // require_client_classes: "require-client-classes" $@67 ":" list_strings
-#line 1705 "dhcp4_parser.yy"
+#line 1700 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2928,7 +2928,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 456: // reservations_global: "reservations-global" ":" "boolean"
-#line 1710 "dhcp4_parser.yy"
+#line 1705 "dhcp4_parser.yy"
                                                        {
     ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2938,7 +2938,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 457: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1716 "dhcp4_parser.yy"
+#line 1711 "dhcp4_parser.yy"
                                                              {
     ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2948,7 +2948,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 458: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1722 "dhcp4_parser.yy"
+#line 1717 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2958,7 +2958,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 459: // $@68: %empty
-#line 1728 "dhcp4_parser.yy"
+#line 1723 "dhcp4_parser.yy"
                                    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
@@ -2967,7 +2967,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 460: // reservation_mode: "reservation-mode" $@68 ":" hr_mode
-#line 1731 "dhcp4_parser.yy"
+#line 1726 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2976,31 +2976,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 461: // hr_mode: "disabled"
-#line 1736 "dhcp4_parser.yy"
+#line 1731 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 2982 "dhcp4_parser.cc"
     break;
 
   case 462: // hr_mode: "out-of-pool"
-#line 1737 "dhcp4_parser.yy"
+#line 1732 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 2988 "dhcp4_parser.cc"
     break;
 
   case 463: // hr_mode: "global"
-#line 1738 "dhcp4_parser.yy"
+#line 1733 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
 #line 2994 "dhcp4_parser.cc"
     break;
 
   case 464: // hr_mode: "all"
-#line 1739 "dhcp4_parser.yy"
+#line 1734 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 3000 "dhcp4_parser.cc"
     break;
 
   case 465: // id: "id" ":" "integer"
-#line 1742 "dhcp4_parser.yy"
+#line 1737 "dhcp4_parser.yy"
                      {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3010,7 +3010,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 466: // $@69: %empty
-#line 1750 "dhcp4_parser.yy"
+#line 1745 "dhcp4_parser.yy"
                                  {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3022,7 +3022,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 467: // shared_networks: "shared-networks" $@69 ":" "[" shared_networks_content "]"
-#line 1756 "dhcp4_parser.yy"
+#line 1751 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3031,7 +3031,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 472: // shared_networks_list: shared_networks_list ","
-#line 1769 "dhcp4_parser.yy"
+#line 1764 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3039,7 +3039,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 473: // $@70: %empty
-#line 1774 "dhcp4_parser.yy"
+#line 1769 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3049,7 +3049,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 474: // shared_network: "{" $@70 shared_network_params "}"
-#line 1778 "dhcp4_parser.yy"
+#line 1773 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
@@ -3057,7 +3057,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 477: // shared_network_params: shared_network_params ","
-#line 1784 "dhcp4_parser.yy"
+#line 1779 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -3065,7 +3065,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 522: // $@71: %empty
-#line 1839 "dhcp4_parser.yy"
+#line 1834 "dhcp4_parser.yy"
                             {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3077,7 +3077,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 523: // option_def_list: "option-def" $@71 ":" "[" option_def_list_content "]"
-#line 1845 "dhcp4_parser.yy"
+#line 1840 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3086,7 +3086,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 524: // $@72: %empty
-#line 1853 "dhcp4_parser.yy"
+#line 1848 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -3095,7 +3095,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 525: // sub_option_def_list: "{" $@72 option_def_list "}"
-#line 1856 "dhcp4_parser.yy"
+#line 1851 "dhcp4_parser.yy"
                                  {
     // parsing completed
 }
@@ -3103,7 +3103,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 530: // not_empty_option_def_list: not_empty_option_def_list ","
-#line 1868 "dhcp4_parser.yy"
+#line 1863 "dhcp4_parser.yy"
                                                            {
                              ctx.warnAboutExtraCommas(yystack_[0].location);
                              }
@@ -3111,7 +3111,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 531: // $@73: %empty
-#line 1875 "dhcp4_parser.yy"
+#line 1870 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3121,7 +3121,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 532: // option_def_entry: "{" $@73 option_def_params "}"
-#line 1879 "dhcp4_parser.yy"
+#line 1874 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3133,7 +3133,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 533: // $@74: %empty
-#line 1890 "dhcp4_parser.yy"
+#line 1885 "dhcp4_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3143,7 +3143,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 534: // sub_option_def: "{" $@74 option_def_params "}"
-#line 1894 "dhcp4_parser.yy"
+#line 1889 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3155,7 +3155,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 539: // not_empty_option_def_params: not_empty_option_def_params ","
-#line 1910 "dhcp4_parser.yy"
+#line 1905 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3163,7 +3163,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 551: // code: "code" ":" "integer"
-#line 1929 "dhcp4_parser.yy"
+#line 1924 "dhcp4_parser.yy"
                          {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3173,7 +3173,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 553: // $@75: %empty
-#line 1937 "dhcp4_parser.yy"
+#line 1932 "dhcp4_parser.yy"
                       {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3182,7 +3182,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 554: // option_def_type: "type" $@75 ":" "constant string"
-#line 1940 "dhcp4_parser.yy"
+#line 1935 "dhcp4_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -3192,7 +3192,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 555: // $@76: %empty
-#line 1946 "dhcp4_parser.yy"
+#line 1941 "dhcp4_parser.yy"
                                       {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3201,7 +3201,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 556: // option_def_record_types: "record-types" $@76 ":" "constant string"
-#line 1949 "dhcp4_parser.yy"
+#line 1944 "dhcp4_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -3211,7 +3211,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 557: // $@77: %empty
-#line 1955 "dhcp4_parser.yy"
+#line 1950 "dhcp4_parser.yy"
              {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3220,7 +3220,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 558: // space: "space" $@77 ":" "constant string"
-#line 1958 "dhcp4_parser.yy"
+#line 1953 "dhcp4_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -3230,7 +3230,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 560: // $@78: %empty
-#line 1966 "dhcp4_parser.yy"
+#line 1961 "dhcp4_parser.yy"
                                     {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3239,7 +3239,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 561: // option_def_encapsulate: "encapsulate" $@78 ":" "constant string"
-#line 1969 "dhcp4_parser.yy"
+#line 1964 "dhcp4_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -3249,7 +3249,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 562: // option_def_array: "array" ":" "boolean"
-#line 1975 "dhcp4_parser.yy"
+#line 1970 "dhcp4_parser.yy"
                                       {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3259,7 +3259,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 563: // $@79: %empty
-#line 1985 "dhcp4_parser.yy"
+#line 1980 "dhcp4_parser.yy"
                               {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3271,7 +3271,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 564: // option_data_list: "option-data" $@79 ":" "[" option_data_list_content "]"
-#line 1991 "dhcp4_parser.yy"
+#line 1986 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3280,7 +3280,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 569: // not_empty_option_data_list: not_empty_option_data_list ","
-#line 2006 "dhcp4_parser.yy"
+#line 2001 "dhcp4_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
@@ -3288,7 +3288,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 570: // $@80: %empty
-#line 2013 "dhcp4_parser.yy"
+#line 2008 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3298,7 +3298,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 571: // option_data_entry: "{" $@80 option_data_params "}"
-#line 2017 "dhcp4_parser.yy"
+#line 2012 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
@@ -3307,7 +3307,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 572: // $@81: %empty
-#line 2025 "dhcp4_parser.yy"
+#line 2020 "dhcp4_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3317,7 +3317,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 573: // sub_option_data: "{" $@81 option_data_params "}"
-#line 2029 "dhcp4_parser.yy"
+#line 2024 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
@@ -3326,7 +3326,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 578: // not_empty_option_data_params: not_empty_option_data_params ","
-#line 2045 "dhcp4_parser.yy"
+#line 2040 "dhcp4_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3334,7 +3334,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 590: // $@82: %empty
-#line 2066 "dhcp4_parser.yy"
+#line 2061 "dhcp4_parser.yy"
                        {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3343,7 +3343,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 591: // option_data_data: "data" $@82 ":" "constant string"
-#line 2069 "dhcp4_parser.yy"
+#line 2064 "dhcp4_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -3353,7 +3353,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 594: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 2079 "dhcp4_parser.yy"
+#line 2074 "dhcp4_parser.yy"
                                                  {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
     ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3363,7 +3363,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 595: // option_data_always_send: "always-send" ":" "boolean"
-#line 2085 "dhcp4_parser.yy"
+#line 2080 "dhcp4_parser.yy"
                                                    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3373,7 +3373,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 596: // option_data_never_send: "never-send" ":" "boolean"
-#line 2091 "dhcp4_parser.yy"
+#line 2086 "dhcp4_parser.yy"
                                                  {
     ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3383,7 +3383,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 597: // $@83: %empty
-#line 2100 "dhcp4_parser.yy"
+#line 2095 "dhcp4_parser.yy"
                   {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3395,7 +3395,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 598: // pools_list: "pools" $@83 ":" "[" pools_list_content "]"
-#line 2106 "dhcp4_parser.yy"
+#line 2101 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3404,7 +3404,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 603: // not_empty_pools_list: not_empty_pools_list ","
-#line 2119 "dhcp4_parser.yy"
+#line 2114 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3412,7 +3412,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 604: // $@84: %empty
-#line 2124 "dhcp4_parser.yy"
+#line 2119 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3422,7 +3422,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 605: // pool_list_entry: "{" $@84 pool_params "}"
-#line 2128 "dhcp4_parser.yy"
+#line 2123 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3432,7 +3432,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 606: // $@85: %empty
-#line 2134 "dhcp4_parser.yy"
+#line 2129 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3442,7 +3442,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 607: // sub_pool4: "{" $@85 pool_params "}"
-#line 2138 "dhcp4_parser.yy"
+#line 2133 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3452,7 +3452,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 610: // pool_params: pool_params ","
-#line 2146 "dhcp4_parser.yy"
+#line 2141 "dhcp4_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
@@ -3460,7 +3460,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 619: // $@86: %empty
-#line 2161 "dhcp4_parser.yy"
+#line 2156 "dhcp4_parser.yy"
                  {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3469,7 +3469,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 620: // pool_entry: "pool" $@86 ":" "constant string"
-#line 2164 "dhcp4_parser.yy"
+#line 2159 "dhcp4_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -3479,7 +3479,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 621: // pool_id: "pool-id" ":" "integer"
-#line 2170 "dhcp4_parser.yy"
+#line 2165 "dhcp4_parser.yy"
                                {
     ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3489,7 +3489,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 622: // $@87: %empty
-#line 2176 "dhcp4_parser.yy"
+#line 2171 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3497,7 +3497,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 623: // user_context: "user-context" $@87 ":" map_value
-#line 2178 "dhcp4_parser.yy"
+#line 2173 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -3524,7 +3524,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 624: // $@88: %empty
-#line 2201 "dhcp4_parser.yy"
+#line 2196 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3532,7 +3532,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 625: // comment: "comment" $@88 ":" "constant string"
-#line 2203 "dhcp4_parser.yy"
+#line 2198 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -3561,7 +3561,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 626: // $@89: %empty
-#line 2231 "dhcp4_parser.yy"
+#line 2226 "dhcp4_parser.yy"
                            {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3573,7 +3573,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 627: // reservations: "reservations" $@89 ":" "[" reservations_list "]"
-#line 2237 "dhcp4_parser.yy"
+#line 2232 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3582,7 +3582,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 632: // not_empty_reservations_list: not_empty_reservations_list ","
-#line 2248 "dhcp4_parser.yy"
+#line 2243 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3590,7 +3590,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 633: // $@90: %empty
-#line 2253 "dhcp4_parser.yy"
+#line 2248 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3600,7 +3600,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 634: // reservation: "{" $@90 reservation_params "}"
-#line 2257 "dhcp4_parser.yy"
+#line 2252 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
@@ -3609,7 +3609,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 635: // $@91: %empty
-#line 2262 "dhcp4_parser.yy"
+#line 2257 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3619,7 +3619,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 636: // sub_reservation: "{" $@91 reservation_params "}"
-#line 2266 "dhcp4_parser.yy"
+#line 2261 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
@@ -3628,7 +3628,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 641: // not_empty_reservation_params: not_empty_reservation_params ","
-#line 2277 "dhcp4_parser.yy"
+#line 2272 "dhcp4_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3636,7 +3636,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 657: // $@92: %empty
-#line 2300 "dhcp4_parser.yy"
+#line 2295 "dhcp4_parser.yy"
                          {
     ctx.unique("next-server", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3645,7 +3645,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 658: // next_server: "next-server" $@92 ":" "constant string"
-#line 2303 "dhcp4_parser.yy"
+#line 2298 "dhcp4_parser.yy"
                {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
@@ -3655,7 +3655,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 659: // $@93: %empty
-#line 2309 "dhcp4_parser.yy"
+#line 2304 "dhcp4_parser.yy"
                                  {
     ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3664,7 +3664,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 660: // server_hostname: "server-hostname" $@93 ":" "constant string"
-#line 2312 "dhcp4_parser.yy"
+#line 2307 "dhcp4_parser.yy"
                {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
@@ -3674,7 +3674,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 661: // $@94: %empty
-#line 2318 "dhcp4_parser.yy"
+#line 2313 "dhcp4_parser.yy"
                                {
     ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3683,7 +3683,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 662: // boot_file_name: "boot-file-name" $@94 ":" "constant string"
-#line 2321 "dhcp4_parser.yy"
+#line 2316 "dhcp4_parser.yy"
                {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
@@ -3693,7 +3693,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 663: // $@95: %empty
-#line 2327 "dhcp4_parser.yy"
+#line 2322 "dhcp4_parser.yy"
                        {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3702,7 +3702,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 664: // ip_address: "ip-address" $@95 ":" "constant string"
-#line 2330 "dhcp4_parser.yy"
+#line 2325 "dhcp4_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
@@ -3712,7 +3712,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 665: // $@96: %empty
-#line 2336 "dhcp4_parser.yy"
+#line 2331 "dhcp4_parser.yy"
            {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3721,7 +3721,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 666: // duid: "duid" $@96 ":" "constant string"
-#line 2339 "dhcp4_parser.yy"
+#line 2334 "dhcp4_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -3731,7 +3731,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 667: // $@97: %empty
-#line 2345 "dhcp4_parser.yy"
+#line 2340 "dhcp4_parser.yy"
                        {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3740,7 +3740,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 668: // hw_address: "hw-address" $@97 ":" "constant string"
-#line 2348 "dhcp4_parser.yy"
+#line 2343 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -3750,7 +3750,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 669: // $@98: %empty
-#line 2354 "dhcp4_parser.yy"
+#line 2349 "dhcp4_parser.yy"
                            {
     ctx.unique("client-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3759,7 +3759,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 670: // client_id_value: "client-id" $@98 ":" "constant string"
-#line 2357 "dhcp4_parser.yy"
+#line 2352 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
@@ -3769,7 +3769,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 671: // $@99: %empty
-#line 2363 "dhcp4_parser.yy"
+#line 2358 "dhcp4_parser.yy"
                              {
     ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3778,7 +3778,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 672: // circuit_id_value: "circuit-id" $@99 ":" "constant string"
-#line 2366 "dhcp4_parser.yy"
+#line 2361 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
@@ -3788,7 +3788,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 673: // $@100: %empty
-#line 2372 "dhcp4_parser.yy"
+#line 2367 "dhcp4_parser.yy"
                        {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3797,7 +3797,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 674: // flex_id_value: "flex-id" $@100 ":" "constant string"
-#line 2375 "dhcp4_parser.yy"
+#line 2370 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
@@ -3807,7 +3807,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 675: // $@101: %empty
-#line 2381 "dhcp4_parser.yy"
+#line 2376 "dhcp4_parser.yy"
                    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3816,7 +3816,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 676: // hostname: "hostname" $@101 ":" "constant string"
-#line 2384 "dhcp4_parser.yy"
+#line 2379 "dhcp4_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -3826,7 +3826,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 677: // $@102: %empty
-#line 2390 "dhcp4_parser.yy"
+#line 2385 "dhcp4_parser.yy"
                                            {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3838,7 +3838,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 678: // reservation_client_classes: "client-classes" $@102 ":" list_strings
-#line 2396 "dhcp4_parser.yy"
+#line 2391 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3847,7 +3847,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 679: // $@103: %empty
-#line 2404 "dhcp4_parser.yy"
+#line 2399 "dhcp4_parser.yy"
              {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3859,7 +3859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 680: // relay: "relay" $@103 ":" "{" relay_map "}"
-#line 2410 "dhcp4_parser.yy"
+#line 2405 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3868,7 +3868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 682: // $@104: %empty
-#line 2418 "dhcp4_parser.yy"
+#line 2413 "dhcp4_parser.yy"
                            {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3880,7 +3880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 683: // ip_addresses: "ip-addresses" $@104 ":" list_strings
-#line 2424 "dhcp4_parser.yy"
+#line 2419 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3889,7 +3889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 684: // $@105: %empty
-#line 2432 "dhcp4_parser.yy"
+#line 2427 "dhcp4_parser.yy"
                                {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3901,7 +3901,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 685: // client_classes: "client-classes" $@105 ":" "[" client_classes_list "]"
-#line 2438 "dhcp4_parser.yy"
+#line 2433 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3910,7 +3910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 688: // client_classes_list: client_classes_list ","
-#line 2445 "dhcp4_parser.yy"
+#line 2440 "dhcp4_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -3918,7 +3918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 689: // $@106: %empty
-#line 2450 "dhcp4_parser.yy"
+#line 2445 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3928,7 +3928,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 690: // client_class_entry: "{" $@106 client_class_params "}"
-#line 2454 "dhcp4_parser.yy"
+#line 2449 "dhcp4_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3938,7 +3938,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 695: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2466 "dhcp4_parser.yy"
+#line 2461 "dhcp4_parser.yy"
                                           {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3946,7 +3946,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 713: // $@107: %empty
-#line 2491 "dhcp4_parser.yy"
+#line 2486 "dhcp4_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3955,7 +3955,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 714: // client_class_test: "test" $@107 ":" "constant string"
-#line 2494 "dhcp4_parser.yy"
+#line 2489 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -3965,7 +3965,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 715: // $@108: %empty
-#line 2500 "dhcp4_parser.yy"
+#line 2495 "dhcp4_parser.yy"
                                           {
     ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3974,7 +3974,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 716: // client_class_template_test: "template-test" $@108 ":" "constant string"
-#line 2503 "dhcp4_parser.yy"
+#line 2498 "dhcp4_parser.yy"
                {
     ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("template-test", template_test);
@@ -3984,7 +3984,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 717: // only_if_required: "only-if-required" ":" "boolean"
-#line 2509 "dhcp4_parser.yy"
+#line 2504 "dhcp4_parser.yy"
                                                  {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3994,7 +3994,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 718: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2517 "dhcp4_parser.yy"
+#line 2512 "dhcp4_parser.yy"
                                          {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4004,7 +4004,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 719: // $@109: %empty
-#line 2525 "dhcp4_parser.yy"
+#line 2520 "dhcp4_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4016,7 +4016,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 720: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}"
-#line 2531 "dhcp4_parser.yy"
+#line 2526 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4025,7 +4025,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 723: // control_socket_params: control_socket_params ","
-#line 2538 "dhcp4_parser.yy"
+#line 2533 "dhcp4_parser.yy"
                                                    {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -4033,7 +4033,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 729: // $@110: %empty
-#line 2550 "dhcp4_parser.yy"
+#line 2545 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4042,7 +4042,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 730: // control_socket_type: "socket-type" $@110 ":" "constant string"
-#line 2553 "dhcp4_parser.yy"
+#line 2548 "dhcp4_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -4052,7 +4052,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 731: // $@111: %empty
-#line 2559 "dhcp4_parser.yy"
+#line 2554 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4061,7 +4061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 732: // control_socket_name: "socket-name" $@111 ":" "constant string"
-#line 2562 "dhcp4_parser.yy"
+#line 2557 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -4071,7 +4071,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 733: // $@112: %empty
-#line 2571 "dhcp4_parser.yy"
+#line 2566 "dhcp4_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4083,7 +4083,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 734: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}"
-#line 2577 "dhcp4_parser.yy"
+#line 2572 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4094,7 +4094,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 737: // queue_control_params: queue_control_params ","
-#line 2586 "dhcp4_parser.yy"
+#line 2581 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -4102,7 +4102,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 744: // enable_queue: "enable-queue" ":" "boolean"
-#line 2599 "dhcp4_parser.yy"
+#line 2594 "dhcp4_parser.yy"
                                          {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4112,7 +4112,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 745: // $@113: %empty
-#line 2605 "dhcp4_parser.yy"
+#line 2600 "dhcp4_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4121,7 +4121,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 746: // queue_type: "queue-type" $@113 ":" "constant string"
-#line 2608 "dhcp4_parser.yy"
+#line 2603 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
@@ -4131,7 +4131,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 747: // capacity: "capacity" ":" "integer"
-#line 2614 "dhcp4_parser.yy"
+#line 2609 "dhcp4_parser.yy"
                                  {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4141,7 +4141,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 748: // $@114: %empty
-#line 2620 "dhcp4_parser.yy"
+#line 2615 "dhcp4_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4150,7 +4150,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 749: // arbitrary_map_entry: "constant string" $@114 ":" value
-#line 2623 "dhcp4_parser.yy"
+#line 2618 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4159,7 +4159,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 750: // $@115: %empty
-#line 2630 "dhcp4_parser.yy"
+#line 2625 "dhcp4_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4171,7 +4171,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 751: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}"
-#line 2636 "dhcp4_parser.yy"
+#line 2631 "dhcp4_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4182,7 +4182,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 752: // $@116: %empty
-#line 2643 "dhcp4_parser.yy"
+#line 2638 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4192,7 +4192,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 753: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}"
-#line 2647 "dhcp4_parser.yy"
+#line 2642 "dhcp4_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -4202,15 +4202,15 @@ namespace isc { namespace dhcp {
     break;
 
   case 756: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 2655 "dhcp4_parser.yy"
+#line 2650 "dhcp4_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
 #line 4210 "dhcp4_parser.cc"
     break;
 
-  case 775: // enable_updates: "enable-updates" ":" "boolean"
-#line 2680 "dhcp4_parser.yy"
+  case 768: // enable_updates: "enable-updates" ":" "boolean"
+#line 2668 "dhcp4_parser.yy"
                                              {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4219,8 +4219,8 @@ namespace isc { namespace dhcp {
 #line 4220 "dhcp4_parser.cc"
     break;
 
-  case 776: // $@117: %empty
-#line 2686 "dhcp4_parser.yy"
+  case 769: // $@117: %empty
+#line 2674 "dhcp4_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4228,8 +4228,8 @@ namespace isc { namespace dhcp {
 #line 4229 "dhcp4_parser.cc"
     break;
 
-  case 777: // server_ip: "server-ip" $@117 ":" "constant string"
-#line 2689 "dhcp4_parser.yy"
+  case 770: // server_ip: "server-ip" $@117 ":" "constant string"
+#line 2677 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
@@ -4238,8 +4238,8 @@ namespace isc { namespace dhcp {
 #line 4239 "dhcp4_parser.cc"
     break;
 
-  case 778: // server_port: "server-port" ":" "integer"
-#line 2695 "dhcp4_parser.yy"
+  case 771: // server_port: "server-port" ":" "integer"
+#line 2683 "dhcp4_parser.yy"
                                        {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4248,8 +4248,8 @@ namespace isc { namespace dhcp {
 #line 4249 "dhcp4_parser.cc"
     break;
 
-  case 779: // $@118: %empty
-#line 2701 "dhcp4_parser.yy"
+  case 772: // $@118: %empty
+#line 2689 "dhcp4_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4257,8 +4257,8 @@ namespace isc { namespace dhcp {
 #line 4258 "dhcp4_parser.cc"
     break;
 
-  case 780: // sender_ip: "sender-ip" $@118 ":" "constant string"
-#line 2704 "dhcp4_parser.yy"
+  case 773: // sender_ip: "sender-ip" $@118 ":" "constant string"
+#line 2692 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
@@ -4267,8 +4267,8 @@ namespace isc { namespace dhcp {
 #line 4268 "dhcp4_parser.cc"
     break;
 
-  case 781: // sender_port: "sender-port" ":" "integer"
-#line 2710 "dhcp4_parser.yy"
+  case 774: // sender_port: "sender-port" ":" "integer"
+#line 2698 "dhcp4_parser.yy"
                                        {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4277,8 +4277,8 @@ namespace isc { namespace dhcp {
 #line 4278 "dhcp4_parser.cc"
     break;
 
-  case 782: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2716 "dhcp4_parser.yy"
+  case 775: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2704 "dhcp4_parser.yy"
                                              {
     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)));
@@ -4287,8 +4287,8 @@ namespace isc { namespace dhcp {
 #line 4288 "dhcp4_parser.cc"
     break;
 
-  case 783: // $@119: %empty
-#line 2722 "dhcp4_parser.yy"
+  case 776: // $@119: %empty
+#line 2710 "dhcp4_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -4296,8 +4296,8 @@ namespace isc { namespace dhcp {
 #line 4297 "dhcp4_parser.cc"
     break;
 
-  case 784: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
-#line 2725 "dhcp4_parser.yy"
+  case 777: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
+#line 2713 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4305,20 +4305,20 @@ namespace isc { namespace dhcp {
 #line 4306 "dhcp4_parser.cc"
     break;
 
-  case 785: // ncr_protocol_value: "udp"
-#line 2731 "dhcp4_parser.yy"
+  case 778: // ncr_protocol_value: "udp"
+#line 2719 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 4312 "dhcp4_parser.cc"
     break;
 
-  case 786: // ncr_protocol_value: "tcp"
-#line 2732 "dhcp4_parser.yy"
+  case 779: // ncr_protocol_value: "tcp"
+#line 2720 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 4318 "dhcp4_parser.cc"
     break;
 
-  case 787: // $@120: %empty
-#line 2735 "dhcp4_parser.yy"
+  case 780: // $@120: %empty
+#line 2723 "dhcp4_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
@@ -4326,8 +4326,8 @@ namespace isc { namespace dhcp {
 #line 4327 "dhcp4_parser.cc"
     break;
 
-  case 788: // ncr_format: "ncr-format" $@120 ":" "JSON"
-#line 2738 "dhcp4_parser.yy"
+  case 781: // ncr_format: "ncr-format" $@120 ":" "JSON"
+#line 2726 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -4336,122 +4336,8 @@ namespace isc { namespace dhcp {
 #line 4337 "dhcp4_parser.cc"
     break;
 
-  case 789: // $@121: %empty
-#line 2745 "dhcp4_parser.yy"
-                                         {
-    ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4346 "dhcp4_parser.cc"
-    break;
-
-  case 790: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string"
-#line 2748 "dhcp4_parser.yy"
-               {
-    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 4356 "dhcp4_parser.cc"
-    break;
-
-  case 791: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2755 "dhcp4_parser.yy"
-                                                         {
-    ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("override-no-update", b);
-}
-#line 4366 "dhcp4_parser.cc"
-    break;
-
-  case 792: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2762 "dhcp4_parser.yy"
-                                                                 {
-    ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("override-client-update", b);
-}
-#line 4376 "dhcp4_parser.cc"
-    break;
-
-  case 793: // $@122: %empty
-#line 2769 "dhcp4_parser.yy"
-                                             {
-    ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.REPLACE_CLIENT_NAME);
-}
-#line 4385 "dhcp4_parser.cc"
-    break;
-
-  case 794: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value
-#line 2772 "dhcp4_parser.yy"
-                                       {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 4394 "dhcp4_parser.cc"
-    break;
-
-  case 795: // $@123: %empty
-#line 2778 "dhcp4_parser.yy"
-                                       {
-    ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4403 "dhcp4_parser.cc"
-    break;
-
-  case 796: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string"
-#line 2781 "dhcp4_parser.yy"
-               {
-    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 4413 "dhcp4_parser.cc"
-    break;
-
-  case 797: // $@124: %empty
-#line 2788 "dhcp4_parser.yy"
-                                         {
-    ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4422 "dhcp4_parser.cc"
-    break;
-
-  case 798: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string"
-#line 2791 "dhcp4_parser.yy"
-               {
-    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 4432 "dhcp4_parser.cc"
-    break;
-
-  case 799: // $@125: %empty
-#line 2798 "dhcp4_parser.yy"
-                                                         {
-    ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4441 "dhcp4_parser.cc"
-    break;
-
-  case 800: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string"
-#line 2801 "dhcp4_parser.yy"
-               {
-    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 4451 "dhcp4_parser.cc"
-    break;
-
-  case 801: // $@126: %empty
-#line 2810 "dhcp4_parser.yy"
+  case 782: // $@121: %empty
+#line 2734 "dhcp4_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4459,48 +4345,48 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 4463 "dhcp4_parser.cc"
+#line 4349 "dhcp4_parser.cc"
     break;
 
-  case 802: // config_control: "config-control" $@126 ":" "{" config_control_params "}"
-#line 2816 "dhcp4_parser.yy"
+  case 783: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
+#line 2740 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4473 "dhcp4_parser.cc"
+#line 4359 "dhcp4_parser.cc"
     break;
 
-  case 803: // $@127: %empty
-#line 2822 "dhcp4_parser.yy"
+  case 784: // $@122: %empty
+#line 2746 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4483 "dhcp4_parser.cc"
+#line 4369 "dhcp4_parser.cc"
     break;
 
-  case 804: // sub_config_control: "{" $@127 config_control_params "}"
-#line 2826 "dhcp4_parser.yy"
+  case 785: // sub_config_control: "{" $@122 config_control_params "}"
+#line 2750 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 4492 "dhcp4_parser.cc"
+#line 4378 "dhcp4_parser.cc"
     break;
 
-  case 807: // config_control_params: config_control_params ","
-#line 2834 "dhcp4_parser.yy"
+  case 788: // config_control_params: config_control_params ","
+#line 2758 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
-#line 4500 "dhcp4_parser.cc"
+#line 4386 "dhcp4_parser.cc"
     break;
 
-  case 810: // $@128: %empty
-#line 2844 "dhcp4_parser.yy"
+  case 791: // $@123: %empty
+#line 2768 "dhcp4_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4508,30 +4394,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 4512 "dhcp4_parser.cc"
+#line 4398 "dhcp4_parser.cc"
     break;
 
-  case 811: // config_databases: "config-databases" $@128 ":" "[" database_list "]"
-#line 2850 "dhcp4_parser.yy"
+  case 792: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
+#line 2774 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4521 "dhcp4_parser.cc"
+#line 4407 "dhcp4_parser.cc"
     break;
 
-  case 812: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2855 "dhcp4_parser.yy"
+  case 793: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2779 "dhcp4_parser.yy"
                                                              {
     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)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 4531 "dhcp4_parser.cc"
+#line 4417 "dhcp4_parser.cc"
     break;
 
-  case 813: // $@129: %empty
-#line 2863 "dhcp4_parser.yy"
+  case 794: // $@124: %empty
+#line 2787 "dhcp4_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4539,83 +4425,83 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 4543 "dhcp4_parser.cc"
+#line 4429 "dhcp4_parser.cc"
     break;
 
-  case 814: // loggers: "loggers" $@129 ":" "[" loggers_entries "]"
-#line 2869 "dhcp4_parser.yy"
+  case 795: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
+#line 2793 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4552 "dhcp4_parser.cc"
+#line 4438 "dhcp4_parser.cc"
     break;
 
-  case 817: // loggers_entries: loggers_entries ","
-#line 2878 "dhcp4_parser.yy"
+  case 798: // loggers_entries: loggers_entries ","
+#line 2802 "dhcp4_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
-#line 4560 "dhcp4_parser.cc"
+#line 4446 "dhcp4_parser.cc"
     break;
 
-  case 818: // $@130: %empty
-#line 2884 "dhcp4_parser.yy"
+  case 799: // $@125: %empty
+#line 2808 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 4570 "dhcp4_parser.cc"
+#line 4456 "dhcp4_parser.cc"
     break;
 
-  case 819: // logger_entry: "{" $@130 logger_params "}"
-#line 2888 "dhcp4_parser.yy"
+  case 800: // logger_entry: "{" $@125 logger_params "}"
+#line 2812 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 4578 "dhcp4_parser.cc"
+#line 4464 "dhcp4_parser.cc"
     break;
 
-  case 822: // logger_params: logger_params ","
-#line 2894 "dhcp4_parser.yy"
+  case 803: // logger_params: logger_params ","
+#line 2818 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
-#line 4586 "dhcp4_parser.cc"
+#line 4472 "dhcp4_parser.cc"
     break;
 
-  case 830: // debuglevel: "debuglevel" ":" "integer"
-#line 2908 "dhcp4_parser.yy"
+  case 811: // debuglevel: "debuglevel" ":" "integer"
+#line 2832 "dhcp4_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 4596 "dhcp4_parser.cc"
+#line 4482 "dhcp4_parser.cc"
     break;
 
-  case 831: // $@131: %empty
-#line 2914 "dhcp4_parser.yy"
+  case 812: // $@126: %empty
+#line 2838 "dhcp4_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4605 "dhcp4_parser.cc"
+#line 4491 "dhcp4_parser.cc"
     break;
 
-  case 832: // severity: "severity" $@131 ":" "constant string"
-#line 2917 "dhcp4_parser.yy"
+  case 813: // severity: "severity" $@126 ":" "constant string"
+#line 2841 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 4615 "dhcp4_parser.cc"
+#line 4501 "dhcp4_parser.cc"
     break;
 
-  case 833: // $@132: %empty
-#line 2923 "dhcp4_parser.yy"
+  case 814: // $@127: %empty
+#line 2847 "dhcp4_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4623,122 +4509,122 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 4627 "dhcp4_parser.cc"
+#line 4513 "dhcp4_parser.cc"
     break;
 
-  case 834: // output_options_list: "output-options" $@132 ":" "[" output_options_list_content "]"
-#line 2929 "dhcp4_parser.yy"
+  case 815: // output_options_list: "output-options" $@127 ":" "[" output_options_list_content "]"
+#line 2853 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4636 "dhcp4_parser.cc"
+#line 4522 "dhcp4_parser.cc"
     break;
 
-  case 837: // output_options_list_content: output_options_list_content ","
-#line 2936 "dhcp4_parser.yy"
+  case 818: // output_options_list_content: output_options_list_content ","
+#line 2860 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
-#line 4644 "dhcp4_parser.cc"
+#line 4530 "dhcp4_parser.cc"
     break;
 
-  case 838: // $@133: %empty
-#line 2941 "dhcp4_parser.yy"
+  case 819: // $@128: %empty
+#line 2865 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4654 "dhcp4_parser.cc"
+#line 4540 "dhcp4_parser.cc"
     break;
 
-  case 839: // output_entry: "{" $@133 output_params_list "}"
-#line 2945 "dhcp4_parser.yy"
+  case 820: // output_entry: "{" $@128 output_params_list "}"
+#line 2869 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4662 "dhcp4_parser.cc"
+#line 4548 "dhcp4_parser.cc"
     break;
 
-  case 842: // output_params_list: output_params_list ","
-#line 2951 "dhcp4_parser.yy"
+  case 823: // output_params_list: output_params_list ","
+#line 2875 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 4670 "dhcp4_parser.cc"
+#line 4556 "dhcp4_parser.cc"
     break;
 
-  case 848: // $@134: %empty
-#line 2963 "dhcp4_parser.yy"
+  case 829: // $@129: %empty
+#line 2887 "dhcp4_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4679 "dhcp4_parser.cc"
+#line 4565 "dhcp4_parser.cc"
     break;
 
-  case 849: // output: "output" $@134 ":" "constant string"
-#line 2966 "dhcp4_parser.yy"
+  case 830: // output: "output" $@129 ":" "constant string"
+#line 2890 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4689 "dhcp4_parser.cc"
+#line 4575 "dhcp4_parser.cc"
     break;
 
-  case 850: // flush: "flush" ":" "boolean"
-#line 2972 "dhcp4_parser.yy"
+  case 831: // flush: "flush" ":" "boolean"
+#line 2896 "dhcp4_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4699 "dhcp4_parser.cc"
+#line 4585 "dhcp4_parser.cc"
     break;
 
-  case 851: // maxsize: "maxsize" ":" "integer"
-#line 2978 "dhcp4_parser.yy"
+  case 832: // maxsize: "maxsize" ":" "integer"
+#line 2902 "dhcp4_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 4709 "dhcp4_parser.cc"
+#line 4595 "dhcp4_parser.cc"
     break;
 
-  case 852: // maxver: "maxver" ":" "integer"
-#line 2984 "dhcp4_parser.yy"
+  case 833: // maxver: "maxver" ":" "integer"
+#line 2908 "dhcp4_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 4719 "dhcp4_parser.cc"
+#line 4605 "dhcp4_parser.cc"
     break;
 
-  case 853: // $@135: %empty
-#line 2990 "dhcp4_parser.yy"
+  case 834: // $@130: %empty
+#line 2914 "dhcp4_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4728 "dhcp4_parser.cc"
+#line 4614 "dhcp4_parser.cc"
     break;
 
-  case 854: // pattern: "pattern" $@135 ":" "constant string"
-#line 2993 "dhcp4_parser.yy"
+  case 835: // pattern: "pattern" $@130 ":" "constant string"
+#line 2917 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4738 "dhcp4_parser.cc"
+#line 4624 "dhcp4_parser.cc"
     break;
 
-  case 855: // $@136: %empty
-#line 2999 "dhcp4_parser.yy"
+  case 836: // $@131: %empty
+#line 2923 "dhcp4_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4746,68 +4632,68 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.COMPATIBILITY);
 }
-#line 4750 "dhcp4_parser.cc"
+#line 4636 "dhcp4_parser.cc"
     break;
 
-  case 856: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}"
-#line 3005 "dhcp4_parser.yy"
+  case 837: // compatibility: "compatibility" $@131 ":" "{" compatibility_params "}"
+#line 2929 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4759 "dhcp4_parser.cc"
+#line 4645 "dhcp4_parser.cc"
     break;
 
-  case 859: // compatibility_params: compatibility_params ","
-#line 3012 "dhcp4_parser.yy"
+  case 840: // compatibility_params: compatibility_params ","
+#line 2936 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 4767 "dhcp4_parser.cc"
+#line 4653 "dhcp4_parser.cc"
     break;
 
-  case 865: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3024 "dhcp4_parser.yy"
+  case 846: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
+#line 2948 "dhcp4_parser.yy"
                                                              {
     ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lenient-option-parsing", b);
 }
-#line 4777 "dhcp4_parser.cc"
+#line 4663 "dhcp4_parser.cc"
     break;
 
-  case 866: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
-#line 3030 "dhcp4_parser.yy"
+  case 847: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
+#line 2954 "dhcp4_parser.yy"
                                                                    {
     ctx.unique("ignore-dhcp-server-identifier", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ignore-dhcp-server-identifier", b);
 }
-#line 4787 "dhcp4_parser.cc"
+#line 4673 "dhcp4_parser.cc"
     break;
 
-  case 867: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
-#line 3036 "dhcp4_parser.yy"
+  case 848: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
+#line 2960 "dhcp4_parser.yy"
                                                              {
     ctx.unique("ignore-rai-link-selection", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ignore-rai-link-selection", b);
 }
-#line 4797 "dhcp4_parser.cc"
+#line 4683 "dhcp4_parser.cc"
     break;
 
-  case 868: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
-#line 3042 "dhcp4_parser.yy"
+  case 849: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
+#line 2966 "dhcp4_parser.yy"
                                                            {
     ctx.unique("exclude-first-last-24", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("exclude-first-last-24", b);
 }
-#line 4807 "dhcp4_parser.cc"
+#line 4693 "dhcp4_parser.cc"
     break;
 
 
-#line 4811 "dhcp4_parser.cc"
+#line 4697 "dhcp4_parser.cc"
 
             default:
               break;
@@ -5159,147 +5045,144 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -1028;
+  const short Dhcp4Parser::yypact_ninf_ = -995;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     435, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    75,    44,    64,   109,   137,   167,
-     186,   193,   223,   246,   277,   278,   279,   289, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    44,  -167,    83,   244,    88,   662,
-     -40,   310,   152,   325,   115,   -41,   452,   134, -1028,   300,
-     304,   334,   339,   305, -1028,    15, -1028, -1028, -1028, -1028,
-     344,   353,   359, -1028, -1028, -1028,   363,   364, -1028, -1028,
-   -1028,   365,   366,   373,   374,   377,   387,   389,   390,   392,
-     393,   394, -1028,   395,   396,   397,   400,   401, -1028, -1028,
-   -1028,   404,   405,   407,   408, -1028, -1028, -1028,   409, -1028,
-   -1028, -1028, -1028, -1028, -1028,   411,   412,   413, -1028, -1028,
-   -1028, -1028, -1028,   414, -1028, -1028, -1028, -1028, -1028, -1028,
-     415,   416,   417, -1028, -1028,   419, -1028,    42, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-     422,   428,   429,   436, -1028,    49, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,   440, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    59, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   441, -1028,
-   -1028, -1028, -1028,    62, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028,   348,   443, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028,   449, -1028, -1028,   454, -1028,
-   -1028, -1028,   455, -1028, -1028,   453,   457, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-     458,   459,   460, -1028, -1028, -1028, -1028,   461,   462, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,    65, -1028, -1028, -1028,   463, -1028, -1028,   466,
-   -1028,   467,   469, -1028, -1028,   471,   472, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    91, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,   473,    98, -1028, -1028, -1028, -1028,    44,    44,
-   -1028,   256,   476, -1028, -1028,   478,   480,   481,   262,   263,
-     266,   485,   488,   490,   272,   271,   493,   496,   498,   281,
-     283,   284,   287,   303,   293,   290,   296,   299,   307,   308,
-     520,   311,   313,   314,   316,   317,   524,   529,   539,   319,
-     320,   322,   327,   550,   551,   553,   335,   555,   556,   558,
-     561,   562,   563,   347,   349,   350,   567,   569,   573,   574,
-     577,   361,   578,   585,   588,   590,   591,   592,   372,   382,
-     385,   595,   598, -1028,   244, -1028,   608,   609,   610,   432,
-     433,   399,   418,    88, -1028,   611,   616,   632,   633,   634,
-     635,   437,   636,   655,   657,   662, -1028,   658,   445,   -40,
-   -1028,   659,   660,   665,   666,   667,   669,   671,   672, -1028,
-     310, -1028,   673,   674,   456,   676,   677,   678,   464, -1028,
-     325,   679,   465,   474,   475, -1028,   115,   680,   682,    23,
-   -1028,   477,   683,   684,   468,   694,   482,   483,   697,   699,
-     479,   484,   707,   708,   709,   711,   452, -1028,   712,   494,
-     134, -1028, -1028, -1028,   714,   713,   715,   716,   732, -1028,
-   -1028, -1028,   444,   497,   499, -1028, -1028,   733,   734,   737,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028,   531, -1028, -1028, -1028, -1028, -1028,     9,   535,   537,
-   -1028, -1028, -1028, -1028,   755,   756,   757, -1028,   541,   273,
-     763,   762,   552,   264, -1028, -1028, -1028,   767,   768,   770,
-     771,   778, -1028,   779,   780,   781,   785,   571,   575, -1028,
-   -1028, -1028,   773,   788, -1028,   791,   166,   199, -1028, -1028,
-   -1028, -1028, -1028,   579,   580,   581,   794,   582,   583, -1028,
-     791,   584,   800, -1028,   587, -1028, -1028,   791,   589,   593,
-     594,   596,   597,   599,   600, -1028,   601,   602, -1028,   603,
-     604,   605, -1028, -1028,   606, -1028, -1028, -1028, -1028,   607,
-     762, -1028, -1028,   612,   613, -1028,   614, -1028, -1028,     8,
-     625, -1028, -1028,     9,   615,   617,   618, -1028,   807, -1028,
-   -1028,    44,   244,   134,    88,   212, -1028, -1028, -1028,   114,
-     114,   806, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028,   810,   813,   823, -1028, -1028, -1028, -1028, -1028, -1028,
-     824, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   150,
-     825,   826,   831,    72,   -81,   -31,    34,   452, -1028, -1028,
-     834,  -117, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028,   835, -1028, -1028, -1028, -1028,   696, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028,   806, -1028,   123,
-     182,   191, -1028, -1028,   228, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,   840,   841,   842,   843,   844,   845,   846,   847,
-     850,   851, -1028,   852,   853, -1028, -1028, -1028, -1028, -1028,
-     238, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,   240, -1028,   808,   855, -1028, -1028,
-     854,   856, -1028, -1028,   857,   858, -1028, -1028,   859,   861,
-   -1028, -1028,   860,   864, -1028, -1028, -1028, -1028, -1028, -1028,
-      28, -1028, -1028, -1028, -1028, -1028, -1028, -1028,    32, -1028,
-   -1028,   862,   866, -1028, -1028,   865,   867, -1028,   868,   869,
-     870,   871,   872,   873,   249, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,   874,   875,   876, -1028,   251, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   257, -1028,
-   -1028, -1028,   877, -1028,   878, -1028, -1028, -1028,   291, -1028,
-   -1028, -1028, -1028, -1028,   294, -1028,    38, -1028,   879,   881,
-     882,   883, -1028,   295, -1028, -1028, -1028, -1028, -1028,   640,
-   -1028,   884,   885, -1028, -1028,   886, -1028,   887, -1028, -1028,
-   -1028,   888,   891,   212, -1028,   892,   893,   894,   895,   668,
-     664,   681,   675,   685,   686,   687,   688,   689,   690,   897,
-     691,   692,   898,   899,   901,   902,   114, -1028, -1028,   114,
-   -1028,   806,   662, -1028,   810,   325, -1028,   813,   115, -1028,
-     823,  1326, -1028,   824,   150, -1028,   154,   825, -1028,   310,
-   -1028,   826,   -41, -1028,   831,   695,   698,   700,   701,   702,
-     703,    72, -1028,   704,   705,   710,   -81, -1028,   903,   910,
-     -31, -1028,   706,   913,   717,   915,    34, -1028, -1028,    39,
-     834, -1028,   718,   719,   720,   721,  -117, -1028, -1028,   914,
-     919,   -40, -1028,   835,   923, -1028, -1028,   725,   726, -1028,
-      87,   727,   728,   729, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,   204, -1028, -1028,   730,   731,   735,
-     736, -1028,   297, -1028,   301, -1028,   922, -1028,   924, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028,   338, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-     930, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,   927,   933, -1028, -1028, -1028, -1028,
-   -1028, -1028,   929, -1028,   342, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028,   738,   739, -1028,
-   -1028,   740, -1028,    44, -1028, -1028,   934, -1028, -1028, -1028,
-   -1028, -1028,   346, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,   741,   352, -1028,   791, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,  1326,
-   -1028,   935,   937,   742, -1028,   154, -1028, -1028, -1028, -1028,
-   -1028, -1028,   938,   743,   950,    39, -1028, -1028, -1028, -1028,
-   -1028,   747,   748, -1028, -1028,   951, -1028,   750, -1028, -1028,
-   -1028,   948, -1028, -1028,   112, -1028,     7,   948, -1028, -1028,
-     955,   960,   969, -1028,   356, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,   973,   766,   758,   765,   976,     7, -1028,   776,
-   -1028, -1028, -1028,   786, -1028, -1028, -1028
+     417,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,    32,    39,    34,    40,    89,    92,
+      95,   103,   111,   118,   132,   138,   156,   158,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,    39,  -188,    56,   193,   168,   638,
+     -47,   306,   -15,    23,    77,  -116,   254,    60,  -995,    78,
+     170,    90,   163,   185,  -995,    47,  -995,  -995,  -995,  -995,
+     102,   283,   293,  -995,  -995,  -995,   305,   325,  -995,  -995,
+    -995,   349,   351,   353,   354,   356,   357,   358,   360,   363,
+     373,   380,  -995,   383,   386,   387,   389,   390,  -995,  -995,
+    -995,   391,   395,   396,   397,  -995,  -995,  -995,   403,  -995,
+    -995,  -995,  -995,  -995,  -995,   404,   405,   407,  -995,  -995,
+    -995,  -995,  -995,   409,  -995,  -995,  -995,  -995,  -995,  -995,
+     410,   411,   412,  -995,  -995,   413,  -995,    48,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+     416,   418,   434,   435,  -995,    59,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,   436,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,    71,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   437,  -995,
+    -995,  -995,  -995,    73,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   245,   288,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   318,  -995,  -995,   439,  -995,
+    -995,  -995,   440,  -995,  -995,   320,   449,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+     451,   452,   453,  -995,  -995,  -995,  -995,   445,   456,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,    84,  -995,  -995,  -995,   457,  -995,   458,  -995,
+     459,   460,  -995,  -995,  -995,  -995,  -995,   109,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   461,   113,
+    -995,  -995,  -995,  -995,    39,    39,  -995,  -131,   462,  -995,
+    -995,   464,   469,   470,  -132,   201,   255,   473,   476,   477,
+     265,   264,   482,   484,   488,   275,   277,   278,   281,   282,
+     284,   289,   291,   292,   294,   299,   497,   304,   307,   286,
+     308,   309,   498,   510,   515,   312,   315,   317,   321,   522,
+     527,   533,   326,   534,   536,   541,   542,   544,   545,   331,
+     332,   333,   550,   551,   552,   553,   555,   343,   556,   560,
+     564,   565,   566,   568,   355,   359,   361,   569,   570,  -995,
+     193,  -995,   572,   573,   576,   367,   371,   374,   375,   168,
+    -995,   590,   591,   593,   594,   595,   601,   392,   605,   607,
+     608,   638,  -995,   609,   399,   -47,  -995,   611,   630,   631,
+     632,   634,   636,   637,   639,  -995,   306,  -995,   641,   642,
+     424,   643,   644,   645,   430,  -995,    23,   647,   432,   433,
+     438,  -995,    77,   650,   651,    53,  -995,   441,   652,   442,
+     655,   444,   446,   659,   661,   254,  -995,   662,   463,    60,
+    -995,  -995,  -995,   663,   667,   669,   670,   671,  -995,  -995,
+    -995,   466,   467,   468,  -995,  -995,   680,   681,   684,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+     474,  -995,  -995,  -995,  -995,  -995,   -24,   475,   478,  -995,
+    -995,  -995,  -995,   685,   688,   689,  -995,   479,   263,   696,
+     695,   486,   280,  -995,  -995,  -995,   699,   724,   728,   730,
+     729,  -995,   731,   732,   733,   734,   520,   525,  -995,  -995,
+    -995,   738,   737,  -995,   740,   226,   285,  -995,  -995,  -995,
+    -995,  -995,   531,   532,   535,   745,   537,   546,  -995,   740,
+     547,   744,  -995,   554,  -995,  -995,   740,   558,   561,   562,
+     563,   571,   574,   575,  -995,   577,   578,  -995,   579,   580,
+     581,  -995,  -995,   582,  -995,  -995,  -995,  -995,   583,   695,
+    -995,  -995,   584,  -995,   585,  -995,  -995,    10,   588,  -995,
+     756,  -995,  -995,    39,   193,    60,   168,   319,  -995,  -995,
+    -995,  1073,  1073,   755,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,   762,   765,   766,  -995,  -995,  -995,  -995,
+    -995,  -995,   770,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,    96,   774,   775,   778,    94,   -53,   -82,   -64,   254,
+    -995,  -995,   779,    -3,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   780,  -995,  -995,  -995,  -995,
+     646,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   755,  -995,   116,   139,   178,  -995,
+    -995,   198,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   785,
+     786,   799,   800,   801,   808,   809,   810,   811,   812,  -995,
+     813,   814,  -995,  -995,  -995,  -995,  -995,   209,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   210,  -995,   777,   816,  -995,  -995,   815,   817,  -995,
+    -995,   819,   823,  -995,  -995,   821,   825,  -995,  -995,   824,
+     826,  -995,  -995,  -995,  -995,  -995,  -995,   140,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   166,  -995,  -995,   827,   828,
+    -995,  -995,   829,   831,  -995,   818,   832,   833,   834,   835,
+     836,   212,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   837,
+     838,   849,  -995,   213,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   287,  -995,  -995,  -995,   850,
+    -995,   852,  -995,  -995,  -995,   290,  -995,  -995,  -995,  -995,
+    -995,   296,  -995,   179,  -995,   864,   865,   866,   867,  -995,
+     300,  -995,  -995,  -995,  -995,  -995,   615,  -995,   868,   872,
+    -995,  -995,   869,  -995,   870,  -995,  -995,  -995,   874,   875,
+     319,  -995,   876,   877,   878,   879,   668,   672,   673,   675,
+     679,   682,   683,   691,   692,   693,   883,   686,   697,   884,
+     885,   886,   895,  1073,  -995,  -995,  1073,  -995,   755,   638,
+    -995,   762,    23,  -995,   765,    77,  -995,   766,   776,  -995,
+     770,    96,  -995,   301,   774,  -995,   306,  -995,   775,  -116,
+    -995,   778,   698,   700,   701,   702,   703,   705,    94,  -995,
+     687,   706,   707,   -53,  -995,   898,   909,   -82,  -995,   694,
+     913,   708,   923,   -64,  -995,  -995,   195,   779,  -995,   709,
+     710,   711,   713,    -3,  -995,  -995,   922,   931,   -47,  -995,
+     780,   932,  -995,  -995,   720,   722,  -995,   192,   723,   726,
+     741,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   258,  -995,  -995,   746,   748,   758,   759,  -995,   311,
+    -995,   322,  -995,   939,  -995,   947,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   324,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,   953,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   964,   970,  -995,  -995,  -995,  -995,  -995,  -995,   972,
+    -995,   334,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   761,   764,  -995,  -995,   782,  -995,
+      39,  -995,  -995,   979,  -995,  -995,  -995,  -995,  -995,   340,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   793,   342,  -995,   740,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,   776,  -995,   999,  1007,
+     796,  -995,   301,  -995,  -995,  -995,  -995,  -995,  -995,  1009,
+     802,  1014,   195,  -995,  -995,  -995,  -995,  -995,   806,   807,
+    -995,  -995,  1021,  -995,   830,  -995,  -995,  -995,  1022,  -995,
+    -995,   249,  -995,    13,  1022,  -995,  -995,  1027,  1028,  1032,
+    -995,   346,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  1044,
+     880,   890,   891,  1045,    13,  -995,   887,  -995,  -995,  -995,
+     893,  -995,  -995,  -995
   };
 
   const short
@@ -5311,16 +5194,16 @@ namespace isc { namespace dhcp {
       36,    32,    31,    28,    29,    30,    35,     3,    33,    34,
       59,     5,    65,     7,   208,     9,   388,    11,   606,    13,
      635,    15,   524,    17,   533,    19,   572,    21,   350,    23,
-     752,    25,   803,    27,    46,    39,     0,     0,     0,     0,
+     752,    25,   784,    27,    46,    39,     0,     0,     0,     0,
        0,   637,     0,   535,   574,     0,     0,     0,    48,     0,
-      47,     0,     0,    40,    61,     0,    63,   801,   193,   226,
+      47,     0,     0,    40,    61,     0,    63,   782,   193,   226,
        0,     0,     0,   657,   659,   661,     0,     0,   224,   237,
      239,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   150,     0,     0,     0,     0,     0,   161,   168,
      170,     0,     0,     0,     0,   379,   522,   563,     0,   153,
      174,   466,   622,   624,   459,     0,     0,     0,   312,   684,
      626,   341,   362,     0,   327,   719,   733,   750,   181,   183,
-       0,     0,     0,   813,   855,     0,   138,     0,    67,    70,
+       0,     0,     0,   794,   836,     0,   138,     0,    67,    70,
       71,    72,    73,    74,   108,   109,   110,   111,   112,    75,
      103,   134,   135,    92,    93,    94,   116,   117,   118,   119,
      120,   121,   122,   123,   124,   125,   114,   115,   126,   127,
@@ -5344,752 +5227,700 @@ namespace isc { namespace dhcp {
      541,   542,   543,   559,   544,   545,   546,   547,   548,   590,
        0,     0,     0,   588,   589,   592,   593,     0,   575,   576,
      579,   580,   581,   582,   583,   584,   585,   586,   587,   358,
-     360,   355,     0,   352,   356,   357,     0,   789,   776,     0,
-     779,     0,     0,   783,   787,     0,     0,   793,   795,   797,
-     799,   774,   772,   773,     0,   754,   757,   758,   759,   760,
-     761,   762,   763,   764,   769,   765,   766,   767,   768,   770,
-     771,   810,     0,     0,   805,   808,   809,    45,    50,     0,
-      37,    43,     0,    64,    60,     0,     0,     0,     0,     0,
+     360,   355,     0,   352,   356,   357,     0,   769,     0,   772,
+       0,     0,   776,   780,   767,   765,   766,     0,   754,   757,
+     758,   759,   760,   761,   762,   763,   764,   791,     0,     0,
+     786,   789,   790,    45,    50,     0,    37,    43,     0,    64,
+      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,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    58,
+      69,    66,     0,     0,     0,     0,     0,     0,     0,   197,
+     209,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   392,   389,     0,     0,   610,   607,     0,     0,     0,
+       0,     0,     0,     0,     0,   636,   641,   525,     0,     0,
+       0,     0,     0,     0,     0,   534,   539,     0,     0,     0,
+       0,   573,   578,     0,     0,   354,   351,     0,     0,     0,
+       0,     0,     0,     0,     0,   756,   753,     0,     0,   788,
+     785,    49,    41,     0,     0,     0,     0,     0,   155,   156,
+     157,     0,     0,     0,   191,   192,     0,     0,     0,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+       0,   186,   187,   158,   159,   160,     0,     0,     0,   172,
+     173,   180,   185,     0,     0,     0,   152,     0,     0,     0,
+       0,     0,     0,   456,   457,   458,     0,     0,     0,     0,
+       0,   718,     0,     0,     0,     0,     0,     0,   188,   189,
+     190,     0,     0,    68,     0,     0,     0,   220,   221,   222,
+     223,   196,     0,     0,     0,     0,     0,     0,   465,     0,
+       0,     0,   391,     0,   621,   609,     0,     0,     0,     0,
+       0,     0,     0,     0,   640,     0,     0,   551,     0,     0,
+       0,   562,   538,     0,   594,   595,   596,   577,     0,     0,
+     353,   768,     0,   771,     0,   774,   775,     0,     0,   755,
+       0,   793,   787,     0,     0,     0,     0,     0,   658,   660,
+     662,     0,     0,   241,   151,   163,   164,   165,   166,   167,
+     162,   169,   171,   381,   526,   565,   154,   176,   177,   178,
+     179,   175,   468,    38,   623,   625,   461,   462,   463,   464,
+     460,     0,     0,   628,   343,     0,     0,     0,     0,     0,
+     182,   184,     0,     0,    51,   211,   214,   215,   213,   218,
+     219,   217,   445,   447,   449,   599,   443,   451,   455,   453,
+       0,   620,   678,   664,   666,   668,   672,   670,   676,   674,
+     554,   287,   558,   556,   561,   591,   359,   361,   770,   773,
+     778,   779,   777,   781,   241,    42,     0,     0,     0,   233,
+     235,     0,   228,   231,   232,   274,   279,   281,   283,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
+       0,     0,   304,   306,   308,   310,   273,     0,   248,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,     0,   246,     0,   242,   243,   386,     0,   382,   383,
+     531,     0,   527,   528,   570,     0,   566,   567,   473,     0,
+     469,   470,   322,   323,   324,   325,   326,     0,   314,   317,
+     318,   319,   320,   321,   689,     0,   686,   633,     0,   629,
+     630,   348,     0,   344,   345,     0,     0,     0,     0,     0,
+       0,     0,   364,   367,   368,   369,   370,   371,   372,     0,
+       0,     0,   337,     0,   329,   332,   333,   334,   335,   336,
+     729,   731,   728,   726,   727,     0,   721,   724,   725,     0,
+     745,     0,   748,   741,   742,     0,   735,   738,   739,   740,
+     743,     0,   799,     0,   796,     0,     0,     0,     0,   845,
+       0,   838,   841,   842,   843,   844,    53,   604,     0,   600,
+     601,   682,     0,   681,     0,    62,   783,   194,     0,     0,
+     230,   227,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    58,    69,    66,     0,     0,     0,     0,
-       0,     0,     0,   197,   209,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   392,   389,     0,     0,   610,
-     607,     0,     0,     0,     0,     0,     0,     0,     0,   636,
-     641,   525,     0,     0,     0,     0,     0,     0,     0,   534,
-     539,     0,     0,     0,     0,   573,   578,     0,     0,   354,
-     351,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   756,   753,     0,     0,
-     807,   804,    49,    41,     0,     0,     0,     0,     0,   155,
-     156,   157,     0,     0,     0,   191,   192,     0,     0,     0,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,     0,   186,   187,   158,   159,   160,     0,     0,     0,
-     172,   173,   180,   185,     0,     0,     0,   152,     0,     0,
-       0,     0,     0,     0,   456,   457,   458,     0,     0,     0,
-       0,     0,   718,     0,     0,     0,     0,     0,     0,   188,
-     189,   190,     0,     0,    68,     0,     0,     0,   220,   221,
-     222,   223,   196,     0,     0,     0,     0,     0,     0,   465,
-       0,     0,     0,   391,     0,   621,   609,     0,     0,     0,
-       0,     0,     0,     0,     0,   640,     0,     0,   551,     0,
-       0,     0,   562,   538,     0,   594,   595,   596,   577,     0,
-       0,   353,   775,     0,     0,   778,     0,   781,   782,     0,
-       0,   791,   792,     0,     0,     0,     0,   755,     0,   812,
-     806,     0,     0,     0,     0,     0,   658,   660,   662,     0,
-       0,   241,   151,   163,   164,   165,   166,   167,   162,   169,
-     171,   381,   526,   565,   154,   176,   177,   178,   179,   175,
-     468,    38,   623,   625,   461,   462,   463,   464,   460,     0,
-       0,   628,   343,     0,     0,     0,     0,     0,   182,   184,
-       0,     0,    51,   211,   214,   215,   213,   218,   219,   217,
-     445,   447,   449,   599,   443,   451,   455,   453,     0,   620,
-     678,   664,   666,   668,   672,   670,   676,   674,   554,   287,
-     558,   556,   561,   591,   359,   361,   790,   777,   780,   785,
-     786,   784,   788,   794,   796,   798,   800,   241,    42,     0,
-       0,     0,   233,   235,     0,   228,   231,   232,   274,   279,
-     281,   283,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   297,     0,     0,   304,   306,   308,   310,   273,
-       0,   248,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,     0,   246,     0,   242,   243,   386,
-       0,   382,   383,   531,     0,   527,   528,   570,     0,   566,
-     567,   473,     0,   469,   470,   322,   323,   324,   325,   326,
-       0,   314,   317,   318,   319,   320,   321,   689,     0,   686,
-     633,     0,   629,   630,   348,     0,   344,   345,     0,     0,
-       0,     0,     0,     0,     0,   364,   367,   368,   369,   370,
-     371,   372,     0,     0,     0,   337,     0,   329,   332,   333,
-     334,   335,   336,   729,   731,   728,   726,   727,     0,   721,
-     724,   725,     0,   745,     0,   748,   741,   742,     0,   735,
-     738,   739,   740,   743,     0,   818,     0,   815,     0,     0,
-       0,     0,   864,     0,   857,   860,   861,   862,   863,    53,
-     604,     0,   600,   601,   682,     0,   681,     0,    62,   802,
-     194,     0,     0,   230,   227,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   250,   225,   238,     0,
-     240,   245,     0,   380,   385,   535,   523,   530,   574,   564,
-     569,     0,   467,   472,   316,   313,   691,   688,   685,   637,
-     627,   632,     0,   342,   347,     0,     0,     0,     0,     0,
-       0,   366,   363,     0,     0,     0,   331,   328,     0,     0,
-     723,   720,     0,     0,     0,     0,   737,   734,   751,     0,
-     817,   814,     0,     0,     0,     0,   859,   856,    55,     0,
-      54,     0,   598,   603,     0,   680,   811,     0,     0,   229,
-       0,     0,     0,     0,   285,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,     0,   302,   303,     0,     0,     0,
-       0,   249,     0,   244,     0,   384,     0,   529,     0,   568,
-     521,   496,   497,   498,   481,   482,   501,   502,   503,   504,
-     505,   519,   484,   485,   506,   507,   508,   509,   510,   511,
-     512,   513,   514,   515,   516,   517,   518,   520,   478,   479,
-     480,   494,   495,   491,   492,   493,   490,     0,   475,   483,
-     499,   500,   486,   487,   488,   489,   471,   315,   713,   715,
-       0,   707,   708,   709,   710,   711,   712,   700,   701,   705,
-     706,   702,   703,   704,     0,   692,   693,   696,   697,   698,
-     699,   687,     0,   631,     0,   346,   373,   374,   375,   376,
-     377,   378,   365,   338,   339,   340,   330,     0,     0,   722,
-     744,     0,   747,     0,   736,   833,     0,   831,   829,   823,
-     827,   828,     0,   820,   825,   826,   824,   816,   865,   866,
-     867,   868,   858,    52,    57,     0,   602,     0,   234,   236,
-     276,   277,   278,   275,   280,   282,   284,   299,   300,   301,
-     298,   305,   307,   309,   311,   247,   387,   532,   571,   477,
-     474,     0,     0,     0,   690,   695,   634,   349,   730,   732,
-     746,   749,     0,     0,     0,   822,   819,    56,   605,   683,
-     476,     0,     0,   717,   694,     0,   830,     0,   821,   714,
-     716,     0,   832,   838,     0,   835,     0,   837,   834,   848,
-       0,     0,     0,   853,     0,   840,   843,   844,   845,   846,
-     847,   836,     0,     0,     0,     0,     0,   842,   839,     0,
-     850,   851,   852,     0,   841,   849,   854
+       0,     0,     0,   250,   225,   238,     0,   240,   245,     0,
+     380,   385,   535,   523,   530,   574,   564,   569,     0,   467,
+     472,   316,   313,   691,   688,   685,   637,   627,   632,     0,
+     342,   347,     0,     0,     0,     0,     0,     0,   366,   363,
+       0,     0,     0,   331,   328,     0,     0,   723,   720,     0,
+       0,     0,     0,   737,   734,   751,     0,   798,   795,     0,
+       0,     0,     0,   840,   837,    55,     0,    54,     0,   598,
+     603,     0,   680,   792,     0,     0,   229,     0,     0,     0,
+       0,   285,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,     0,   302,   303,     0,     0,     0,     0,   249,     0,
+     244,     0,   384,     0,   529,     0,   568,   521,   496,   497,
+     498,   481,   482,   501,   502,   503,   504,   505,   519,   484,
+     485,   506,   507,   508,   509,   510,   511,   512,   513,   514,
+     515,   516,   517,   518,   520,   478,   479,   480,   494,   495,
+     491,   492,   493,   490,     0,   475,   483,   499,   500,   486,
+     487,   488,   489,   471,   315,   713,   715,     0,   707,   708,
+     709,   710,   711,   712,   700,   701,   705,   706,   702,   703,
+     704,     0,   692,   693,   696,   697,   698,   699,   687,     0,
+     631,     0,   346,   373,   374,   375,   376,   377,   378,   365,
+     338,   339,   340,   330,     0,     0,   722,   744,     0,   747,
+       0,   736,   814,     0,   812,   810,   804,   808,   809,     0,
+     801,   806,   807,   805,   797,   846,   847,   848,   849,   839,
+      52,    57,     0,   602,     0,   234,   236,   276,   277,   278,
+     275,   280,   282,   284,   299,   300,   301,   298,   305,   307,
+     309,   311,   247,   387,   532,   571,   477,   474,     0,     0,
+       0,   690,   695,   634,   349,   730,   732,   746,   749,     0,
+       0,     0,   803,   800,    56,   605,   683,   476,     0,     0,
+     717,   694,     0,   811,     0,   802,   714,   716,     0,   813,
+     819,     0,   816,     0,   818,   815,   829,     0,     0,     0,
+     834,     0,   821,   824,   825,   826,   827,   828,   817,     0,
+       0,     0,     0,     0,   823,   820,     0,   831,   832,   833,
+       0,   822,   830,   835
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028,   -59, -1028,  -587, -1028,   323,
-   -1028, -1028, -1028, -1028, -1028, -1028,  -647, -1028, -1028, -1028,
-     -67, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   275,   515,
-     -30,   -26,    26,   -54,   -37,   -27,     0,    14,    16,    45,
-   -1028, -1028, -1028, -1028,    48, -1028, -1028,    50,    51,    52,
-      53,    55,    56, -1028,   315,    58, -1028,    63, -1028,    66,
-      68,    69, -1028, -1028,    70,    71, -1028,    73, -1028,    74,
-   -1028, -1028, -1028, -1028, -1028,    33, -1028, -1028, -1028,   276,
-     514, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-      10, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   213,
-   -1028,    12, -1028,  -728,    21, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028,   -45, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,     6, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028,   -15, -1028, -1028, -1028, -1028, -1028, -1028, -1028,    -1,
-   -1028, -1028, -1028,    11,   495, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028,    60, -1028, -1028, -1028, -1028, -1028, -1028, -1027,
-   -1028, -1028, -1028,    37, -1028, -1028, -1028,    41,   619, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1025, -1028,    78,
-   -1028,    79, -1028,    76,    81,    84,    86, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    80, -1028, -1028,  -193,   -62, -1028,
-   -1028, -1028, -1028, -1028,    89, -1028, -1028, -1028,    93, -1028,
-     564, -1028,   -63, -1028, -1028, -1028, -1028, -1028,   -44, -1028,
-   -1028, -1028, -1028, -1028,   -23, -1028, -1028, -1028,    90, -1028,
-   -1028, -1028,    94, -1028,   565, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028,    36, -1028, -1028,
-   -1028,    43,   620, -1028, -1028, -1028,   -49, -1028,   -10, -1028,
-     -56, -1028, -1028, -1028,    82, -1028, -1028, -1028,    92, -1028,
-     586,     3, -1028,    13, -1028,    29, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1024, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028,    95, -1028, -1028, -1028,  -140, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028,    67, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028,    77, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028,   362,   554, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028,   410,   548, -1028, -1028,
-   -1028, -1028, -1028, -1028,    85, -1028, -1028,  -141, -1028, -1028,
-   -1028, -1028, -1028, -1028,  -162, -1028, -1028,  -181, -1028, -1028,
-   -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,    61, -1028,
-   -1028, -1028, -1028
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   -59,  -995,  -589,  -995,   362,
+    -995,  -995,  -995,  -995,  -995,  -995,  -643,  -995,  -995,  -995,
+     -67,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   398,   603,
+      42,    44,    45,   -54,   -39,    -1,     9,    29,    57,    61,
+    -995,  -995,  -995,  -995,    62,  -995,  -995,    63,    64,    65,
+      67,    68,    69,  -995,  -995,    75,  -995,    79,  -995,    80,
+      81,    82,  -995,  -995,    83,    85,  -995,    86,  -995,    87,
+    -995,  -995,  -995,  -995,  -995,    46,  -995,  -995,  -995,   406,
+     602,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+     144,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   338,
+    -995,   117,  -995,  -700,   123,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   -13,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,   122,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   107,  -995,  -995,  -995,  -995,  -995,  -995,  -995,   120,
+    -995,  -995,  -995,   124,   587,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,   119,  -995,  -995,  -995,  -995,  -995,  -995,  -994,
+    -995,  -995,  -995,   143,  -995,  -995,  -995,   146,   625,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -991,  -995,   -18,
+    -995,    91,  -995,    93,    97,    98,    99,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   141,  -995,  -995,   -88,   -62,  -995,
+    -995,  -995,  -995,  -995,   148,  -995,  -995,  -995,   151,  -995,
+     604,  -995,   -63,  -995,  -995,  -995,  -995,  -995,   -61,  -995,
+    -995,  -995,  -995,  -995,   -12,  -995,  -995,  -995,   147,  -995,
+    -995,  -995,   150,  -995,   606,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,   100,  -995,  -995,
+    -995,   101,   640,  -995,  -995,  -995,   -49,  -995,   -31,  -995,
+     -51,  -995,  -995,  -995,   145,  -995,  -995,  -995,   152,  -995,
+     620,     6,  -995,    22,  -995,    26,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -982,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,   153,  -995,  -995,  -995,   -85,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,   125,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   121,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,   422,   596,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,   471,   597,  -995,  -995,  -995,  -995,
+    -995,  -995,   126,  -995,  -995,   -80,  -995,  -995,  -995,  -995,
+    -995,  -995,  -100,  -995,  -995,  -117,  -995,  -995,  -995,  -995,
+    -995,  -995,  -995,  -995,  -995,  -995,   128,  -995,  -995,  -995,
+    -995
   };
 
   const short
   Dhcp4Parser::yydefgoto_[] =
   {
        0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    36,    37,    38,    65,   762,
-      82,    83,    39,    64,    79,    80,   783,   989,  1089,  1090,
-     859,    41,    66,    85,   442,    86,    43,    67,   157,   158,
+      23,    24,    25,    26,    27,    36,    37,    38,    65,   734,
+      82,    83,    39,    64,    79,    80,   755,   956,  1056,  1057,
+     826,    41,    66,    85,   428,    86,    43,    67,   157,   158,
      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   470,   171,   172,   487,   173,   174,   175,   176,
-     177,   178,   179,   476,   748,   180,   477,   181,   478,   182,
-     183,   184,   488,   759,   185,   186,   506,   187,   507,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   446,   235,
-     236,    45,    68,   237,   516,   238,   517,   786,   239,   518,
-     789,   240,   241,   242,   243,   197,   456,   198,   447,   834,
-     835,   836,  1001,   837,  1002,   199,   457,   200,   458,   886,
-     887,   888,  1029,   860,   861,   862,  1005,  1253,   863,  1006,
-     864,  1007,   865,  1008,   866,   867,   553,   868,   869,   870,
-     871,   872,   873,   874,   875,   876,   877,  1019,  1260,   878,
-     879,   880,  1022,   881,  1023,   882,  1024,   883,  1025,   201,
-     496,   910,   911,   912,   913,   914,   915,   916,   202,   502,
-     946,   947,   948,   949,   950,   203,   499,   925,   926,   927,
-    1052,    59,    75,   392,   393,   394,   567,   395,   568,   204,
-     500,   934,   935,   936,   937,   938,   939,   940,   941,   205,
-     483,   890,   891,   892,  1032,    47,    69,   284,   285,   286,
-     529,   287,   525,   288,   526,   289,   527,   290,   530,   291,
-     533,   292,   532,   206,   207,   208,   209,   492,   768,   297,
-     210,   489,   902,   903,   904,  1041,  1167,  1168,   211,   484,
-      53,    72,   894,   895,   896,  1035,    55,    73,   355,   356,
-     357,   358,   359,   360,   361,   552,   362,   556,   363,   555,
-     364,   365,   557,   366,   212,   485,   898,   899,   900,  1038,
-      57,    74,   377,   378,   379,   380,   381,   561,   382,   383,
-     384,   385,   386,   299,   528,   991,   992,   993,  1091,    49,
-      70,   313,   314,   315,   537,   316,   213,   490,   214,   491,
-     215,   498,   921,   922,   923,  1049,    51,    71,   331,   332,
-     333,   216,   451,   217,   452,   218,   453,   337,   542,   338,
-     543,   339,   544,   340,   546,   341,   545,   342,   548,   343,
-     547,   344,   541,   306,   534,   995,   996,  1094,   219,   497,
-     918,   919,  1046,  1194,  1195,  1196,  1197,  1198,  1271,  1199,
-    1272,  1200,   220,   221,   503,   958,   959,   960,  1068,   961,
-    1069,   222,   504,   968,   969,   970,   971,  1073,   972,   973,
-    1075,   223,   505,    61,    76,   414,   415,   416,   417,   573,
-     418,   419,   575,   420,   421,   422,   578,   821,   423,   579,
-     424,   572,   425,   426,   427,   582,   428,   583,   429,   584,
-     430,   585,   224,   445,    63,    77,   433,   434,   435,   588,
-     436,   225,   511,   976,   977,  1079,  1232,  1233,  1234,  1235,
-    1284,  1236,  1282,  1304,  1305,  1306,  1314,  1315,  1316,  1322,
-    1317,  1318,  1319,  1320,  1326,   226,   512,   983,   984,   985,
-     986,   987,   988
+     169,   170,   456,   171,   172,   473,   173,   174,   175,   176,
+     177,   178,   179,   462,   720,   180,   463,   181,   464,   182,
+     183,   184,   474,   731,   185,   186,   492,   187,   493,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   432,   235,
+     236,    45,    68,   237,   502,   238,   503,   758,   239,   504,
+     761,   240,   241,   242,   243,   197,   442,   198,   433,   801,
+     802,   803,   968,   804,   969,   199,   443,   200,   444,   853,
+     854,   855,   996,   827,   828,   829,   972,  1220,   830,   973,
+     831,   974,   832,   975,   833,   834,   539,   835,   836,   837,
+     838,   839,   840,   841,   842,   843,   844,   986,  1227,   845,
+     846,   847,   989,   848,   990,   849,   991,   850,   992,   201,
+     482,   877,   878,   879,   880,   881,   882,   883,   202,   488,
+     913,   914,   915,   916,   917,   203,   485,   892,   893,   894,
+    1019,    59,    75,   392,   393,   394,   553,   395,   554,   204,
+     486,   901,   902,   903,   904,   905,   906,   907,   908,   205,
+     469,   857,   858,   859,   999,    47,    69,   284,   285,   286,
+     515,   287,   511,   288,   512,   289,   513,   290,   516,   291,
+     519,   292,   518,   206,   207,   208,   209,   478,   740,   297,
+     210,   475,   869,   870,   871,  1008,  1134,  1135,   211,   470,
+      53,    72,   861,   862,   863,  1002,    55,    73,   355,   356,
+     357,   358,   359,   360,   361,   538,   362,   542,   363,   541,
+     364,   365,   543,   366,   212,   471,   865,   866,   867,  1005,
+      57,    74,   377,   378,   379,   380,   381,   547,   382,   383,
+     384,   385,   386,   299,   514,   958,   959,   960,  1058,    49,
+      70,   313,   314,   315,   523,   316,   213,   476,   214,   477,
+     215,   484,   888,   889,   890,  1016,    51,    71,   331,   332,
+     333,   216,   437,   217,   438,   218,   439,   337,   528,   338,
+     529,   339,   530,   340,   532,   341,   531,   342,   534,   343,
+     533,   344,   527,   306,   520,   962,   963,  1061,   219,   483,
+     885,   886,  1013,  1161,  1162,  1163,  1164,  1165,  1238,  1166,
+    1239,  1167,   220,   221,   489,   925,   926,   927,  1035,   928,
+    1036,   222,   490,   935,   936,   937,   938,  1040,   939,   940,
+    1042,   223,   491,    61,    76,   407,   408,   409,   410,   558,
+     411,   412,   560,   413,   414,   415,   563,   792,   416,   564,
+     224,   431,    63,    77,   419,   420,   421,   567,   422,   225,
+     497,   943,   944,  1046,  1199,  1200,  1201,  1202,  1251,  1203,
+    1249,  1271,  1272,  1273,  1281,  1282,  1283,  1289,  1284,  1285,
+    1286,  1287,  1293,   226,   498,   950,   951,   952,   953,   954,
+     955
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
-     156,   234,   256,   309,   327,    78,   353,   373,   391,   411,
-     345,   375,   884,   302,  1159,   260,  1160,  1175,   443,   244,
-     300,   317,   329,   444,   367,   387,   819,   412,   354,   374,
-     376,  1044,   261,   796,  1045,  1047,   132,   133,  1048,   257,
-     800,  1080,   262,   258,  1081,   514,   298,   312,   328,    29,
-     515,    30,   523,    31,   761,    81,   127,   524,   245,   301,
-     318,   330,   535,   368,   388,   539,   413,   536,   569,   263,
-     540,    40,   303,   570,   334,    28,   307,   132,   133,   942,
-     943,   944,   304,   264,   335,   265,   132,   133,   978,   979,
-     980,   981,   253,    84,   586,   259,   254,   308,   305,   587,
-     336,   590,   283,   227,   228,   155,   591,   229,   389,   390,
-     230,   231,   232,   233,   266,  1307,    42,   267,  1308,   268,
-     269,   270,   271,   761,   272,   273,   514,   274,  1250,  1251,
-    1252,   998,   275,   953,   954,   276,   347,   277,   278,   279,
-     280,   155,   281,   282,    44,   293,   431,   432,   310,   311,
-     294,   132,   133,   295,   838,   296,   132,   133,   839,   840,
-     841,   842,   843,   844,   845,   846,   847,   848,   849,   850,
-     851,   852,   389,   390,    46,   853,   854,   855,   856,   857,
-     858,   155,   155,   784,   785,   590,    93,    94,    95,    96,
-     999,   155,   820,    48,   523,   743,   744,   745,   746,  1000,
-      50,   962,   963,   964,  1309,   132,   133,  1310,  1311,  1312,
-    1313,   347,   347,   369,   348,   349,   370,   371,   372,   787,
-     788,   101,   102,   103,   928,   929,   930,   931,   932,   933,
-      52,  1003,   132,   133,   747,  1225,  1004,  1226,  1227,   832,
-     833,  1026,  1159,  1026,  1160,  1175,  1027,   126,  1028,   126,
-     127,   347,  1061,    54,  1066,    87,   965,  1062,    88,  1067,
-    1070,   155,  1257,  1258,  1259,  1071,    32,    33,    34,    35,
-      89,   132,   133,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,    56,    58,    60,  1178,  1179,  1180,
-     905,   906,   907,   908,  1076,   909,    62,   586,  1086,  1077,
-    1026,  1122,  1078,  1087,   535,  1265,   437,   438,   441,  1266,
-     155,   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,   155,   155,   439,   126,
-     127,  1269,    93,    94,    95,   569,  1270,   440,   448,  1285,
-    1277,   128,   129,   130,  1286,   539,   549,   449,   131,  1327,
-    1288,   132,   133,   450,  1328,   346,   134,   454,   455,   459,
-     460,   135,   136,   137,   138,   139,   155,   461,   462,   592,
-     593,   463,   140,   755,   756,   757,   758,   764,   765,   766,
-     767,   464,   141,   465,   466,   142,   467,   468,   469,   471,
-     472,   473,   143,   144,   474,   475,   127,   145,   479,   480,
-     146,   481,   482,   486,   147,   493,   494,   495,   501,   508,
-     509,   510,   347,   513,   348,   349,   519,   132,   133,   350,
-     351,   352,   520,   521,   148,   149,   150,   151,   152,   153,
-     522,   319,   132,   133,   531,   538,   550,   156,   154,   320,
-     321,   322,   323,   324,   325,   326,   234,   551,   554,   558,
-     560,   559,   562,   563,   564,   566,   155,   571,   256,   565,
-     574,   576,   309,   577,   244,   580,   581,   589,   594,   302,
-     595,   260,   596,   327,   597,   598,   300,   599,   600,   602,
-     317,   601,   603,   353,   604,   605,   606,   607,   261,   373,
-     608,   329,   609,   375,   610,   257,   611,   612,   262,   258,
-     613,   367,   298,   245,   616,   354,   312,   387,   615,   411,
-     617,   374,   376,   618,   621,   301,   614,   328,   627,   318,
-     619,   620,   155,   628,   622,   263,   623,   412,   303,   624,
-     330,   625,   626,   629,   630,   631,   632,   155,   304,   264,
-     368,   265,   633,   334,   634,   635,   388,   636,   637,   638,
-     639,   259,   640,   335,   305,   641,   642,   643,   283,   132,
-     133,   647,   644,   648,   645,   646,   413,   649,   650,   336,
-     266,   651,   653,   267,   652,   268,   269,   270,   271,   654,
-     272,   273,   655,   274,   656,   657,   658,   659,   275,   662,
-    1289,   276,   663,   277,   278,   279,   280,   660,   281,   282,
-     661,   293,   665,   666,   667,   673,   294,   310,   311,   295,
-     674,   296,   670,   396,   397,   398,   399,   400,   401,   402,
-     403,   404,   405,   406,   407,   408,   675,   676,   677,   678,
-     680,   671,   409,   410,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,   668,   669,   681,
-     679,   682,   684,   687,   688,   156,   736,   234,   685,   689,
-     690,   691,   828,   692,   155,   693,   694,   696,   697,   698,
-     699,   700,   701,   704,   709,   244,   710,   713,   714,   702,
-     705,   715,    91,    92,    93,    94,    95,    96,   716,   706,
-     707,   719,   712,   720,   721,   717,   718,   945,   955,   722,
-     411,   723,   724,   725,   982,   726,   728,   729,   731,   737,
-     732,   738,   733,   734,   245,   951,   956,   966,   412,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   735,
-     739,   740,   741,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   742,   246,   247,   248,   749,   127,   750,
-     751,   752,   753,   754,   952,   957,   967,   413,   760,    30,
-     129,   130,   769,   770,   763,   771,   772,   249,   780,   132,
-     133,   250,   251,   252,   134,   773,   774,   775,   776,   135,
-     136,   137,   777,   778,   253,   781,   782,   779,   254,   793,
-     140,   790,   791,   792,   794,   795,   797,   798,   255,   799,
-     822,   801,   827,   885,  1030,   802,   803,   889,   804,   805,
-     893,   806,   807,   808,   809,   810,   811,   812,   813,   814,
-     897,   901,   917,   920,   816,   817,   818,   824,   924,   825,
-     826,   975,   990,   994,  1009,  1010,  1011,  1012,  1013,  1014,
-    1015,  1016,   148,   149,  1017,  1018,  1020,  1021,  1031,  1034,
-    1033,  1037,  1088,  1036,  1040,  1039,  1042,  1043,  1050,  1051,
-    1054,  1053,  1055,  1056,  1057,  1058,  1059,  1060,  1063,  1064,
-    1065,  1072,  1074,  1082,   155,  1083,  1084,  1085,  1093,  1105,
-    1092,  1104,  1097,  1096,  1095,  1098,  1100,  1101,  1102,  1103,
-    1107,  1114,  1117,  1118,  1106,  1119,  1120,  1217,  1108,  1109,
-    1110,  1111,  1112,  1113,  1218,  1116,  1115,  1221,  1206,  1223,
-    1243,  1207,  1244,  1208,  1209,  1210,  1211,  1247,  1214,  1213,
-    1267,  1220,  1268,  1215,  1273,  1274,  1275,  1276,  1283,  1291,
-    1222,  1292,  1295,  1238,  1239,  1240,  1241,  1248,  1249,  1254,
-    1255,  1256,  1261,  1262,  1297,  1303,  1301,  1263,  1264,  1323,
-    1278,  1279,  1280,  1287,  1324,   256,  1296,  1293,   353,  1299,
-    1300,   373,  1302,  1325,  1130,   375,   302,  1329,   260,  1181,
-    1333,  1331,   327,   300,  1187,   391,   367,  1134,  1332,   387,
-     354,  1330,  1170,   374,   376,   261,  1158,  1189,  1335,   945,
-     329,  1186,   257,   955,  1135,   262,   258,   829,  1336,   298,
-     831,  1131,  1228,  1099,  1136,  1132,  1182,   951,  1169,   982,
-    1183,   956,   301,  1188,   309,   368,   328,   966,   388,   664,
-    1230,  1171,   263,   815,  1229,   303,  1190,   672,   823,   330,
-     997,  1137,   317,  1123,  1172,   304,   264,  1121,   265,  1191,
-    1177,  1216,   334,  1205,  1173,  1138,   952,  1139,   259,  1192,
-     957,   305,   335,  1204,   711,   283,   967,  1133,   312,  1231,
-    1174,  1125,  1184,  1124,  1157,  1193,  1290,   266,   336,  1185,
-     267,   318,   268,   269,   270,   271,  1140,   272,   273,  1141,
-     274,  1142,  1143,  1144,  1145,   275,  1146,  1147,   276,  1148,
-     277,   278,   279,   280,  1149,   281,   282,  1150,   293,  1151,
-    1152,  1153,  1154,   294,  1155,  1156,   295,  1163,   296,  1161,
-    1162,  1212,  1164,  1176,   703,  1165,  1127,  1166,  1126,  1246,
-    1129,   708,  1128,  1203,  1245,  1294,   695,  1219,   730,   974,
-     727,  1202,  1201,   830,  1298,  1321,  1334,  1242,     0,     0,
-       0,     0,     0,  1224,   683,     0,     0,     0,     0,   686,
-       0,     0,     0,     0,  1281,  1237,     0,     0,     0,   310,
-     311,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  1130,     0,     0,     0,     0,     0,  1181,     0,
-       0,     0,     0,  1187,     0,  1134,     0,     0,  1228,     0,
-    1170,     0,     0,     0,  1158,     0,  1189,     0,     0,     0,
-    1186,     0,  1135,     0,     0,     0,  1230,     0,     0,  1131,
-    1229,     0,  1136,  1132,     0,  1182,  1169,     0,     0,  1183,
-       0,     0,  1188,     0,     0,     0,     0,     0,     0,  1171,
-       0,     0,     0,     0,     0,  1190,     0,     0,     0,  1137,
-       0,     0,  1172,     0,     0,  1231,     0,     0,  1191,     0,
-       0,     0,  1173,  1138,     0,  1139,     0,     0,  1192,     0,
-       0,     0,     0,     0,     0,  1133,     0,     0,  1174,     0,
-       0,  1184,  1157,     0,  1193,     0,     0,     0,  1185,     0,
-       0,     0,     0,     0,  1140,     0,     0,  1141,     0,  1142,
-    1143,  1144,  1145,     0,  1146,  1147,     0,  1148,     0,     0,
-       0,     0,  1149,     0,     0,  1150,     0,  1151,  1152,  1153,
-    1154,     0,  1155,  1156,     0,  1163,     0,  1161,  1162,     0,
-    1164,     0,     0,  1165,     0,  1166,    91,    92,    93,    94,
-      95,    96,     0,     0,     0,     0,     0,     0,     0,     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,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,     0,     0,     0,     0,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,     0,     0,
-       0,     0,   127,   347,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   129,   130,     0,     0,     0,     0,
-       0,     0,     0,   132,   133,     0,   251,     0,   134,     0,
-       0,     0,     0,   135,   136,   137,     0,     0,   253,     0,
-       0,     0,   254,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   255,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,   149,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   155
+     156,   234,   256,   309,   327,    78,   353,   373,   391,   404,
+     345,   375,   851,   376,  1126,   260,   768,  1127,   302,   244,
+     300,   317,   329,   772,   367,   387,  1142,   405,   790,    81,
+     261,   733,    28,   389,   390,   132,   133,   245,   301,   318,
+     330,    40,   368,   388,    29,   406,    30,    42,    31,   127,
+     429,   500,   310,   132,   133,   430,   501,   298,   312,   328,
+     354,   374,   509,   346,   132,   133,    84,   510,   262,   307,
+     132,   133,   417,   418,   521,   303,   525,   334,   263,   522,
+     126,   526,   920,   921,   423,   253,   573,   555,   578,   254,
+     308,   304,   556,   335,   425,   305,    44,   336,   264,    46,
+     733,   155,    48,   929,   930,   931,   434,   909,   910,   911,
+      50,   257,   565,   258,   259,   283,   569,   566,    52,   500,
+     347,   570,   348,   349,   965,    54,   265,   350,   351,   352,
+     266,   267,   268,   269,   270,   155,   271,   272,   273,    56,
+     132,   133,   569,  1011,   274,    58,  1012,   966,   275,   276,
+     277,   278,   279,   932,   280,   281,   282,   715,   716,   717,
+     718,   311,   293,    60,   155,    62,   294,   295,   296,  1014,
+     155,   426,  1015,   424,   347,   369,   348,   349,   370,   371,
+     372,   509,  1047,   227,   228,  1048,   967,   229,   427,   791,
+     230,   231,   232,   233,   132,   133,   719,   945,   946,   947,
+     948,   970,   389,   390,    87,  1276,   971,    88,  1277,  1278,
+    1279,  1280,   993,   993,   155,  1028,  1033,   994,   995,    89,
+    1029,  1034,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,  1217,  1218,  1219,   872,   873,   874,   875,
+     155,   876,  1126,   756,   757,  1127,   895,   896,   897,   898,
+     899,   900,  1274,   535,  1142,  1275,    32,    33,    34,    35,
+     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,   132,   133,   435,   126,   127,
+    1037,   536,   347,  1043,   155,  1038,  1089,   436,  1044,   565,
+     128,   129,   130,  1053,  1045,   759,   760,   131,  1054,   440,
+     132,   133,   132,   133,   993,   134,  1224,  1225,  1226,  1232,
+     135,   136,   137,   138,   139,   521,   537,  1236,   545,   441,
+    1233,   140,  1237,    93,    94,    95,    96,   555,    93,    94,
+      95,   141,  1244,  1252,   142,   525,   799,   800,  1253,  1294,
+    1255,   143,   144,   445,  1295,   446,   145,   447,   448,   146,
+     449,   450,   451,   147,   452,   571,   572,   453,   101,   102,
+     103,   132,   133,   727,   728,   729,   730,   454,   148,   149,
+     150,   151,   152,   153,   455,   155,  1192,   457,  1193,  1194,
+     458,   459,   154,   460,   461,   465,   126,   127,   347,   466,
+     467,   468,   127,   736,   737,   738,   739,   472,   479,   480,
+     155,   481,   155,   487,   494,   495,   496,   499,   132,   133,
+     505,   579,   506,   132,   133,   396,   397,   398,   399,   400,
+     401,   402,   403,   156,  1145,  1146,  1147,   319,   507,   508,
+     517,   524,   234,   540,   544,   320,   321,   322,   323,   324,
+     325,   326,   546,   551,   256,   548,   549,   550,   309,   552,
+     244,   557,   559,   561,   562,   568,   574,   260,   575,   327,
+     302,   155,   300,   576,   577,   580,   317,   581,   245,   353,
+     582,   583,   261,   584,   585,   373,   586,   329,   587,   375,
+     301,   376,   588,   589,   318,   590,   591,   367,   404,   592,
+     593,   600,   606,   387,   594,   330,   603,   310,   595,   298,
+     596,   597,   598,   312,   607,   368,   405,   599,   155,   608,
+     262,   388,   601,   155,   328,   602,   613,   303,   604,   605,
+     263,   614,   609,   354,   406,   610,   611,   615,   617,   374,
+     618,   612,   334,   304,   616,   619,   620,   305,   621,   622,
+     264,   623,   624,   625,   626,   627,   628,   629,   335,   630,
+     632,   631,   336,   257,   633,   258,   259,   283,   634,   635,
+     636,  1256,   637,   641,   642,   638,   644,   645,   265,   639,
+     646,   640,   266,   267,   268,   269,   270,   647,   271,   272,
+     273,   648,   649,   650,   652,   653,   274,   654,   655,   656,
+     275,   276,   277,   278,   279,   657,   280,   281,   282,   659,
+     658,   660,   661,   663,   293,   666,   311,   664,   294,   295,
+     296,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,   667,   668,   669,   156,   670,   234,
+     671,   672,   677,   673,   795,   675,   676,   678,   679,   680,
+     681,   683,   684,   685,   688,   689,   692,   244,   686,   694,
+     693,   691,   695,   697,   696,   698,   700,   703,    91,    92,
+      93,    94,    95,    96,   704,   245,   705,   706,   707,   912,
+     922,   701,   404,   708,   709,   710,   949,   711,   712,   713,
+     723,   714,   721,   724,   725,   722,   726,   918,   923,   933,
+     405,   732,    30,   735,   741,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   919,   924,   934,   406,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   742,
+     246,   247,   248,   743,   127,   744,   745,   750,   746,   747,
+     748,   749,   751,   752,   753,   754,   129,   130,   762,   763,
+     765,   770,   764,   249,   766,   132,   133,   250,   251,   252,
+     134,   794,   852,   767,   769,   135,   136,   137,   793,   856,
+     253,   771,   860,   864,   254,   773,   140,   868,   774,   775,
+     776,   884,   887,   997,   255,   891,   942,   957,   777,   976,
+     977,   778,   779,   961,   780,   781,   782,   783,   784,   785,
+     786,   788,   789,   978,   979,   980,    91,    92,    93,    94,
+      95,    96,   981,   982,   983,   984,   985,   987,   988,   998,
+    1001,  1000,  1022,   148,   149,  1003,  1004,  1006,  1007,  1010,
+    1009,  1018,  1055,  1017,  1021,  1020,  1023,  1024,  1025,  1026,
+    1027,  1030,  1031,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,  1032,  1039,   155,  1041,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,  1049,  1050,
+    1051,  1052,   127,   347,  1059,  1060,  1063,  1062,  1064,  1065,
+    1067,  1068,  1069,  1070,   129,   130,  1071,  1081,  1084,  1085,
+    1086,  1073,  1072,   132,   133,  1074,   251,  1075,   134,  1087,
+    1076,  1077,  1184,   135,   136,   137,  1082,  1180,   253,  1078,
+    1079,  1080,   254,  1185,  1187,  1083,  1173,  1188,  1174,  1175,
+    1176,  1177,   255,  1178,  1181,  1182,  1189,  1190,  1210,  1205,
+    1206,  1207,   256,  1208,  1211,   353,  1214,  1215,   373,  1216,
+    1221,  1097,   375,  1222,   376,   260,  1148,  1234,   302,   327,
+     300,  1154,   391,   367,  1101,  1235,   387,  1240,  1223,  1137,
+     261,   148,   149,  1228,  1156,  1229,   912,   329,   301,  1102,
+     922,   368,  1241,  1242,   388,  1230,  1231,  1138,  1245,  1195,
+    1243,  1246,  1157,  1250,   918,   330,   949,   298,   923,   354,
+    1128,   309,   374,   155,   933,  1125,  1136,  1197,   262,  1247,
+    1153,  1155,   919,  1258,   328,   303,   924,  1103,   263,   317,
+    1254,  1259,   934,  1262,  1139,  1198,  1260,  1104,  1264,  1158,
+    1263,   304,   334,  1266,  1267,   305,  1268,   318,   264,  1270,
+    1140,  1290,  1291,  1196,  1141,  1159,  1292,  1105,   335,  1160,
+     310,   257,   336,   258,   259,   283,   312,  1269,  1296,  1300,
+    1098,   787,  1099,  1100,  1124,  1149,   265,  1150,  1151,  1152,
+     266,   267,   268,   269,   270,  1106,   271,   272,   273,  1107,
+    1108,  1109,  1110,  1111,   274,  1112,  1113,  1114,   275,   276,
+     277,   278,   279,  1115,   280,   281,   282,  1116,  1117,  1118,
+    1119,  1120,   293,  1121,  1122,  1123,   294,   295,   296,  1129,
+    1297,  1130,   796,   643,  1302,  1131,  1132,  1133,  1298,  1299,
+    1303,   651,   798,   805,  1066,  1090,  1088,   806,   807,   808,
+     809,   810,   811,   812,   813,   814,   815,   816,   817,   818,
+     819,  1248,   964,  1144,   820,   821,   822,   823,   824,   825,
+    1183,  1172,   690,  1171,  1092,  1091,   662,  1179,  1257,   311,
+     682,  1143,  1094,  1093,  1096,  1095,   674,  1261,   687,  1212,
+    1213,   699,  1186,  1170,  1191,   665,   702,  1168,  1169,  1097,
+     347,   941,  1265,  1204,  1288,  1148,   797,  1301,     0,     0,
+    1154,  1209,  1101,     0,     0,  1195,     0,  1137,     0,     0,
+       0,     0,     0,  1156,     0,     0,     0,  1102,     0,     0,
+       0,     0,     0,  1197,     0,  1138,     0,     0,     0,     0,
+       0,  1157,     0,     0,     0,     0,     0,     0,  1128,     0,
+       0,  1198,     0,  1125,  1136,     0,     0,     0,     0,  1153,
+    1155,     0,     0,     0,     0,  1103,     0,     0,     0,  1196,
+       0,     0,  1139,     0,     0,  1104,     0,     0,  1158,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1140,     0,
+       0,     0,  1141,     0,  1159,  1105,     0,     0,  1160,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1098,     0,
+    1099,  1100,  1124,     0,  1149,     0,  1150,  1151,  1152,     0,
+     155,     0,     0,  1106,     0,     0,     0,  1107,  1108,  1109,
+    1110,  1111,     0,  1112,  1113,  1114,     0,     0,     0,     0,
+       0,  1115,     0,     0,     0,  1116,  1117,  1118,  1119,  1120,
+       0,  1121,  1122,  1123,     0,     0,     0,  1129,     0,  1130,
+       0,     0,     0,  1131,  1132,  1133
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       67,    68,    69,    70,    71,    64,    73,    74,    75,    76,
-      72,    74,   740,    69,  1041,    69,  1041,  1041,     3,    68,
-      69,    70,    71,     8,    73,    74,    18,    76,    73,    74,
-      74,     3,    69,   680,     6,     3,   117,   118,     6,    69,
-     687,     3,    69,    69,     6,     3,    69,    70,    71,     5,
-       8,     7,     3,     9,   641,   222,    96,     8,    68,    69,
-      70,    71,     3,    73,    74,     3,    76,     8,     3,    69,
-       8,     7,    69,     8,    71,     0,   116,   117,   118,   160,
-     161,   162,    69,    69,    71,    69,   117,   118,   205,   206,
-     207,   208,   132,    10,     3,    69,   136,   137,    69,     8,
-      71,     3,    69,    15,    16,   222,     8,    19,   149,   150,
-      22,    23,    24,    25,    69,     3,     7,    69,     6,    69,
-      69,    69,    69,   710,    69,    69,     3,    69,    41,    42,
-      43,     8,    69,   164,   165,    69,    97,    69,    69,    69,
-      69,   222,    69,    69,     7,    69,    12,    13,    70,    70,
-      69,   117,   118,    69,    40,    69,   117,   118,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,   149,   150,     7,    61,    62,    63,    64,    65,
-      66,   222,   222,    17,    18,     3,    32,    33,    34,    35,
-       8,   222,   184,     7,     3,   186,   187,   188,   189,     8,
-       7,   167,   168,   169,   197,   117,   118,   200,   201,   202,
-     203,    97,    97,    98,    99,   100,   101,   102,   103,    20,
-      21,    67,    68,    69,   152,   153,   154,   155,   156,   157,
-       7,     3,   117,   118,   225,   196,     8,   198,   199,    27,
-      28,     3,  1269,     3,  1269,  1269,     8,    95,     8,    95,
-      96,    97,     3,     7,     3,    11,   222,     8,    14,     8,
-       3,   222,    58,    59,    60,     8,   222,   223,   224,   225,
-      26,   117,   118,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,     7,     7,     7,   133,   134,   135,
-     140,   141,   142,   143,     3,   145,     7,     3,     3,     8,
-       3,  1029,     8,     8,     3,     8,     6,     3,     3,     8,
-     222,    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,   222,   222,     4,    95,
-      96,     3,    32,    33,    34,     3,     8,     8,     4,     3,
-       8,   107,   108,   109,     8,     3,     8,     4,   114,     3,
-       8,   117,   118,     4,     8,    40,   122,     4,     4,     4,
-       4,   127,   128,   129,   130,   131,   222,     4,     4,   438,
-     439,     4,   138,   110,   111,   112,   113,   123,   124,   125,
-     126,     4,   148,     4,     4,   151,     4,     4,     4,     4,
-       4,     4,   158,   159,     4,     4,    96,   163,     4,     4,
-     166,     4,     4,     4,   170,     4,     4,     4,     4,     4,
-       4,     4,    97,     4,    99,   100,     4,   117,   118,   104,
-     105,   106,     4,     4,   190,   191,   192,   193,   194,   195,
-       4,   131,   117,   118,     4,     4,     3,   514,   204,   139,
-     140,   141,   142,   143,   144,   145,   523,     8,     4,     4,
-       3,     8,     4,     4,     4,     3,   222,     4,   535,     8,
-       4,     4,   539,     4,   523,     4,     4,     4,   222,   535,
-       4,   535,     4,   550,     4,     4,   535,   225,   225,     4,
-     539,   225,     4,   560,     4,   223,   225,     4,   535,   566,
-       4,   550,     4,   566,   223,   535,   223,   223,   535,   535,
-     223,   560,   535,   523,   224,   560,   539,   566,   225,   586,
-     224,   566,   566,   224,     4,   535,   223,   550,     4,   539,
-     223,   223,   222,     4,   223,   535,   223,   586,   535,   225,
-     550,   225,   225,     4,   225,   225,   224,   222,   535,   535,
-     560,   535,   225,   550,     4,     4,   566,     4,   223,     4,
-       4,   535,     4,   550,   535,     4,     4,     4,   535,   117,
-     118,     4,   225,     4,   225,   225,   586,     4,     4,   550,
-     535,     4,     4,   535,   223,   535,   535,   535,   535,     4,
-     535,   535,     4,   535,     4,     4,     4,   225,   535,     4,
-    1247,   535,     4,   535,   535,   535,   535,   225,   535,   535,
-     225,   535,     4,     4,     4,     4,   535,   539,   539,   535,
-       4,   535,   223,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,     4,     4,     4,     4,
-       4,   223,   190,   191,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   225,   225,     4,
-     223,     4,     4,     4,     4,   732,   222,   734,   223,     4,
-       4,     4,   731,     4,   222,     4,     4,     4,     4,   223,
-       4,     4,     4,     4,     4,   734,     4,     4,     4,   225,
-     225,   223,    30,    31,    32,    33,    34,    35,     4,   225,
-     225,     4,   225,     4,   225,   223,   223,   774,   775,   225,
-     777,     4,     4,     4,   781,     4,     4,   223,     4,   222,
-       7,   222,     7,     7,   734,   774,   775,   776,   777,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,     7,
-       7,     7,     5,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,   222,    92,    93,    94,   222,    96,   222,
-       5,     5,     5,   222,   774,   775,   776,   777,     5,     7,
-     108,   109,     5,     5,   222,     5,     5,   115,     5,   117,
-     118,   119,   120,   121,   122,     7,     7,     7,     7,   127,
-     128,   129,     7,   222,   132,     7,     5,   222,   136,     5,
-     138,   222,   222,   222,   222,   222,   222,     7,   146,   222,
-     185,   222,     5,     7,     6,   222,   222,     7,   222,   222,
-       7,   222,   222,   222,   222,   222,   222,   222,   222,   222,
-       7,     7,     7,     7,   222,   222,   222,   222,     7,   222,
-     222,     7,     7,   147,     4,     4,     4,     4,     4,     4,
-       4,     4,   190,   191,     4,     4,     4,     4,     3,     3,
-       6,     3,   222,     6,     3,     6,     6,     3,     6,     3,
-       3,     6,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   222,     4,     4,     4,     3,   225,
-       6,   223,     4,     6,     8,     4,     4,     4,     4,     4,
-     225,     4,     4,     4,   223,     4,     4,     4,   223,   223,
-     223,   223,   223,   223,     4,   223,   225,     4,   223,     4,
-       6,   223,     3,   223,   223,   223,   223,     4,   223,   225,
-       8,   225,     8,   223,     4,     8,     3,     8,     4,     4,
-     223,     4,     4,   225,   225,   225,   225,   222,   222,   222,
-     222,   222,   222,   222,     4,     7,     5,   222,   222,     4,
-     222,   222,   222,   222,     4,  1032,   223,   225,  1035,   222,
-     222,  1038,   222,     4,  1041,  1038,  1032,     4,  1032,  1046,
-       4,   223,  1049,  1032,  1046,  1052,  1035,  1041,   223,  1038,
-    1035,   225,  1041,  1038,  1038,  1032,  1041,  1046,   222,  1066,
-    1049,  1046,  1032,  1070,  1041,  1032,  1032,   732,   222,  1032,
-     734,  1041,  1079,  1003,  1041,  1041,  1046,  1066,  1041,  1086,
-    1046,  1070,  1032,  1046,  1091,  1035,  1049,  1076,  1038,   514,
-    1079,  1041,  1032,   710,  1079,  1032,  1046,   523,   723,  1049,
-     827,  1041,  1091,  1031,  1041,  1032,  1032,  1026,  1032,  1046,
-    1044,  1066,  1049,  1054,  1041,  1041,  1066,  1041,  1032,  1046,
-    1070,  1032,  1049,  1052,   569,  1032,  1076,  1041,  1091,  1079,
-    1041,  1034,  1046,  1032,  1041,  1046,  1269,  1032,  1049,  1046,
-    1032,  1091,  1032,  1032,  1032,  1032,  1041,  1032,  1032,  1041,
-    1032,  1041,  1041,  1041,  1041,  1032,  1041,  1041,  1032,  1041,
-    1032,  1032,  1032,  1032,  1041,  1032,  1032,  1041,  1032,  1041,
-    1041,  1041,  1041,  1032,  1041,  1041,  1032,  1041,  1032,  1041,
-    1041,  1061,  1041,  1043,   560,  1041,  1037,  1041,  1035,  1093,
-    1040,   566,  1038,  1051,  1091,  1275,   550,  1070,   590,   777,
-     586,  1049,  1047,   733,  1285,  1307,  1327,  1086,    -1,    -1,
-      -1,    -1,    -1,  1076,   535,    -1,    -1,    -1,    -1,   539,
-      -1,    -1,    -1,    -1,  1223,  1080,    -1,    -1,    -1,  1091,
-    1091,    -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,  1269,    -1,    -1,    -1,    -1,    -1,  1275,    -1,
-      -1,    -1,    -1,  1275,    -1,  1269,    -1,    -1,  1285,    -1,
-    1269,    -1,    -1,    -1,  1269,    -1,  1275,    -1,    -1,    -1,
-    1275,    -1,  1269,    -1,    -1,    -1,  1285,    -1,    -1,  1269,
-    1285,    -1,  1269,  1269,    -1,  1275,  1269,    -1,    -1,  1275,
-      -1,    -1,  1275,    -1,    -1,    -1,    -1,    -1,    -1,  1269,
-      -1,    -1,    -1,    -1,    -1,  1275,    -1,    -1,    -1,  1269,
-      -1,    -1,  1269,    -1,    -1,  1285,    -1,    -1,  1275,    -1,
-      -1,    -1,  1269,  1269,    -1,  1269,    -1,    -1,  1275,    -1,
-      -1,    -1,    -1,    -1,    -1,  1269,    -1,    -1,  1269,    -1,
-      -1,  1275,  1269,    -1,  1275,    -1,    -1,    -1,  1275,    -1,
-      -1,    -1,    -1,    -1,  1269,    -1,    -1,  1269,    -1,  1269,
-    1269,  1269,  1269,    -1,  1269,  1269,    -1,  1269,    -1,    -1,
-      -1,    -1,  1269,    -1,    -1,  1269,    -1,  1269,  1269,  1269,
-    1269,    -1,  1269,  1269,    -1,  1269,    -1,  1269,  1269,    -1,
-    1269,    -1,    -1,  1269,    -1,  1269,    30,    31,    32,    33,
-      34,    35,    -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,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    -1,    -1,    -1,    -1,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    -1,    -1,
-      -1,    -1,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   108,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   117,   118,    -1,   120,    -1,   122,    -1,
-      -1,    -1,    -1,   127,   128,   129,    -1,    -1,   132,    -1,
-      -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   146,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   190,   191,    -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,   222
+      72,    74,   712,    74,  1008,    69,   659,  1008,    69,    68,
+      69,    70,    71,   666,    73,    74,  1008,    76,    18,   217,
+      69,   620,     0,   149,   150,   117,   118,    68,    69,    70,
+      71,     7,    73,    74,     5,    76,     7,     7,     9,    96,
+       3,     3,    70,   117,   118,     8,     8,    69,    70,    71,
+      73,    74,     3,    40,   117,   118,    10,     8,    69,   116,
+     117,   118,    12,    13,     3,    69,     3,    71,    69,     8,
+      95,     8,   164,   165,     6,   132,   217,     3,   220,   136,
+     137,    69,     8,    71,     4,    69,     7,    71,    69,     7,
+     689,   217,     7,   167,   168,   169,     4,   160,   161,   162,
+       7,    69,     3,    69,    69,    69,     3,     8,     7,     3,
+      97,     8,    99,   100,     8,     7,    69,   104,   105,   106,
+      69,    69,    69,    69,    69,   217,    69,    69,    69,     7,
+     117,   118,     3,     3,    69,     7,     6,     8,    69,    69,
+      69,    69,    69,   217,    69,    69,    69,   181,   182,   183,
+     184,    70,    69,     7,   217,     7,    69,    69,    69,     3,
+     217,     8,     6,     3,    97,    98,    99,   100,   101,   102,
+     103,     3,     3,    15,    16,     6,     8,    19,     3,   179,
+      22,    23,    24,    25,   117,   118,   220,   200,   201,   202,
+     203,     3,   149,   150,    11,   192,     8,    14,   195,   196,
+     197,   198,     3,     3,   217,     3,     3,     8,     8,    26,
+       8,     8,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    41,    42,    43,   140,   141,   142,   143,
+     217,   145,  1236,    17,    18,  1236,   152,   153,   154,   155,
+     156,   157,     3,     8,  1236,     6,   217,   218,   219,   220,
+      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,   117,   118,     4,    95,    96,
+       3,     3,    97,     3,   217,     8,   996,     4,     8,     3,
+     107,   108,   109,     3,     8,    20,    21,   114,     8,     4,
+     117,   118,   117,   118,     3,   122,    58,    59,    60,     8,
+     127,   128,   129,   130,   131,     3,     8,     3,     8,     4,
+       8,   138,     8,    32,    33,    34,    35,     3,    32,    33,
+      34,   148,     8,     3,   151,     3,    27,    28,     8,     3,
+       8,   158,   159,     4,     8,     4,   163,     4,     4,   166,
+       4,     4,     4,   170,     4,   424,   425,     4,    67,    68,
+      69,   117,   118,   110,   111,   112,   113,     4,   185,   186,
+     187,   188,   189,   190,     4,   217,   191,     4,   193,   194,
+       4,     4,   199,     4,     4,     4,    95,    96,    97,     4,
+       4,     4,    96,   123,   124,   125,   126,     4,     4,     4,
+     217,     4,   217,     4,     4,     4,     4,     4,   117,   118,
+       4,   220,     4,   117,   118,   171,   172,   173,   174,   175,
+     176,   177,   178,   500,   133,   134,   135,   131,     4,     4,
+       4,     4,   509,     4,     4,   139,   140,   141,   142,   143,
+     144,   145,     3,     8,   521,     4,     4,     4,   525,     3,
+     509,     4,     4,     4,     4,     4,     4,   521,     4,   536,
+     521,   217,   521,     4,     4,   220,   525,     4,   509,   546,
+       4,     4,   521,   218,   220,   552,     4,   536,     4,   552,
+     521,   552,     4,   218,   525,   218,   218,   546,   565,   218,
+     218,     4,     4,   552,   220,   536,   220,   525,   219,   521,
+     219,   219,   218,   525,     4,   546,   565,   218,   217,     4,
+     521,   552,   218,   217,   536,   218,     4,   521,   220,   220,
+     521,     4,   220,   546,   565,   220,   219,     4,     4,   552,
+       4,   220,   536,   521,   218,     4,     4,   521,     4,     4,
+     521,   220,   220,   220,     4,     4,     4,     4,   536,     4,
+       4,   218,   536,   521,     4,   521,   521,   521,     4,     4,
+       4,  1214,     4,     4,     4,   220,     4,     4,   521,   220,
+       4,   220,   521,   521,   521,   521,   521,   220,   521,   521,
+     521,   220,   218,   218,     4,     4,   521,     4,     4,     4,
+     521,   521,   521,   521,   521,     4,   521,   521,   521,     4,
+     218,     4,     4,     4,   521,     4,   525,   218,   521,   521,
+     521,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,     4,     4,     4,   704,     4,   706,
+       4,     4,   218,     4,   703,     4,     4,     4,     4,     4,
+     220,     4,   220,   220,     4,     4,     4,   706,   220,     4,
+     218,   220,   218,     4,   218,     4,     4,     4,    30,    31,
+      32,    33,    34,    35,     7,   706,     7,     7,     7,   746,
+     747,   218,   749,   217,   217,   217,   753,     7,     7,     5,
+       5,   217,   217,     5,     5,   217,   217,   746,   747,   748,
+     749,     5,     7,   217,     5,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,   746,   747,   748,   749,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    90,     5,
+      92,    93,    94,     5,    96,     5,     7,   217,     7,     7,
+       7,     7,   217,     5,     7,     5,   108,   109,   217,   217,
+       5,     7,   217,   115,   217,   117,   118,   119,   120,   121,
+     122,     5,     7,   217,   217,   127,   128,   129,   180,     7,
+     132,   217,     7,     7,   136,   217,   138,     7,   217,   217,
+     217,     7,     7,     6,   146,     7,     7,     7,   217,     4,
+       4,   217,   217,   147,   217,   217,   217,   217,   217,   217,
+     217,   217,   217,     4,     4,     4,    30,    31,    32,    33,
+      34,    35,     4,     4,     4,     4,     4,     4,     4,     3,
+       3,     6,     4,   185,   186,     6,     3,     6,     3,     3,
+       6,     3,   217,     6,     3,     6,     4,     4,     4,     4,
+       4,     4,     4,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,     4,     4,   217,     4,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,     4,     4,
+       4,     4,    96,    97,     6,     3,     6,     8,     4,     4,
+       4,     4,     4,     4,   108,   109,   218,     4,     4,     4,
+       4,   218,   220,   117,   118,   220,   120,   218,   122,     4,
+     218,   218,     4,   127,   128,   129,   220,   220,   132,   218,
+     218,   218,   136,     4,   220,   218,   218,     4,   218,   218,
+     218,   218,   146,   218,   218,   218,   218,     4,     6,   220,
+     220,   220,   999,   220,     3,  1002,     4,   217,  1005,   217,
+     217,  1008,  1005,   217,  1005,   999,  1013,     8,   999,  1016,
+     999,  1013,  1019,  1002,  1008,     8,  1005,     4,   217,  1008,
+     999,   185,   186,   217,  1013,   217,  1033,  1016,   999,  1008,
+    1037,  1002,     8,     3,  1005,   217,   217,  1008,   217,  1046,
+       8,   217,  1013,     4,  1033,  1016,  1053,   999,  1037,  1002,
+    1008,  1058,  1005,   217,  1043,  1008,  1008,  1046,   999,   217,
+    1013,  1013,  1033,     4,  1016,   999,  1037,  1008,   999,  1058,
+     217,     4,  1043,     4,  1008,  1046,   220,  1008,     4,  1013,
+     218,   999,  1016,   217,   217,   999,     5,  1058,   999,     7,
+    1008,     4,     4,  1046,  1008,  1013,     4,  1008,  1016,  1013,
+    1058,   999,  1016,   999,   999,   999,  1058,   217,     4,     4,
+    1008,   689,  1008,  1008,  1008,  1013,   999,  1013,  1013,  1013,
+     999,   999,   999,   999,   999,  1008,   999,   999,   999,  1008,
+    1008,  1008,  1008,  1008,   999,  1008,  1008,  1008,   999,   999,
+     999,   999,   999,  1008,   999,   999,   999,  1008,  1008,  1008,
+    1008,  1008,   999,  1008,  1008,  1008,   999,   999,   999,  1008,
+     220,  1008,   704,   500,   217,  1008,  1008,  1008,   218,   218,
+     217,   509,   706,    40,   970,   998,   993,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,  1190,   794,  1011,    61,    62,    63,    64,    65,    66,
+    1033,  1021,   555,  1019,  1001,   999,   521,  1028,  1236,  1058,
+     546,  1010,  1004,  1002,  1007,  1005,   536,  1242,   552,  1058,
+    1060,   565,  1037,  1018,  1043,   525,   569,  1014,  1016,  1236,
+      97,   749,  1252,  1047,  1274,  1242,   705,  1294,    -1,    -1,
+    1242,  1053,  1236,    -1,    -1,  1252,    -1,  1236,    -1,    -1,
+      -1,    -1,    -1,  1242,    -1,    -1,    -1,  1236,    -1,    -1,
+      -1,    -1,    -1,  1252,    -1,  1236,    -1,    -1,    -1,    -1,
+      -1,  1242,    -1,    -1,    -1,    -1,    -1,    -1,  1236,    -1,
+      -1,  1252,    -1,  1236,  1236,    -1,    -1,    -1,    -1,  1242,
+    1242,    -1,    -1,    -1,    -1,  1236,    -1,    -1,    -1,  1252,
+      -1,    -1,  1236,    -1,    -1,  1236,    -1,    -1,  1242,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1236,    -1,
+      -1,    -1,  1236,    -1,  1242,  1236,    -1,    -1,  1242,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1236,    -1,
+    1236,  1236,  1236,    -1,  1242,    -1,  1242,  1242,  1242,    -1,
+     217,    -1,    -1,  1236,    -1,    -1,    -1,  1236,  1236,  1236,
+    1236,  1236,    -1,  1236,  1236,  1236,    -1,    -1,    -1,    -1,
+      -1,  1236,    -1,    -1,    -1,  1236,  1236,  1236,  1236,  1236,
+      -1,  1236,  1236,  1236,    -1,    -1,    -1,  1236,    -1,  1236,
+      -1,    -1,    -1,  1236,  1236,  1236
   };
 
   const short
   Dhcp4Parser::yystos_[] =
   {
-       0,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,     0,     5,
-       7,     9,   222,   223,   224,   225,   241,   242,   243,   248,
-       7,   257,     7,   262,     7,   317,     7,   431,     7,   515,
-       7,   532,     7,   466,     7,   472,     7,   496,     7,   407,
-       7,   599,     7,   630,   249,   244,   258,   263,   318,   432,
-     516,   533,   467,   473,   497,   408,   600,   631,   241,   250,
-     251,   222,   246,   247,    10,   259,   261,    11,    14,    26,
+       0,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,     0,     5,
+       7,     9,   217,   218,   219,   220,   236,   237,   238,   243,
+       7,   252,     7,   257,     7,   312,     7,   426,     7,   510,
+       7,   527,     7,   461,     7,   467,     7,   491,     7,   402,
+       7,   594,     7,   613,   244,   239,   253,   258,   313,   427,
+     511,   528,   462,   468,   492,   403,   595,   614,   236,   245,
+     246,   217,   241,   242,    10,   254,   256,    11,    14,    26,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    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,    95,    96,   107,   108,
      109,   114,   117,   118,   122,   127,   128,   129,   130,   131,
-     138,   148,   151,   158,   159,   163,   166,   170,   190,   191,
-     192,   193,   194,   195,   204,   222,   256,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   279,   280,   282,   283,   284,   285,   286,   287,   288,
-     291,   293,   295,   296,   297,   300,   301,   303,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   331,   333,   341,
-     343,   385,   394,   401,   415,   425,   449,   450,   451,   452,
-     456,   464,   490,   522,   524,   526,   537,   539,   541,   564,
-     578,   579,   587,   597,   628,   637,   661,    15,    16,    19,
-      22,    23,    24,    25,   256,   315,   316,   319,   321,   324,
-     327,   328,   329,   330,   522,   524,    92,    93,    94,   115,
-     119,   120,   121,   132,   136,   146,   256,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   280,   283,   284,
-     285,   286,   287,   288,   291,   293,   295,   296,   297,   300,
-     301,   303,   305,   311,   433,   434,   435,   437,   439,   441,
-     443,   445,   447,   449,   450,   451,   452,   455,   490,   509,
-     522,   524,   526,   537,   539,   541,   559,   116,   137,   256,
-     445,   447,   490,   517,   518,   519,   521,   522,   524,   131,
-     139,   140,   141,   142,   143,   144,   145,   256,   490,   522,
-     524,   534,   535,   536,   537,   539,   541,   543,   545,   547,
-     549,   551,   553,   555,   557,   464,    40,    97,    99,   100,
-     104,   105,   106,   256,   361,   474,   475,   476,   477,   478,
-     479,   480,   482,   484,   486,   487,   489,   522,   524,    98,
-     101,   102,   103,   256,   361,   478,   484,   498,   499,   500,
-     501,   502,   504,   505,   506,   507,   508,   522,   524,   149,
-     150,   256,   409,   410,   411,   413,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   190,
-     191,   256,   522,   524,   601,   602,   603,   604,   606,   607,
-     609,   610,   611,   614,   616,   618,   619,   620,   622,   624,
-     626,    12,    13,   632,   633,   634,   636,     6,     3,     4,
-       8,     3,   260,     3,     8,   629,   314,   334,     4,     4,
-       4,   538,   540,   542,     4,     4,   332,   342,   344,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     278,     4,     4,     4,     4,     4,   289,   292,   294,     4,
-       4,     4,     4,   426,   465,   491,     4,   281,   298,   457,
-     523,   525,   453,     4,     4,     4,   386,   565,   527,   402,
-     416,     4,   395,   580,   588,   598,   302,   304,     4,     4,
-       4,   638,   662,     4,     3,     8,   320,   322,   325,     4,
-       4,     4,     4,     3,     8,   438,   440,   442,   510,   436,
-     444,     4,   448,   446,   560,     3,     8,   520,     4,     3,
-       8,   558,   544,   546,   548,   552,   550,   556,   554,     8,
-       3,     8,   481,   362,     4,   485,   483,   488,     4,     8,
-       3,   503,     4,     4,     4,     8,     3,   412,   414,     3,
-       8,     4,   617,   605,     4,   608,     4,     4,   612,   615,
-       4,     4,   621,   623,   625,   627,     3,     8,   635,     4,
-       3,     8,   241,   241,   222,     4,     4,     4,     4,   225,
-     225,   225,     4,     4,     4,   223,   225,     4,     4,     4,
-     223,   223,   223,   223,   223,   225,   224,   224,   224,   223,
-     223,     4,   223,   223,   225,   225,   225,     4,     4,     4,
-     225,   225,   224,   225,     4,     4,     4,   223,     4,     4,
-       4,     4,     4,     4,   225,   225,   225,     4,     4,     4,
-       4,     4,   223,     4,     4,     4,     4,     4,     4,   225,
-     225,   225,     4,     4,   265,     4,     4,     4,   225,   225,
-     223,   223,   316,     4,     4,     4,     4,     4,     4,   223,
-       4,     4,     4,   434,     4,   223,   518,     4,     4,     4,
-       4,     4,     4,     4,     4,   536,     4,     4,   223,     4,
-       4,     4,   225,   476,     4,   225,   225,   225,   500,     4,
-       4,   410,   225,     4,     4,   223,     4,   223,   223,     4,
-       4,   225,   225,     4,     4,     4,     4,   602,     4,   223,
-     633,     4,     7,     7,     7,     7,   222,   222,   222,     7,
-       7,     5,   222,   186,   187,   188,   189,   225,   290,   222,
-     222,     5,     5,     5,   222,   110,   111,   112,   113,   299,
-       5,   243,   245,   222,   123,   124,   125,   126,   454,     5,
-       5,     5,     5,     7,     7,     7,     7,     7,   222,   222,
-       5,     7,     5,   252,    17,    18,   323,    20,    21,   326,
-     222,   222,   222,     5,   222,   222,   252,   222,     7,   222,
-     252,   222,   222,   222,   222,   222,   222,   222,   222,   222,
-     222,   222,   222,   222,   222,   245,   222,   222,   222,    18,
-     184,   613,   185,   290,   222,   222,   222,     5,   241,   264,
-     632,   315,    27,    28,   335,   336,   337,   339,    40,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    61,    62,    63,    64,    65,    66,   256,
-     349,   350,   351,   354,   356,   358,   360,   361,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   375,   376,
-     377,   379,   381,   383,   349,     7,   345,   346,   347,     7,
-     427,   428,   429,     7,   468,   469,   470,     7,   492,   493,
-     494,     7,   458,   459,   460,   140,   141,   142,   143,   145,
-     387,   388,   389,   390,   391,   392,   393,     7,   566,   567,
-       7,   528,   529,   530,     7,   403,   404,   405,   152,   153,
-     154,   155,   156,   157,   417,   418,   419,   420,   421,   422,
-     423,   424,   160,   161,   162,   256,   396,   397,   398,   399,
-     400,   522,   524,   164,   165,   256,   522,   524,   581,   582,
-     583,   585,   167,   168,   169,   222,   522,   524,   589,   590,
-     591,   592,   594,   595,   601,     7,   639,   640,   205,   206,
-     207,   208,   256,   663,   664,   665,   666,   667,   668,   253,
-       7,   511,   512,   513,   147,   561,   562,   345,     8,     8,
-       8,   338,   340,     3,     8,   352,   355,   357,   359,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   373,
-       4,     4,   378,   380,   382,   384,     3,     8,     8,   348,
-       6,     3,   430,     6,     3,   471,     6,     3,   495,     6,
-       3,   461,     6,     3,     3,     6,   568,     3,     6,   531,
-       6,     3,   406,     6,     3,     4,     4,     4,     4,     4,
-       4,     3,     8,     4,     4,     4,     3,     8,   584,   586,
-       3,     8,     4,   593,     4,   596,     3,     8,     8,   641,
-       3,     6,     4,     4,     4,     4,     3,     8,   222,   254,
-     255,   514,     6,     3,   563,     8,     6,     4,     4,   336,
-       4,     4,     4,     4,   223,   225,   223,   225,   223,   223,
-     223,   223,   223,   223,     4,   225,   223,     4,     4,     4,
-       4,   350,   349,   347,   433,   429,   474,   470,   498,   494,
-     256,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   280,   283,   284,   285,   286,   287,   288,   291,   293,
-     295,   296,   297,   300,   301,   303,   305,   311,   361,   425,
-     443,   445,   447,   449,   450,   451,   452,   462,   463,   490,
-     522,   524,   537,   539,   541,   559,   460,   388,   133,   134,
-     135,   256,   266,   267,   268,   311,   361,   464,   490,   522,
-     524,   537,   539,   541,   569,   570,   571,   572,   573,   575,
-     577,   567,   534,   530,   409,   405,   223,   223,   223,   223,
-     223,   223,   418,   225,   223,   223,   397,     4,     4,   582,
-     225,     4,   223,     4,   590,   196,   198,   199,   256,   361,
-     522,   524,   642,   643,   644,   645,   647,   640,   225,   225,
-     225,   225,   664,     6,     3,   517,   513,     4,   222,   222,
-      41,    42,    43,   353,   222,   222,   222,    58,    59,    60,
-     374,   222,   222,   222,   222,     8,     8,     8,     8,     3,
-       8,   574,   576,     4,     8,     3,     8,     8,   222,   222,
-     222,   241,   648,     4,   646,     3,     8,   222,     8,   252,
-     463,     4,     4,   225,   571,     4,   223,     4,   643,   222,
-     222,     5,   222,     7,   649,   650,   651,     3,     6,   197,
-     200,   201,   202,   203,   652,   653,   654,   656,   657,   658,
-     659,   650,   655,     4,     4,     4,   660,     3,     8,     4,
-     225,   223,   223,     4,   653,   222,   222
+     138,   148,   151,   158,   159,   163,   166,   170,   185,   186,
+     187,   188,   189,   190,   199,   217,   251,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   274,   275,   277,   278,   279,   280,   281,   282,   283,
+     286,   288,   290,   291,   292,   295,   296,   298,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   326,   328,   336,
+     338,   380,   389,   396,   410,   420,   444,   445,   446,   447,
+     451,   459,   485,   517,   519,   521,   532,   534,   536,   559,
+     573,   574,   582,   592,   611,   620,   644,    15,    16,    19,
+      22,    23,    24,    25,   251,   310,   311,   314,   316,   319,
+     322,   323,   324,   325,   517,   519,    92,    93,    94,   115,
+     119,   120,   121,   132,   136,   146,   251,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   275,   278,   279,
+     280,   281,   282,   283,   286,   288,   290,   291,   292,   295,
+     296,   298,   300,   306,   428,   429,   430,   432,   434,   436,
+     438,   440,   442,   444,   445,   446,   447,   450,   485,   504,
+     517,   519,   521,   532,   534,   536,   554,   116,   137,   251,
+     440,   442,   485,   512,   513,   514,   516,   517,   519,   131,
+     139,   140,   141,   142,   143,   144,   145,   251,   485,   517,
+     519,   529,   530,   531,   532,   534,   536,   538,   540,   542,
+     544,   546,   548,   550,   552,   459,    40,    97,    99,   100,
+     104,   105,   106,   251,   356,   469,   470,   471,   472,   473,
+     474,   475,   477,   479,   481,   482,   484,   517,   519,    98,
+     101,   102,   103,   251,   356,   473,   479,   493,   494,   495,
+     496,   497,   499,   500,   501,   502,   503,   517,   519,   149,
+     150,   251,   404,   405,   406,   408,   171,   172,   173,   174,
+     175,   176,   177,   178,   251,   517,   519,   596,   597,   598,
+     599,   601,   602,   604,   605,   606,   609,    12,    13,   615,
+     616,   617,   619,     6,     3,     4,     8,     3,   255,     3,
+       8,   612,   309,   329,     4,     4,     4,   533,   535,   537,
+       4,     4,   327,   337,   339,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   273,     4,     4,     4,
+       4,     4,   284,   287,   289,     4,     4,     4,     4,   421,
+     460,   486,     4,   276,   293,   452,   518,   520,   448,     4,
+       4,     4,   381,   560,   522,   397,   411,     4,   390,   575,
+     583,   593,   297,   299,     4,     4,     4,   621,   645,     4,
+       3,     8,   315,   317,   320,     4,     4,     4,     4,     3,
+       8,   433,   435,   437,   505,   431,   439,     4,   443,   441,
+     555,     3,     8,   515,     4,     3,     8,   553,   539,   541,
+     543,   547,   545,   551,   549,     8,     3,     8,   476,   357,
+       4,   480,   478,   483,     4,     8,     3,   498,     4,     4,
+       4,     8,     3,   407,   409,     3,     8,     4,   600,     4,
+     603,     4,     4,   607,   610,     3,     8,   618,     4,     3,
+       8,   236,   236,   217,     4,     4,     4,     4,   220,   220,
+     220,     4,     4,     4,   218,   220,     4,     4,     4,   218,
+     218,   218,   218,   218,   220,   219,   219,   219,   218,   218,
+       4,   218,   218,   220,   220,   220,     4,     4,     4,   220,
+     220,   219,   220,     4,     4,     4,   218,     4,     4,     4,
+       4,     4,     4,   220,   220,   220,     4,     4,     4,     4,
+       4,   218,     4,     4,     4,     4,     4,     4,   220,   220,
+     220,     4,     4,   260,     4,     4,     4,   220,   220,   218,
+     218,   311,     4,     4,     4,     4,     4,     4,   218,     4,
+       4,     4,   429,     4,   218,   513,     4,     4,     4,     4,
+       4,     4,     4,     4,   531,     4,     4,   218,     4,     4,
+       4,   220,   471,     4,   220,   220,   220,   495,     4,     4,
+     405,   220,     4,   218,     4,   218,   218,     4,     4,   597,
+       4,   218,   616,     4,     7,     7,     7,     7,   217,   217,
+     217,     7,     7,     5,   217,   181,   182,   183,   184,   220,
+     285,   217,   217,     5,     5,     5,   217,   110,   111,   112,
+     113,   294,     5,   238,   240,   217,   123,   124,   125,   126,
+     449,     5,     5,     5,     5,     7,     7,     7,     7,     7,
+     217,   217,     5,     7,     5,   247,    17,    18,   318,    20,
+      21,   321,   217,   217,   217,     5,   217,   217,   247,   217,
+       7,   217,   247,   217,   217,   217,   217,   217,   217,   217,
+     217,   217,   217,   217,   217,   217,   217,   240,   217,   217,
+      18,   179,   608,   180,     5,   236,   259,   615,   310,    27,
+      28,   330,   331,   332,   334,    40,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      61,    62,    63,    64,    65,    66,   251,   344,   345,   346,
+     349,   351,   353,   355,   356,   358,   359,   360,   361,   362,
+     363,   364,   365,   366,   367,   370,   371,   372,   374,   376,
+     378,   344,     7,   340,   341,   342,     7,   422,   423,   424,
+       7,   463,   464,   465,     7,   487,   488,   489,     7,   453,
+     454,   455,   140,   141,   142,   143,   145,   382,   383,   384,
+     385,   386,   387,   388,     7,   561,   562,     7,   523,   524,
+     525,     7,   398,   399,   400,   152,   153,   154,   155,   156,
+     157,   412,   413,   414,   415,   416,   417,   418,   419,   160,
+     161,   162,   251,   391,   392,   393,   394,   395,   517,   519,
+     164,   165,   251,   517,   519,   576,   577,   578,   580,   167,
+     168,   169,   217,   517,   519,   584,   585,   586,   587,   589,
+     590,   596,     7,   622,   623,   200,   201,   202,   203,   251,
+     646,   647,   648,   649,   650,   651,   248,     7,   506,   507,
+     508,   147,   556,   557,   340,     8,     8,     8,   333,   335,
+       3,     8,   347,   350,   352,   354,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   368,     4,     4,   373,
+     375,   377,   379,     3,     8,     8,   343,     6,     3,   425,
+       6,     3,   466,     6,     3,   490,     6,     3,   456,     6,
+       3,     3,     6,   563,     3,     6,   526,     6,     3,   401,
+       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
+       4,     4,     4,     3,     8,   579,   581,     3,     8,     4,
+     588,     4,   591,     3,     8,     8,   624,     3,     6,     4,
+       4,     4,     4,     3,     8,   217,   249,   250,   509,     6,
+       3,   558,     8,     6,     4,     4,   331,     4,     4,     4,
+       4,   218,   220,   218,   220,   218,   218,   218,   218,   218,
+     218,     4,   220,   218,     4,     4,     4,     4,   345,   344,
+     342,   428,   424,   469,   465,   493,   489,   251,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   275,   278,
+     279,   280,   281,   282,   283,   286,   288,   290,   291,   292,
+     295,   296,   298,   300,   306,   356,   420,   438,   440,   442,
+     444,   445,   446,   447,   457,   458,   485,   517,   519,   532,
+     534,   536,   554,   455,   383,   133,   134,   135,   251,   261,
+     262,   263,   306,   356,   459,   485,   517,   519,   532,   534,
+     536,   564,   565,   566,   567,   568,   570,   572,   562,   529,
+     525,   404,   400,   218,   218,   218,   218,   218,   218,   413,
+     220,   218,   218,   392,     4,     4,   577,   220,     4,   218,
+       4,   585,   191,   193,   194,   251,   356,   517,   519,   625,
+     626,   627,   628,   630,   623,   220,   220,   220,   220,   647,
+       6,     3,   512,   508,     4,   217,   217,    41,    42,    43,
+     348,   217,   217,   217,    58,    59,    60,   369,   217,   217,
+     217,   217,     8,     8,     8,     8,     3,     8,   569,   571,
+       4,     8,     3,     8,     8,   217,   217,   217,   236,   631,
+       4,   629,     3,     8,   217,     8,   247,   458,     4,     4,
+     220,   566,     4,   218,     4,   626,   217,   217,     5,   217,
+       7,   632,   633,   634,     3,     6,   192,   195,   196,   197,
+     198,   635,   636,   637,   639,   640,   641,   642,   633,   638,
+       4,     4,     4,   643,     3,     8,     4,   220,   218,   218,
+       4,   636,   217,   217
   };
 
   const short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   226,   228,   227,   229,   227,   230,   227,   231,   227,
-     232,   227,   233,   227,   234,   227,   235,   227,   236,   227,
-     237,   227,   238,   227,   239,   227,   240,   227,   241,   241,
-     241,   241,   241,   241,   241,   242,   244,   243,   245,   246,
-     246,   247,   247,   247,   249,   248,   250,   250,   251,   251,
-     251,   253,   252,   254,   254,   255,   255,   255,   256,   258,
-     257,   260,   259,   259,   261,   263,   262,   264,   264,   264,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
-     265,   265,   265,   265,   265,   265,   265,   265,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     278,   277,   279,   281,   280,   282,   283,   284,   285,   286,
-     287,   289,   288,   290,   290,   290,   290,   290,   292,   291,
-     294,   293,   295,   296,   298,   297,   299,   299,   299,   299,
-     300,   302,   301,   304,   303,   305,   306,   307,   308,   309,
-     310,   311,   312,   314,   313,   315,   315,   315,   316,   316,
-     316,   316,   316,   316,   316,   316,   316,   316,   318,   317,
-     320,   319,   322,   321,   323,   323,   325,   324,   326,   326,
-     327,   328,   329,   330,   332,   331,   334,   333,   335,   335,
-     335,   336,   336,   338,   337,   340,   339,   342,   341,   344,
-     343,   345,   345,   346,   346,   346,   348,   347,   349,   349,
-     349,   350,   350,   350,   350,   350,   350,   350,   350,   350,
-     350,   350,   350,   350,   350,   350,   350,   350,   350,   350,
-     350,   350,   350,   350,   352,   351,   353,   353,   353,   355,
-     354,   357,   356,   359,   358,   360,   362,   361,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   373,   372,   374,
-     374,   374,   375,   376,   378,   377,   380,   379,   382,   381,
-     384,   383,   386,   385,   387,   387,   387,   388,   388,   388,
-     388,   388,   389,   390,   391,   392,   393,   395,   394,   396,
-     396,   396,   397,   397,   397,   397,   397,   397,   398,   399,
-     400,   402,   401,   403,   403,   404,   404,   404,   406,   405,
-     408,   407,   409,   409,   409,   409,   410,   410,   412,   411,
-     414,   413,   416,   415,   417,   417,   417,   418,   418,   418,
-     418,   418,   418,   419,   420,   421,   422,   423,   424,   426,
-     425,   427,   427,   428,   428,   428,   430,   429,   432,   431,
-     433,   433,   433,   434,   434,   434,   434,   434,   434,   434,
-     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
-     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
-     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
-     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
-     434,   434,   436,   435,   438,   437,   440,   439,   442,   441,
-     444,   443,   446,   445,   448,   447,   449,   450,   451,   453,
-     452,   454,   454,   454,   454,   455,   457,   456,   458,   458,
-     459,   459,   459,   461,   460,   462,   462,   462,   463,   463,
-     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
-     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
-     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
-     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
-     463,   463,   465,   464,   467,   466,   468,   468,   469,   469,
-     469,   471,   470,   473,   472,   474,   474,   475,   475,   475,
-     476,   476,   476,   476,   476,   476,   476,   476,   476,   476,
-     477,   478,   479,   481,   480,   483,   482,   485,   484,   486,
-     488,   487,   489,   491,   490,   492,   492,   493,   493,   493,
-     495,   494,   497,   496,   498,   498,   499,   499,   499,   500,
-     500,   500,   500,   500,   500,   500,   500,   500,   500,   501,
-     503,   502,   504,   505,   506,   507,   508,   510,   509,   511,
-     511,   512,   512,   512,   514,   513,   516,   515,   517,   517,
-     517,   518,   518,   518,   518,   518,   518,   518,   518,   520,
-     519,   521,   523,   522,   525,   524,   527,   526,   528,   528,
-     529,   529,   529,   531,   530,   533,   532,   534,   534,   535,
-     535,   535,   536,   536,   536,   536,   536,   536,   536,   536,
-     536,   536,   536,   536,   536,   536,   536,   538,   537,   540,
-     539,   542,   541,   544,   543,   546,   545,   548,   547,   550,
-     549,   552,   551,   554,   553,   556,   555,   558,   557,   560,
-     559,   561,   563,   562,   565,   564,   566,   566,   566,   568,
-     567,   569,   569,   570,   570,   570,   571,   571,   571,   571,
-     571,   571,   571,   571,   571,   571,   571,   571,   571,   571,
-     571,   571,   572,   574,   573,   576,   575,   577,   578,   580,
-     579,   581,   581,   581,   582,   582,   582,   582,   582,   584,
-     583,   586,   585,   588,   587,   589,   589,   589,   590,   590,
-     590,   590,   590,   590,   591,   593,   592,   594,   596,   595,
-     598,   597,   600,   599,   601,   601,   601,   602,   602,   602,
-     602,   602,   602,   602,   602,   602,   602,   602,   602,   602,
-     602,   602,   602,   602,   602,   603,   605,   604,   606,   608,
-     607,   609,   610,   612,   611,   613,   613,   615,   614,   617,
-     616,   618,   619,   621,   620,   623,   622,   625,   624,   627,
-     626,   629,   628,   631,   630,   632,   632,   632,   633,   633,
-     635,   634,   636,   638,   637,   639,   639,   639,   641,   640,
-     642,   642,   642,   643,   643,   643,   643,   643,   643,   643,
-     644,   646,   645,   648,   647,   649,   649,   649,   651,   650,
-     652,   652,   652,   653,   653,   653,   653,   653,   655,   654,
-     656,   657,   658,   660,   659,   662,   661,   663,   663,   663,
-     664,   664,   664,   664,   664,   665,   666,   667,   668
+       0,   221,   223,   222,   224,   222,   225,   222,   226,   222,
+     227,   222,   228,   222,   229,   222,   230,   222,   231,   222,
+     232,   222,   233,   222,   234,   222,   235,   222,   236,   236,
+     236,   236,   236,   236,   236,   237,   239,   238,   240,   241,
+     241,   242,   242,   242,   244,   243,   245,   245,   246,   246,
+     246,   248,   247,   249,   249,   250,   250,   250,   251,   253,
+     252,   255,   254,   254,   256,   258,   257,   259,   259,   259,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     273,   272,   274,   276,   275,   277,   278,   279,   280,   281,
+     282,   284,   283,   285,   285,   285,   285,   285,   287,   286,
+     289,   288,   290,   291,   293,   292,   294,   294,   294,   294,
+     295,   297,   296,   299,   298,   300,   301,   302,   303,   304,
+     305,   306,   307,   309,   308,   310,   310,   310,   311,   311,
+     311,   311,   311,   311,   311,   311,   311,   311,   313,   312,
+     315,   314,   317,   316,   318,   318,   320,   319,   321,   321,
+     322,   323,   324,   325,   327,   326,   329,   328,   330,   330,
+     330,   331,   331,   333,   332,   335,   334,   337,   336,   339,
+     338,   340,   340,   341,   341,   341,   343,   342,   344,   344,
+     344,   345,   345,   345,   345,   345,   345,   345,   345,   345,
+     345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
+     345,   345,   345,   345,   347,   346,   348,   348,   348,   350,
+     349,   352,   351,   354,   353,   355,   357,   356,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   368,   367,   369,
+     369,   369,   370,   371,   373,   372,   375,   374,   377,   376,
+     379,   378,   381,   380,   382,   382,   382,   383,   383,   383,
+     383,   383,   384,   385,   386,   387,   388,   390,   389,   391,
+     391,   391,   392,   392,   392,   392,   392,   392,   393,   394,
+     395,   397,   396,   398,   398,   399,   399,   399,   401,   400,
+     403,   402,   404,   404,   404,   404,   405,   405,   407,   406,
+     409,   408,   411,   410,   412,   412,   412,   413,   413,   413,
+     413,   413,   413,   414,   415,   416,   417,   418,   419,   421,
+     420,   422,   422,   423,   423,   423,   425,   424,   427,   426,
+     428,   428,   428,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,   431,   430,   433,   432,   435,   434,   437,   436,
+     439,   438,   441,   440,   443,   442,   444,   445,   446,   448,
+     447,   449,   449,   449,   449,   450,   452,   451,   453,   453,
+     454,   454,   454,   456,   455,   457,   457,   457,   458,   458,
+     458,   458,   458,   458,   458,   458,   458,   458,   458,   458,
+     458,   458,   458,   458,   458,   458,   458,   458,   458,   458,
+     458,   458,   458,   458,   458,   458,   458,   458,   458,   458,
+     458,   458,   458,   458,   458,   458,   458,   458,   458,   458,
+     458,   458,   460,   459,   462,   461,   463,   463,   464,   464,
+     464,   466,   465,   468,   467,   469,   469,   470,   470,   470,
+     471,   471,   471,   471,   471,   471,   471,   471,   471,   471,
+     472,   473,   474,   476,   475,   478,   477,   480,   479,   481,
+     483,   482,   484,   486,   485,   487,   487,   488,   488,   488,
+     490,   489,   492,   491,   493,   493,   494,   494,   494,   495,
+     495,   495,   495,   495,   495,   495,   495,   495,   495,   496,
+     498,   497,   499,   500,   501,   502,   503,   505,   504,   506,
+     506,   507,   507,   507,   509,   508,   511,   510,   512,   512,
+     512,   513,   513,   513,   513,   513,   513,   513,   513,   515,
+     514,   516,   518,   517,   520,   519,   522,   521,   523,   523,
+     524,   524,   524,   526,   525,   528,   527,   529,   529,   530,
+     530,   530,   531,   531,   531,   531,   531,   531,   531,   531,
+     531,   531,   531,   531,   531,   531,   531,   533,   532,   535,
+     534,   537,   536,   539,   538,   541,   540,   543,   542,   545,
+     544,   547,   546,   549,   548,   551,   550,   553,   552,   555,
+     554,   556,   558,   557,   560,   559,   561,   561,   561,   563,
+     562,   564,   564,   565,   565,   565,   566,   566,   566,   566,
+     566,   566,   566,   566,   566,   566,   566,   566,   566,   566,
+     566,   566,   567,   569,   568,   571,   570,   572,   573,   575,
+     574,   576,   576,   576,   577,   577,   577,   577,   577,   579,
+     578,   581,   580,   583,   582,   584,   584,   584,   585,   585,
+     585,   585,   585,   585,   586,   588,   587,   589,   591,   590,
+     593,   592,   595,   594,   596,   596,   596,   597,   597,   597,
+     597,   597,   597,   597,   597,   597,   597,   597,   598,   600,
+     599,   601,   603,   602,   604,   605,   607,   606,   608,   608,
+     610,   609,   612,   611,   614,   613,   615,   615,   615,   616,
+     616,   618,   617,   619,   621,   620,   622,   622,   622,   624,
+     623,   625,   625,   625,   626,   626,   626,   626,   626,   626,
+     626,   627,   629,   628,   631,   630,   632,   632,   632,   634,
+     633,   635,   635,   635,   636,   636,   636,   636,   636,   638,
+     637,   639,   640,   641,   643,   642,   645,   644,   646,   646,
+     646,   647,   647,   647,   647,   647,   648,   649,   650,   651
   };
 
   const signed char
@@ -6171,17 +6002,15 @@ namespace isc { namespace dhcp {
        4,     0,     4,     0,     6,     1,     3,     2,     1,     1,
        1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
        0,     6,     0,     4,     1,     3,     2,     1,     1,     1,
-       1,     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,     2,     1,     1,
-       0,     6,     3,     0,     6,     1,     3,     2,     0,     4,
-       1,     3,     2,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     6,     1,     3,     2,     0,     4,
-       1,     3,     2,     1,     1,     1,     1,     1,     0,     4,
-       3,     3,     3,     0,     4,     0,     6,     1,     3,     2,
-       1,     1,     1,     1,     1,     3,     3,     3,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
+       0,     4,     0,     6,     0,     4,     1,     3,     2,     1,
+       1,     0,     6,     3,     0,     6,     1,     3,     2,     0,
+       4,     1,     3,     2,     1,     1,     1,     1,     1,     1,
+       1,     3,     0,     4,     0,     6,     1,     3,     2,     0,
+       4,     1,     3,     2,     1,     1,     1,     1,     1,     0,
+       4,     3,     3,     3,     0,     4,     0,     6,     1,     3,
+       2,     1,     1,     1,     1,     1,     3,     3,     3,     3
   };
 
 
@@ -6247,11 +6076,9 @@ namespace isc { namespace dhcp {
   "\"thread-pool-size\"", "\"packet-queue-size\"", "\"control-socket\"",
   "\"socket-type\"", "\"socket-name\"", "\"dhcp-queue-control\"",
   "\"enable-queue\"", "\"queue-type\"", "\"capacity\"", "\"dhcp-ddns\"",
-  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
-  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
-  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
-  "\"override-no-update\"", "\"override-client-update\"",
-  "\"replace-client-name\"", "\"generated-prefix\"", "\"tcp\"", "\"JSON\"",
+  "\"enable-updates\"", "\"server-ip\"", "\"server-port\"",
+  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
+  "\"ncr-protocol\"", "\"ncr-format\"", "\"tcp\"", "\"JSON\"",
   "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
   "\"hostname-char-set\"", "\"hostname-char-replacement\"",
   "\"early-global-reservations-lookup\"", "\"ip-reservations-unique\"",
@@ -6363,19 +6190,15 @@ namespace isc { namespace dhcp {
   "dhcp_ddns", "$@115", "sub_dhcp_ddns", "$@116", "dhcp_ddns_params",
   "dhcp_ddns_param", "enable_updates", "server_ip", "$@117", "server_port",
   "sender_ip", "$@118", "sender_port", "max_queue_size", "ncr_protocol",
-  "$@119", "ncr_protocol_value", "ncr_format", "$@120",
-  "dep_qualifying_suffix", "$@121", "dep_override_no_update",
-  "dep_override_client_update", "dep_replace_client_name", "$@122",
-  "dep_generated_prefix", "$@123", "dep_hostname_char_set", "$@124",
-  "dep_hostname_char_replacement", "$@125", "config_control", "$@126",
-  "sub_config_control", "$@127", "config_control_params",
-  "config_control_param", "config_databases", "$@128",
-  "config_fetch_wait_time", "loggers", "$@129", "loggers_entries",
-  "logger_entry", "$@130", "logger_params", "logger_param", "debuglevel",
-  "severity", "$@131", "output_options_list", "$@132",
-  "output_options_list_content", "output_entry", "$@133",
-  "output_params_list", "output_params", "output", "$@134", "flush",
-  "maxsize", "maxver", "pattern", "$@135", "compatibility", "$@136",
+  "$@119", "ncr_protocol_value", "ncr_format", "$@120", "config_control",
+  "$@121", "sub_config_control", "$@122", "config_control_params",
+  "config_control_param", "config_databases", "$@123",
+  "config_fetch_wait_time", "loggers", "$@124", "loggers_entries",
+  "logger_entry", "$@125", "logger_params", "logger_param", "debuglevel",
+  "severity", "$@126", "output_options_list", "$@127",
+  "output_options_list_content", "output_entry", "$@128",
+  "output_params_list", "output_params", "output", "$@129", "flush",
+  "maxsize", "maxver", "pattern", "$@130", "compatibility", "$@131",
   "compatibility_params", "compatibility_param", "lenient_option_parsing",
   "ignore_dhcp_server_identifier", "ignore_rai_link_selection",
   "exclude_first_last_24", YY_NULLPTR
@@ -6387,93 +6210,91 @@ namespace isc { namespace dhcp {
   const short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   321,   321,   321,   322,   322,   323,   323,   324,   324,
-     325,   325,   326,   326,   327,   327,   328,   328,   329,   329,
-     330,   330,   331,   331,   332,   332,   333,   333,   341,   342,
-     343,   344,   345,   346,   347,   350,   355,   355,   366,   369,
-     370,   373,   378,   384,   389,   389,   396,   397,   400,   404,
-     408,   414,   414,   421,   422,   425,   429,   433,   443,   452,
-     452,   467,   467,   481,   484,   490,   490,   499,   500,   501,
-     508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
-     518,   519,   520,   521,   522,   523,   524,   525,   526,   527,
-     528,   529,   530,   531,   532,   533,   534,   535,   536,   537,
-     538,   539,   540,   541,   542,   543,   544,   545,   546,   547,
-     548,   549,   550,   551,   552,   553,   554,   555,   556,   557,
-     558,   559,   560,   561,   562,   563,   564,   565,   566,   567,
-     568,   569,   570,   571,   572,   573,   574,   575,   576,   579,
-     585,   591,   597,   603,   609,   615,   621,   627,   633,   639,
-     645,   645,   654,   660,   660,   669,   675,   681,   687,   693,
-     699,   705,   705,   714,   717,   720,   723,   726,   732,   732,
-     741,   741,   750,   759,   769,   769,   778,   781,   784,   787,
-     792,   798,   798,   807,   807,   816,   822,   828,   834,   840,
-     846,   852,   858,   864,   864,   876,   877,   878,   883,   884,
-     885,   886,   887,   888,   889,   890,   891,   892,   895,   895,
-     904,   904,   915,   915,   923,   924,   927,   927,   935,   937,
-     941,   947,   953,   959,   965,   965,   978,   978,   989,   990,
-     991,   996,   997,  1000,  1000,  1019,  1019,  1037,  1037,  1050,
-    1050,  1061,  1062,  1065,  1066,  1067,  1072,  1072,  1082,  1083,
-    1084,  1089,  1090,  1091,  1092,  1093,  1094,  1095,  1096,  1097,
-    1098,  1099,  1100,  1101,  1102,  1103,  1104,  1105,  1106,  1107,
-    1108,  1109,  1110,  1111,  1114,  1114,  1122,  1123,  1124,  1127,
-    1127,  1136,  1136,  1145,  1145,  1154,  1160,  1160,  1169,  1175,
-    1181,  1187,  1193,  1199,  1205,  1211,  1217,  1223,  1223,  1231,
-    1232,  1233,  1236,  1242,  1248,  1248,  1257,  1257,  1266,  1266,
-    1275,  1275,  1284,  1284,  1295,  1296,  1297,  1302,  1303,  1304,
-    1305,  1306,  1309,  1314,  1319,  1324,  1329,  1336,  1336,  1349,
-    1350,  1351,  1356,  1357,  1358,  1359,  1360,  1361,  1364,  1370,
-    1376,  1382,  1382,  1393,  1394,  1397,  1398,  1399,  1404,  1404,
-    1414,  1414,  1424,  1425,  1426,  1429,  1432,  1433,  1436,  1436,
-    1445,  1445,  1454,  1454,  1466,  1467,  1468,  1473,  1474,  1475,
-    1476,  1477,  1478,  1481,  1487,  1493,  1499,  1505,  1511,  1520,
-    1520,  1534,  1535,  1538,  1539,  1540,  1549,  1549,  1575,  1575,
-    1586,  1587,  1588,  1594,  1595,  1596,  1597,  1598,  1599,  1600,
-    1601,  1602,  1603,  1604,  1605,  1606,  1607,  1608,  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,  1636,  1637,  1638,  1639,  1640,
-    1641,  1642,  1645,  1645,  1654,  1654,  1663,  1663,  1672,  1672,
-    1681,  1681,  1690,  1690,  1699,  1699,  1710,  1716,  1722,  1728,
-    1728,  1736,  1737,  1738,  1739,  1742,  1750,  1750,  1762,  1763,
-    1767,  1768,  1769,  1774,  1774,  1782,  1783,  1784,  1789,  1790,
-    1791,  1792,  1793,  1794,  1795,  1796,  1797,  1798,  1799,  1800,
-    1801,  1802,  1803,  1804,  1805,  1806,  1807,  1808,  1809,  1810,
-    1811,  1812,  1813,  1814,  1815,  1816,  1817,  1818,  1819,  1820,
-    1821,  1822,  1823,  1824,  1825,  1826,  1827,  1828,  1829,  1830,
-    1831,  1832,  1839,  1839,  1853,  1853,  1862,  1863,  1866,  1867,
-    1868,  1875,  1875,  1890,  1890,  1904,  1905,  1908,  1909,  1910,
-    1915,  1916,  1917,  1918,  1919,  1920,  1921,  1922,  1923,  1924,
-    1927,  1929,  1935,  1937,  1937,  1946,  1946,  1955,  1955,  1964,
-    1966,  1966,  1975,  1985,  1985,  1998,  1999,  2004,  2005,  2006,
-    2013,  2013,  2025,  2025,  2037,  2038,  2043,  2044,  2045,  2052,
-    2053,  2054,  2055,  2056,  2057,  2058,  2059,  2060,  2061,  2064,
-    2066,  2066,  2075,  2077,  2079,  2085,  2091,  2100,  2100,  2113,
-    2114,  2117,  2118,  2119,  2124,  2124,  2134,  2134,  2144,  2145,
-    2146,  2151,  2152,  2153,  2154,  2155,  2156,  2157,  2158,  2161,
-    2161,  2170,  2176,  2176,  2201,  2201,  2231,  2231,  2242,  2243,
-    2246,  2247,  2248,  2253,  2253,  2262,  2262,  2271,  2272,  2275,
-    2276,  2277,  2283,  2284,  2285,  2286,  2287,  2288,  2289,  2290,
-    2291,  2292,  2293,  2294,  2295,  2296,  2297,  2300,  2300,  2309,
-    2309,  2318,  2318,  2327,  2327,  2336,  2336,  2345,  2345,  2354,
-    2354,  2363,  2363,  2372,  2372,  2381,  2381,  2390,  2390,  2404,
-    2404,  2415,  2418,  2418,  2432,  2432,  2443,  2444,  2445,  2450,
-    2450,  2460,  2461,  2464,  2465,  2466,  2471,  2472,  2473,  2474,
-    2475,  2476,  2477,  2478,  2479,  2480,  2481,  2482,  2483,  2484,
-    2485,  2486,  2489,  2491,  2491,  2500,  2500,  2509,  2517,  2525,
-    2525,  2536,  2537,  2538,  2543,  2544,  2545,  2546,  2547,  2550,
-    2550,  2559,  2559,  2571,  2571,  2584,  2585,  2586,  2591,  2592,
-    2593,  2594,  2595,  2596,  2599,  2605,  2605,  2614,  2620,  2620,
-    2630,  2630,  2643,  2643,  2653,  2654,  2655,  2660,  2661,  2662,
-    2663,  2664,  2665,  2666,  2667,  2668,  2669,  2670,  2671,  2672,
-    2673,  2674,  2675,  2676,  2677,  2680,  2686,  2686,  2695,  2701,
-    2701,  2710,  2716,  2722,  2722,  2731,  2732,  2735,  2735,  2745,
-    2745,  2755,  2762,  2769,  2769,  2778,  2778,  2788,  2788,  2798,
-    2798,  2810,  2810,  2822,  2822,  2832,  2833,  2834,  2840,  2841,
-    2844,  2844,  2855,  2863,  2863,  2876,  2877,  2878,  2884,  2884,
-    2892,  2893,  2894,  2899,  2900,  2901,  2902,  2903,  2904,  2905,
-    2908,  2914,  2914,  2923,  2923,  2934,  2935,  2936,  2941,  2941,
-    2949,  2950,  2951,  2956,  2957,  2958,  2959,  2960,  2963,  2963,
-    2972,  2978,  2984,  2990,  2990,  2999,  2999,  3010,  3011,  3012,
-    3017,  3018,  3019,  3020,  3021,  3024,  3030,  3036,  3042
+       0,   316,   316,   316,   317,   317,   318,   318,   319,   319,
+     320,   320,   321,   321,   322,   322,   323,   323,   324,   324,
+     325,   325,   326,   326,   327,   327,   328,   328,   336,   337,
+     338,   339,   340,   341,   342,   345,   350,   350,   361,   364,
+     365,   368,   373,   379,   384,   384,   391,   392,   395,   399,
+     403,   409,   409,   416,   417,   420,   424,   428,   438,   447,
+     447,   462,   462,   476,   479,   485,   485,   494,   495,   496,
+     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
+     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
+     533,   534,   535,   536,   537,   538,   539,   540,   541,   542,
+     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+     553,   554,   555,   556,   557,   558,   559,   560,   561,   562,
+     563,   564,   565,   566,   567,   568,   569,   570,   571,   574,
+     580,   586,   592,   598,   604,   610,   616,   622,   628,   634,
+     640,   640,   649,   655,   655,   664,   670,   676,   682,   688,
+     694,   700,   700,   709,   712,   715,   718,   721,   727,   727,
+     736,   736,   745,   754,   764,   764,   773,   776,   779,   782,
+     787,   793,   793,   802,   802,   811,   817,   823,   829,   835,
+     841,   847,   853,   859,   859,   871,   872,   873,   878,   879,
+     880,   881,   882,   883,   884,   885,   886,   887,   890,   890,
+     899,   899,   910,   910,   918,   919,   922,   922,   930,   932,
+     936,   942,   948,   954,   960,   960,   973,   973,   984,   985,
+     986,   991,   992,   995,   995,  1014,  1014,  1032,  1032,  1045,
+    1045,  1056,  1057,  1060,  1061,  1062,  1067,  1067,  1077,  1078,
+    1079,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,
+    1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,
+    1103,  1104,  1105,  1106,  1109,  1109,  1117,  1118,  1119,  1122,
+    1122,  1131,  1131,  1140,  1140,  1149,  1155,  1155,  1164,  1170,
+    1176,  1182,  1188,  1194,  1200,  1206,  1212,  1218,  1218,  1226,
+    1227,  1228,  1231,  1237,  1243,  1243,  1252,  1252,  1261,  1261,
+    1270,  1270,  1279,  1279,  1290,  1291,  1292,  1297,  1298,  1299,
+    1300,  1301,  1304,  1309,  1314,  1319,  1324,  1331,  1331,  1344,
+    1345,  1346,  1351,  1352,  1353,  1354,  1355,  1356,  1359,  1365,
+    1371,  1377,  1377,  1388,  1389,  1392,  1393,  1394,  1399,  1399,
+    1409,  1409,  1419,  1420,  1421,  1424,  1427,  1428,  1431,  1431,
+    1440,  1440,  1449,  1449,  1461,  1462,  1463,  1468,  1469,  1470,
+    1471,  1472,  1473,  1476,  1482,  1488,  1494,  1500,  1506,  1515,
+    1515,  1529,  1530,  1533,  1534,  1535,  1544,  1544,  1570,  1570,
+    1581,  1582,  1583,  1589,  1590,  1591,  1592,  1593,  1594,  1595,
+    1596,  1597,  1598,  1599,  1600,  1601,  1602,  1603,  1604,  1605,
+    1606,  1607,  1608,  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,
+    1636,  1637,  1640,  1640,  1649,  1649,  1658,  1658,  1667,  1667,
+    1676,  1676,  1685,  1685,  1694,  1694,  1705,  1711,  1717,  1723,
+    1723,  1731,  1732,  1733,  1734,  1737,  1745,  1745,  1757,  1758,
+    1762,  1763,  1764,  1769,  1769,  1777,  1778,  1779,  1784,  1785,
+    1786,  1787,  1788,  1789,  1790,  1791,  1792,  1793,  1794,  1795,
+    1796,  1797,  1798,  1799,  1800,  1801,  1802,  1803,  1804,  1805,
+    1806,  1807,  1808,  1809,  1810,  1811,  1812,  1813,  1814,  1815,
+    1816,  1817,  1818,  1819,  1820,  1821,  1822,  1823,  1824,  1825,
+    1826,  1827,  1834,  1834,  1848,  1848,  1857,  1858,  1861,  1862,
+    1863,  1870,  1870,  1885,  1885,  1899,  1900,  1903,  1904,  1905,
+    1910,  1911,  1912,  1913,  1914,  1915,  1916,  1917,  1918,  1919,
+    1922,  1924,  1930,  1932,  1932,  1941,  1941,  1950,  1950,  1959,
+    1961,  1961,  1970,  1980,  1980,  1993,  1994,  1999,  2000,  2001,
+    2008,  2008,  2020,  2020,  2032,  2033,  2038,  2039,  2040,  2047,
+    2048,  2049,  2050,  2051,  2052,  2053,  2054,  2055,  2056,  2059,
+    2061,  2061,  2070,  2072,  2074,  2080,  2086,  2095,  2095,  2108,
+    2109,  2112,  2113,  2114,  2119,  2119,  2129,  2129,  2139,  2140,
+    2141,  2146,  2147,  2148,  2149,  2150,  2151,  2152,  2153,  2156,
+    2156,  2165,  2171,  2171,  2196,  2196,  2226,  2226,  2237,  2238,
+    2241,  2242,  2243,  2248,  2248,  2257,  2257,  2266,  2267,  2270,
+    2271,  2272,  2278,  2279,  2280,  2281,  2282,  2283,  2284,  2285,
+    2286,  2287,  2288,  2289,  2290,  2291,  2292,  2295,  2295,  2304,
+    2304,  2313,  2313,  2322,  2322,  2331,  2331,  2340,  2340,  2349,
+    2349,  2358,  2358,  2367,  2367,  2376,  2376,  2385,  2385,  2399,
+    2399,  2410,  2413,  2413,  2427,  2427,  2438,  2439,  2440,  2445,
+    2445,  2455,  2456,  2459,  2460,  2461,  2466,  2467,  2468,  2469,
+    2470,  2471,  2472,  2473,  2474,  2475,  2476,  2477,  2478,  2479,
+    2480,  2481,  2484,  2486,  2486,  2495,  2495,  2504,  2512,  2520,
+    2520,  2531,  2532,  2533,  2538,  2539,  2540,  2541,  2542,  2545,
+    2545,  2554,  2554,  2566,  2566,  2579,  2580,  2581,  2586,  2587,
+    2588,  2589,  2590,  2591,  2594,  2600,  2600,  2609,  2615,  2615,
+    2625,  2625,  2638,  2638,  2648,  2649,  2650,  2655,  2656,  2657,
+    2658,  2659,  2660,  2661,  2662,  2663,  2664,  2665,  2668,  2674,
+    2674,  2683,  2689,  2689,  2698,  2704,  2710,  2710,  2719,  2720,
+    2723,  2723,  2734,  2734,  2746,  2746,  2756,  2757,  2758,  2764,
+    2765,  2768,  2768,  2779,  2787,  2787,  2800,  2801,  2802,  2808,
+    2808,  2816,  2817,  2818,  2823,  2824,  2825,  2826,  2827,  2828,
+    2829,  2832,  2838,  2838,  2847,  2847,  2858,  2859,  2860,  2865,
+    2865,  2873,  2874,  2875,  2880,  2881,  2882,  2883,  2884,  2887,
+    2887,  2896,  2902,  2908,  2914,  2914,  2923,  2923,  2934,  2935,
+    2936,  2941,  2942,  2943,  2944,  2945,  2948,  2954,  2960,  2966
   };
 
   void
@@ -6506,9 +6327,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 6510 "dhcp4_parser.cc"
+#line 6331 "dhcp4_parser.cc"
 
-#line 3048 "dhcp4_parser.yy"
+#line 2972 "dhcp4_parser.yy"
 
 
 void
index 9ad9fbfd10b8308b9d379d382889ae32254b4d82..52ee8cfd461ab705ee59473b5c6ae38bef4af7c6 100644 (file)
@@ -669,60 +669,55 @@ namespace isc { namespace dhcp {
     TOKEN_CAPACITY = 424,          // "capacity"
     TOKEN_DHCP_DDNS = 425,         // "dhcp-ddns"
     TOKEN_ENABLE_UPDATES = 426,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 427, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 428,         // "server-ip"
-    TOKEN_SERVER_PORT = 429,       // "server-port"
-    TOKEN_SENDER_IP = 430,         // "sender-ip"
-    TOKEN_SENDER_PORT = 431,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 432,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 433,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 434,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 435, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 436, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 437, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 438,  // "generated-prefix"
-    TOKEN_TCP = 439,               // "tcp"
-    TOKEN_JSON = 440,              // "JSON"
-    TOKEN_WHEN_PRESENT = 441,      // "when-present"
-    TOKEN_NEVER = 442,             // "never"
-    TOKEN_ALWAYS = 443,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 444,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 445, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 446, // "hostname-char-replacement"
-    TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 447, // "early-global-reservations-lookup"
-    TOKEN_IP_RESERVATIONS_UNIQUE = 448, // "ip-reservations-unique"
-    TOKEN_RESERVATIONS_LOOKUP_FIRST = 449, // "reservations-lookup-first"
-    TOKEN_LOGGERS = 450,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 451,    // "output-options"
-    TOKEN_OUTPUT = 452,            // "output"
-    TOKEN_DEBUGLEVEL = 453,        // "debuglevel"
-    TOKEN_SEVERITY = 454,          // "severity"
-    TOKEN_FLUSH = 455,             // "flush"
-    TOKEN_MAXSIZE = 456,           // "maxsize"
-    TOKEN_MAXVER = 457,            // "maxver"
-    TOKEN_PATTERN = 458,           // "pattern"
-    TOKEN_COMPATIBILITY = 459,     // "compatibility"
-    TOKEN_LENIENT_OPTION_PARSING = 460, // "lenient-option-parsing"
-    TOKEN_IGNORE_DHCP_SERVER_ID = 461, // "ignore-dhcp-server-identifier"
-    TOKEN_IGNORE_RAI_LINK_SEL = 462, // "ignore-rai-link-selection"
-    TOKEN_EXCLUDE_FIRST_LAST_24 = 463, // "exclude-first-last-24"
-    TOKEN_TOPLEVEL_JSON = 464,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP4 = 465,    // TOPLEVEL_DHCP4
-    TOKEN_SUB_DHCP4 = 466,         // SUB_DHCP4
-    TOKEN_SUB_INTERFACES4 = 467,   // SUB_INTERFACES4
-    TOKEN_SUB_SUBNET4 = 468,       // SUB_SUBNET4
-    TOKEN_SUB_POOL4 = 469,         // SUB_POOL4
-    TOKEN_SUB_RESERVATION = 470,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 471,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 472,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 473,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 474, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 475,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 476, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 477,            // "constant string"
-    TOKEN_INTEGER = 478,           // "integer"
-    TOKEN_FLOAT = 479,             // "floating point"
-    TOKEN_BOOLEAN = 480            // "boolean"
+    TOKEN_SERVER_IP = 427,         // "server-ip"
+    TOKEN_SERVER_PORT = 428,       // "server-port"
+    TOKEN_SENDER_IP = 429,         // "sender-ip"
+    TOKEN_SENDER_PORT = 430,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 431,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 432,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 433,        // "ncr-format"
+    TOKEN_TCP = 434,               // "tcp"
+    TOKEN_JSON = 435,              // "JSON"
+    TOKEN_WHEN_PRESENT = 436,      // "when-present"
+    TOKEN_NEVER = 437,             // "never"
+    TOKEN_ALWAYS = 438,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 439,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 440, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 441, // "hostname-char-replacement"
+    TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 442, // "early-global-reservations-lookup"
+    TOKEN_IP_RESERVATIONS_UNIQUE = 443, // "ip-reservations-unique"
+    TOKEN_RESERVATIONS_LOOKUP_FIRST = 444, // "reservations-lookup-first"
+    TOKEN_LOGGERS = 445,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 446,    // "output-options"
+    TOKEN_OUTPUT = 447,            // "output"
+    TOKEN_DEBUGLEVEL = 448,        // "debuglevel"
+    TOKEN_SEVERITY = 449,          // "severity"
+    TOKEN_FLUSH = 450,             // "flush"
+    TOKEN_MAXSIZE = 451,           // "maxsize"
+    TOKEN_MAXVER = 452,            // "maxver"
+    TOKEN_PATTERN = 453,           // "pattern"
+    TOKEN_COMPATIBILITY = 454,     // "compatibility"
+    TOKEN_LENIENT_OPTION_PARSING = 455, // "lenient-option-parsing"
+    TOKEN_IGNORE_DHCP_SERVER_ID = 456, // "ignore-dhcp-server-identifier"
+    TOKEN_IGNORE_RAI_LINK_SEL = 457, // "ignore-rai-link-selection"
+    TOKEN_EXCLUDE_FIRST_LAST_24 = 458, // "exclude-first-last-24"
+    TOKEN_TOPLEVEL_JSON = 459,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP4 = 460,    // TOPLEVEL_DHCP4
+    TOKEN_SUB_DHCP4 = 461,         // SUB_DHCP4
+    TOKEN_SUB_INTERFACES4 = 462,   // SUB_INTERFACES4
+    TOKEN_SUB_SUBNET4 = 463,       // SUB_SUBNET4
+    TOKEN_SUB_POOL4 = 464,         // SUB_POOL4
+    TOKEN_SUB_RESERVATION = 465,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 466,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 467,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 468,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 469, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 470,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 471, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 472,            // "constant string"
+    TOKEN_INTEGER = 473,           // "integer"
+    TOKEN_FLOAT = 474,             // "floating point"
+    TOKEN_BOOLEAN = 475            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -739,7 +734,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 226, ///< Number of tokens.
+        YYNTOKENS = 221, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -913,503 +908,486 @@ namespace isc { namespace dhcp {
         S_CAPACITY = 169,                        // "capacity"
         S_DHCP_DDNS = 170,                       // "dhcp-ddns"
         S_ENABLE_UPDATES = 171,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 172,               // "qualifying-suffix"
-        S_SERVER_IP = 173,                       // "server-ip"
-        S_SERVER_PORT = 174,                     // "server-port"
-        S_SENDER_IP = 175,                       // "sender-ip"
-        S_SENDER_PORT = 176,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 177,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 178,                    // "ncr-protocol"
-        S_NCR_FORMAT = 179,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 180,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 181,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 182,             // "replace-client-name"
-        S_GENERATED_PREFIX = 183,                // "generated-prefix"
-        S_TCP = 184,                             // "tcp"
-        S_JSON = 185,                            // "JSON"
-        S_WHEN_PRESENT = 186,                    // "when-present"
-        S_NEVER = 187,                           // "never"
-        S_ALWAYS = 188,                          // "always"
-        S_WHEN_NOT_PRESENT = 189,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 190,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 191,       // "hostname-char-replacement"
-        S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 192, // "early-global-reservations-lookup"
-        S_IP_RESERVATIONS_UNIQUE = 193,          // "ip-reservations-unique"
-        S_RESERVATIONS_LOOKUP_FIRST = 194,       // "reservations-lookup-first"
-        S_LOGGERS = 195,                         // "loggers"
-        S_OUTPUT_OPTIONS = 196,                  // "output-options"
-        S_OUTPUT = 197,                          // "output"
-        S_DEBUGLEVEL = 198,                      // "debuglevel"
-        S_SEVERITY = 199,                        // "severity"
-        S_FLUSH = 200,                           // "flush"
-        S_MAXSIZE = 201,                         // "maxsize"
-        S_MAXVER = 202,                          // "maxver"
-        S_PATTERN = 203,                         // "pattern"
-        S_COMPATIBILITY = 204,                   // "compatibility"
-        S_LENIENT_OPTION_PARSING = 205,          // "lenient-option-parsing"
-        S_IGNORE_DHCP_SERVER_ID = 206,           // "ignore-dhcp-server-identifier"
-        S_IGNORE_RAI_LINK_SEL = 207,             // "ignore-rai-link-selection"
-        S_EXCLUDE_FIRST_LAST_24 = 208,           // "exclude-first-last-24"
-        S_TOPLEVEL_JSON = 209,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP4 = 210,                  // TOPLEVEL_DHCP4
-        S_SUB_DHCP4 = 211,                       // SUB_DHCP4
-        S_SUB_INTERFACES4 = 212,                 // SUB_INTERFACES4
-        S_SUB_SUBNET4 = 213,                     // SUB_SUBNET4
-        S_SUB_POOL4 = 214,                       // SUB_POOL4
-        S_SUB_RESERVATION = 215,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 216,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 217,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 218,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 219,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 220,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 221,              // SUB_CONFIG_CONTROL
-        S_STRING = 222,                          // "constant string"
-        S_INTEGER = 223,                         // "integer"
-        S_FLOAT = 224,                           // "floating point"
-        S_BOOLEAN = 225,                         // "boolean"
-        S_YYACCEPT = 226,                        // $accept
-        S_start = 227,                           // start
-        S_228_1 = 228,                           // $@1
-        S_229_2 = 229,                           // $@2
-        S_230_3 = 230,                           // $@3
-        S_231_4 = 231,                           // $@4
-        S_232_5 = 232,                           // $@5
-        S_233_6 = 233,                           // $@6
-        S_234_7 = 234,                           // $@7
-        S_235_8 = 235,                           // $@8
-        S_236_9 = 236,                           // $@9
-        S_237_10 = 237,                          // $@10
-        S_238_11 = 238,                          // $@11
-        S_239_12 = 239,                          // $@12
-        S_240_13 = 240,                          // $@13
-        S_value = 241,                           // value
-        S_sub_json = 242,                        // sub_json
-        S_map2 = 243,                            // map2
-        S_244_14 = 244,                          // $@14
-        S_map_value = 245,                       // map_value
-        S_map_content = 246,                     // map_content
-        S_not_empty_map = 247,                   // not_empty_map
-        S_list_generic = 248,                    // list_generic
-        S_249_15 = 249,                          // $@15
-        S_list_content = 250,                    // list_content
-        S_not_empty_list = 251,                  // not_empty_list
-        S_list_strings = 252,                    // list_strings
-        S_253_16 = 253,                          // $@16
-        S_list_strings_content = 254,            // list_strings_content
-        S_not_empty_list_strings = 255,          // not_empty_list_strings
-        S_unknown_map_entry = 256,               // unknown_map_entry
-        S_syntax_map = 257,                      // syntax_map
-        S_258_17 = 258,                          // $@17
-        S_global_object = 259,                   // global_object
-        S_260_18 = 260,                          // $@18
-        S_global_object_comma = 261,             // global_object_comma
-        S_sub_dhcp4 = 262,                       // sub_dhcp4
-        S_263_19 = 263,                          // $@19
-        S_global_params = 264,                   // global_params
-        S_global_param = 265,                    // global_param
-        S_valid_lifetime = 266,                  // valid_lifetime
-        S_min_valid_lifetime = 267,              // min_valid_lifetime
-        S_max_valid_lifetime = 268,              // max_valid_lifetime
-        S_renew_timer = 269,                     // renew_timer
-        S_rebind_timer = 270,                    // rebind_timer
-        S_calculate_tee_times = 271,             // calculate_tee_times
-        S_t1_percent = 272,                      // t1_percent
-        S_t2_percent = 273,                      // t2_percent
-        S_cache_threshold = 274,                 // cache_threshold
-        S_cache_max_age = 275,                   // cache_max_age
-        S_decline_probation_period = 276,        // decline_probation_period
-        S_server_tag = 277,                      // server_tag
-        S_278_20 = 278,                          // $@20
-        S_parked_packet_limit = 279,             // parked_packet_limit
-        S_allocator = 280,                       // allocator
-        S_281_21 = 281,                          // $@21
-        S_echo_client_id = 282,                  // echo_client_id
-        S_match_client_id = 283,                 // match_client_id
-        S_authoritative = 284,                   // authoritative
-        S_ddns_send_updates = 285,               // ddns_send_updates
-        S_ddns_override_no_update = 286,         // ddns_override_no_update
-        S_ddns_override_client_update = 287,     // ddns_override_client_update
-        S_ddns_replace_client_name = 288,        // ddns_replace_client_name
-        S_289_22 = 289,                          // $@22
-        S_ddns_replace_client_name_value = 290,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 291,           // ddns_generated_prefix
-        S_292_23 = 292,                          // $@23
-        S_ddns_qualifying_suffix = 293,          // ddns_qualifying_suffix
-        S_294_24 = 294,                          // $@24
-        S_ddns_update_on_renew = 295,            // ddns_update_on_renew
-        S_ddns_use_conflict_resolution = 296,    // ddns_use_conflict_resolution
-        S_ddns_conflict_resolution_mode = 297,   // ddns_conflict_resolution_mode
-        S_298_25 = 298,                          // $@25
-        S_ddns_conflict_resolution_mode_value = 299, // ddns_conflict_resolution_mode_value
-        S_ddns_ttl_percent = 300,                // ddns_ttl_percent
-        S_hostname_char_set = 301,               // hostname_char_set
-        S_302_26 = 302,                          // $@26
-        S_hostname_char_replacement = 303,       // hostname_char_replacement
-        S_304_27 = 304,                          // $@27
-        S_store_extended_info = 305,             // store_extended_info
-        S_statistic_default_sample_count = 306,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 307,    // statistic_default_sample_age
-        S_early_global_reservations_lookup = 308, // early_global_reservations_lookup
-        S_ip_reservations_unique = 309,          // ip_reservations_unique
-        S_reservations_lookup_first = 310,       // reservations_lookup_first
-        S_offer_lifetime = 311,                  // offer_lifetime
-        S_stash_agent_options = 312,             // stash_agent_options
-        S_interfaces_config = 313,               // interfaces_config
-        S_314_28 = 314,                          // $@28
-        S_interfaces_config_params = 315,        // interfaces_config_params
-        S_interfaces_config_param = 316,         // interfaces_config_param
-        S_sub_interfaces4 = 317,                 // sub_interfaces4
-        S_318_29 = 318,                          // $@29
-        S_interfaces_list = 319,                 // interfaces_list
-        S_320_30 = 320,                          // $@30
-        S_dhcp_socket_type = 321,                // dhcp_socket_type
-        S_322_31 = 322,                          // $@31
-        S_socket_type = 323,                     // socket_type
-        S_outbound_interface = 324,              // outbound_interface
-        S_325_32 = 325,                          // $@32
-        S_outbound_interface_value = 326,        // outbound_interface_value
-        S_re_detect = 327,                       // re_detect
-        S_service_sockets_require_all = 328,     // service_sockets_require_all
-        S_service_sockets_retry_wait_time = 329, // service_sockets_retry_wait_time
-        S_service_sockets_max_retries = 330,     // service_sockets_max_retries
-        S_lease_database = 331,                  // lease_database
-        S_332_33 = 332,                          // $@33
-        S_sanity_checks = 333,                   // sanity_checks
-        S_334_34 = 334,                          // $@34
-        S_sanity_checks_params = 335,            // sanity_checks_params
-        S_sanity_checks_param = 336,             // sanity_checks_param
-        S_lease_checks = 337,                    // lease_checks
-        S_338_35 = 338,                          // $@35
-        S_extended_info_checks = 339,            // extended_info_checks
-        S_340_36 = 340,                          // $@36
-        S_hosts_database = 341,                  // hosts_database
-        S_342_37 = 342,                          // $@37
-        S_hosts_databases = 343,                 // hosts_databases
-        S_344_38 = 344,                          // $@38
-        S_database_list = 345,                   // database_list
-        S_not_empty_database_list = 346,         // not_empty_database_list
-        S_database = 347,                        // database
-        S_348_39 = 348,                          // $@39
-        S_database_map_params = 349,             // database_map_params
-        S_database_map_param = 350,              // database_map_param
-        S_database_type = 351,                   // database_type
-        S_352_40 = 352,                          // $@40
-        S_db_type = 353,                         // db_type
-        S_user = 354,                            // user
-        S_355_41 = 355,                          // $@41
-        S_password = 356,                        // password
-        S_357_42 = 357,                          // $@42
-        S_host = 358,                            // host
-        S_359_43 = 359,                          // $@43
-        S_port = 360,                            // port
-        S_name = 361,                            // name
-        S_362_44 = 362,                          // $@44
-        S_persist = 363,                         // persist
-        S_lfc_interval = 364,                    // lfc_interval
-        S_readonly = 365,                        // readonly
-        S_connect_timeout = 366,                 // connect_timeout
-        S_read_timeout = 367,                    // read_timeout
-        S_write_timeout = 368,                   // write_timeout
-        S_tcp_user_timeout = 369,                // tcp_user_timeout
-        S_max_reconnect_tries = 370,             // max_reconnect_tries
-        S_reconnect_wait_time = 371,             // reconnect_wait_time
-        S_on_fail = 372,                         // on_fail
-        S_373_45 = 373,                          // $@45
-        S_on_fail_mode = 374,                    // on_fail_mode
-        S_retry_on_startup = 375,                // retry_on_startup
-        S_max_row_errors = 376,                  // max_row_errors
-        S_trust_anchor = 377,                    // trust_anchor
-        S_378_46 = 378,                          // $@46
-        S_cert_file = 379,                       // cert_file
-        S_380_47 = 380,                          // $@47
-        S_key_file = 381,                        // key_file
-        S_382_48 = 382,                          // $@48
-        S_cipher_list = 383,                     // cipher_list
-        S_384_49 = 384,                          // $@49
-        S_host_reservation_identifiers = 385,    // host_reservation_identifiers
-        S_386_50 = 386,                          // $@50
-        S_host_reservation_identifiers_list = 387, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 388,     // host_reservation_identifier
-        S_duid_id = 389,                         // duid_id
-        S_hw_address_id = 390,                   // hw_address_id
-        S_circuit_id = 391,                      // circuit_id
-        S_client_id = 392,                       // client_id
-        S_flex_id = 393,                         // flex_id
-        S_dhcp_multi_threading = 394,            // dhcp_multi_threading
-        S_395_51 = 395,                          // $@51
-        S_multi_threading_params = 396,          // multi_threading_params
-        S_multi_threading_param = 397,           // multi_threading_param
-        S_enable_multi_threading = 398,          // enable_multi_threading
-        S_thread_pool_size = 399,                // thread_pool_size
-        S_packet_queue_size = 400,               // packet_queue_size
-        S_hooks_libraries = 401,                 // hooks_libraries
-        S_402_52 = 402,                          // $@52
-        S_hooks_libraries_list = 403,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 404,  // not_empty_hooks_libraries_list
-        S_hooks_library = 405,                   // hooks_library
-        S_406_53 = 406,                          // $@53
-        S_sub_hooks_library = 407,               // sub_hooks_library
-        S_408_54 = 408,                          // $@54
-        S_hooks_params = 409,                    // hooks_params
-        S_hooks_param = 410,                     // hooks_param
-        S_library = 411,                         // library
-        S_412_55 = 412,                          // $@55
-        S_parameters = 413,                      // parameters
-        S_414_56 = 414,                          // $@56
-        S_expired_leases_processing = 415,       // expired_leases_processing
-        S_416_57 = 416,                          // $@57
-        S_expired_leases_params = 417,           // expired_leases_params
-        S_expired_leases_param = 418,            // expired_leases_param
-        S_reclaim_timer_wait_time = 419,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 420, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 421,             // hold_reclaimed_time
-        S_max_reclaim_leases = 422,              // max_reclaim_leases
-        S_max_reclaim_time = 423,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 424,         // unwarned_reclaim_cycles
-        S_subnet4_list = 425,                    // subnet4_list
-        S_426_58 = 426,                          // $@58
-        S_subnet4_list_content = 427,            // subnet4_list_content
-        S_not_empty_subnet4_list = 428,          // not_empty_subnet4_list
-        S_subnet4 = 429,                         // subnet4
-        S_430_59 = 430,                          // $@59
-        S_sub_subnet4 = 431,                     // sub_subnet4
-        S_432_60 = 432,                          // $@60
-        S_subnet4_params = 433,                  // subnet4_params
-        S_subnet4_param = 434,                   // subnet4_param
-        S_subnet = 435,                          // subnet
-        S_436_61 = 436,                          // $@61
-        S_subnet_4o6_interface = 437,            // subnet_4o6_interface
-        S_438_62 = 438,                          // $@62
-        S_subnet_4o6_interface_id = 439,         // subnet_4o6_interface_id
-        S_440_63 = 440,                          // $@63
-        S_subnet_4o6_subnet = 441,               // subnet_4o6_subnet
-        S_442_64 = 442,                          // $@64
-        S_interface = 443,                       // interface
-        S_444_65 = 444,                          // $@65
-        S_client_class = 445,                    // client_class
-        S_446_66 = 446,                          // $@66
-        S_require_client_classes = 447,          // require_client_classes
-        S_448_67 = 448,                          // $@67
-        S_reservations_global = 449,             // reservations_global
-        S_reservations_in_subnet = 450,          // reservations_in_subnet
-        S_reservations_out_of_pool = 451,        // reservations_out_of_pool
-        S_reservation_mode = 452,                // reservation_mode
-        S_453_68 = 453,                          // $@68
-        S_hr_mode = 454,                         // hr_mode
-        S_id = 455,                              // id
-        S_shared_networks = 456,                 // shared_networks
-        S_457_69 = 457,                          // $@69
-        S_shared_networks_content = 458,         // shared_networks_content
-        S_shared_networks_list = 459,            // shared_networks_list
-        S_shared_network = 460,                  // shared_network
-        S_461_70 = 461,                          // $@70
-        S_shared_network_params = 462,           // shared_network_params
-        S_shared_network_param = 463,            // shared_network_param
-        S_option_def_list = 464,                 // option_def_list
-        S_465_71 = 465,                          // $@71
-        S_sub_option_def_list = 466,             // sub_option_def_list
-        S_467_72 = 467,                          // $@72
-        S_option_def_list_content = 468,         // option_def_list_content
-        S_not_empty_option_def_list = 469,       // not_empty_option_def_list
-        S_option_def_entry = 470,                // option_def_entry
-        S_471_73 = 471,                          // $@73
-        S_sub_option_def = 472,                  // sub_option_def
-        S_473_74 = 473,                          // $@74
-        S_option_def_params = 474,               // option_def_params
-        S_not_empty_option_def_params = 475,     // not_empty_option_def_params
-        S_option_def_param = 476,                // option_def_param
-        S_option_def_name = 477,                 // option_def_name
-        S_code = 478,                            // code
-        S_option_def_code = 479,                 // option_def_code
-        S_option_def_type = 480,                 // option_def_type
-        S_481_75 = 481,                          // $@75
-        S_option_def_record_types = 482,         // option_def_record_types
-        S_483_76 = 483,                          // $@76
-        S_space = 484,                           // space
-        S_485_77 = 485,                          // $@77
-        S_option_def_space = 486,                // option_def_space
-        S_option_def_encapsulate = 487,          // option_def_encapsulate
-        S_488_78 = 488,                          // $@78
-        S_option_def_array = 489,                // option_def_array
-        S_option_data_list = 490,                // option_data_list
-        S_491_79 = 491,                          // $@79
-        S_option_data_list_content = 492,        // option_data_list_content
-        S_not_empty_option_data_list = 493,      // not_empty_option_data_list
-        S_option_data_entry = 494,               // option_data_entry
-        S_495_80 = 495,                          // $@80
-        S_sub_option_data = 496,                 // sub_option_data
-        S_497_81 = 497,                          // $@81
-        S_option_data_params = 498,              // option_data_params
-        S_not_empty_option_data_params = 499,    // not_empty_option_data_params
-        S_option_data_param = 500,               // option_data_param
-        S_option_data_name = 501,                // option_data_name
-        S_option_data_data = 502,                // option_data_data
-        S_503_82 = 503,                          // $@82
-        S_option_data_code = 504,                // option_data_code
-        S_option_data_space = 505,               // option_data_space
-        S_option_data_csv_format = 506,          // option_data_csv_format
-        S_option_data_always_send = 507,         // option_data_always_send
-        S_option_data_never_send = 508,          // option_data_never_send
-        S_pools_list = 509,                      // pools_list
-        S_510_83 = 510,                          // $@83
-        S_pools_list_content = 511,              // pools_list_content
-        S_not_empty_pools_list = 512,            // not_empty_pools_list
-        S_pool_list_entry = 513,                 // pool_list_entry
-        S_514_84 = 514,                          // $@84
-        S_sub_pool4 = 515,                       // sub_pool4
-        S_516_85 = 516,                          // $@85
-        S_pool_params = 517,                     // pool_params
-        S_pool_param = 518,                      // pool_param
-        S_pool_entry = 519,                      // pool_entry
-        S_520_86 = 520,                          // $@86
-        S_pool_id = 521,                         // pool_id
-        S_user_context = 522,                    // user_context
-        S_523_87 = 523,                          // $@87
-        S_comment = 524,                         // comment
-        S_525_88 = 525,                          // $@88
-        S_reservations = 526,                    // reservations
-        S_527_89 = 527,                          // $@89
-        S_reservations_list = 528,               // reservations_list
-        S_not_empty_reservations_list = 529,     // not_empty_reservations_list
-        S_reservation = 530,                     // reservation
-        S_531_90 = 531,                          // $@90
-        S_sub_reservation = 532,                 // sub_reservation
-        S_533_91 = 533,                          // $@91
-        S_reservation_params = 534,              // reservation_params
-        S_not_empty_reservation_params = 535,    // not_empty_reservation_params
-        S_reservation_param = 536,               // reservation_param
-        S_next_server = 537,                     // next_server
-        S_538_92 = 538,                          // $@92
-        S_server_hostname = 539,                 // server_hostname
-        S_540_93 = 540,                          // $@93
-        S_boot_file_name = 541,                  // boot_file_name
-        S_542_94 = 542,                          // $@94
-        S_ip_address = 543,                      // ip_address
-        S_544_95 = 544,                          // $@95
-        S_duid = 545,                            // duid
-        S_546_96 = 546,                          // $@96
-        S_hw_address = 547,                      // hw_address
-        S_548_97 = 548,                          // $@97
-        S_client_id_value = 549,                 // client_id_value
-        S_550_98 = 550,                          // $@98
-        S_circuit_id_value = 551,                // circuit_id_value
-        S_552_99 = 552,                          // $@99
-        S_flex_id_value = 553,                   // flex_id_value
-        S_554_100 = 554,                         // $@100
-        S_hostname = 555,                        // hostname
-        S_556_101 = 556,                         // $@101
-        S_reservation_client_classes = 557,      // reservation_client_classes
-        S_558_102 = 558,                         // $@102
-        S_relay = 559,                           // relay
-        S_560_103 = 560,                         // $@103
-        S_relay_map = 561,                       // relay_map
-        S_ip_addresses = 562,                    // ip_addresses
-        S_563_104 = 563,                         // $@104
-        S_client_classes = 564,                  // client_classes
-        S_565_105 = 565,                         // $@105
-        S_client_classes_list = 566,             // client_classes_list
-        S_client_class_entry = 567,              // client_class_entry
-        S_568_106 = 568,                         // $@106
-        S_client_class_params = 569,             // client_class_params
-        S_not_empty_client_class_params = 570,   // not_empty_client_class_params
-        S_client_class_param = 571,              // client_class_param
-        S_client_class_name = 572,               // client_class_name
-        S_client_class_test = 573,               // client_class_test
-        S_574_107 = 574,                         // $@107
-        S_client_class_template_test = 575,      // client_class_template_test
-        S_576_108 = 576,                         // $@108
-        S_only_if_required = 577,                // only_if_required
-        S_dhcp4o6_port = 578,                    // dhcp4o6_port
-        S_control_socket = 579,                  // control_socket
-        S_580_109 = 580,                         // $@109
-        S_control_socket_params = 581,           // control_socket_params
-        S_control_socket_param = 582,            // control_socket_param
-        S_control_socket_type = 583,             // control_socket_type
-        S_584_110 = 584,                         // $@110
-        S_control_socket_name = 585,             // control_socket_name
-        S_586_111 = 586,                         // $@111
-        S_dhcp_queue_control = 587,              // dhcp_queue_control
-        S_588_112 = 588,                         // $@112
-        S_queue_control_params = 589,            // queue_control_params
-        S_queue_control_param = 590,             // queue_control_param
-        S_enable_queue = 591,                    // enable_queue
-        S_queue_type = 592,                      // queue_type
-        S_593_113 = 593,                         // $@113
-        S_capacity = 594,                        // capacity
-        S_arbitrary_map_entry = 595,             // arbitrary_map_entry
-        S_596_114 = 596,                         // $@114
-        S_dhcp_ddns = 597,                       // dhcp_ddns
-        S_598_115 = 598,                         // $@115
-        S_sub_dhcp_ddns = 599,                   // sub_dhcp_ddns
-        S_600_116 = 600,                         // $@116
-        S_dhcp_ddns_params = 601,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 602,                 // dhcp_ddns_param
-        S_enable_updates = 603,                  // enable_updates
-        S_server_ip = 604,                       // server_ip
-        S_605_117 = 605,                         // $@117
-        S_server_port = 606,                     // server_port
-        S_sender_ip = 607,                       // sender_ip
-        S_608_118 = 608,                         // $@118
-        S_sender_port = 609,                     // sender_port
-        S_max_queue_size = 610,                  // max_queue_size
-        S_ncr_protocol = 611,                    // ncr_protocol
-        S_612_119 = 612,                         // $@119
-        S_ncr_protocol_value = 613,              // ncr_protocol_value
-        S_ncr_format = 614,                      // ncr_format
-        S_615_120 = 615,                         // $@120
-        S_dep_qualifying_suffix = 616,           // dep_qualifying_suffix
-        S_617_121 = 617,                         // $@121
-        S_dep_override_no_update = 618,          // dep_override_no_update
-        S_dep_override_client_update = 619,      // dep_override_client_update
-        S_dep_replace_client_name = 620,         // dep_replace_client_name
-        S_621_122 = 621,                         // $@122
-        S_dep_generated_prefix = 622,            // dep_generated_prefix
-        S_623_123 = 623,                         // $@123
-        S_dep_hostname_char_set = 624,           // dep_hostname_char_set
-        S_625_124 = 625,                         // $@124
-        S_dep_hostname_char_replacement = 626,   // dep_hostname_char_replacement
-        S_627_125 = 627,                         // $@125
-        S_config_control = 628,                  // config_control
+        S_SERVER_IP = 172,                       // "server-ip"
+        S_SERVER_PORT = 173,                     // "server-port"
+        S_SENDER_IP = 174,                       // "sender-ip"
+        S_SENDER_PORT = 175,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 176,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 177,                    // "ncr-protocol"
+        S_NCR_FORMAT = 178,                      // "ncr-format"
+        S_TCP = 179,                             // "tcp"
+        S_JSON = 180,                            // "JSON"
+        S_WHEN_PRESENT = 181,                    // "when-present"
+        S_NEVER = 182,                           // "never"
+        S_ALWAYS = 183,                          // "always"
+        S_WHEN_NOT_PRESENT = 184,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 185,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 186,       // "hostname-char-replacement"
+        S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 187, // "early-global-reservations-lookup"
+        S_IP_RESERVATIONS_UNIQUE = 188,          // "ip-reservations-unique"
+        S_RESERVATIONS_LOOKUP_FIRST = 189,       // "reservations-lookup-first"
+        S_LOGGERS = 190,                         // "loggers"
+        S_OUTPUT_OPTIONS = 191,                  // "output-options"
+        S_OUTPUT = 192,                          // "output"
+        S_DEBUGLEVEL = 193,                      // "debuglevel"
+        S_SEVERITY = 194,                        // "severity"
+        S_FLUSH = 195,                           // "flush"
+        S_MAXSIZE = 196,                         // "maxsize"
+        S_MAXVER = 197,                          // "maxver"
+        S_PATTERN = 198,                         // "pattern"
+        S_COMPATIBILITY = 199,                   // "compatibility"
+        S_LENIENT_OPTION_PARSING = 200,          // "lenient-option-parsing"
+        S_IGNORE_DHCP_SERVER_ID = 201,           // "ignore-dhcp-server-identifier"
+        S_IGNORE_RAI_LINK_SEL = 202,             // "ignore-rai-link-selection"
+        S_EXCLUDE_FIRST_LAST_24 = 203,           // "exclude-first-last-24"
+        S_TOPLEVEL_JSON = 204,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP4 = 205,                  // TOPLEVEL_DHCP4
+        S_SUB_DHCP4 = 206,                       // SUB_DHCP4
+        S_SUB_INTERFACES4 = 207,                 // SUB_INTERFACES4
+        S_SUB_SUBNET4 = 208,                     // SUB_SUBNET4
+        S_SUB_POOL4 = 209,                       // SUB_POOL4
+        S_SUB_RESERVATION = 210,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 211,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 212,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 213,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 214,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 215,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 216,              // SUB_CONFIG_CONTROL
+        S_STRING = 217,                          // "constant string"
+        S_INTEGER = 218,                         // "integer"
+        S_FLOAT = 219,                           // "floating point"
+        S_BOOLEAN = 220,                         // "boolean"
+        S_YYACCEPT = 221,                        // $accept
+        S_start = 222,                           // start
+        S_223_1 = 223,                           // $@1
+        S_224_2 = 224,                           // $@2
+        S_225_3 = 225,                           // $@3
+        S_226_4 = 226,                           // $@4
+        S_227_5 = 227,                           // $@5
+        S_228_6 = 228,                           // $@6
+        S_229_7 = 229,                           // $@7
+        S_230_8 = 230,                           // $@8
+        S_231_9 = 231,                           // $@9
+        S_232_10 = 232,                          // $@10
+        S_233_11 = 233,                          // $@11
+        S_234_12 = 234,                          // $@12
+        S_235_13 = 235,                          // $@13
+        S_value = 236,                           // value
+        S_sub_json = 237,                        // sub_json
+        S_map2 = 238,                            // map2
+        S_239_14 = 239,                          // $@14
+        S_map_value = 240,                       // map_value
+        S_map_content = 241,                     // map_content
+        S_not_empty_map = 242,                   // not_empty_map
+        S_list_generic = 243,                    // list_generic
+        S_244_15 = 244,                          // $@15
+        S_list_content = 245,                    // list_content
+        S_not_empty_list = 246,                  // not_empty_list
+        S_list_strings = 247,                    // list_strings
+        S_248_16 = 248,                          // $@16
+        S_list_strings_content = 249,            // list_strings_content
+        S_not_empty_list_strings = 250,          // not_empty_list_strings
+        S_unknown_map_entry = 251,               // unknown_map_entry
+        S_syntax_map = 252,                      // syntax_map
+        S_253_17 = 253,                          // $@17
+        S_global_object = 254,                   // global_object
+        S_255_18 = 255,                          // $@18
+        S_global_object_comma = 256,             // global_object_comma
+        S_sub_dhcp4 = 257,                       // sub_dhcp4
+        S_258_19 = 258,                          // $@19
+        S_global_params = 259,                   // global_params
+        S_global_param = 260,                    // global_param
+        S_valid_lifetime = 261,                  // valid_lifetime
+        S_min_valid_lifetime = 262,              // min_valid_lifetime
+        S_max_valid_lifetime = 263,              // max_valid_lifetime
+        S_renew_timer = 264,                     // renew_timer
+        S_rebind_timer = 265,                    // rebind_timer
+        S_calculate_tee_times = 266,             // calculate_tee_times
+        S_t1_percent = 267,                      // t1_percent
+        S_t2_percent = 268,                      // t2_percent
+        S_cache_threshold = 269,                 // cache_threshold
+        S_cache_max_age = 270,                   // cache_max_age
+        S_decline_probation_period = 271,        // decline_probation_period
+        S_server_tag = 272,                      // server_tag
+        S_273_20 = 273,                          // $@20
+        S_parked_packet_limit = 274,             // parked_packet_limit
+        S_allocator = 275,                       // allocator
+        S_276_21 = 276,                          // $@21
+        S_echo_client_id = 277,                  // echo_client_id
+        S_match_client_id = 278,                 // match_client_id
+        S_authoritative = 279,                   // authoritative
+        S_ddns_send_updates = 280,               // ddns_send_updates
+        S_ddns_override_no_update = 281,         // ddns_override_no_update
+        S_ddns_override_client_update = 282,     // ddns_override_client_update
+        S_ddns_replace_client_name = 283,        // ddns_replace_client_name
+        S_284_22 = 284,                          // $@22
+        S_ddns_replace_client_name_value = 285,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 286,           // ddns_generated_prefix
+        S_287_23 = 287,                          // $@23
+        S_ddns_qualifying_suffix = 288,          // ddns_qualifying_suffix
+        S_289_24 = 289,                          // $@24
+        S_ddns_update_on_renew = 290,            // ddns_update_on_renew
+        S_ddns_use_conflict_resolution = 291,    // ddns_use_conflict_resolution
+        S_ddns_conflict_resolution_mode = 292,   // ddns_conflict_resolution_mode
+        S_293_25 = 293,                          // $@25
+        S_ddns_conflict_resolution_mode_value = 294, // ddns_conflict_resolution_mode_value
+        S_ddns_ttl_percent = 295,                // ddns_ttl_percent
+        S_hostname_char_set = 296,               // hostname_char_set
+        S_297_26 = 297,                          // $@26
+        S_hostname_char_replacement = 298,       // hostname_char_replacement
+        S_299_27 = 299,                          // $@27
+        S_store_extended_info = 300,             // store_extended_info
+        S_statistic_default_sample_count = 301,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 302,    // statistic_default_sample_age
+        S_early_global_reservations_lookup = 303, // early_global_reservations_lookup
+        S_ip_reservations_unique = 304,          // ip_reservations_unique
+        S_reservations_lookup_first = 305,       // reservations_lookup_first
+        S_offer_lifetime = 306,                  // offer_lifetime
+        S_stash_agent_options = 307,             // stash_agent_options
+        S_interfaces_config = 308,               // interfaces_config
+        S_309_28 = 309,                          // $@28
+        S_interfaces_config_params = 310,        // interfaces_config_params
+        S_interfaces_config_param = 311,         // interfaces_config_param
+        S_sub_interfaces4 = 312,                 // sub_interfaces4
+        S_313_29 = 313,                          // $@29
+        S_interfaces_list = 314,                 // interfaces_list
+        S_315_30 = 315,                          // $@30
+        S_dhcp_socket_type = 316,                // dhcp_socket_type
+        S_317_31 = 317,                          // $@31
+        S_socket_type = 318,                     // socket_type
+        S_outbound_interface = 319,              // outbound_interface
+        S_320_32 = 320,                          // $@32
+        S_outbound_interface_value = 321,        // outbound_interface_value
+        S_re_detect = 322,                       // re_detect
+        S_service_sockets_require_all = 323,     // service_sockets_require_all
+        S_service_sockets_retry_wait_time = 324, // service_sockets_retry_wait_time
+        S_service_sockets_max_retries = 325,     // service_sockets_max_retries
+        S_lease_database = 326,                  // lease_database
+        S_327_33 = 327,                          // $@33
+        S_sanity_checks = 328,                   // sanity_checks
+        S_329_34 = 329,                          // $@34
+        S_sanity_checks_params = 330,            // sanity_checks_params
+        S_sanity_checks_param = 331,             // sanity_checks_param
+        S_lease_checks = 332,                    // lease_checks
+        S_333_35 = 333,                          // $@35
+        S_extended_info_checks = 334,            // extended_info_checks
+        S_335_36 = 335,                          // $@36
+        S_hosts_database = 336,                  // hosts_database
+        S_337_37 = 337,                          // $@37
+        S_hosts_databases = 338,                 // hosts_databases
+        S_339_38 = 339,                          // $@38
+        S_database_list = 340,                   // database_list
+        S_not_empty_database_list = 341,         // not_empty_database_list
+        S_database = 342,                        // database
+        S_343_39 = 343,                          // $@39
+        S_database_map_params = 344,             // database_map_params
+        S_database_map_param = 345,              // database_map_param
+        S_database_type = 346,                   // database_type
+        S_347_40 = 347,                          // $@40
+        S_db_type = 348,                         // db_type
+        S_user = 349,                            // user
+        S_350_41 = 350,                          // $@41
+        S_password = 351,                        // password
+        S_352_42 = 352,                          // $@42
+        S_host = 353,                            // host
+        S_354_43 = 354,                          // $@43
+        S_port = 355,                            // port
+        S_name = 356,                            // name
+        S_357_44 = 357,                          // $@44
+        S_persist = 358,                         // persist
+        S_lfc_interval = 359,                    // lfc_interval
+        S_readonly = 360,                        // readonly
+        S_connect_timeout = 361,                 // connect_timeout
+        S_read_timeout = 362,                    // read_timeout
+        S_write_timeout = 363,                   // write_timeout
+        S_tcp_user_timeout = 364,                // tcp_user_timeout
+        S_max_reconnect_tries = 365,             // max_reconnect_tries
+        S_reconnect_wait_time = 366,             // reconnect_wait_time
+        S_on_fail = 367,                         // on_fail
+        S_368_45 = 368,                          // $@45
+        S_on_fail_mode = 369,                    // on_fail_mode
+        S_retry_on_startup = 370,                // retry_on_startup
+        S_max_row_errors = 371,                  // max_row_errors
+        S_trust_anchor = 372,                    // trust_anchor
+        S_373_46 = 373,                          // $@46
+        S_cert_file = 374,                       // cert_file
+        S_375_47 = 375,                          // $@47
+        S_key_file = 376,                        // key_file
+        S_377_48 = 377,                          // $@48
+        S_cipher_list = 378,                     // cipher_list
+        S_379_49 = 379,                          // $@49
+        S_host_reservation_identifiers = 380,    // host_reservation_identifiers
+        S_381_50 = 381,                          // $@50
+        S_host_reservation_identifiers_list = 382, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 383,     // host_reservation_identifier
+        S_duid_id = 384,                         // duid_id
+        S_hw_address_id = 385,                   // hw_address_id
+        S_circuit_id = 386,                      // circuit_id
+        S_client_id = 387,                       // client_id
+        S_flex_id = 388,                         // flex_id
+        S_dhcp_multi_threading = 389,            // dhcp_multi_threading
+        S_390_51 = 390,                          // $@51
+        S_multi_threading_params = 391,          // multi_threading_params
+        S_multi_threading_param = 392,           // multi_threading_param
+        S_enable_multi_threading = 393,          // enable_multi_threading
+        S_thread_pool_size = 394,                // thread_pool_size
+        S_packet_queue_size = 395,               // packet_queue_size
+        S_hooks_libraries = 396,                 // hooks_libraries
+        S_397_52 = 397,                          // $@52
+        S_hooks_libraries_list = 398,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 399,  // not_empty_hooks_libraries_list
+        S_hooks_library = 400,                   // hooks_library
+        S_401_53 = 401,                          // $@53
+        S_sub_hooks_library = 402,               // sub_hooks_library
+        S_403_54 = 403,                          // $@54
+        S_hooks_params = 404,                    // hooks_params
+        S_hooks_param = 405,                     // hooks_param
+        S_library = 406,                         // library
+        S_407_55 = 407,                          // $@55
+        S_parameters = 408,                      // parameters
+        S_409_56 = 409,                          // $@56
+        S_expired_leases_processing = 410,       // expired_leases_processing
+        S_411_57 = 411,                          // $@57
+        S_expired_leases_params = 412,           // expired_leases_params
+        S_expired_leases_param = 413,            // expired_leases_param
+        S_reclaim_timer_wait_time = 414,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 415, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 416,             // hold_reclaimed_time
+        S_max_reclaim_leases = 417,              // max_reclaim_leases
+        S_max_reclaim_time = 418,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 419,         // unwarned_reclaim_cycles
+        S_subnet4_list = 420,                    // subnet4_list
+        S_421_58 = 421,                          // $@58
+        S_subnet4_list_content = 422,            // subnet4_list_content
+        S_not_empty_subnet4_list = 423,          // not_empty_subnet4_list
+        S_subnet4 = 424,                         // subnet4
+        S_425_59 = 425,                          // $@59
+        S_sub_subnet4 = 426,                     // sub_subnet4
+        S_427_60 = 427,                          // $@60
+        S_subnet4_params = 428,                  // subnet4_params
+        S_subnet4_param = 429,                   // subnet4_param
+        S_subnet = 430,                          // subnet
+        S_431_61 = 431,                          // $@61
+        S_subnet_4o6_interface = 432,            // subnet_4o6_interface
+        S_433_62 = 433,                          // $@62
+        S_subnet_4o6_interface_id = 434,         // subnet_4o6_interface_id
+        S_435_63 = 435,                          // $@63
+        S_subnet_4o6_subnet = 436,               // subnet_4o6_subnet
+        S_437_64 = 437,                          // $@64
+        S_interface = 438,                       // interface
+        S_439_65 = 439,                          // $@65
+        S_client_class = 440,                    // client_class
+        S_441_66 = 441,                          // $@66
+        S_require_client_classes = 442,          // require_client_classes
+        S_443_67 = 443,                          // $@67
+        S_reservations_global = 444,             // reservations_global
+        S_reservations_in_subnet = 445,          // reservations_in_subnet
+        S_reservations_out_of_pool = 446,        // reservations_out_of_pool
+        S_reservation_mode = 447,                // reservation_mode
+        S_448_68 = 448,                          // $@68
+        S_hr_mode = 449,                         // hr_mode
+        S_id = 450,                              // id
+        S_shared_networks = 451,                 // shared_networks
+        S_452_69 = 452,                          // $@69
+        S_shared_networks_content = 453,         // shared_networks_content
+        S_shared_networks_list = 454,            // shared_networks_list
+        S_shared_network = 455,                  // shared_network
+        S_456_70 = 456,                          // $@70
+        S_shared_network_params = 457,           // shared_network_params
+        S_shared_network_param = 458,            // shared_network_param
+        S_option_def_list = 459,                 // option_def_list
+        S_460_71 = 460,                          // $@71
+        S_sub_option_def_list = 461,             // sub_option_def_list
+        S_462_72 = 462,                          // $@72
+        S_option_def_list_content = 463,         // option_def_list_content
+        S_not_empty_option_def_list = 464,       // not_empty_option_def_list
+        S_option_def_entry = 465,                // option_def_entry
+        S_466_73 = 466,                          // $@73
+        S_sub_option_def = 467,                  // sub_option_def
+        S_468_74 = 468,                          // $@74
+        S_option_def_params = 469,               // option_def_params
+        S_not_empty_option_def_params = 470,     // not_empty_option_def_params
+        S_option_def_param = 471,                // option_def_param
+        S_option_def_name = 472,                 // option_def_name
+        S_code = 473,                            // code
+        S_option_def_code = 474,                 // option_def_code
+        S_option_def_type = 475,                 // option_def_type
+        S_476_75 = 476,                          // $@75
+        S_option_def_record_types = 477,         // option_def_record_types
+        S_478_76 = 478,                          // $@76
+        S_space = 479,                           // space
+        S_480_77 = 480,                          // $@77
+        S_option_def_space = 481,                // option_def_space
+        S_option_def_encapsulate = 482,          // option_def_encapsulate
+        S_483_78 = 483,                          // $@78
+        S_option_def_array = 484,                // option_def_array
+        S_option_data_list = 485,                // option_data_list
+        S_486_79 = 486,                          // $@79
+        S_option_data_list_content = 487,        // option_data_list_content
+        S_not_empty_option_data_list = 488,      // not_empty_option_data_list
+        S_option_data_entry = 489,               // option_data_entry
+        S_490_80 = 490,                          // $@80
+        S_sub_option_data = 491,                 // sub_option_data
+        S_492_81 = 492,                          // $@81
+        S_option_data_params = 493,              // option_data_params
+        S_not_empty_option_data_params = 494,    // not_empty_option_data_params
+        S_option_data_param = 495,               // option_data_param
+        S_option_data_name = 496,                // option_data_name
+        S_option_data_data = 497,                // option_data_data
+        S_498_82 = 498,                          // $@82
+        S_option_data_code = 499,                // option_data_code
+        S_option_data_space = 500,               // option_data_space
+        S_option_data_csv_format = 501,          // option_data_csv_format
+        S_option_data_always_send = 502,         // option_data_always_send
+        S_option_data_never_send = 503,          // option_data_never_send
+        S_pools_list = 504,                      // pools_list
+        S_505_83 = 505,                          // $@83
+        S_pools_list_content = 506,              // pools_list_content
+        S_not_empty_pools_list = 507,            // not_empty_pools_list
+        S_pool_list_entry = 508,                 // pool_list_entry
+        S_509_84 = 509,                          // $@84
+        S_sub_pool4 = 510,                       // sub_pool4
+        S_511_85 = 511,                          // $@85
+        S_pool_params = 512,                     // pool_params
+        S_pool_param = 513,                      // pool_param
+        S_pool_entry = 514,                      // pool_entry
+        S_515_86 = 515,                          // $@86
+        S_pool_id = 516,                         // pool_id
+        S_user_context = 517,                    // user_context
+        S_518_87 = 518,                          // $@87
+        S_comment = 519,                         // comment
+        S_520_88 = 520,                          // $@88
+        S_reservations = 521,                    // reservations
+        S_522_89 = 522,                          // $@89
+        S_reservations_list = 523,               // reservations_list
+        S_not_empty_reservations_list = 524,     // not_empty_reservations_list
+        S_reservation = 525,                     // reservation
+        S_526_90 = 526,                          // $@90
+        S_sub_reservation = 527,                 // sub_reservation
+        S_528_91 = 528,                          // $@91
+        S_reservation_params = 529,              // reservation_params
+        S_not_empty_reservation_params = 530,    // not_empty_reservation_params
+        S_reservation_param = 531,               // reservation_param
+        S_next_server = 532,                     // next_server
+        S_533_92 = 533,                          // $@92
+        S_server_hostname = 534,                 // server_hostname
+        S_535_93 = 535,                          // $@93
+        S_boot_file_name = 536,                  // boot_file_name
+        S_537_94 = 537,                          // $@94
+        S_ip_address = 538,                      // ip_address
+        S_539_95 = 539,                          // $@95
+        S_duid = 540,                            // duid
+        S_541_96 = 541,                          // $@96
+        S_hw_address = 542,                      // hw_address
+        S_543_97 = 543,                          // $@97
+        S_client_id_value = 544,                 // client_id_value
+        S_545_98 = 545,                          // $@98
+        S_circuit_id_value = 546,                // circuit_id_value
+        S_547_99 = 547,                          // $@99
+        S_flex_id_value = 548,                   // flex_id_value
+        S_549_100 = 549,                         // $@100
+        S_hostname = 550,                        // hostname
+        S_551_101 = 551,                         // $@101
+        S_reservation_client_classes = 552,      // reservation_client_classes
+        S_553_102 = 553,                         // $@102
+        S_relay = 554,                           // relay
+        S_555_103 = 555,                         // $@103
+        S_relay_map = 556,                       // relay_map
+        S_ip_addresses = 557,                    // ip_addresses
+        S_558_104 = 558,                         // $@104
+        S_client_classes = 559,                  // client_classes
+        S_560_105 = 560,                         // $@105
+        S_client_classes_list = 561,             // client_classes_list
+        S_client_class_entry = 562,              // client_class_entry
+        S_563_106 = 563,                         // $@106
+        S_client_class_params = 564,             // client_class_params
+        S_not_empty_client_class_params = 565,   // not_empty_client_class_params
+        S_client_class_param = 566,              // client_class_param
+        S_client_class_name = 567,               // client_class_name
+        S_client_class_test = 568,               // client_class_test
+        S_569_107 = 569,                         // $@107
+        S_client_class_template_test = 570,      // client_class_template_test
+        S_571_108 = 571,                         // $@108
+        S_only_if_required = 572,                // only_if_required
+        S_dhcp4o6_port = 573,                    // dhcp4o6_port
+        S_control_socket = 574,                  // control_socket
+        S_575_109 = 575,                         // $@109
+        S_control_socket_params = 576,           // control_socket_params
+        S_control_socket_param = 577,            // control_socket_param
+        S_control_socket_type = 578,             // control_socket_type
+        S_579_110 = 579,                         // $@110
+        S_control_socket_name = 580,             // control_socket_name
+        S_581_111 = 581,                         // $@111
+        S_dhcp_queue_control = 582,              // dhcp_queue_control
+        S_583_112 = 583,                         // $@112
+        S_queue_control_params = 584,            // queue_control_params
+        S_queue_control_param = 585,             // queue_control_param
+        S_enable_queue = 586,                    // enable_queue
+        S_queue_type = 587,                      // queue_type
+        S_588_113 = 588,                         // $@113
+        S_capacity = 589,                        // capacity
+        S_arbitrary_map_entry = 590,             // arbitrary_map_entry
+        S_591_114 = 591,                         // $@114
+        S_dhcp_ddns = 592,                       // dhcp_ddns
+        S_593_115 = 593,                         // $@115
+        S_sub_dhcp_ddns = 594,                   // sub_dhcp_ddns
+        S_595_116 = 595,                         // $@116
+        S_dhcp_ddns_params = 596,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 597,                 // dhcp_ddns_param
+        S_enable_updates = 598,                  // enable_updates
+        S_server_ip = 599,                       // server_ip
+        S_600_117 = 600,                         // $@117
+        S_server_port = 601,                     // server_port
+        S_sender_ip = 602,                       // sender_ip
+        S_603_118 = 603,                         // $@118
+        S_sender_port = 604,                     // sender_port
+        S_max_queue_size = 605,                  // max_queue_size
+        S_ncr_protocol = 606,                    // ncr_protocol
+        S_607_119 = 607,                         // $@119
+        S_ncr_protocol_value = 608,              // ncr_protocol_value
+        S_ncr_format = 609,                      // ncr_format
+        S_610_120 = 610,                         // $@120
+        S_config_control = 611,                  // config_control
+        S_612_121 = 612,                         // $@121
+        S_sub_config_control = 613,              // sub_config_control
+        S_614_122 = 614,                         // $@122
+        S_config_control_params = 615,           // config_control_params
+        S_config_control_param = 616,            // config_control_param
+        S_config_databases = 617,                // config_databases
+        S_618_123 = 618,                         // $@123
+        S_config_fetch_wait_time = 619,          // config_fetch_wait_time
+        S_loggers = 620,                         // loggers
+        S_621_124 = 621,                         // $@124
+        S_loggers_entries = 622,                 // loggers_entries
+        S_logger_entry = 623,                    // logger_entry
+        S_624_125 = 624,                         // $@125
+        S_logger_params = 625,                   // logger_params
+        S_logger_param = 626,                    // logger_param
+        S_debuglevel = 627,                      // debuglevel
+        S_severity = 628,                        // severity
         S_629_126 = 629,                         // $@126
-        S_sub_config_control = 630,              // sub_config_control
+        S_output_options_list = 630,             // output_options_list
         S_631_127 = 631,                         // $@127
-        S_config_control_params = 632,           // config_control_params
-        S_config_control_param = 633,            // config_control_param
-        S_config_databases = 634,                // config_databases
-        S_635_128 = 635,                         // $@128
-        S_config_fetch_wait_time = 636,          // config_fetch_wait_time
-        S_loggers = 637,                         // loggers
+        S_output_options_list_content = 632,     // output_options_list_content
+        S_output_entry = 633,                    // output_entry
+        S_634_128 = 634,                         // $@128
+        S_output_params_list = 635,              // output_params_list
+        S_output_params = 636,                   // output_params
+        S_output = 637,                          // output
         S_638_129 = 638,                         // $@129
-        S_loggers_entries = 639,                 // loggers_entries
-        S_logger_entry = 640,                    // logger_entry
-        S_641_130 = 641,                         // $@130
-        S_logger_params = 642,                   // logger_params
-        S_logger_param = 643,                    // logger_param
-        S_debuglevel = 644,                      // debuglevel
-        S_severity = 645,                        // severity
-        S_646_131 = 646,                         // $@131
-        S_output_options_list = 647,             // output_options_list
-        S_648_132 = 648,                         // $@132
-        S_output_options_list_content = 649,     // output_options_list_content
-        S_output_entry = 650,                    // output_entry
-        S_651_133 = 651,                         // $@133
-        S_output_params_list = 652,              // output_params_list
-        S_output_params = 653,                   // output_params
-        S_output = 654,                          // output
-        S_655_134 = 655,                         // $@134
-        S_flush = 656,                           // flush
-        S_maxsize = 657,                         // maxsize
-        S_maxver = 658,                          // maxver
-        S_pattern = 659,                         // pattern
-        S_660_135 = 660,                         // $@135
-        S_compatibility = 661,                   // compatibility
-        S_662_136 = 662,                         // $@136
-        S_compatibility_params = 663,            // compatibility_params
-        S_compatibility_param = 664,             // compatibility_param
-        S_lenient_option_parsing = 665,          // lenient_option_parsing
-        S_ignore_dhcp_server_identifier = 666,   // ignore_dhcp_server_identifier
-        S_ignore_rai_link_selection = 667,       // ignore_rai_link_selection
-        S_exclude_first_last_24 = 668            // exclude_first_last_24
+        S_flush = 639,                           // flush
+        S_maxsize = 640,                         // maxsize
+        S_maxver = 641,                          // maxver
+        S_pattern = 642,                         // pattern
+        S_643_130 = 643,                         // $@130
+        S_compatibility = 644,                   // compatibility
+        S_645_131 = 645,                         // $@131
+        S_compatibility_params = 646,            // compatibility_params
+        S_compatibility_param = 647,             // compatibility_param
+        S_lenient_option_parsing = 648,          // lenient_option_parsing
+        S_ignore_dhcp_server_identifier = 649,   // ignore_dhcp_server_identifier
+        S_ignore_rai_link_selection = 650,       // ignore_rai_link_selection
+        S_exclude_first_last_24 = 651            // exclude_first_last_24
       };
     };
 
@@ -4398,21 +4376,6 @@ switch (yykind)
         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
@@ -4518,66 +4481,6 @@ switch (yykind)
         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
@@ -5538,8 +5441,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1548,     ///< Last index in yytable_.
-      yynnts_ = 443,  ///< Number of nonterminal symbols.
+      yylast_ = 1335,     ///< Last index in yytable_.
+      yynnts_ = 431,  ///< Number of nonterminal symbols.
       yyfinal_ = 28 ///< Termination state number.
     };
 
@@ -5606,11 +5509,10 @@ switch (yykind)
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225
+     215,   216,   217,   218,   219,   220
     };
     // Last valid token kind.
-    const int code_max = 480;
+    const int code_max = 475;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -5785,7 +5687,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5789 "dhcp4_parser.h"
+#line 5691 "dhcp4_parser.h"
 
 
 
index 060adc405774d20bb5ae727aab49857e016f9f28..860fbfa0c95e26e740fcafb242129de8a5dc2414 100644 (file)
@@ -1,4 +1,3 @@
-// Generated 202405121319
 // A Bison parser, made by GNU Bison 3.8.2.
 
 // Locations for Bison parsers in C++
index 74f7212419d4377320137795b34b1b9ec73e989d..38ee2f3f1add4d1692f3e0fbaaf77f5981423f26 100644 (file)
@@ -1,6 +1,6 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
 
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 237
-#define YY_END_OF_BUFFER 238
+#define YY_NUM_RULES 232
+#define YY_END_OF_BUFFER 233
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,36 +700,36 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[2318] =
+static const flex_int16_t yy_accept[2236] =
     {   0,
-      230,  230,    0,    0,    0,    0,    0,    0,    0,    0,
-      238,  236,   10,   11,  236,    1,  230,  227,  230,  230,
-      236,  229,  228,  236,  236,  236,  236,  236,  223,  224,
-      236,  236,  236,  225,  226,    5,    5,    5,  236,  236,
-      236,   10,   11,    0,    0,  218,    0,    0,    0,    0,
+      225,  225,    0,    0,    0,    0,    0,    0,    0,    0,
+      233,  231,   10,   11,  231,    1,  225,  222,  225,  225,
+      231,  224,  223,  231,  231,  231,  231,  231,  218,  219,
+      231,  231,  231,  220,  221,    5,    5,    5,  231,  231,
+      231,   10,   11,    0,    0,  213,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,
-      230,  230,    0,  229,  230,    3,    2,    6,    0,  230,
+      225,  225,    0,  224,  225,    3,    2,    6,    0,  225,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
 
-        0,  219,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  221,    0,    0,
+        0,  214,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  216,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    2,    0,
+        0,    0,    0,    0,    0,    0,    8,    0,    0,    0,
 
-        0,    0,  187,    0,    0,  188,    0,    0,    0,    0,
-        0,    0,    0,    0,  220,  222,    0,    0,    0,    0,
+      182,    0,    0,  183,    0,    0,    0,    0,    0,    0,
+        0,    0,  215,  217,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         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,  128,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -737,226 +737,217 @@ static const flex_int16_t yy_accept[2318] =
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  235,  233,    0,  232,
-      231,    0,    0,    0,    0,    0,    0,  186,    0,    0,
-       28,    0,   27,    0,    0,  140,    0,    0,    0,    0,
+      230,  228,    0,  227,  226,    0,    0,    0,    0,    0,
+        0,  181,    0,    0,   23,    0,   22,    0,    0,  135,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,  137,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+      132,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  234,  231,    0,    0,    0,    0,
-        0,   29,    0,    0,   31,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  144,    0,    0,    0,
-        0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  229,  226,    0,    0,    0,    0,
+        0,   24,    0,    0,   26,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  139,    0,    0,    0,
+        0,    0,    0,  111,    0,    0,    0,    0,    0,    0,
+        0,    0,  167,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  172,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   61,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   56,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  115,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  126,    0,    0,   62,    0,    0,    0,    0,
+        0,    0,    0,  110,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      121,    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,  161,    0,  186,
+        0,   50,    0,   54,    0,    0,    0,    0,    0,    0,
 
-        0,  166,    0,  191,    0,   55,    0,   59,    0,    0,
-        0,    0,    0,    0,   37,   34,   33,    0,    0,    0,
-        0,    0,  180,    0,    0,    0,    0,    0,    0,    0,
+       32,   29,   28,    0,    0,    0,    0,    0,  175,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  157,
-        0,    0,    0,    0,    0,    0,    0,    0,  190,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  152,    0,    0,    0,    0,
+        0,    0,    0,  185,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   57,    0,    0,   32,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   52,    0,    0,
+       27,    0,    0,    0,    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,  176,
         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,    0,  181,    0,    0,    0,
+        0,    0,    0,  171,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    7,   30,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  176,    0,    0,    0,    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,    0,  134,    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,  154,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  151,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  116,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      159,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  156,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  121,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  130,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  124,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  129,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  170,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  175,    0,    0,
+        0,    0,  179,  148,    0,    0,    0,    0,    0,    0,
+        0,  153,   51,    0,    0,    0,    0,    0,    0,   65,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  155,
+        0,    0,   58,  122,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  184,  153,    0,    0,    0,
-        0,    0,    0,    0,  158,   56,    0,    0,    0,    0,
-        0,    0,   70,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  160,    0,    0,   63,  127,    0,    0,
-
         0,    0,    0,    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,    0,    0,  206,    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,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  211,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  169,
+        0,    0,    0,    0,    0,    0,    0,   74,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  136,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  174,    0,    0,    0,
 
-        0,    0,    0,    0,   79,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   55,    0,  115,    0,    0,    0,
+      166,    0,    0,    0,    0,   49,    0,    0,    0,    0,
         0,    0,    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,    0,    0,
-        0,    0,   60,    0,  120,    0,    0,    0,  171,    0,
-        0,    0,    0,    0,   54,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
+        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  162,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  207,    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,   78,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,  126,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  212,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  131,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   36,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   15,    0,    0,  180,   13,    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,    0,   16,    0,
-        0,  185,   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,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
+        0,    0,    0,    0,  172,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,  156,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      161,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  168,  184,    0,   35,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  173,  189,    0,   40,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   19,    0,  113,    0,
+        0,  108,    0,    0,    0,    0,  178,    0,    0,   53,
+        0,  117,  205,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
+        0,    0,    0,    0,    0,    0,  144,  145,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   20,    0,  118,    0,    0,  113,    0,    0,
-        0,    0,    0,    0,  183,    0,    0,   58,    0,  122,
 
-        0,  210,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   90,    0,
-        0,    0,    0,    0,    0,    0,  149,  150,    0,    0,
+        0,  112,    0,    0,    0,   75,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  117,    0,    0,    0,   80,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  174,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  179,    0,    0,    0,    0,    0,    0,    0,    0,
+      140,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  109,  133,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   82,    0,    0,
+        0,    0,    0,   16,    0,   14,    0,    0,  202,  201,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  145,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  114,  138,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   25,    0,    0,    0,  160,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   87,    0,    0,    0,    0,    0,    0,   17,    0,
-       15,    0,    0,  207,  206,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       30,    0,    0,    0,  165,    0,    0,    0,    0,    0,
+      195,    0,    0,  204,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  127,    0,  165,    0,   41,
+        0,    0,   59,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   18,    0,    0,    0,    0,    0,   88,
+        0,  129,   61,   83,    0,    0,  173,    0,    0,    0,
+      164,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   72,    0,  123,    0,    0,    0,
+
+        0,    0,    0,    0,  147,    0,    0,    0,  211,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  200,    0,    0,  209,    0,
+        0,    0,    0,    0,    0,  120,    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,  132,    0,  170,    0,   46,    0,    0,   64,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
-        0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
-      134,   66,   88,    0,    0,  178,    0,    0,    0,    0,
-      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   77,    0,  128,    0,    0,    0,
-        0,    0,    0,    0,  152,    0,    0,    0,  216,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
-      192,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       40,    0,    0,    0,    0,    0,    0,    0,    0,  162,
+        0,    0,    0,   62,    0,    0,    0,    0,    0,    0,
+        0,  158,   46,    0,    0,    0,  200,   33,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   12,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   44,    0,    0,    0,   43,    0,    0,   17,
+        0,    0,    0,   71,    0,    0,    0,    0,    0,  150,
+      149,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   45,    0,    0,    0,    0,
-        0,    0,    0,    0,  167,    0,    0,    0,   67,    0,
-        0,    0,    0,    0,    0,    0,  163,   51,    0,    0,
-        0,  205,   38,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   12,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   49,    0,
-        0,    0,   48,    0,    0,   18,    0,    0,    0,   76,
-        0,    0,    0,    0,    0,  155,  154,    0,    0,    0,
+        0,    0,    0,    0,   79,    0,    0,    0,    0,    0,
+      146,    0,    0,    0,   60,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
+        0,    0,    0,    0,    0,  177,    0,    0,    0,   45,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      196,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  107,    0,
+       66,    0,    0,    0,    0,    0,  100,    0,    0,   31,
+        0,   47,    0,    0,    0,    0,    0,    0,    0,    0,
+      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   84,    0,    0,    0,    0,    0,
-      151,    0,    0,    0,   65,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  123,
-        0,    0,    0,    0,    0,    0,  182,    0,    0,    0,
-       50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  201,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  112,    0,   71,    0,    0,    0,    0,
-
-        0,  105,    0,    0,   36,    0,   52,    0,    0,    0,
-        0,    0,    0,    0,    0,  109,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   24,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  198,    0,    0,    0,
-        0,  168,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  135,    0,    0,    0,    0,   74,    0,
-       72,    0,    0,    0,    0,   68,  203,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   96,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   25,   39,    0,    0,    0,    0,    0,
+      193,    0,    0,    0,    0,  163,    0,    0,    0,    0,
+        0,    0,    0,  130,    0,    0,    0,    0,   69,    0,
+       67,    0,    0,    0,    0,   63,  198,    0,    0,    0,
 
-        0,    0,    0,    0,    0,  204,    0,    0,   13,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    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,  208,    0,
+        0,    0,    0,   20,   34,    0,    0,    0,    0,    0,
+        0,    0,    0,  199,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  197,    0,   86,    0,   85,    0,   21,    0,   81,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  106,    0,  148,
+        0,    0,    0,    0,  203,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  192,    0,   81,
+        0,   80,    0,   76,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  124,    0,    0,    0,  196,    0,    0,    0,
 
-        0,    0,   75,    0,    0,   91,    0,   69,    0,   23,
-        0,  141,    0,    0,    0,    0,    0,    0,    0,    0,
-      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  102,    0,    0,    0,    0,    0,   47,    0,    0,
+      101,    0,  143,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  119,    0,    0,    0,  191,
+        0,    0,    0,    0,    0,   70,    0,   86,    0,   64,
+        0,    0,  136,    0,    0,    0,    0,    0,    0,    0,
+        0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   97,    0,    0,    0,    0,    0,   42,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   73,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  100,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   68,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   95,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  108,   53,    0,    0,    0,  101,    0,    0,
-
-        0,    0,  202,    0,    0,    0,    0,  214,  217,   83,
-       82,   22,    0,  146,  164,  142,    0,    0,    0,    0,
-        0,    0,    0,  107,    0,    0,   97,    0,    0,    0,
-        0,    0,    0,    0,    0,  194,    0,    0,    0,    0,
-        0,    0,  199,    0,    0,   99,    0,   89,    0,    0,
-        0,    0,    0,    0,  143,    0,    0,    0,    0,    0,
-        0,    0,    0,  193,    0,    0,   26,  215,    0,    0,
+        0,  103,   48,    0,    0,    0,   96,    0,    0,    0,
+        0,  197,    0,    0,    0,    0,  209,  212,   78,   77,
+        0,  141,  159,  137,    0,    0,    0,    0,    0,    0,
+        0,  102,    0,    0,   92,    0,    0,    0,    0,    0,
+        0,    0,    0,  189,    0,    0,    0,    0,    0,    0,
+      194,    0,    0,   94,    0,   84,    0,    0,    0,    0,
+        0,    0,  138,    0,    0,    0,    0,    0,    0,    0,
+        0,  188,    0,    0,   21,  210,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   98,    0,    0,    0,    0,
-       44,   42,    0,    0,    0,    0,  103,    0,    0,  147,
 
-        0,   95,    0,  104,    0,    0,    0,    0,    0,    0,
-        0,   94,    0,  195,   43,  213,    0
+        0,    0,    0,   93,    0,    0,    0,    0,   39,   37,
+        0,    0,    0,    0,   98,    0,    0,  142,    0,   90,
+        0,   99,    0,    0,    0,    0,    0,    0,    0,   89,
+        0,  190,   38,  208,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -1003,544 +994,526 @@ static const YY_CHAR yy_meta[77] =
         1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[2326] =
+static const flex_int16_t yy_base[2244] =
     {   0,
         0,   75,   21,   28,   39,   47,   53,   61,   95,  103,
-     2766, 2767,   31, 2762,  151,    0,  216, 2767,  223,  230,
-       13,  237, 2767, 2742,  124,   17,    4,   34, 2767, 2767,
-       23,   43,   64, 2767, 2767, 2767,   56, 2750, 2700,    0,
-     2740,  106, 2757,    2,  268, 2767,   85,   90, 2703, 2724,
-       98,   77, 2724,  235,  231,   97,  207,  298,  226,  312,
-      293,   62,  254,  205,  203,  223, 2703,  252,  321,  336,
-      289,  339, 2686,   21,  344,  394,  354, 2705,  348,    0,
-      408,  422,  448,  456,  462, 2767,    0, 2767,  438,  470,
-      240,  256,  244,  321,  322,  278, 2767, 2702, 2746, 2767,
-
-      266, 2767,  484,  315,  374, 2700, 2744,  323,   17,  334,
-      362, 2738,  379,  377,  384,  391, 2742,    0,  548,  439,
-     2681,  431, 2680, 2681, 2687,  440, 2673, 2674, 2679,   76,
-     2689, 2672, 2681, 2671,  445,  452,   63, 2674, 2672,  444,
-     2661, 2722,   16, 2664, 2720, 2657,  180, 2678, 2678, 2672,
-      209, 2665, 2663, 2664, 2656, 2661, 2655,  388, 2666,  373,
-     2651, 2650, 2664,  455, 2705, 2649,  451, 2661,  459, 2649,
-      518, 2650,  462, 2662, 2659, 2660,  379, 2658, 2696, 2695,
-      405,  200, 2639, 2643,  458, 2639, 2631, 2648, 2640, 2642,
-        0,  481,  498,  473,  503,  500,  498, 2638, 2767,  512,
-
-      530, 2633, 2767,  521,  515, 2767, 2690,  552,  559, 2689,
-      560, 2688,  555, 2687, 2767, 2767,  604,  530,  567, 2643,
-     2635, 2639, 2640, 2620, 2631, 2633, 2632,  334,  541, 2673,
-     2634, 2615, 2612, 2620, 2626, 2614, 2628, 2624, 2615, 2624,
-     2624, 2619, 2611, 2613, 2616, 2596, 2600, 2613, 2615, 2612,
-     2604, 2594, 2597, 2611, 2767, 2597, 2605,   82, 2646, 2589,
-     2598, 2643, 2587, 2597, 2640,  545, 2596, 2638, 2580, 2582,
-     2593, 2634,  580, 2638, 2589, 2569, 2584,  528, 2574, 2580,
-      488, 2571, 2569,  347, 2569, 2575, 2566, 2565, 2578, 2571,
-     2561, 2572, 2576, 2575, 2569,  480, 2576, 2571, 2563, 2553,
-
-     2568, 2554, 2562, 2566, 2547, 2563, 2549, 2555, 2562, 2544,
-      214, 2549, 2546, 2545,  585, 2544, 2539, 2553, 2552,  581,
-     2551, 2554, 2536, 2544, 2532,  584, 2767, 2767,  587, 2767,
-     2767, 2530,  550,  592, 2580,  599, 2591, 2767,  569,  607,
-     2767, 2590, 2767, 2584,  650, 2767, 2543,  597, 2520, 2539,
-     2522, 2539, 2578, 2535, 2525, 2580, 2532, 2535, 2526, 2529,
-     2515, 2526,  632, 2568, 2523, 2520, 2521,  628, 2525, 2568,
-     2500, 2512, 2507, 2504, 2500, 2502, 2505, 2555, 2509, 2498,
-     2514, 2551, 2494,  673, 2507, 2507, 2490, 2491, 2504, 2502,
-     2500, 2500, 2499, 2494, 2501, 2496, 2481,  616, 2490, 2493,
-
-     2488,  580, 2487, 2483, 2536,  595,  605, 2767, 2492, 2529,
-     2476, 2475, 2468, 2470, 2482, 2473, 2480, 2461, 2478, 2470,
-     2466, 2471,  677, 2521, 2471,  632, 2468, 2471, 2471, 2469,
-       50, 2459, 2471,  625, 2446, 2447, 2468, 2459, 2449, 2441,
-     2445, 2459,  637, 2445, 2457, 2456, 2455, 2450, 2495, 2452,
-     2451, 2450, 2449, 2432, 2440, 2493, 2449, 2491, 2428, 2489,
-     2428,  686, 2441, 2439, 2767, 2767, 2439,  631, 2479, 2483,
-     2482, 2767, 2481,  619, 2767,  659,  731, 2437,  658, 2479,
-     2473, 2423, 2425, 2427, 2414, 2411, 2767, 2416, 2409, 2421,
-     2424, 2411, 2410, 2767, 2420,  661, 2411, 2408, 2420,  492,
-
-     2405, 2407, 2767, 2455, 2412, 2397, 2399, 2410, 2408, 2408,
-     2402,  699, 2409, 2397, 2390, 2444, 2767, 2388, 2404, 2441,
-     2445, 2398, 2392, 2394, 2395, 2379, 2388, 2433, 2381, 2380,
-     2375, 2374, 2376, 2372, 2368,  654, 2387, 2361, 2368, 2373,
-     2366, 2382, 2419, 2423, 2767, 2365, 2361,  700, 2369, 2368,
-     2362, 2369, 2354, 2364, 2352, 2366, 2366, 2354, 2350, 2355,
-     2351, 2346, 2767, 2355, 2405, 2767, 2344, 2343, 2336, 2353,
-     2395, 2394, 2336, 2335, 2340, 2349, 2343, 2337, 2346,  702,
-     2386, 2345, 2329, 2324, 2382, 2319, 2325,  649, 2339, 2332,
-     2336, 2319, 2380, 2318, 2318, 2372, 2314, 2315, 2314, 2312,
-
-     2329, 2767, 2325, 2767, 2365, 2767, 2313, 2767, 2323, 2362,
-     2361, 2318, 2364,  723, 2767, 2767, 2767,  709,  674,  677,
-     2301,  725, 2767,  671, 2319, 2299, 2309, 2354, 2353, 2295,
-     2305, 2350, 2292, 2299, 2292, 2300, 2293, 2302, 2284, 2284,
-     2299, 2298, 2282,  478, 2296, 2295, 2279, 2294, 2276, 2326,
-     2290, 2287, 2330, 2271, 2273, 2285, 2285, 2283, 2283, 2767,
-     2268, 2265, 2326, 2278, 2270, 2276, 2267, 2275, 2767, 2260,
-     2271, 2275, 2257, 2269, 2261,  610, 2252, 2251, 2245, 2250,
-     2247, 2262, 2261, 2262, 2241, 2251, 2257, 2303, 2255, 2254,
-     2246, 2237, 2767, 2238, 2240, 2767, 2235, 2241, 2246, 2288,
-
-     2287,  727, 2245, 2285, 2227, 2283, 2227, 2230, 2228, 2230,
-     2221, 2236, 2767, 2234, 2220,  755, 2212, 2216, 2232, 2229,
-     2224, 2220, 2268, 2217, 2224, 2265, 2767, 2208, 2206, 2220,
-     2219, 2222, 2207, 2258, 2253,  213,  365,  377,  425,  494,
-      593, 2767,  557,  594,  665,  735,  668,  669,  669,  674,
-      740,  703,  709,  700,  704,  699, 2767, 2767,  725,  739,
-      739,  731,  747,  709,  706,  728,  722,  711,  713,  727,
-      728,  738,  784,  741,  741,  790,  791,  742,  738,  743,
-      744,  754,  760,  746,  749,  752,  761,  761,  745,  805,
-      764,  756,  766,  809,  769,  762,  762,  764,  768,  774,
-
-      817,  777,  824,  779,  780, 2767,  783,  778,  769,  784,
-      789,  786,  783,  790,  789,  777,  791,  789,  797,  836,
-      795,  843,  844,  785,  798,  784,  794,  844,  799,  852,
-     2767,  853,  806,  804,  806,  802,  796,  812,  860,  856,
-      816,  805, 2767,  807,  808,  819,  808,  821,  811,  824,
-      871,  827,  812,  874,  875,  815,  830, 2767,  824,  818,
-      829,  814,  825,  838,  829,  818,  824,  882,  843,  827,
-      827,  840,  887,  888,  832,  839,  851,  846,  851,  848,
-      895,  834,  846,  847,  854,  845,  842, 2767,  911,  865,
-      866,  854,  868,  858,  861,  872,  863,  869,  870,  898,
-
-      890,  919,  920,  894,  867,  881,  863,  870,  884,  932,
-      886,  883,  881, 2767,  885,  880,  895,  892,  878,  880,
-      899,  896,  896,  898,  886,  893,  894,  904,  946,  910,
-      949,  909,  899,  912,  898,  897,  903,  962,  906,  901,
-      902,  908,  924,  907,  964,  916,  966, 2767,  927,  927,
-      920,  931,  929,  977,  916,  918,  933,  934,  922,  920,
-      985,  939,  925,  931,  929, 2767, 2767,  945,  944,  945,
-      950,  938,  948,  950, 2767, 2767,  950,  952,  939,  957,
-      944,  946, 2767,  943,  961,  948,  948,  949, 1004,  947,
-      951,  969, 1013, 2767,  971, 1015, 2767, 2767,  957,  971,
-
-      971, 1019,  964,  963,  967,  961,  977, 1025,  975,  965,
-      966,  962,  972,  976,  987,  988,  983, 1030,  986,  979,
-      981,  977,  994,  984,  999,  982, 1044,  998, 1003,  980,
-     1003,  989,  988, 2767,  995,  997, 1049, 1050,  999, 1012,
-     1053,  997, 1012, 1006, 1030, 1040, 1028, 1036, 1048, 1065,
-     1011, 1063, 1023, 1066, 2767, 1072, 1012, 1031, 1021, 1020,
-     1015, 1016, 1028, 1023, 1019, 1037, 1029, 1024, 1025, 1035,
-     1044, 1083, 1031, 1030, 1051, 1043, 1038, 1094, 1100, 1054,
-     1045, 2767, 1059, 1050, 1058, 1060, 1045, 1061, 1051, 1063,
-     1060, 1058, 1108, 1071, 1055, 1056, 2767, 1072, 1075, 1058,
-
-     1060, 1121, 1061, 1080, 2767, 1079, 1082, 1069, 1064, 1082,
-     1070, 1126, 1081, 1077, 1074, 1130, 1076, 1132, 1091, 1077,
-     1095, 1095, 1095, 1081, 1096, 1088, 1084, 1085, 1103, 1102,
-     1089, 1106, 2767, 1090, 2767, 1099, 1149, 1099, 2767, 1107,
-     1110, 1103, 1160, 1104, 2767, 1107, 1112, 1159, 1107, 1108,
-     1120, 1114, 1115, 1113, 1110, 1125, 1173, 1114, 1115, 1176,
-     1177, 1118, 1130, 1123, 2767, 1119, 1128, 1126, 1180, 1119,
-     1140, 1126, 1127, 1128, 1129, 1135, 1143, 1134, 1148, 1149,
-     1150, 1165, 1194, 1177, 1169, 1174, 2767, 1157, 1161, 1144,
-     1144, 2767, 1145, 1147, 1158, 1148, 1168, 1167, 1158, 1169,
-
-     1215, 1154, 1166, 1175, 1168, 1172, 1176, 1159, 1176, 1177,
-     1168, 1226, 1174, 1178, 2767, 1228, 1174, 1192, 1174, 1174,
-     1195, 1192, 1235, 1181, 1199, 1187, 1201, 1187, 1195, 1204,
-     1184, 1199, 1206, 1251, 1252, 2767, 1202, 1254, 1208, 1194,
-     1204, 1214, 1198, 1218, 1201, 1203, 1203, 1210, 1219, 1207,
-     1214, 1209, 1216, 1228, 1272, 1216, 1274, 1216, 1233, 1277,
-     1224, 1228, 1229, 1227, 1225, 1220, 1284, 1232, 1229, 1287,
-     1234, 1289, 1285, 1291, 1241, 2767, 1230, 1247, 1240, 1231,
-     1250, 1244, 1239, 1249, 1250, 1246, 1241, 1259, 2767, 1243,
-     1239, 2767, 2767, 1245, 1308, 1264, 1245, 1264, 1265, 1267,
-
-     1309, 1259, 1316, 1317, 1267, 1272, 1266, 1264, 1275, 1257,
-     1262, 1268, 1294, 1307, 1295, 1309, 1296, 1331, 1283, 1283,
-     1287, 1335, 1275, 1275, 1278, 1295, 1290, 1294, 1289, 2767,
-     1286, 1299, 1283, 1300, 1280, 1301, 1291, 1290, 1346, 1296,
-     2767, 1310, 1312, 1315, 1299, 1308, 1312, 1317, 1303, 1366,
-     1316, 1321, 1308, 1322, 1320, 1312, 1318, 1314, 1332, 1333,
-     1334, 2767, 2767, 1332, 2767, 1334, 1319, 1330, 1321, 1340,
-     1333, 1331, 1386, 1340, 1337, 1384, 1345, 1334, 1341, 1346,
-     1343, 1349, 2767, 1342, 2767, 1334, 1398, 2767, 1399, 1343,
-     1344, 1351, 1398, 1357, 2767, 1358, 1346, 2767, 1356, 2767,
-
-     1347, 2767, 1347, 1348, 1351, 1365, 1370, 1353, 1364, 1416,
-     1370, 1371, 1414, 1377, 1368, 1422, 1418, 1424, 2767, 1372,
-     1369, 1427, 1428, 1382, 1383, 1385, 2767, 2767, 1377, 1372,
-     1429, 1375, 1391, 1375, 1387, 1376, 1435, 1418, 1419, 1411,
-     1444, 2767, 1398, 1389, 1400, 2767, 1448, 1382, 1393, 1408,
-     1447, 1396, 1407, 1395, 1394, 1410, 1411, 1408, 1455, 1415,
-     1417, 1406, 1416, 1422, 1410, 1410, 1470, 1466, 1468, 1474,
-     1429, 2767, 1431, 1430, 1432, 1423, 1426, 1435, 1436, 1433,
-     1423, 1426, 1426, 1488, 1432, 1490, 1434, 1492, 1432, 1437,
-     1496, 2767, 1451, 1430, 1445, 1438, 1441, 1454, 1457, 1456,
-
-     1454, 1506, 1457, 2767, 2767, 1453, 1454, 1464, 1449, 1508,
-     1452, 1515, 1468, 1454, 1518, 1519, 1520, 1461, 1471, 1523,
-     1477, 2767, 1469, 1470, 1472, 1528, 1469, 1469, 2767, 1487,
-     2767, 1484, 1475, 2767, 2767, 1488, 1471, 1491, 1492, 1478,
-     1480, 1542, 1489, 1544, 1490, 1484, 1511, 1529, 1544, 1530,
-     2767, 1550, 1498, 1548, 2767, 1493, 1555, 1502, 1496, 1493,
-     1496, 1498, 1494, 1557, 1517, 1559, 1509, 1521, 1524, 1521,
-     1513, 1516, 1509, 1572, 1519, 2767, 1518, 1517, 2767, 1519,
-     1581, 1531, 1522, 1579, 1538, 1538, 1541, 1541, 1538, 1585,
-     1544, 2767, 1536, 2767, 1537, 2767, 1547, 1539, 2767, 1591,
-
-     1550, 1551, 1548, 1595, 1541, 1556, 1599, 1558, 1550, 2767,
-     1547, 1547, 1548, 1554, 1553, 1551, 1608, 2767, 1567, 1567,
-     2767, 2767, 2767, 1611, 1555, 2767, 1572, 1557, 1558, 1564,
-     2767, 1573, 1561, 1625, 1569, 1562, 1567, 1578, 1589, 1582,
-     1588, 1578, 1636, 1586, 2767, 1595, 2767, 1592, 1640, 1617,
-     1618, 1624, 1609, 1617, 2767, 1600, 1585, 1648, 2767, 1649,
-     1603, 1608, 1590, 1653, 1654, 1595, 1651, 1615, 1608, 1604,
-     1597, 1605, 1657, 1612, 1613, 2767, 1603, 1619, 1617, 1674,
-     2767, 1609, 1671, 1632, 1632, 1628, 1675, 1620, 1625, 1623,
-     1685, 1638, 1626, 1688, 1684, 1636, 1691, 1649, 1638, 1632,
-
-     1695, 1634, 1643, 1636, 1650, 1653, 1701, 1702, 1641, 1658,
-     1654, 1652, 1645, 1660, 1644, 1705, 1706, 1707, 1708, 1668,
-     1661, 1660, 1660, 1655, 1656, 2767, 1664, 1670, 1661, 1662,
-     1661, 1663, 1721, 1664, 2767, 1660, 1678, 1730, 2767, 1698,
-     1712, 1711, 1700, 1702, 1736, 1686, 2767, 2767, 1677, 1688,
-     1740, 2767, 2767, 1694, 1684, 1689, 1687, 1740, 1696, 1701,
-     1687, 1690, 1706, 1695, 1693, 1693, 1695, 2767, 1763, 1698,
-     1707, 1754, 1699, 1704, 1767, 1713, 1723, 1724, 2767, 1772,
-     1722, 1769, 2767, 1717, 1725, 2767, 1716, 1731, 1719, 2767,
-     1729, 1730, 1731, 1783, 1738, 2767, 2767, 1780, 1743, 1719,
-
-     1737, 1738, 1739, 1748, 1730, 1736, 1738, 1750, 1749, 1740,
-     1793, 1742, 1738, 1743, 1740, 1741, 1799, 1805, 1752, 1807,
-     1757, 1747, 1763, 1756, 2767, 1789, 1813, 1795, 1810, 1816,
-     2767, 1762, 1818, 1757, 2767, 1759, 1761, 1771, 1818, 1763,
-     1778, 1765, 1827, 1781, 1767, 1774, 1774, 1785, 1786, 2767,
-     1780, 1775, 1789, 1775, 1838, 1790, 2767, 1837, 1785, 1782,
-     2767, 1796, 1783, 1804, 1800, 1802, 1850, 1800, 1797, 1805,
-     1799, 2767, 1855, 1793, 1795, 1811, 1804, 1805, 1795, 1811,
-     1812, 1806, 1822, 1812, 1867, 1824, 1808, 1817, 1866, 1872,
-     1822, 1874, 1820, 2767, 1814, 2767, 1821, 1878, 1879, 1876,
-
-     1877, 2767, 1859, 1865, 2767, 1837, 2767, 1881, 1830, 1841,
-     1842, 1827, 1828, 1836, 1893, 2767, 1838, 1890, 1891, 1843,
-     1838, 1856, 1853, 1844, 1857, 1852, 2767, 1849, 1854, 1852,
-     1907, 1908, 1853, 1852, 1866, 1853, 2767, 1868, 1869, 1870,
-     1871, 2767, 1861, 1873, 1921, 1871, 1876, 1924, 1863, 1871,
-     1865, 1873, 1886, 2767, 1887, 1868, 1869, 1876, 2767, 1878,
-     2767, 1892, 1889, 1932, 1890, 2767, 2767, 1894, 1920, 1921,
-     1919, 1882, 1882, 1891, 1898, 1891, 1890, 1901, 1888, 2767,
-     1904, 1892, 1895, 1954, 1891, 1910, 1901, 1913, 1906, 1905,
-     1914, 1916, 1920, 2767, 2767, 1913, 1904, 1906, 1970, 1910,
-
-     1972, 1911, 1974, 1929, 1976, 2767, 1915, 1978, 2767, 1974,
-     1933, 1930, 1935, 1922, 1930, 1941, 1928, 1939, 1925, 1923,
-     1931, 1930, 1935, 1927, 1972, 1996, 1978, 1998, 1948, 1937,
-     1950, 1940, 1957, 1956, 2000, 1941, 1960, 1961, 2767, 1966,
-     1959, 2011, 1965, 1952, 1967, 2015, 1969, 1972, 1959, 1968,
-     1969, 2767, 2021, 2767, 1973, 2767, 1982, 2767, 2026, 2767,
-     1965, 2028, 1972, 2030, 1970, 2032, 1977, 2029, 2030, 1989,
-     2032, 1975, 1979, 1997, 2041, 1997, 2024, 2767, 2020, 2767,
-     1990, 1984, 1981, 2043, 2006, 1999, 1995, 2052, 1992, 1994,
-     1993, 2000, 2767, 1996, 2058, 1999, 2767, 2004, 2014, 1999,
-
-     2007, 2009, 2767, 2010, 2004, 2767, 2016, 2767, 2012, 2767,
-     2023, 2767, 2025, 2025, 2016, 2075, 2016, 2026, 2011, 2024,
-     2767, 2026, 2057, 2063, 2035, 2033, 2085, 2023, 2025, 2022,
-     2046, 2767, 2033, 2040, 2041, 2044, 2033, 2767, 2090, 2034,
-     2042, 2051, 2050, 2053, 2054, 2055, 2048, 2043, 2044, 2044,
-     2056, 2053, 2767, 2064, 2052, 2108, 2056, 2068, 2096, 2117,
-     2118, 2062, 2767, 2062, 2074, 2122, 2068, 2070, 2068, 2069,
-     2127, 2077, 2064, 2079, 2084, 2132, 2133, 2134, 2135, 2136,
-     2090, 2138, 2139, 2140, 2081, 2086, 2082, 2098, 2081, 2093,
-     2087, 2149, 2767, 2767, 2094, 2105, 2152, 2767, 2106, 2091,
-
-     2109, 2100, 2767, 2101, 2115, 2111, 2104, 2767, 2767, 2767,
-     2767, 2767, 2161, 2767, 2767, 2767, 2101, 2109, 2104, 2160,
-     2123, 2120, 2168, 2767, 2164, 2127, 2767, 2171, 2110, 2173,
-     2113, 2126, 2125, 2126, 2116, 2767, 2117, 2180, 2130, 2139,
-     2132, 2179, 2767, 2130, 2124, 2767, 2136, 2767, 2183, 2189,
-     2128, 2144, 2192, 2193, 2767, 2147, 2141, 2134, 2154, 2141,
-     2153, 2144, 2148, 2767, 2198, 2144, 2767, 2767, 2144, 2152,
-     2202, 2159, 2152, 2164, 2211, 2156, 2156, 2152, 2154, 2216,
-     2217, 2156, 2172, 2157, 2174, 2767, 2222, 2166, 2173, 2225,
-     2767, 2767, 2175, 2227, 2172, 2229, 2767, 2177, 2176, 2767,
-
-     2177, 2767, 2171, 2767, 2171, 2188, 2189, 2237, 2180, 2239,
-     2240, 2767, 2241, 2767, 2767, 2767, 2767, 2247, 2250, 2253,
-     2254, 2256, 2259, 2262, 2265
+     2684, 2685,   31, 2680,  151,    0,  216, 2685,  223,  230,
+       13,  237, 2685, 2660,  124,   17,    4,   34, 2685, 2685,
+       23,   43,   64, 2685, 2685, 2685,   56, 2668, 2618,    0,
+     2658,  106, 2675,    2,  268, 2685,   85,   90, 2621, 2642,
+       98,   77, 2642,  235,  231,   97,  207,  298,  226,  312,
+      293,   62,  254, 2614,  203,  223, 2620,  252,  321,  336,
+      289,  339, 2603,   21,  344,  394,  354, 2622,  330,    0,
+      408,  422,  448,  456,  462, 2685,    0, 2685,  438,  470,
+      240,  256,  189,  280,  321,  278, 2685, 2619, 2663, 2685,
+
+      266, 2685,  484,  313,  329, 2617, 2661,  343,   17,  389,
+      357, 2655,  337,  364,  347,  388, 2659,    0,  548,  372,
+     2598,  431, 2597, 2598, 2604,  368, 2590, 2591, 2596,   76,
+     2606, 2589, 2598, 2588,  216,  430,   63, 2590,  433, 2579,
+     2640,   16, 2582, 2638, 2575,  443, 2596, 2596, 2590,  209,
+     2583, 2581, 2582, 2574, 2579, 2573,  376, 2584,  447, 2569,
+     2568,  450, 2624, 2568,  436, 2580, 2579, 2567,  518, 2568,
+      442, 2580, 2577, 2578,  457, 2576, 2614, 2613,  475,  381,
+     2557, 2561,  473, 2557, 2549, 2566, 2558, 2560,    0,  476,
+      477,  391,  481,  489,  494, 2556, 2685,  502,  506, 2551,
+
+     2685,  488,  494, 2685, 2608,  505,  508, 2607,  508, 2606,
+      526, 2605, 2685, 2685,  589,  518,  521, 2561, 2553, 2557,
+     2558, 2538, 2549, 2551, 2550,  518,  556, 2591, 2552, 2533,
+     2530, 2538, 2544, 2532, 2546, 2542, 2533, 2542, 2542, 2537,
+     2529, 2531, 2534, 2514, 2518, 2534, 2531, 2523, 2513, 2516,
+     2530, 2685, 2516, 2524,   82, 2565, 2508, 2517, 2562, 2506,
+     2516, 2559,  525, 2515, 2557, 2499, 2501, 2512, 2553,  566,
+     2557, 2508, 2488, 2503,  530, 2500,  528, 2491, 2489,  547,
+     2489, 2495, 2486, 2485, 2498, 2482, 2493, 2497, 2496, 2490,
+      560, 2497, 2492, 2475, 2490, 2476, 2484, 2488, 2469, 2485,
+
+     2471, 2477, 2484, 2466,  214, 2471, 2468, 2467,  534, 2466,
+     2461, 2475, 2474,  581, 2473, 2476, 2458, 2466, 2454,  582,
+     2685, 2685,  594, 2685, 2685, 2452,  578,  593, 2502,  600,
+     2513, 2685,  589,  600, 2685, 2512, 2685, 2506,  643, 2685,
+     2465,  589, 2442, 2461, 2444, 2461, 2500, 2457, 2447, 2502,
+     2454, 2457, 2448, 2451, 2437, 2448,  578, 2490, 2445, 2442,
+     2443,  619, 2447, 2490, 2422, 2434, 2429, 2426, 2422, 2424,
+     2427, 2477, 2431, 2437, 2474, 2417,  638, 2430, 2430, 2413,
+     2414, 2427, 2425, 2423, 2423, 2422, 2417, 2424, 2419, 2404,
+      608, 2413, 2416, 2411,  567, 2410, 2406, 2459,  600,  609,
+
+     2685, 2415, 2452, 2399, 2398, 2391, 2406, 2397, 2404, 2385,
+     2402, 2394, 2390, 2395,  639, 2445, 2395,  470, 2396, 2396,
+     2394,   50, 2384, 2396,  566, 2371, 2372, 2385, 2375, 2367,
+     2371, 2385,  623, 2371, 2383, 2382, 2381, 2376, 2421, 2378,
+     2377, 2376, 2375, 2358, 2366, 2419, 2375, 2417, 2354, 2415,
+     2354,  671, 2367, 2365, 2685, 2685, 2365,  641, 2405, 2409,
+     2408, 2685, 2407,  636, 2685,  647,  698, 2363,  650, 2405,
+     2399, 2349, 2351, 2353, 2340, 2337, 2685, 2342, 2335, 2347,
+     2350, 2337, 2336, 2685, 2346,  676, 2337, 2334, 2346,  633,
+     2331, 2333, 2685, 2381, 2338, 2323, 2325, 2336, 2334, 2334,
+
+     2328,  680, 2324, 2317, 2371, 2685, 2315, 2331, 2368, 2372,
+     2325, 2319, 2321, 2322, 2306, 2315, 2360, 2308, 2307, 2302,
+     2301, 2303, 2299, 2295,  657, 2314, 2288, 2295, 2300, 2293,
+     2309, 2346, 2350, 2685, 2292, 2288,  693, 2296, 2295, 2289,
+     2296, 2281, 2280, 2294, 2294, 2282, 2278, 2283, 2279, 2274,
+     2685, 2283, 2333, 2685, 2272, 2271, 2264, 2324, 2323, 2265,
+     2264, 2269, 2278, 2272, 2266, 2275,  696, 2315, 2259, 2254,
+     2312, 2249, 2255,  690, 2269, 2262, 2266, 2249, 2310, 2248,
+     2248, 2302, 2244, 2245, 2244, 2242, 2259, 2685, 2255, 2685,
+     2295, 2685, 2243, 2685, 2253, 2292, 2291, 2248, 2294,  711,
+
+     2685, 2685, 2685,  678,  655,  691, 2231,  724, 2685,  672,
+     2249, 2229, 2239, 2284, 2283, 2225, 2235, 2280, 2222, 2229,
+     2222, 2230, 2223, 2232, 2214, 2214, 2229, 2228, 2212,  620,
+     2226, 2225, 2209, 2224, 2206, 2256, 2220, 2217, 2260, 2201,
+     2203, 2215, 2215, 2213, 2213, 2685, 2198, 2257, 2209, 2201,
+     2207, 2198, 2206, 2685, 2191, 2202, 2206, 2188, 2200, 2192,
+      539, 2183, 2182, 2176, 2181, 2178, 2193, 2192, 2193, 2172,
+     2182, 2188, 2234, 2186, 2185, 2177, 2168, 2685, 2169, 2171,
+     2685, 2166, 2172, 2177, 2219, 2218,  726, 2217, 2159, 2215,
+     2159, 2162, 2160, 2162, 2153, 2168, 2685, 2166, 2152,  748,
+
+     2149, 2165, 2162, 2157, 2153, 2201, 2150, 2157, 2198, 2685,
+     2141, 2139, 2153, 2156, 2141, 2192, 2191, 2135, 2189, 2146,
+     2130, 2186, 2185, 2685, 2127, 2141, 2140,  728, 2141, 2140,
+     2137, 2121, 2177, 2138, 2129,  179,  201,  211, 2685, 2685,
+      693,  728,  728,  716,  735,  294,  310,  420,  609,  651,
+      688,  703,  706,  716,  762,  719,  719,  761,  764,  715,
+      711,  716,  717,  727,  732,  719,  724,  729,  738,  738,
+      722,  782,  741,  733,  743,  786,  746,  739,  739,  742,
+      746,  753,  795,  755,  803,  757, 2685,  760,  755,  746,
+      761,  766,  763,  760,  767,  766,  754,  768,  766,  774,
+
+      813,  772,  820,  821,  762,  775,  761,  771,  821,  776,
+      829, 2685,  830,  783,  781,  783,  779,  773,  789,  837,
+      833,  793,  782, 2685,  784,  785,  784,  797,  787,  800,
+      847,  803,  788,  850,  851,  791,  806, 2685,  800,  794,
+      789,  800,  813,  804,  793,  799,  857,  818,  802,  802,
+      815,  862,  806,  813,  825,  820,  825,  822,  869,  808,
+      820,  821,  828,  819,  816, 2685,  885,  839,  840,  828,
+      842,  832,  835,  846,  837,  843,  844,  872,  864,  893,
+      894,  868,  841,  855,  837,  844,  858,  906,  860,  857,
+      855, 2685,  859,  854,  869,  866,  852,  854,  873,  870,
+
+      870,  872,  860,  867,  868,  878,  920,  884,  923,  883,
+      873,  886,  872,  871,  877,  936,  880,  875,  876,  882,
+      898,  881,  938,  890,  940, 2685,  901,  893,  904,  902,
+      950,  889,  891,  906,  907,  895,  893,  958,  912,  898,
+      904,  902, 2685, 2685,  918,  917,  918,  923,  911,  921,
+      923, 2685, 2685,  923,  925,  912,  930,  917,  919, 2685,
+      916,  934,  921,  921,  922,  919,  923,  941,  985, 2685,
+      943,  987, 2685, 2685,  929,  943,  943,  991,  934,  938,
+      932,  948,  996,  946,  936,  937,  933,  943,  947,  958,
+      953, 1000,  956,  949,  951,  947,  964,  954,  969,  952,
+
+     1014,  968,  973,  950,  973,  959,  958, 2685,  965,  967,
+     1019, 1020,  969,  982, 1023,  967,  982,  976, 1000, 1010,
+      998, 1006, 1018, 1035,  981, 1033,  993, 1036, 2685, 1042,
+      982, 1001,  991,  990,  985,  986,  998,  993,  989, 1007,
+      999,  994,  995, 1005, 1014, 1053, 1001, 1000, 1021, 1013,
+     1008, 1064, 1070, 1024, 1015, 2685, 1029, 1020, 1028, 1030,
+     1015, 1031, 1021, 1033, 1030, 1028, 1040, 1024, 1025, 2685,
+     1041, 1044, 1027, 1029, 1090, 1030, 1049, 2685, 1048, 1051,
+     1038, 1033, 1051, 1039, 1095, 1050, 1046, 1043, 1099, 1045,
+     1101, 1060, 1046, 1064, 1064, 1064, 1050, 1065, 1057, 1053,
+
+     1054, 1070, 1057, 1074, 2685, 1058, 2685, 1067, 1117, 1067,
+     2685, 1077, 1070, 1126, 1070, 2685, 1073, 1078, 1125, 1073,
+     1074, 1086, 1080, 1078, 1075, 1090, 1138, 1079, 1080, 1141,
+     1142, 1083, 1095, 1088, 2685, 1084, 1092, 1090, 1144, 1083,
+     1105, 1091, 1092, 1093, 1094, 1100, 1108, 1099, 1113, 1114,
+     1115, 1130, 1159, 1142, 1134, 1139, 2685, 1122, 1126, 1109,
+     1109, 2685, 1110, 1112, 1123, 1113, 1133, 1132, 1123, 1134,
+     1180, 1119, 1131, 1140, 1133, 1137, 1141, 1124, 1141, 1142,
+     1133, 1191, 1139, 1143, 2685, 1193, 1139, 1157, 1139, 1139,
+     1160, 1157, 1200, 1146, 1164, 1152, 1166, 1159, 1168, 1148,
+
+     1163, 1170, 1215, 1216, 2685, 1166, 1218, 1172, 1158, 1168,
+     1178, 1162, 1182, 1165, 1167, 1167, 1174, 1183, 1171, 1178,
+     1173, 1180, 1192, 1236, 1180, 1238, 1180, 1197, 1241, 1188,
+     1192, 1193, 1182, 1246, 1194, 1191, 1249, 1196, 1251, 1252,
+     1202, 2685, 1191, 1208, 1201, 1192, 1211, 1205, 1200, 1210,
+     1206, 1201, 1219, 2685, 1203, 1199, 2685, 2685, 1205, 1268,
+     1224, 1205, 1224, 1225, 1227, 1269, 1219, 1276, 1277, 1227,
+     1232, 1226, 1224, 1235, 1217, 1222, 1228, 1254, 1267, 1255,
+     1269, 1256, 1291, 1243, 1243, 1247, 1295, 1235, 1235, 1238,
+     1255, 1250, 1254, 1249, 2685, 1246, 1259, 1243, 1260, 1240,
+
+     1261, 1251, 1250, 1306, 1256, 2685, 1270, 1272, 1275, 1259,
+     1268, 1272, 1277, 1263, 1326, 1276, 1281, 1268, 1282, 1280,
+     1277, 1273, 1291, 1292, 1293, 2685, 2685, 1291, 2685, 1293,
+     1278, 1289, 1280, 1299, 1292, 1290, 1345, 1299, 1296, 1343,
+     1304, 1293, 1300, 1305, 1302, 1308, 2685, 1301, 2685, 1293,
+     1357, 2685, 1358, 1302, 1303, 1314, 2685, 1315, 1303, 2685,
+     1313, 2685, 2685, 1303, 1304, 1307, 1321, 1326, 1309, 1320,
+     1372, 1326, 1369, 1332, 1323, 1377, 1373, 1379, 2685, 1327,
+     1324, 1382, 1383, 1337, 1338, 1340, 2685, 2685, 1332, 1327,
+     1384, 1330, 1346, 1330, 1342, 1331, 1390, 1373, 1374, 1366,
+
+     1399, 2685, 1353, 1344, 1355, 2685, 1403, 1337, 1348, 1363,
+     1402, 1351, 1362, 1350, 1349, 1365, 1366, 1363, 1410, 1370,
+     1372, 1361, 1371, 1377, 1365, 1365, 1425, 1421, 1423, 1429,
+     1384, 2685, 1386, 1385, 1387, 1378, 1381, 1390, 1387, 1377,
+     1380, 1380, 1442, 1386, 1444, 1388, 1446, 1386, 1391, 1449,
+     2685, 1405, 1384, 1399, 1392, 1395, 1408, 1411, 1410, 1408,
+     1460, 1411, 2685, 2685, 1407, 1408, 1460, 1404, 1467, 1420,
+     1469, 1470, 1471, 1412, 1422, 1474, 1428, 2685, 1420, 1422,
+     1478, 1419, 1419, 2685, 1437, 2685, 1434, 1425, 2685, 2685,
+     1438, 1421, 1441, 1442, 1428, 1430, 1492, 1439, 1494, 1440,
+
+     1434, 1461, 1479, 1494, 1480, 2685, 1500, 1448, 1498, 2685,
+     1443, 1505, 1452, 1446, 1443, 1446, 1448, 1444, 1507, 1467,
+     1509, 1459, 1471, 1474, 1471, 1463, 1466, 1459, 1522, 1469,
+     2685, 1468, 1467, 2685, 1469, 1531, 1481, 1472, 1529, 1488,
+     1490, 1490, 1487, 1534, 1493, 2685, 1485, 2685, 1486, 2685,
+     1496, 1488, 2685, 1540, 1499, 1500, 1497, 1544, 1489, 1505,
+     1548, 1507, 1499, 2685, 1496, 1496, 1497, 1498, 1555, 2685,
+     1514, 2685, 2685, 2685, 1557, 1501, 2685, 1518, 1503, 1509,
+     2685, 1518, 1506, 1570, 1514, 1507, 1512, 1523, 1534, 1527,
+     1533, 1523, 1581, 1531, 2685, 1540, 2685, 1537, 1585, 1562,
+
+     1563, 1569, 1554, 1562, 2685, 1545, 1530, 1593, 2685, 1594,
+     1548, 1553, 1535, 1598, 1599, 1540, 1596, 1560, 1553, 1549,
+     1542, 1550, 1602, 1557, 1558, 2685, 1548, 1564, 1562, 1619,
+     2685, 1554, 1616, 1577, 1577, 1619, 1564, 1569, 1567, 1629,
+     1582, 1570, 1632, 1628, 1580, 1635, 1593, 1582, 1576, 1639,
+     1578, 1587, 1580, 1594, 1597, 1645, 1646, 1596, 1594, 1587,
+     1585, 1646, 1647, 1648, 1608, 1601, 1600, 1600, 1595, 1596,
+     2685, 1604, 1610, 1601, 1602, 1601, 1603, 1661, 1604, 2685,
+     1600, 1618, 1670, 2685, 1638, 1652, 1651, 1640, 1642, 1676,
+     1626, 2685, 2685, 1617, 1628, 1680, 2685, 2685, 1634, 1624,
+
+     1629, 1627, 1680, 1635, 1640, 1626, 1629, 1646, 1635, 1633,
+     1633, 1635, 2685, 1703, 1638, 1647, 1694, 1643, 1706, 1651,
+     1662, 1663, 2685, 1711, 1661, 1708, 2685, 1656, 1664, 2685,
+     1655, 1670, 1658, 2685, 1668, 1669, 1670, 1722, 1677, 2685,
+     2685, 1656, 1674, 1675, 1684, 1666, 1672, 1685, 1684, 1675,
+     1728, 1677, 1673, 1678, 1675, 1676, 1734, 1740, 1687, 1742,
+     1692, 1682, 1698, 1691, 2685, 1724, 1748, 1730, 1745, 1751,
+     2685, 1697, 1753, 1692, 2685, 1694, 1696, 1706, 1753, 1698,
+     1713, 1700, 1762, 1716, 1702, 1709, 1709, 1720, 1721, 2685,
+     1715, 1710, 1724, 1710, 1722, 2685, 1771, 1719, 1716, 2685,
+
+     1730, 1717, 1738, 1734, 1736, 1784, 1734, 1731, 1739, 1733,
+     2685, 1789, 1743, 1736, 1737, 1742, 1743, 1737, 1742, 1797,
+     1754, 1738, 1747, 1796, 1802, 1752, 1804, 1750, 2685, 1744,
+     2685, 1751, 1808, 1809, 1806, 1807, 2685, 1789, 1795, 2685,
+     1767, 2685, 1811, 1760, 1771, 1772, 1757, 1758, 1766, 1823,
+     2685, 1768, 1820, 1821, 1773, 1768, 1786, 1783, 1774, 1787,
+     1782, 1779, 1784, 1782, 1837, 1838, 1783, 1782, 1796, 1783,
+     2685, 1798, 1799, 1800, 1801, 2685, 1849, 1799, 1804, 1790,
+     1798, 1792, 1812, 2685, 1813, 1794, 1795, 1802, 2685, 1804,
+     2685, 1818, 1815, 1858, 1816, 2685, 2685, 1820, 1846, 1847,
+
+     1845, 1808, 1808, 1817, 1824, 1817, 1816, 1827, 1814, 2685,
+     1830, 1818, 1821, 1880, 1817, 1836, 1827, 1839, 1832, 1831,
+     1840, 1842, 1846, 2685, 2685, 1839, 1830, 1832, 1896, 1836,
+     1898, 1837, 1900, 2685, 1839, 1902, 1898, 1857, 1854, 1845,
+     1853, 1864, 1851, 1862, 1848, 1846, 1854, 1853, 1858, 1850,
+     1895, 1919, 1901, 1921, 1871, 1860, 1873, 1863, 1880, 1879,
+     1923, 1864, 1883, 1884, 2685, 1889, 1882, 1934, 1888, 1875,
+     1890, 1938, 1892, 1895, 1882, 1891, 1892, 2685, 1944, 2685,
+     1896, 2685, 1948, 2685, 1887, 1950, 1894, 1891, 1953, 1898,
+     1950, 1951, 1910, 1953, 1896, 1900, 1918, 1962, 1918, 1945,
+
+     2685, 1941, 2685, 1911, 1905, 1902, 1964, 1927, 1920, 1916,
+     1973, 1913, 1915, 1914, 1921, 2685, 1917, 1979, 1920, 2685,
+     1925, 1935, 1920, 1928, 1930, 2685, 1931, 2685, 1936, 2685,
+     1932, 1942, 2685, 1944, 1945, 1936, 1995, 1936, 1946, 1931,
+     1944, 2685, 1946, 1977, 1983, 1955, 1953, 2005, 1943, 1945,
+     1942, 1966, 2685, 1953, 1960, 1961, 1964, 1953, 2685, 2010,
+     1954, 1962, 1971, 1970, 1973, 1974, 1967, 1962, 1963, 1963,
+     1975, 1970, 2685, 1983, 1971, 2027, 1975, 1987, 2015, 2036,
+     2037, 1981, 2685, 1981, 1993, 2041, 1987, 1989, 1987, 1988,
+     2046, 1996, 1983, 1998, 2003, 2051, 2052, 2053, 2054, 2008,
+
+     2056, 2057, 2058, 1999, 2003, 2000, 2016, 1999, 2011, 2005,
+     2067, 2685, 2685, 2012, 2023, 2070, 2685, 2024, 2009, 2027,
+     2018, 2685, 2019, 2033, 2029, 2022, 2685, 2685, 2685, 2685,
+     2079, 2685, 2685, 2685, 2019, 2027, 2022, 2078, 2041, 2038,
+     2086, 2685, 2082, 2045, 2685, 2089, 2028, 2091, 2031, 2044,
+     2043, 2044, 2034, 2685, 2035, 2098, 2048, 2057, 2050, 2097,
+     2685, 2048, 2042, 2685, 2054, 2685, 2101, 2107, 2046, 2062,
+     2110, 2111, 2685, 2065, 2059, 2052, 2072, 2059, 2071, 2062,
+     2066, 2685, 2116, 2062, 2685, 2685, 2062, 2070, 2120, 2077,
+     2070, 2082, 2129, 2074, 2074, 2070, 2072, 2134, 2135, 2074,
+
+     2090, 2075, 2092, 2685, 2140, 2084, 2091, 2143, 2685, 2685,
+     2093, 2145, 2090, 2147, 2685, 2095, 2094, 2685, 2095, 2685,
+     2089, 2685, 2089, 2106, 2107, 2155, 2098, 2157, 2158, 2685,
+     2159, 2685, 2685, 2685, 2685, 2165, 2168, 2171, 2172, 2174,
+     2177, 2180, 2183
     } ;
 
-static const flex_int16_t yy_def[2326] =
+static const flex_int16_t yy_def[2244] =
     {   0,
-     2318, 2318, 2319, 2319, 2318, 2318, 2318, 2318, 2318, 2318,
-     2317, 2317, 2317, 2317, 2317, 2320, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2321,
-     2317, 2317, 2317, 2322,   15, 2317,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2323,   45,   45,
+     2236, 2236, 2237, 2237, 2236, 2236, 2236, 2236, 2236, 2236,
+     2235, 2235, 2235, 2235, 2235, 2238, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2239,
+     2235, 2235, 2235, 2240,   15, 2235,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2241,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2320,
-     2317, 2317, 2317, 2317, 2317, 2317, 2324, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2321, 2317,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2238,
+     2235, 2235, 2235, 2235, 2235, 2235, 2242, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2239, 2235,
 
-     2322, 2317, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2325,   45, 2323,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2240, 2235, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2243,   45, 2241,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2324, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2242, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235,   45,   45,   45,
 
-       45,   45, 2317,   45,   45, 2317,   45,   45,   45,   45,
-       45,   45,   45, 2325, 2317, 2317,  119,   45,   45,   45,
+     2235,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45, 2243, 2235, 2235,  119,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235,   45,   45,   45,   45,
+       45, 2235,   45,   45, 2235,   45, 2235,   45,  119, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317,   45,   45,   45,   45,   45, 2317,   45,   45,
-     2317,   45, 2317,   45,  119, 2317,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317, 2317, 2317,   45,   45,   45,
-       45, 2317,   45,   45, 2317,   45,  119,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2235, 2235, 2235,   45,   45,   45,
+       45, 2235,   45,   45, 2235,   45,  119,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2235,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45, 2317,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45, 2235,
+       45, 2235,   45, 2235,   45,   45,   45, 2235,   45,   45,
 
-       45, 2317,   45, 2317,   45, 2317,   45, 2317,   45,   45,
-       45, 2317,   45,   45, 2317, 2317, 2317,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
+     2235, 2235, 2235,   45,   45,   45,   45,   45, 2235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2317,
-       45,   45,   45,   45,   45,   45,   45,   45, 2317,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45, 2317,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2235,   45,   45,   45,
 
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2235, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317, 2317,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2235,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
+       45,   45, 2235, 2235,   45,   45,   45,   45,   45,   45,
+       45, 2235, 2235,   45,   45,   45,   45,   45,   45, 2235,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
+       45,   45, 2235, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317, 2317,   45,   45,   45,
-       45,   45,   45,   45, 2317, 2317,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45, 2317, 2317,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45, 2235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
 
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2235,   45, 2235,   45,   45,   45,
+     2235,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45, 2317,   45,   45,   45, 2317,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2235,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
 
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45, 2235, 2235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2317,   45,
-       45, 2317, 2317,   45,   45,   45,   45,   45,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2317,
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235, 2235,   45, 2235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317, 2317,   45, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 2235,   45, 2235,   45,
+       45, 2235,   45,   45,   45,   45, 2235,   45,   45, 2235,
+       45, 2235, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2235,   45,
+       45,   45,   45,   45,   45,   45, 2235, 2235,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45, 2317,   45,   45, 2317,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45, 2317,   45, 2317,
 
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2317,   45,
-       45,   45,   45,   45,   45,   45, 2317, 2317,   45,   45,
+       45, 2235,   45,   45,   45, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45, 2317,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235, 2235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45,   45,
+       45,   45,   45, 2235,   45, 2235,   45,   45, 2235, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 2317, 2317,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45, 2317,   45,
-     2317,   45,   45, 2317, 2317,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     2317,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
+     2235,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45, 2235,   45, 2235,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45, 2235,
+       45, 2235, 2235, 2235,   45,   45, 2235,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 2235,   45, 2235,   45,   45,   45,
+
+       45,   45,   45,   45, 2235,   45,   45,   45, 2235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45, 2317,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45, 2317,   45, 2317,   45,   45, 2317,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2317,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
-     2317, 2317, 2317,   45,   45, 2317,   45,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45, 2317,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45, 2317,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+       45, 2235, 2235,   45,   45,   45, 2235, 2235,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45, 2235,   45,   45, 2235,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45, 2235,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45, 2317,   45,
-       45,   45,   45,   45,   45,   45, 2317, 2317,   45,   45,
-       45, 2317, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2317,   45,
-       45,   45, 2317,   45,   45, 2317,   45,   45,   45, 2317,
-       45,   45,   45,   45,   45, 2317, 2317,   45,   45,   45,
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45, 2235,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 2235,   45,
+     2235,   45,   45,   45,   45,   45, 2235,   45,   45, 2235,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
-     2317,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2317,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45, 2317,   45,   45,   45,   45,
-
-       45, 2317,   45,   45, 2317,   45, 2317,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 2317,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45,   45,   45, 2317,   45,
-     2317,   45,   45,   45,   45, 2317, 2317,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 2317,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317, 2317,   45,   45,   45,   45,   45,
+     2235,   45,   45,   45,   45, 2235,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45, 2235,   45,
+     2235,   45,   45,   45,   45, 2235, 2235,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 2317,   45,   45, 2317,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 2235,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 2317,   45,
+       45,   45,   45, 2235, 2235,   45,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45, 2317,   45, 2317,   45, 2317,   45, 2317,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 2317,   45, 2317,
+       45,   45,   45,   45, 2235,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 2235,   45, 2235,
+       45, 2235,   45, 2235,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45, 2317,   45,   45,   45,
 
-       45,   45, 2317,   45,   45, 2317,   45, 2317,   45, 2317,
-       45, 2317,   45,   45,   45,   45,   45,   45,   45,   45,
-     2317,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45,   45,   45,   45,   45, 2317,   45,   45,
+     2235,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 2235,   45,   45,   45, 2235,
+       45,   45,   45,   45,   45, 2235,   45, 2235,   45, 2235,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45, 2235,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 2317, 2317,   45,   45,   45, 2317,   45,   45,
-
-       45,   45, 2317,   45,   45,   45,   45, 2317, 2317, 2317,
-     2317, 2317,   45, 2317, 2317, 2317,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45, 2317,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-       45,   45, 2317,   45,   45, 2317,   45, 2317,   45,   45,
-       45,   45,   45,   45, 2317,   45,   45,   45,   45,   45,
-       45,   45,   45, 2317,   45,   45, 2317, 2317,   45,   45,
+       45, 2235, 2235,   45,   45,   45, 2235,   45,   45,   45,
+       45, 2235,   45,   45,   45,   45, 2235, 2235, 2235, 2235,
+       45, 2235, 2235, 2235,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45, 2235,   45,   45,   45,   45,   45,
+       45,   45,   45, 2235,   45,   45,   45,   45,   45,   45,
+     2235,   45,   45, 2235,   45, 2235,   45,   45,   45,   45,
+       45,   45, 2235,   45,   45,   45,   45,   45,   45,   45,
+       45, 2235,   45,   45, 2235, 2235,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 2317,   45,   45,   45,   45,
-     2317, 2317,   45,   45,   45,   45, 2317,   45,   45, 2317,
 
-       45, 2317,   45, 2317,   45,   45,   45,   45,   45,   45,
-       45, 2317,   45, 2317, 2317, 2317,    0, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317
+       45,   45,   45, 2235,   45,   45,   45,   45, 2235, 2235,
+       45,   45,   45,   45, 2235,   45,   45, 2235,   45, 2235,
+       45, 2235,   45,   45,   45,   45,   45,   45,   45, 2235,
+       45, 2235, 2235, 2235,    0, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235
     } ;
 
-static const flex_int16_t yy_nxt[2844] =
+static const flex_int16_t yy_nxt[2762] =
     {   0,
-     2317,   13,   14,   13, 2317,   15,   16,  102,   17,   18,
+     2235,   13,   14,   13, 2235,   15,   16,  102,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       86,  255,   37,   14,   37,   87,   25,   26,   38,   37,
-       14,   37,   42,   27,   42,   38, 2317, 2317,   28,   91,
+       86,  252,   37,   14,   37,   87,   25,   26,   38,   37,
+       14,   37,   42,   27,   42,   38, 2235, 2235,   28,   91,
        13,   14,   13,   92,   29,   91,   30,  103,   13,   14,
-       13,  205,   25,   31,   13,   14,   13,   42,   40,   42,
-      574,   32,   13,   14,   13,   91,   40,   33,  256,  170,
-       93,   94,   92,  171,   34,   35,   13,   14,   13,  205,
+       13,  203,   25,   31,   13,   14,   13,   42,   40,   42,
+      561,   32,   13,   14,   13,   91,   40,   33,  253,  168,
+       93,   94,   92,  169,   34,   35,   13,   14,   13,  203,
        15,   16,   92,   17,   18,   19,   20,   21,   22,   22,
        22,   22,   22,   23,   24,   39,   13,   14,   13,   93,
 
        93,   25,   26,   39,   13,   14,   13,   42,   27,   42,
-      134,   95,  575,   28,  109,  246,   41,  104,  105,   29,
-      108,   30,  115,  135,   41,  233,  234,   25,   31,   96,
-      389,  247,   89,  136,   89,  235,   32,   90,   90,   90,
-       90,   90,   33,  109,  104,  105,  108,  390,  115,   34,
+      134,   95,  562,   28,  109,  244,   41,  104,  105,   29,
+      108,   30,  115,  135,   41,  231,  232,   25,   31,   96,
+      382,  245,   89,  136,   89,  233,   32,   90,   90,   90,
+       90,   90,   33,  109,  104,  105,  108,  383,  115,   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,   48,   49,   50,   51,   45,
@@ -1549,315 +1522,306 @@ static const flex_int16_t yy_nxt[2844] =
 
        45,   60,   61,   62,   63,   64,   65,   66,   52,   67,
        68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
-       78,   79,   45,   45,   45,   45,   45,   81,  260,   82,
+       78,   79,   45,   45,   45,   45,   45,   81,  192,   82,
        82,   82,   82,   82,   81,  116,   84,   84,   84,   84,
-       84,  261,   83,   85,   85,   85,   85,   85,   81,   83,
-       84,   84,   84,   84,   84,  113,   83,  138,  104,  265,
-      316,  111,  116,   83,  139,  140,  317,  114,   83,  112,
-      141,  102,  192,  142,  143,   83,  108,  449,  879,  450,
-      266,  113,   83,  194,  144,  120,  145,  111,  193,   83,
-       45,  121,   45,   45,   45,   45,  114,  112,   45,  192,
-
-       45,   45,  108,  118,  147,  148,   45,   45,  149,   45,
-       45,  103,  194,  137,  150,  193,   45,  194,   45,   45,
+       84,  875,   83,   85,   85,   85,   85,   85,   81,   83,
+       84,   84,   84,   84,   84,  113,   83,  192,  104,  262,
+      876,  111,  116,   83,  238,  139,  239,  114,   83,  112,
+      140,  102,  190,  141,  142,   83,  108,  439,  877,  440,
+      263,  113,   83,  240,  143,  120,  144,  111,  191,   83,
+       45,  121,   45,   45,   45,   45,  114,  112,   45,  190,
+
+       45,   45,  108,  118,  146,  147,   45,   45,  148,   45,
+       45,  103,  190,  137,  149,  191,   45,  192,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  206,
-      105,  128,  159,   45,  129,  130,  197,   45,  131,  132,
-      160,   45,  161,  192,  193,  204,  200,  162,  163,   45,
-      122,  133,  111,   45,  123,   45,  119,  105,  124,  151,
-      112,  125,  207,  152,  126,  880,  116,  153,  127,  115,
-      195,  196,  204,  275,  156,  200,  157,  164,  158,  154,
-      165,  166,  172,  155,  357,  420,  173,  358,  112,  174,
-
-      201,  167,  208,  116,  168,  115,  175,  176,  179,  180,
-      421,  177,  178,  190,  210,  187,  211,  213,  113,  212,
-      188,   85,   85,   85,   85,   85,  201,  310,  208,  881,
-      114,  208,  276,   81,   83,   82,   82,   82,   82,   82,
-      210,  311,  210,  213,  181,  211,  182,  212,   83,  183,
-      184,   90,   90,   90,   90,   90,   89,  273,   89,  185,
-       83,   90,   90,   90,   90,   90,  186,   81,  315,   84,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  193,
+      105,  128,  158,   45,  129,  130,  195,   45,  131,  132,
+      159,   45,  160,  191,  198,  199,  883,  161,  116,   45,
+      122,  133,  111,   45,  123,   45,  119,  105,  124,  150,
+      112,  125,  208,  151,  126,  202,  884,  152,  127,  115,
+      194,  199,  210,  198,  155,  116,  156,  162,  157,  153,
+      163,  164,  170,  154,  204,  188,  171,  206,  112,  172,
+
+      208,  165,  202,  209,  166,  115,  173,  174,  177,  178,
+      210,  175,  176,  198,  211,  185,  206,  322,  113,  225,
+      186,   85,   85,   85,   85,   85,  206,  205,  226,  227,
+      114,  216,  209,   81,   83,   82,   82,   82,   82,   82,
+      211,  310,  217,  322,  179,  270,  180,  311,   83,  181,
+      182,   90,   90,   90,   90,   90,   89,  272,   89,  183,
+       83,   90,   90,   90,   90,   90,  184,   81,  885,   84,
        84,   84,   84,   84,   83,   85,   85,   85,   85,   85,
-      200,  221,   83,   90,   90,   90,   90,   90,   83,  101,
-      222,  227,  882,  240,  223,  241,  101,  211,  218,  328,
-
-      228,  229,  243,  250,  883,  280,  251,  290,   83,  219,
-      252,  291,  242,  286,   83,  244,  287,  288,  326,  245,
-      281,  282,  283,  304,  328,  328,  320,  305,  293,  101,
-      327,  306,  327,  101,  333,  346,  416,  101,  412,  433,
-      326,  787,  434,  648,  788,  101,  417,  326,  337,  101,
-      331,  101,  101,  216,  334,  398,  649,  327,  336,  330,
-      333,  217,  217,  217,  217,  217,  294,  295,  296,  329,
-      217,  217,  217,  217,  217,  217,  337,  297,  339,  298,
-      334,  299,  300,  340,  301,  302,  342,  336,  344,  333,
-      341,  413,  347,  468,  359,  454,  217,  217,  217,  217,
-
-      217,  217,  360,  884,  339,  473,  339,  342,  361,  340,
-      465,  399,  342,  465,  400,  348,  344,  345,  345,  345,
-      345,  345,  468,  469,  885,  471,  345,  345,  345,  345,
-      345,  345,  407,  342,  473,  474,  465,  494,  500,  466,
-      468,  473,  495,  541,  501,  618,  886,  459,  546,  542,
-      469,  471,  345,  345,  345,  345,  345,  345,  547,  736,
-      818,  819,  474,  477,  477,  477,  477,  477,  613,  479,
-      548,  618,  477,  477,  477,  477,  477,  477,  517,  534,
-      535,  536,  563,  518,  568,  537,  578,  564,  569,  588,
-      579,  608,  619,  589,  620,  613,  609,  613,  477,  477,
-
-      477,  477,  477,  477,  660,  696,  684,  727,  762,  661,
-      697,  637,  728,  763,  737,  638,  685,  887,  890,  891,
-      619,  892,  620,  639,  622,  640,  641,  642,  643,  644,
-      758,  766,  843,  761,  519,  765,  762,  844,  767,  520,
-      888,  893,  763,  565,   45,   45,   45,   45,   45,  759,
-      894,  895,  889,   45,   45,   45,   45,   45,   45,  761,
-      858,  896,  897,  898,  760,  859,  899,  900,  901,  903,
-      902,  905,  906,  904,  845,  759,  907,  908,  909,   45,
-       45,   45,   45,   45,   45,  910,  911,  912,  913,  914,
-      915,  916,  917,  760,  918,  901,  900,  902,  903,  904,
-
-      919,  920,  921,  922,  923,  924,  925,  860,  926,  927,
+      241,  219,   83,   90,   90,   90,   90,   90,   83,  101,
+      220,  257,  247,  242,  221,  248,  101,  243,  282,  249,
+
+      276,  283,  284,  298,  258,  304,  273,  299,   83,  321,
+      208,  300,  209,  320,   83,  277,  278,  279,  320,  305,
+      322,  321,  556,  340,  327,  330,  557,  331,  288,  101,
+      328,  333,  334,  101,  336,  391,  321,  101,  309,  335,
+      405,  314,  320,  327,  444,  101,  325,  323,  324,  101,
+      327,  101,  101,  214,  330,  331,  328,  333,  334,  338,
+      336,  215,  215,  215,  215,  215,  289,  290,  291,  342,
+      215,  215,  215,  215,  215,  215,  408,  292,  351,  293,
+      341,  352,  294,  484,  295,  296,  409,  338,  485,  799,
+      800,  392,  333,  406,  393,  412,  215,  215,  215,  215,
+
+      215,  215,  339,  339,  339,  339,  339,  336,  455,  353,
+      413,  339,  339,  339,  339,  339,  339,  354,  400,  424,
+      455,  458,  425,  355,  459,  463,  461,  565,  464,  490,
+      530,  566,  458,  336,  455,  491,  531,  339,  339,  339,
+      339,  339,  339,  506,  551,  463,  456,  449,  507,  552,
+      458,  459,  461,  535,  463,  464,  467,  467,  467,  467,
+      467,  469,  604,  536,  886,  467,  467,  467,  467,  467,
+      467,  523,  524,  525,  537,  574,  594,  526,  599,  575,
+      605,  595,  606,  769,  634,  646,  770,  599,  604,  744,
+      647,  467,  467,  467,  467,  467,  467,  635,  681,  508,
+
+      718,  710,  743,  682,  509,  553,  711,  599,  605,  669,
+      606,   45,   45,   45,   45,   45,  608,  744,  887,  670,
+       45,   45,   45,   45,   45,   45,  623,  745,  743,  740,
+      624,  824,  748,  866,  747,  878,  825,  741,  625,  749,
+      626,  627,  628,  629,  630,  867,   45,   45,   45,   45,
+       45,   45,  742,  838,  881,  719,  745,  879,  839,  880,
+      888,  882,  889,  741,  878,  890,  891,  892,  893,  894,
+      895,  897,  896,  826,  898,  899,  900,  901,  902,  903,
+      904,  742,  905,  881,  879,  906,  880,  882,  907,  908,
+      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
+
+      840,  921,  922,  919,  923,  924,  925,  920,  926,  927,
       928,  929,  930,  931,  932,  933,  934,  935,  936,  937,
-      938,  939,  940,  943,  944,  945,  941,  946,  947,  948,
-      942,  949,  950,  951,  952,  953,  954,  955,  956,  957,
+      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
+      948,  950,  951,  949,  952,  953,  954,  955,  956,  957,
       958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
-      968,  969,  970,  971,  973,  974,  972,  975,  976,  977,
+      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
       978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
-      988,  989,  990,  991,  992,  993,  994,  995,  996,  997,
-      998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
+      988,  989,  990,  991,  992,  993,  994,  996,  997, 1000,
+     1001, 1002, 1003,  995, 1005,  998, 1006, 1007, 1004,  999,
      1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
 
-     1018, 1019, 1020, 1022, 1023, 1026, 1027, 1028, 1029, 1021,
-     1031, 1024, 1032, 1033, 1030, 1025, 1034, 1035, 1036, 1037,
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
-     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
-     1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
-     1068, 1069, 1070, 1071, 1045, 1072, 1073, 1046, 1074, 1075,
-     1049, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
+     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1019, 1046,
+     1047, 1020, 1048, 1049, 1023, 1050, 1051, 1052, 1053, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1072, 1073, 1074, 1075,
+     1071, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
      1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1099, 1100, 1101, 1102, 1098, 1103, 1104,
+     1095, 1096, 1097, 1099, 1100, 1101, 1098, 1102, 1103, 1104,
      1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
 
      1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
-     1126, 1127, 1128, 1125, 1129, 1130, 1131, 1132, 1133, 1134,
-     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
+     1125, 1126, 1127, 1128, 1129, 1130, 1132, 1133, 1134, 1135,
+     1136, 1137, 1138, 1139, 1140, 1141, 1142, 1131, 1143, 1144,
      1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
-     1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163, 1164, 1165,
-     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1161, 1173, 1174,
-     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
-     1187, 1185, 1188, 1189, 1186, 1190, 1191, 1192, 1193, 1194,
-     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
-     1205, 1206, 1207, 1208, 1209, 1183, 1182, 1210, 1184, 1185,
-
-     1186, 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, 1239, 1240, 1241,
-     1242, 1237, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
+     1157, 1155, 1158, 1159, 1156, 1160, 1161, 1162, 1163, 1164,
+     1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
+     1175, 1176, 1177, 1178, 1179, 1153, 1152, 1180, 1154, 1155,
+     1156, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189,
+     1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
+     1200, 1201, 1202, 1203, 1204, 1205, 1208, 1209, 1210, 1211,
+
+     1206, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220,
+     1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230,
+     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
+     1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
      1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
-     1261, 1262, 1263, 1264, 1266, 1267, 1268, 1269, 1270, 1271,
-     1272, 1273, 1274, 1275, 1265, 1276, 1277, 1278, 1279, 1280,
-     1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
-     1291, 1292, 1293, 1294, 1295, 1296, 1297, 1238, 1298, 1299,
-     1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
-
-     1310, 1311, 1312, 1313, 1314, 1316, 1315, 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, 1313, 1315, 1316, 1317, 1342, 1343, 1344, 1345,
+     1261, 1262, 1263, 1264, 1265, 1266, 1207, 1267, 1268, 1269,
+     1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
+     1281, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289,
+     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
+     1300, 1301, 1302, 1303, 1304, 1305, 1306, 1278, 1280, 1281,
+
+     1282, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
+     1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325,
+     1326, 1327, 1328, 1329, 1331, 1332, 1333, 1334, 1330, 1335,
+     1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345,
      1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355,
      1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
-     1367, 1368, 1369, 1370, 1366, 1371, 1372, 1373, 1374, 1375,
+     1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
      1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
      1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
-     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
+     1396, 1397, 1398, 1399, 1401, 1400, 1402, 1403, 1404, 1405,
 
      1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
-     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
-     1436, 1437, 1438, 1439, 1441, 1440, 1442, 1443, 1444, 1445,
-     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455,
-     1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1438, 1464,
-     1437, 1440, 1439, 1441, 1465, 1466, 1467, 1468, 1469, 1470,
+     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1398, 1424,
+     1397, 1400, 1399, 1401, 1425, 1426, 1427, 1428, 1429, 1430,
+     1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
+     1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
+     1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460,
+     1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470,
      1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480,
-     1481, 1482, 1483, 1484, 1485, 1486, 1487, 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, 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, 1557, 1558, 1559, 1560, 1561, 1562,
-     1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572,
-     1573, 1574, 1575, 1548, 1549, 1576, 1577, 1550, 1578, 1579,
-     1526, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588,
-     1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598,
-
-     1556, 1599, 1600, 1601, 1602, 1604, 1605, 1606, 1607, 1608,
-     1609, 1610, 1603, 1611, 1612, 1613, 1614, 1615, 1616, 1617,
-     1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627,
-     1628, 1629, 1630, 1631, 1633, 1634, 1637, 1635, 1632, 1636,
-     1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647,
-     1648, 1649, 1650, 1651, 1652, 1655, 1654, 1656, 1657, 1658,
-     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668,
-     1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1653, 1651,
-     1677, 1650, 1654, 1678, 1679, 1680, 1681, 1682, 1683, 1684,
-     1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694,
-
-     1695, 1696, 1697, 1698, 1699, 1700, 1653, 1701, 1702, 1703,
-     1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
-     1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1725, 1722,
-     1726, 1727, 1723, 1728, 1729, 1724, 1730, 1731, 1732, 1733,
-     1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1743, 1742,
-     1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753,
-     1754, 1755, 1758, 1759, 1760, 1756, 1761, 1762, 1763, 1764,
-     1765, 1766, 1767, 1740, 1741, 1742, 1757, 1743, 1744, 1768,
-     1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
-     1779, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789,
-
-     1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799,
-     1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809,
-     1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819,
-     1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1829, 1828,
-     1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
-     1840, 1780, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848,
-     1849, 1852, 1853, 1827, 1854, 1826, 1828, 1829, 1850, 1830,
-     1855, 1856, 1857, 1851, 1858, 1859, 1860, 1861, 1862, 1863,
-     1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873,
-     1874, 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, 1902, 1903,
-     1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913,
-     1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923,
-     1924, 1925, 1926, 1927, 1901, 1903, 1928, 1929, 1930, 1931,
-     1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941,
-     1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951,
-     1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961,
-     1962, 1964, 1965, 1966, 1967, 1963, 1968, 1969, 1970, 1972,
-     1971, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981,
-
-     1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
-     1992, 1993, 1994, 1995, 1996, 1970, 1971, 1997, 1998, 1999,
-     2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-     2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
-     2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029,
-     2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039,
-     2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049,
-     2050, 2025, 2026, 2051, 2027, 2052, 2053, 2054, 2055, 2056,
-     2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066,
-     2067, 2068, 2069, 2070, 2071, 2072, 2074, 2075, 2073, 2076,
-
-     2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086,
-     2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096,
-     2097, 2098, 2099, 2100, 2101, 2102, 2103, 2077, 2079, 2104,
-     2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114,
-     2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124,
-     2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134,
-     2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144,
-     2145, 2146, 2147, 2148, 2123, 2149, 2124, 2150, 2151, 2152,
-     2153, 2154, 2155, 2156, 2157, 2158, 2159, 2161, 2160, 2162,
-     2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172,
-
-     2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182,
-     2183, 2184, 2185, 2159, 2160, 2186, 2187, 2188, 2189, 2190,
-     2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200,
-     2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
-     2211, 2212, 2213, 2214, 2215, 2216, 2217, 2192, 2218, 2219,
+     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, 1512,
+     1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522,
+     1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1503, 1504,
+     1531, 1532, 1505, 1533, 1534, 1481, 1535, 1536, 1537, 1538,
+     1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548,
+     1549, 1550, 1551, 1552, 1553, 1511, 1554, 1555, 1556, 1558,
+     1559, 1560, 1561, 1562, 1563, 1564, 1557, 1565, 1566, 1567,
+     1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
+     1578, 1579, 1580, 1581, 1583, 1584, 1587, 1585, 1582, 1586,
+     1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597,
+
+     1598, 1599, 1600, 1601, 1602, 1605, 1604, 1606, 1607, 1608,
+     1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
+     1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1603, 1601,
+     1627, 1600, 1604, 1628, 1629, 1630, 1631, 1632, 1633, 1634,
+     1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644,
+     1645, 1646, 1647, 1648, 1649, 1650, 1603, 1651, 1652, 1653,
+     1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663,
+     1664, 1665, 1666, 1670, 1667, 1671, 1672, 1668, 1673, 1674,
+     1669, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683,
+     1684, 1685, 1686, 1688, 1687, 1689, 1690, 1691, 1692, 1693,
+
+     1694, 1695, 1696, 1697, 1698, 1699, 1700, 1703, 1704, 1705,
+     1701, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1685, 1686,
+     1687, 1702, 1688, 1689, 1713, 1714, 1715, 1716, 1717, 1718,
+     1719, 1720, 1721, 1722, 1723, 1725, 1726, 1727, 1728, 1729,
+     1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739,
+     1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
+     1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
+     1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1769, 1768,
+     1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779,
+     1780, 1781, 1782, 1783, 1784, 1724, 1785, 1786, 1787, 1788,
+
+     1789, 1792, 1793, 1767, 1794, 1766, 1768, 1769, 1790, 1770,
+     1795, 1796, 1797, 1791, 1798, 1799, 1800, 1801, 1802, 1803,
+     1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813,
+     1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
+     1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833,
+     1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843,
+     1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853,
+     1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1836,
+     1838, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871,
+     1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881,
+
+     1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891,
+     1892, 1894, 1895, 1896, 1897, 1893, 1898, 1899, 1900, 1902,
+     1901, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911,
+     1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921,
+     1922, 1923, 1924, 1925, 1926, 1900, 1901, 1927, 1928, 1929,
+     1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939,
+     1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949,
+     1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959,
+     1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969,
+     1970, 1971, 1972, 1973, 1974, 1975, 1976, 1951, 1952, 1977,
+
+     1953, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986,
+     1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
+     1998, 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+     2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
+     2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
+     2000, 2002, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034,
+     2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044,
+     2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
+     2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064,
+     2065, 2066, 2067, 2068, 2069, 2044, 2070, 2045, 2071, 2072,
+
+     2073, 2074, 2075, 2076, 2077, 2078, 2079, 2081, 2080, 2082,
+     2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092,
+     2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102,
+     2103, 2104, 2105, 2079, 2080, 2106, 2107, 2108, 2109, 2110,
+     2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120,
+     2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130,
+     2131, 2132, 2133, 2134, 2135, 2136, 2111, 2137, 2138, 2139,
+     2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149,
+     2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159,
+     2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169,
+
+     2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179,
+     2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189,
+     2190, 2192, 2191, 2193, 2194, 2195, 2196, 2197, 2198, 2199,
+     2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209,
+     2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219,
      2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229,
-     2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239,
-     2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249,
-     2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259,
-     2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269,
-
-     2270, 2271, 2272, 2274, 2273, 2275, 2276, 2277, 2278, 2279,
-     2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289,
-     2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299,
-     2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309,
-     2310, 2311, 2312, 2313, 2314, 2315, 2316,   12,   12,   12,
-       36,   36,   36,   80,   99,   80,  101,  101,  101,  117,
-      117,  117,  191,  878,  191,  214,  214,  214,  877,  876,
-      875,  874,  873,  872,  871,  870,  869,  868,  867,  866,
-      865,  864,  863,  862,  861,  857,  856,  855,  854,  853,
-      852,  851,  850,  849,  848,  847,  846,  842,  841,  840,
-
-      839,  838,  837,  836,  835,  834,  833,  832,  831,  830,
-      829,  828,  827,  826,  825,  824,  823,  822,  821,  820,
-      817,  816,  815,  814,  813,  812,  811,  810,  809,  808,
-      807,  806,  805,  804,  803,  802,  801,  800,  799,  798,
-      797,  796,  795,  794,  793,  792,  791,  790,  789,  786,
-      785,  784,  783,  782,  781,  780,  779,  778,  777,  776,
-      775,  774,  773,  772,  771,  770,  769,  768,  764,  758,
-      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,  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,  695,  694,  693,  692,
-      691,  690,  689,  688,  687,  686,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  664,  663,  662,  659,  658,
-      657,  656,  655,  654,  653,  652,  651,  650,  647,  646,
-      645,  636,  635,  634,  633,  632,  631,  630,  629,  628,
-      627,  626,  625,  624,  623,  621,  617,  616,  615,  614,
-      612,  611,  610,  607,  606,  605,  604,  603,  602,  601,
-
-      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
-      590,  587,  586,  585,  584,  583,  582,  581,  580,  577,
-      576,  573,  572,  571,  570,  567,  566,  562,  561,  560,
-      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-      549,  545,  544,  543,  540,  539,  538,  533,  532,  531,
-      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
-      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
-      506,  505,  504,  503,  502,  499,  498,  497,  496,  493,
-      492,  491,  490,  489,  488,  487,  486,  485,  484,  483,
-      482,  481,  480,  478,  476,  475,  472,  470,  467,  464,
-
-      463,  462,  461,  460,  458,  457,  456,  455,  453,  452,
-      451,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-      439,  438,  437,  436,  435,  432,  431,  430,  429,  428,
-      427,  426,  425,  424,  423,  422,  419,  418,  415,  414,
-      411,  410,  409,  408,  406,  405,  404,  403,  402,  401,
-      397,  396,  395,  394,  393,  392,  391,  388,  387,  386,
-      385,  384,  383,  382,  381,  380,  379,  378,  377,  376,
-      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  356,  355,  354,  353,  352,  351,
-      350,  349,  215,  343,  341,  338,  335,  332,  325,  324,
-
-      323,  322,  321,  319,  318,  314,  313,  312,  309,  308,
-      307,  303,  292,  289,  285,  284,  279,  278,  277,  274,
-      272,  271,  270,  269,  268,  267,  264,  263,  262,  259,
-      258,  257,  254,  253,  249,  248,  239,  238,  237,  236,
-      232,  231,  230,  226,  225,  224,  220,  215,  209,  203,
-      202,  199,  198,  189,  169,  146,  110,  107,  106,   43,
-      100,   98,   97,   88,   43, 2317,   11, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317
+     2230, 2231, 2232, 2233, 2234,   12,   12,   12,   36,   36,
+       36,   80,   99,   80,  101,  101,  101,  117,  117,  117,
+      189,  874,  189,  212,  212,  212,  873,  872,  871,  870,
+      869,  868,  865,  864,  863,  862,  861,  860,  859,  858,
+
+      857,  856,  855,  854,  853,  852,  851,  850,  849,  848,
+      847,  846,  845,  844,  843,  842,  841,  837,  836,  835,
+      834,  833,  832,  831,  830,  829,  828,  827,  823,  822,
+      821,  820,  819,  818,  817,  816,  815,  814,  813,  812,
+      811,  810,  809,  808,  807,  806,  805,  804,  803,  802,
+      801,  798,  797,  796,  795,  794,  793,  792,  791,  790,
+      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
+      779,  778,  777,  776,  775,  774,  773,  772,  771,  768,
+      767,  766,  765,  764,  763,  762,  761,  760,  759,  758,
+      757,  756,  755,  754,  753,  752,  751,  750,  746,  740,
+
+      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
+      729,  728,  727,  726,  725,  724,  723,  722,  721,  720,
+      717,  716,  715,  714,  713,  712,  709,  708,  707,  706,
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,
+      685,  684,  683,  680,  679,  678,  677,  676,  675,  674,
+      673,  672,  671,  668,  667,  666,  665,  664,  663,  662,
+      661,  660,  659,  658,  657,  656,  655,  654,  653,  652,
+      651,  650,  649,  648,  645,  644,  643,  642,  641,  640,
+      639,  638,  637,  636,  633,  632,  631,  622,  621,  620,
+
+      619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
+      609,  607,  603,  602,  601,  600,  598,  597,  596,  593,
+      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
+      582,  581,  580,  579,  578,  577,  576,  573,  572,  571,
+      570,  569,  568,  567,  564,  563,  560,  559,  558,  555,
+      554,  550,  549,  548,  547,  546,  545,  544,  543,  542,
+      541,  540,  539,  538,  534,  533,  532,  529,  528,  527,
+      522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
+      512,  511,  510,  505,  504,  503,  502,  501,  500,  499,
+      498,  497,  496,  495,  494,  493,  492,  489,  488,  487,
+
+      486,  483,  482,  481,  480,  479,  478,  477,  476,  475,
+      474,  473,  472,  471,  470,  468,  466,  465,  462,  460,
+      457,  454,  453,  452,  451,  450,  448,  447,  446,  445,
+      443,  442,  441,  438,  437,  436,  435,  434,  433,  432,
+      431,  430,  429,  428,  427,  426,  423,  422,  421,  420,
+      419,  418,  417,  416,  415,  414,  411,  410,  407,  404,
+      403,  402,  401,  399,  398,  397,  396,  395,  394,  390,
+      389,  388,  387,  386,  385,  384,  381,  380,  379,  378,
+      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
+      367,  366,  365,  364,  363,  362,  361,  360,  359,  358,
+
+      357,  356,  350,  349,  348,  347,  346,  345,  344,  343,
+      213,  337,  335,  332,  329,  326,  319,  318,  317,  316,
+      315,  313,  312,  308,  307,  306,  303,  302,  301,  297,
+      287,  286,  285,  281,  280,  275,  274,  271,  269,  268,
+      267,  266,  265,  264,  261,  260,  259,  256,  255,  254,
+      251,  250,  246,  237,  236,  235,  234,  230,  229,  228,
+      224,  223,  222,  218,  213,  207,  201,  200,  197,  196,
+      187,  167,  145,  138,  110,  107,  106,   43,  100,   98,
+       97,   88,   43, 2235,   11, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235
     } ;
 
-static const flex_int16_t yy_chk[2844] =
+static const flex_int16_t yy_chk[2762] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,   44,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  143,    3,    3,    3,   21,    1,    1,    3,    4,
+       21,  142,    3,    3,    3,   21,    1,    1,    3,    4,
         4,    4,   13,    1,   13,    4,    0,    0,    1,   26,
         5,    5,    5,   27,    1,   31,    1,   44,    6,    6,
         6,  109,    1,    1,    7,    7,    7,   37,    7,   37,
-      431,    1,    8,    8,    8,   26,    8,    1,  143,   74,
+      422,    1,    8,    8,    8,   26,    8,    1,  142,   74,
        28,   31,   27,   74,    1,    1,    2,    2,    2,  109,
         2,    2,   32,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    2,    2,    2,    5,    9,    9,    9,   28,
 
        33,    2,    2,    6,   10,   10,   10,   42,    2,   42,
-       62,   32,  431,    2,   52,  137,    9,   47,   48,    2,
+       62,   32,  422,    2,   52,  137,    9,   47,   48,    2,
        51,    2,   56,   62,   10,  130,  130,    2,    2,   33,
-      258,  137,   25,   62,   25,  130,    2,   25,   25,   25,
-       25,   25,    2,   52,   47,   48,   51,  258,   56,    2,
+      255,  137,   25,   62,   25,  130,    2,   25,   25,   25,
+       25,   25,    2,   52,   47,   48,   51,  255,   56,    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,
@@ -1866,295 +1830,286 @@ static const flex_int16_t yy_chk[2844] =
 
        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,  147,   17,
+       15,   15,   15,   15,   15,   15,   15,   17,   93,   17,
        17,   17,   17,   17,   19,   57,   19,   19,   19,   19,
-       19,  147,   17,   20,   20,   20,   20,   20,   22,   19,
-       22,   22,   22,   22,   22,   55,   20,   64,   59,  151,
-      182,   54,   57,   22,   64,   65,  182,   55,   17,   54,
-       65,  101,   91,   65,   66,   19,   63,  311,  736,  311,
-      151,   55,   20,   93,   66,   59,   66,   54,   92,   22,
+       19,  736,   17,   20,   20,   20,   20,   20,   22,   19,
+       22,   22,   22,   22,   22,   55,   20,   93,   59,  150,
+      737,   54,   57,   22,  135,   65,  135,   55,   17,   54,
+       65,  101,   91,   65,   66,   19,   63,  305,  738,  305,
+      150,   55,   20,  135,   66,   59,   66,   54,   92,   22,
        45,   59,   45,   45,   45,   45,   55,   54,   45,   91,
 
        45,   45,   63,   58,   68,   68,   45,   45,   68,   45,
-       58,  101,   93,   63,   68,   92,   45,   96,   45,   45,
+       58,  101,   94,   63,   68,   92,   45,   96,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  110,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   94,
        60,   61,   71,   58,   61,   61,   96,   58,   61,   61,
-       71,   58,   71,   94,   95,  108,  104,   71,   71,   58,
+       71,   58,   71,   95,  104,  105,  746,   71,   79,   58,
        60,   61,   70,   58,   60,   58,   58,   60,   60,   69,
-       70,   60,  110,   69,   60,  737,   79,   69,   60,   77,
-       94,   95,  108,  160,   70,  104,   70,   72,   70,   69,
-       72,   72,   75,   69,  228,  284,   75,  228,   70,   75,
-
-      105,   72,  111,   79,   72,   77,   75,   75,   76,   76,
-      284,   75,   75,   79,  113,   77,  114,  116,   76,  115,
-       77,   81,   81,   81,   81,   81,  105,  177,  158,  738,
-       76,  111,  160,   82,   81,   82,   82,   82,   82,   82,
-      181,  177,  113,  116,   76,  114,   76,  115,   82,   76,
-       76,   89,   89,   89,   89,   89,   83,  158,   83,   76,
-       81,   83,   83,   83,   83,   83,   76,   84,  181,   84,
+       70,   60,  113,   69,   60,  108,  747,   69,   60,   77,
+       95,  105,  115,  104,   70,   79,   70,   72,   70,   69,
+       72,   72,   75,   69,  110,   79,   75,  111,   70,   75,
+
+      113,   72,  108,  114,   72,   77,   75,   75,   76,   76,
+      115,   75,   75,  120,  116,   77,  157,  192,   76,  126,
+       77,   81,   81,   81,   81,   81,  111,  110,  126,  126,
+       76,  120,  114,   82,   81,   82,   82,   82,   82,   82,
+      116,  180,  120,  192,   76,  157,   76,  180,   82,   76,
+       76,   89,   89,   89,   89,   89,   83,  159,   83,   76,
+       81,   83,   83,   83,   83,   83,   76,   84,  748,   84,
        84,   84,   84,   84,   82,   85,   85,   85,   85,   85,
-      120,  122,   84,   90,   90,   90,   90,   90,   85,  103,
-      122,  126,  739,  135,  122,  135,  103,  185,  120,  194,
-
-      126,  126,  136,  140,  740,  164,  140,  169,   84,  120,
-      140,  169,  135,  167,   85,  136,  167,  167,  192,  136,
-      164,  164,  164,  173,  197,  194,  185,  173,  171,  103,
-      193,  173,  196,  103,  200,  218,  281,  103,  278,  296,
-      195,  644,  296,  500,  644,  103,  281,  192,  205,  103,
-      197,  103,  103,  119,  201,  266,  500,  193,  204,  196,
-      200,  119,  119,  119,  119,  119,  171,  171,  171,  195,
-      119,  119,  119,  119,  119,  119,  205,  171,  208,  171,
-      201,  171,  171,  209,  171,  171,  211,  204,  213,  219,
-      315,  278,  218,  333,  229,  315,  119,  119,  119,  119,
-
-      119,  119,  229,  741,  208,  339,  273,  320,  229,  209,
-      326,  266,  211,  329,  266,  219,  213,  217,  217,  217,
-      217,  217,  333,  334,  743,  336,  217,  217,  217,  217,
-      217,  217,  273,  320,  339,  340,  326,  363,  368,  329,
-      348,  407,  363,  402,  368,  474,  744,  320,  406,  402,
-      334,  336,  217,  217,  217,  217,  217,  217,  406,  588,
-      676,  676,  340,  345,  345,  345,  345,  345,  468,  348,
-      407,  474,  345,  345,  345,  345,  345,  345,  384,  398,
-      398,  398,  423,  384,  426,  398,  434,  423,  426,  443,
-      434,  462,  476,  443,  476,  479,  462,  468,  345,  345,
-
-      345,  345,  345,  345,  512,  548,  536,  580,  619,  512,
-      548,  496,  580,  620,  588,  496,  536,  745,  747,  748,
-      476,  749,  476,  496,  479,  496,  496,  496,  496,  496,
-      622,  624,  702,  618,  384,  622,  619,  702,  624,  384,
-      746,  750,  620,  423,  477,  477,  477,  477,  477,  614,
-      751,  752,  746,  477,  477,  477,  477,  477,  477,  618,
-      716,  753,  754,  755,  614,  716,  756,  759,  760,  762,
-      761,  764,  765,  763,  702,  614,  766,  767,  768,  477,
-      477,  477,  477,  477,  477,  769,  770,  771,  772,  773,
-      774,  775,  775,  614,  775,  760,  759,  761,  762,  763,
-
-      776,  777,  778,  779,  780,  781,  782,  716,  783,  784,
-      785,  786,  787,  788,  789,  790,  791,  792,  793,  794,
-      795,  796,  797,  798,  799,  800,  797,  801,  802,  803,
-      797,  804,  805,  807,  808,  809,  810,  811,  812,  813,
-      814,  815,  816,  817,  818,  819,  820,  821,  822,  823,
-      824,  825,  826,  827,  828,  829,  827,  830,  832,  833,
-      834,  835,  836,  837,  838,  839,  840,  841,  842,  844,
-      845,  846,  847,  848,  849,  850,  851,  852,  853,  854,
-      855,  856,  857,  859,  860,  861,  862,  863,  864,  865,
-      866,  867,  868,  869,  870,  871,  872,  873,  874,  875,
-
-      876,  877,  878,  879,  880,  881,  882,  883,  884,  878,
-      885,  880,  886,  887,  884,  880,  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,  915,  916,  917,  918,  919,  920,  921,  922,  923,
-      924,  925,  926,  927,  900,  928,  929,  901,  930,  931,
-      904,  932,  933,  934,  935,  936,  937,  938,  939,  940,
-      941,  942,  943,  944,  945,  946,  947,  949,  950,  951,
-      952,  953,  954,  955,  956,  957,  958,  954,  959,  960,
-      961,  962,  963,  964,  965,  968,  969,  970,  971,  972,
-
-      973,  974,  977,  978,  979,  980,  981,  982,  984,  985,
-      986,  987,  988,  985,  989,  990,  991,  992,  993,  995,
-      996,  999, 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, 1035, 1023, 1036, 1037,
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
-     1050, 1048, 1051, 1052, 1049, 1053, 1054, 1056, 1057, 1058,
+      136,  122,   84,   90,   90,   90,   90,   90,   85,  103,
+      122,  146,  139,  136,  122,  139,  103,  136,  165,  139,
+
+      162,  165,  165,  171,  146,  175,  159,  171,   84,  191,
+      179,  171,  183,  190,   85,  162,  162,  162,  193,  175,
+      195,  194,  418,  216,  198,  202,  418,  203,  169,  103,
+      199,  206,  207,  103,  209,  263,  191,  103,  179,  309,
+      275,  183,  190,  217,  309,  103,  195,  193,  194,  103,
+      198,  103,  103,  119,  202,  203,  199,  206,  207,  211,
+      209,  119,  119,  119,  119,  119,  169,  169,  169,  217,
+      119,  119,  119,  119,  119,  119,  277,  169,  226,  169,
+      216,  226,  169,  357,  169,  169,  277,  211,  357,  661,
+      661,  263,  270,  275,  263,  280,  119,  119,  119,  119,
+
+      119,  119,  215,  215,  215,  215,  215,  314,  320,  227,
+      280,  215,  215,  215,  215,  215,  215,  227,  270,  291,
+      323,  327,  291,  227,  328,  333,  330,  425,  334,  362,
+      395,  425,  342,  314,  320,  362,  395,  215,  215,  215,
+      215,  215,  215,  377,  415,  400,  323,  314,  377,  415,
+      327,  328,  330,  399,  333,  334,  339,  339,  339,  339,
+      339,  342,  464,  399,  749,  339,  339,  339,  339,  339,
+      339,  391,  391,  391,  400,  433,  452,  391,  458,  433,
+      466,  452,  466,  630,  490,  502,  630,  469,  464,  605,
+      502,  339,  339,  339,  339,  339,  339,  490,  537,  377,
+
+      574,  567,  604,  537,  377,  415,  567,  458,  466,  525,
+      466,  467,  467,  467,  467,  467,  469,  605,  750,  525,
+      467,  467,  467,  467,  467,  467,  486,  606,  604,  608,
+      486,  687,  610,  728,  608,  741,  687,  600,  486,  610,
+      486,  486,  486,  486,  486,  728,  467,  467,  467,  467,
+      467,  467,  600,  700,  744,  574,  606,  742,  700,  743,
+      751,  745,  752,  600,  741,  753,  754,  755,  756,  757,
+      757,  758,  757,  687,  759,  760,  761,  762,  763,  764,
+      765,  600,  766,  744,  742,  767,  743,  745,  768,  769,
+      770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
+
+      700,  780,  781,  779,  782,  783,  784,  779,  785,  786,
+      788,  789,  790,  791,  792,  793,  794,  795,  796,  797,
+      798,  799,  800,  801,  802,  803,  804,  805,  806,  807,
+      808,  809,  810,  808,  811,  813,  814,  815,  816,  817,
+      818,  819,  820,  821,  822,  823,  825,  826,  827,  828,
+      829,  830,  831,  832,  833,  834,  835,  836,  837,  839,
+      840,  841,  842,  843,  844,  845,  846,  847,  848,  849,
+      850,  851,  852,  853,  854,  855,  856,  857,  858,  859,
+      860,  861,  862,  856,  863,  858,  864,  865,  862,  858,
+      867,  868,  869,  870,  871,  872,  873,  874,  875,  876,
+
+      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  890,  891,  893,  894,  895,  896,  897,
+      898,  899,  900,  901,  902,  903,  904,  905,  878,  906,
+      907,  879,  908,  909,  882,  910,  911,  912,  913,  914,
+      915,  916,  917,  918,  919,  920,  921,  922,  923,  924,
+      925,  927,  928,  929,  930,  931,  932,  933,  934,  935,
+      931,  936,  937,  938,  939,  940,  941,  942,  945,  946,
+      947,  948,  949,  950,  951,  954,  955,  956,  957,  958,
+      959,  961,  962,  963,  964,  965,  962,  966,  967,  968,
+      969,  971,  972,  975,  976,  977,  978,  979,  980,  981,
+
+      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
+      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
+     1002, 1003, 1004, 1005, 1006, 1007, 1009,  997, 1010, 1011,
+     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
+     1024, 1022, 1025, 1026, 1023, 1027, 1028, 1030, 1031, 1032,
+     1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042,
+     1043, 1044, 1045, 1046, 1047, 1020, 1019, 1048, 1021, 1022,
+     1023, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1057, 1058,
      1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
-     1069, 1070, 1071, 1072, 1073, 1046, 1045, 1074, 1047, 1048,
-
-     1049, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1083, 1084,
-     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1106,
-     1107, 1102, 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, 1136, 1137,
-     1138, 1140, 1141, 1142, 1129, 1143, 1144, 1146, 1147, 1148,
-     1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
-     1159, 1160, 1161, 1162, 1163, 1164, 1166, 1102, 1167, 1168,
-     1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178,
-
-     1179, 1180, 1181, 1182, 1183, 1185, 1184, 1186, 1188, 1189,
-     1190, 1191, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
-     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
-     1211, 1212, 1182, 1184, 1185, 1186, 1213, 1214, 1216, 1217,
-     1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
-     1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1237, 1238,
-     1239, 1240, 1241, 1242, 1238, 1243, 1244, 1245, 1246, 1247,
-     1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
-     1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
-     1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278,
-
-     1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288,
-     1290, 1291, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301,
-     1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
-     1312, 1313, 1314, 1315, 1317, 1316, 1318, 1319, 1320, 1321,
-     1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1331, 1332,
-     1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1314, 1342,
-     1313, 1316, 1315, 1317, 1343, 1344, 1345, 1346, 1347, 1348,
-     1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
-     1359, 1360, 1361, 1364, 1366, 1367, 1368, 1369, 1370, 1371,
-     1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
-
-     1382, 1384, 1386, 1387, 1389, 1390, 1391, 1392, 1393, 1394,
-     1396, 1397, 1399, 1401, 1403, 1404, 1405, 1406, 1407, 1408,
+     1069, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1079, 1080,
+
+     1075, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
+     1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+     1100, 1101, 1102, 1103, 1104, 1106, 1108, 1109, 1110, 1112,
+     1113, 1114, 1115, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
+     1134, 1136, 1137, 1138, 1139, 1140, 1075, 1141, 1142, 1143,
+     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
+     1155, 1154, 1156, 1158, 1159, 1160, 1161, 1163, 1164, 1165,
+     1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
+     1176, 1177, 1178, 1179, 1180, 1181, 1182, 1152, 1154, 1155,
+
+     1156, 1183, 1184, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+     1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
+     1203, 1204, 1206, 1207, 1208, 1209, 1210, 1211, 1207, 1212,
+     1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+     1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
+     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1243,
+     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
+     1255, 1256, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
+     1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
+     1277, 1278, 1279, 1280, 1282, 1281, 1283, 1284, 1285, 1286,
+
+     1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1296, 1297,
+     1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1279, 1307,
+     1278, 1281, 1280, 1282, 1308, 1309, 1310, 1311, 1312, 1313,
+     1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323,
+     1324, 1325, 1328, 1330, 1331, 1332, 1333, 1334, 1335, 1336,
+     1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
+     1348, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359, 1361,
+     1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
+     1374, 1375, 1376, 1377, 1378, 1380, 1381, 1382, 1383, 1384,
+     1385, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
+
+     1397, 1398, 1399, 1400, 1401, 1403, 1404, 1405, 1407, 1408,
      1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
-     1420, 1421, 1422, 1423, 1424, 1425, 1426, 1429, 1430, 1431,
-     1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441,
-     1443, 1444, 1445, 1447, 1448, 1449, 1450, 1451, 1452, 1453,
-     1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463,
-     1464, 1465, 1466, 1438, 1439, 1467, 1468, 1440, 1469, 1470,
-     1413, 1471, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480,
-     1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490,
-
-     1447, 1491, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500,
-     1501, 1502, 1495, 1503, 1506, 1507, 1508, 1509, 1510, 1511,
+     1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1398, 1399,
+     1427, 1428, 1400, 1429, 1430, 1373, 1431, 1433, 1434, 1435,
+     1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
+     1446, 1447, 1448, 1449, 1450, 1407, 1452, 1453, 1454, 1455,
+     1456, 1457, 1458, 1459, 1460, 1461, 1454, 1462, 1465, 1466,
+     1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
+     1477, 1479, 1480, 1481, 1482, 1483, 1487, 1485, 1481, 1485,
+     1488, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499,
+
+     1500, 1501, 1502, 1503, 1504, 1507, 1505, 1508, 1509, 1511,
      1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521,
-     1523, 1524, 1525, 1526, 1527, 1528, 1532, 1530, 1526, 1530,
-     1533, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544,
-     1545, 1546, 1547, 1548, 1549, 1552, 1550, 1553, 1554, 1556,
-     1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
-     1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1549, 1548,
-     1575, 1547, 1550, 1577, 1578, 1580, 1581, 1582, 1583, 1584,
-     1585, 1586, 1587, 1588, 1589, 1590, 1591, 1593, 1595, 1597,
-
-     1598, 1600, 1601, 1602, 1603, 1604, 1549, 1605, 1606, 1607,
-     1608, 1609, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1619,
-     1620, 1624, 1625, 1627, 1628, 1629, 1630, 1632, 1633, 1632,
-     1634, 1635, 1632, 1636, 1637, 1632, 1638, 1639, 1640, 1641,
-     1642, 1643, 1644, 1646, 1648, 1649, 1650, 1651, 1653, 1652,
-     1654, 1656, 1657, 1658, 1660, 1661, 1662, 1663, 1664, 1665,
-     1666, 1667, 1669, 1670, 1671, 1668, 1672, 1673, 1674, 1675,
-     1677, 1678, 1679, 1650, 1651, 1652, 1668, 1653, 1654, 1680,
-     1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1690,
-     1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
-
-     1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
-     1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720,
-     1721, 1722, 1723, 1724, 1725, 1727, 1728, 1729, 1730, 1731,
-     1732, 1733, 1734, 1736, 1737, 1738, 1740, 1741, 1743, 1742,
-     1744, 1745, 1746, 1749, 1750, 1751, 1754, 1755, 1756, 1757,
-     1758, 1691, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766,
-     1767, 1770, 1771, 1741, 1772, 1740, 1742, 1743, 1769, 1744,
-     1773, 1774, 1775, 1769, 1776, 1777, 1778, 1780, 1781, 1782,
-     1784, 1785, 1787, 1788, 1789, 1791, 1792, 1793, 1794, 1795,
-     1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807,
-
-     1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817,
-     1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1827, 1828,
-     1829, 1830, 1832, 1833, 1834, 1836, 1837, 1838, 1839, 1840,
-     1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1851,
-     1852, 1853, 1854, 1855, 1826, 1828, 1856, 1858, 1859, 1860,
-     1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871,
-     1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882,
-     1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892,
-     1893, 1895, 1897, 1898, 1899, 1893, 1900, 1901, 1903, 1906,
-     1904, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1917,
-
-     1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1928,
-     1929, 1930, 1931, 1932, 1933, 1903, 1904, 1934, 1935, 1936,
-     1938, 1939, 1940, 1941, 1943, 1944, 1945, 1946, 1947, 1948,
-     1949, 1950, 1951, 1952, 1953, 1955, 1956, 1957, 1958, 1960,
-     1962, 1963, 1964, 1965, 1968, 1969, 1970, 1971, 1972, 1973,
-     1974, 1975, 1976, 1977, 1978, 1979, 1981, 1982, 1983, 1984,
-     1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1996,
-     1997, 1969, 1970, 1998, 1971, 1999, 2000, 2001, 2002, 2003,
-     2004, 2005, 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015,
-     2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2021, 2024,
-
-     2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034,
-     2035, 2036, 2037, 2038, 2040, 2041, 2042, 2043, 2044, 2045,
-     2046, 2047, 2048, 2049, 2050, 2051, 2053, 2025, 2027, 2055,
-     2057, 2059, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
-     2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2079,
-     2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090,
-     2091, 2092, 2094, 2095, 2096, 2098, 2099, 2100, 2101, 2102,
-     2104, 2105, 2107, 2109, 2077, 2111, 2079, 2113, 2114, 2115,
-     2116, 2117, 2118, 2119, 2120, 2122, 2123, 2125, 2124, 2126,
-     2127, 2128, 2129, 2130, 2131, 2133, 2134, 2135, 2136, 2137,
-
-     2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148,
-     2149, 2150, 2151, 2123, 2124, 2152, 2154, 2155, 2156, 2157,
-     2158, 2159, 2160, 2161, 2162, 2164, 2165, 2166, 2167, 2168,
-     2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178,
-     2179, 2180, 2181, 2182, 2183, 2184, 2185, 2159, 2186, 2187,
-     2188, 2189, 2190, 2191, 2192, 2195, 2196, 2197, 2199, 2200,
-     2201, 2202, 2204, 2205, 2206, 2207, 2213, 2217, 2218, 2219,
-     2220, 2221, 2222, 2223, 2225, 2226, 2228, 2229, 2230, 2231,
-     2232, 2233, 2234, 2235, 2237, 2238, 2239, 2240, 2241, 2242,
-     2244, 2245, 2247, 2249, 2250, 2251, 2252, 2253, 2254, 2256,
-
-     2257, 2258, 2259, 2260, 2259, 2261, 2262, 2263, 2265, 2266,
-     2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278,
-     2279, 2280, 2281, 2282, 2283, 2284, 2285, 2287, 2288, 2289,
-     2290, 2293, 2294, 2295, 2296, 2298, 2299, 2301, 2303, 2305,
-     2306, 2307, 2308, 2309, 2310, 2311, 2313, 2318, 2318, 2318,
-     2319, 2319, 2319, 2320, 2321, 2320, 2322, 2322, 2322, 2323,
-     2323, 2323, 2324,  735, 2324, 2325, 2325, 2325,  734,  733,
-      732,  731,  730,  729,  728,  726,  725,  724,  723,  722,
-      721,  720,  719,  718,  717,  715,  714,  712,  711,  710,
-      709,  708,  707,  706,  705,  704,  703,  701,  700,  699,
-
-      698,  697,  695,  694,  692,  691,  690,  689,  688,  687,
-      686,  685,  684,  683,  682,  681,  680,  679,  678,  677,
-      675,  674,  673,  672,  671,  670,  668,  667,  666,  665,
-      664,  663,  662,  661,  659,  658,  657,  656,  655,  654,
-      653,  652,  651,  650,  649,  648,  647,  646,  645,  643,
-      642,  641,  640,  639,  638,  637,  636,  635,  634,  633,
-      632,  631,  630,  629,  628,  627,  626,  625,  621,  613,
-      612,  611,  610,  609,  607,  605,  603,  601,  600,  599,
-      598,  597,  596,  595,  594,  593,  592,  591,  590,  589,
-      587,  586,  585,  584,  583,  582,  581,  579,  578,  577,
-
-      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
-      565,  564,  562,  561,  560,  559,  558,  557,  556,  555,
-      554,  553,  552,  551,  550,  549,  547,  546,  544,  543,
-      542,  541,  540,  539,  538,  537,  535,  534,  533,  532,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
-      521,  520,  519,  518,  516,  515,  514,  513,  511,  510,
-      509,  508,  507,  506,  505,  504,  502,  501,  499,  498,
-      497,  495,  493,  492,  491,  490,  489,  488,  486,  485,
-      484,  483,  482,  481,  480,  478,  473,  471,  470,  469,
-      467,  464,  463,  461,  460,  459,  458,  457,  456,  455,
-
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  442,  441,  440,  439,  438,  437,  436,  435,  433,
-      432,  430,  429,  428,  427,  425,  424,  422,  421,  420,
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-      409,  405,  404,  403,  401,  400,  399,  397,  396,  395,
-      394,  393,  392,  391,  390,  389,  388,  387,  386,  385,
-      383,  382,  381,  380,  379,  378,  377,  376,  375,  374,
-      373,  372,  371,  370,  369,  367,  366,  365,  364,  362,
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  347,  344,  342,  337,  335,  332,  325,
-
-      324,  323,  322,  321,  319,  318,  317,  316,  314,  313,
-      312,  310,  309,  308,  307,  306,  305,  304,  303,  302,
-      301,  300,  299,  298,  297,  295,  294,  293,  292,  291,
-      290,  289,  288,  287,  286,  285,  283,  282,  280,  279,
-      277,  276,  275,  274,  272,  271,  270,  269,  268,  267,
-      265,  264,  263,  262,  261,  260,  259,  257,  256,  254,
-      253,  252,  251,  250,  249,  248,  247,  246,  245,  244,
-      243,  242,  241,  240,  239,  238,  237,  236,  235,  234,
-      233,  232,  231,  230,  227,  226,  225,  224,  223,  222,
-      221,  220,  214,  212,  210,  207,  202,  198,  190,  189,
-
-      188,  187,  186,  184,  183,  180,  179,  178,  176,  175,
-      174,  172,  170,  168,  166,  165,  163,  162,  161,  159,
-      157,  156,  155,  154,  153,  152,  150,  149,  148,  146,
-      145,  144,  142,  141,  139,  138,  134,  133,  132,  131,
-      129,  128,  127,  125,  124,  123,  121,  117,  112,  107,
-      106,   99,   98,   78,   73,   67,   53,   50,   49,   43,
-       41,   39,   38,   24,   14,   11, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
-     2317, 2317, 2317
+     1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1504, 1503,
+     1530, 1502, 1505, 1532, 1533, 1535, 1536, 1537, 1538, 1539,
+     1540, 1541, 1542, 1543, 1544, 1545, 1547, 1549, 1551, 1552,
+     1554, 1555, 1556, 1557, 1558, 1559, 1504, 1560, 1561, 1562,
+     1563, 1565, 1566, 1567, 1568, 1569, 1571, 1575, 1576, 1578,
+     1579, 1580, 1582, 1583, 1582, 1584, 1585, 1582, 1586, 1587,
+     1582, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1596, 1598,
+     1599, 1600, 1601, 1603, 1602, 1604, 1606, 1607, 1608, 1610,
+
+     1611, 1612, 1613, 1614, 1615, 1616, 1617, 1619, 1620, 1621,
+     1618, 1622, 1623, 1624, 1625, 1627, 1628, 1629, 1600, 1601,
+     1602, 1618, 1603, 1604, 1630, 1632, 1633, 1634, 1635, 1636,
+     1637, 1638, 1639, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
+     1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655,
+     1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665,
+     1666, 1667, 1668, 1669, 1670, 1672, 1673, 1674, 1675, 1676,
+     1677, 1678, 1679, 1681, 1682, 1683, 1685, 1686, 1688, 1687,
+     1689, 1690, 1691, 1694, 1695, 1696, 1699, 1700, 1701, 1702,
+     1703, 1704, 1705, 1706, 1707, 1640, 1708, 1709, 1710, 1711,
+
+     1712, 1715, 1716, 1686, 1717, 1685, 1687, 1688, 1714, 1689,
+     1718, 1719, 1720, 1714, 1721, 1722, 1724, 1725, 1726, 1728,
+     1729, 1731, 1732, 1733, 1735, 1736, 1737, 1738, 1739, 1742,
+     1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752,
+     1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762,
+     1763, 1764, 1766, 1767, 1768, 1769, 1770, 1772, 1773, 1774,
+     1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
+     1786, 1787, 1788, 1789, 1791, 1792, 1793, 1794, 1795, 1766,
+     1768, 1797, 1798, 1799, 1801, 1802, 1803, 1804, 1805, 1806,
+     1807, 1808, 1809, 1810, 1812, 1813, 1814, 1815, 1816, 1817,
+
+     1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827,
+     1828, 1830, 1832, 1833, 1834, 1828, 1835, 1836, 1838, 1841,
+     1839, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1852,
+     1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862,
+     1863, 1864, 1865, 1866, 1867, 1838, 1839, 1868, 1869, 1870,
+     1872, 1873, 1874, 1875, 1877, 1878, 1879, 1880, 1881, 1882,
+     1883, 1885, 1886, 1887, 1888, 1890, 1892, 1893, 1894, 1895,
+     1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907,
+     1908, 1909, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918,
+     1919, 1920, 1921, 1922, 1923, 1926, 1927, 1899, 1900, 1928,
+
+     1901, 1929, 1930, 1931, 1932, 1933, 1935, 1936, 1937, 1938,
+     1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948,
+     1949, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957,
+     1958, 1959, 1960, 1961, 1962, 1963, 1964, 1966, 1967, 1968,
+     1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1979,
+     1951, 1953, 1981, 1983, 1985, 1986, 1987, 1988, 1989, 1990,
+     1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+     2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+     2013, 2014, 2015, 2017, 2018, 2019, 2021, 2022, 2023, 2024,
+     2025, 2027, 2029, 2031, 2032, 2000, 2034, 2002, 2035, 2036,
+
+     2037, 2038, 2039, 2040, 2041, 2043, 2044, 2046, 2045, 2047,
+     2048, 2049, 2050, 2051, 2052, 2054, 2055, 2056, 2057, 2058,
+     2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069,
+     2070, 2071, 2072, 2044, 2045, 2074, 2075, 2076, 2077, 2078,
+     2079, 2080, 2081, 2082, 2084, 2085, 2086, 2087, 2088, 2089,
+     2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099,
+     2100, 2101, 2102, 2103, 2104, 2105, 2079, 2106, 2107, 2108,
+     2109, 2110, 2111, 2114, 2115, 2116, 2118, 2119, 2120, 2121,
+     2123, 2124, 2125, 2126, 2131, 2135, 2136, 2137, 2138, 2139,
+     2140, 2141, 2143, 2144, 2146, 2147, 2148, 2149, 2150, 2151,
+
+     2152, 2153, 2155, 2156, 2157, 2158, 2159, 2160, 2162, 2163,
+     2165, 2167, 2168, 2169, 2170, 2171, 2172, 2174, 2175, 2176,
+     2177, 2178, 2177, 2179, 2180, 2181, 2183, 2184, 2187, 2188,
+     2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198,
+     2199, 2200, 2201, 2202, 2203, 2205, 2206, 2207, 2208, 2211,
+     2212, 2213, 2214, 2216, 2217, 2219, 2221, 2223, 2224, 2225,
+     2226, 2227, 2228, 2229, 2231, 2236, 2236, 2236, 2237, 2237,
+     2237, 2238, 2239, 2238, 2240, 2240, 2240, 2241, 2241, 2241,
+     2242,  735, 2242, 2243, 2243, 2243,  734,  733,  732,  731,
+      730,  729,  727,  726,  725,  723,  722,  721,  720,  719,
+
+      718,  717,  716,  715,  714,  713,  712,  711,  709,  708,
+      707,  706,  705,  704,  703,  702,  701,  699,  698,  696,
+      695,  694,  693,  692,  691,  690,  689,  688,  686,  685,
+      684,  683,  682,  680,  679,  677,  676,  675,  674,  673,
+      672,  671,  670,  669,  668,  667,  666,  665,  664,  663,
+      662,  660,  659,  658,  657,  656,  655,  653,  652,  651,
+      650,  649,  648,  647,  645,  644,  643,  642,  641,  640,
+      639,  638,  637,  636,  635,  634,  633,  632,  631,  629,
+      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
+      618,  617,  616,  615,  614,  613,  612,  611,  607,  599,
+
+      598,  597,  596,  595,  593,  591,  589,  587,  586,  585,
+      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
+      573,  572,  571,  570,  569,  568,  566,  565,  564,  563,
+      562,  561,  560,  559,  558,  557,  556,  555,  553,  552,
+      550,  549,  548,  547,  546,  545,  544,  543,  542,  541,
+      540,  539,  538,  536,  535,  533,  532,  531,  530,  529,
+      528,  527,  526,  524,  523,  522,  521,  520,  519,  518,
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+      507,  505,  504,  503,  501,  500,  499,  498,  497,  496,
+      495,  494,  492,  491,  489,  488,  487,  485,  483,  482,
+
+      481,  480,  479,  478,  476,  475,  474,  473,  472,  471,
+      470,  468,  463,  461,  460,  459,  457,  454,  453,  451,
+      450,  449,  448,  447,  446,  445,  444,  443,  442,  441,
+      440,  439,  438,  437,  436,  435,  434,  432,  431,  430,
+      429,  428,  427,  426,  424,  423,  421,  420,  419,  417,
+      416,  414,  413,  412,  411,  410,  409,  408,  407,  406,
+      405,  404,  403,  402,  398,  397,  396,  394,  393,  392,
+      390,  389,  388,  387,  386,  385,  384,  383,  382,  381,
+      380,  379,  378,  376,  375,  374,  373,  372,  371,  370,
+      369,  368,  367,  366,  365,  364,  363,  361,  360,  359,
+
+      358,  356,  355,  354,  353,  352,  351,  350,  349,  348,
+      347,  346,  345,  344,  343,  341,  338,  336,  331,  329,
+      326,  319,  318,  317,  316,  315,  313,  312,  311,  310,
+      308,  307,  306,  304,  303,  302,  301,  300,  299,  298,
+      297,  296,  295,  294,  293,  292,  290,  289,  288,  287,
+      286,  285,  284,  283,  282,  281,  279,  278,  276,  274,
+      273,  272,  271,  269,  268,  267,  266,  265,  264,  262,
+      261,  260,  259,  258,  257,  256,  254,  253,  251,  250,
+      249,  248,  247,  246,  245,  244,  243,  242,  241,  240,
+      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
+
+      229,  228,  225,  224,  223,  222,  221,  220,  219,  218,
+      212,  210,  208,  205,  200,  196,  188,  187,  186,  185,
+      184,  182,  181,  178,  177,  176,  174,  173,  172,  170,
+      168,  167,  166,  164,  163,  161,  160,  158,  156,  155,
+      154,  153,  152,  151,  149,  148,  147,  145,  144,  143,
+      141,  140,  138,  134,  133,  132,  131,  129,  128,  127,
+      125,  124,  123,  121,  117,  112,  107,  106,   99,   98,
+       78,   73,   67,   64,   53,   50,   49,   43,   41,   39,
+       38,   24,   14,   11, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2163,34 +2118,34 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[237] =
+static const flex_int16_t yy_rule_linenum[232] =
     {   0,
       149,  151,  153,  158,  159,  164,  165,  166,  178,  181,
       186,  193,  202,  211,  220,  229,  238,  247,  256,  265,
-      274,  283,  292,  301,  310,  322,  334,  344,  354,  364,
-      374,  384,  393,  403,  413,  423,  433,  442,  451,  460,
-      469,  478,  487,  496,  505,  514,  523,  532,  541,  550,
-      559,  568,  577,  586,  595,  608,  617,  626,  635,  646,
-      657,  668,  679,  691,  702,  713,  724,  735,  746,  757,
-      768,  777,  786,  795,  806,  817,  826,  837,  848,  859,
-      870,  882,  894,  906,  918,  930,  942,  953,  964,  973,
-      982,  991, 1002, 1013, 1022, 1031, 1042, 1053, 1064, 1075,
-
-     1086, 1097, 1108, 1119, 1130, 1139, 1148, 1157, 1169, 1180,
-     1190, 1201, 1210, 1219, 1234, 1250, 1259, 1268, 1277, 1286,
-     1295, 1304, 1313, 1322, 1331, 1340, 1349, 1358, 1382, 1406,
-     1415, 1425, 1435, 1444, 1454, 1465, 1474, 1483, 1492, 1501,
-     1510, 1521, 1532, 1543, 1553, 1562, 1571, 1580, 1591, 1602,
-     1613, 1624, 1635, 1644, 1653, 1662, 1671, 1680, 1689, 1698,
-     1707, 1716, 1725, 1735, 1747, 1760, 1769, 1778, 1787, 1797,
-     1807, 1816, 1827, 1837, 1846, 1856, 1866, 1875, 1884, 1893,
-     1902, 1912, 1921, 1930, 1939, 1948, 1957, 1966, 1975, 1984,
-     1993, 2002, 2011, 2020, 2029, 2038, 2047, 2056, 2065, 2074,
-
-     2083, 2092, 2101, 2110, 2119, 2128, 2137, 2146, 2155, 2164,
-     2173, 2182, 2191, 2200, 2209, 2218, 2227, 2236, 2337, 2353,
-     2402, 2410, 2425, 2426, 2427, 2428, 2429, 2430, 2432, 2450,
-     2463, 2468, 2472, 2474, 2476, 2478
+      276,  287,  297,  307,  317,  327,  337,  346,  356,  366,
+      376,  386,  395,  404,  413,  422,  431,  440,  449,  458,
+      467,  476,  485,  494,  503,  512,  521,  530,  539,  548,
+      561,  570,  579,  588,  599,  610,  621,  632,  644,  655,
+      666,  677,  688,  699,  710,  721,  730,  739,  748,  759,
+      770,  779,  790,  801,  812,  823,  835,  847,  859,  871,
+      883,  895,  906,  917,  926,  935,  944,  955,  966,  975,
+      984,  995, 1006, 1017, 1028, 1039, 1050, 1061, 1072, 1083,
+
+     1092, 1101, 1110, 1122, 1133, 1143, 1154, 1163, 1172, 1187,
+     1203, 1212, 1221, 1230, 1239, 1248, 1257, 1266, 1275, 1284,
+     1293, 1302, 1311, 1335, 1359, 1368, 1378, 1388, 1397, 1407,
+     1418, 1427, 1436, 1445, 1454, 1463, 1474, 1485, 1496, 1506,
+     1515, 1524, 1533, 1544, 1555, 1566, 1577, 1588, 1597, 1606,
+     1615, 1624, 1633, 1642, 1651, 1660, 1669, 1678, 1688, 1700,
+     1713, 1722, 1731, 1740, 1750, 1760, 1769, 1780, 1790, 1799,
+     1809, 1819, 1828, 1837, 1846, 1855, 1865, 1874, 1883, 1892,
+     1901, 1910, 1919, 1928, 1937, 1946, 1955, 1964, 1973, 1982,
+     1991, 2000, 2009, 2018, 2027, 2036, 2045, 2054, 2063, 2072,
+
+     2081, 2090, 2099, 2108, 2117, 2126, 2135, 2144, 2153, 2162,
+     2171, 2180, 2189, 2290, 2306, 2355, 2363, 2378, 2379, 2380,
+     2381, 2382, 2383, 2385, 2403, 2416, 2421, 2425, 2427, 2429,
+     2431
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2245,7 +2200,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 2248 "dhcp6_lexer.cc"
+#line 2204 "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
@@ -2271,8 +2226,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 2274 "dhcp6_lexer.cc"
-#line 2275 "dhcp6_lexer.cc"
+#line 2230 "dhcp6_lexer.cc"
+#line 2231 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2602,7 +2557,7 @@ YY_DECL
     }
 
 
-#line 2605 "dhcp6_lexer.cc"
+#line 2561 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2631,13 +2586,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 >= 2318 )
+                               if ( yy_current_state >= 2236 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 2317 );
+               while ( yy_current_state != 2235 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2656,13 +2611,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 < 237 )
+                       else if ( yy_act < 232 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 237 )
+                       else if ( yy_act == 232 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 238 )
+                       else if ( yy_act == 233 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2781,18 +2736,6 @@ YY_RULE_SETUP
 case 13:
 YY_RULE_SETUP
 #line 202 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp6Parser::make_QUALIFYING_SUFFIX(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("qualifying-suffix", driver.loc_);
-    }
-}
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 211 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2802,9 +2745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 15:
+case 14:
 YY_RULE_SETUP
-#line 220 "dhcp6_lexer.ll"
+#line 211 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2814,9 +2757,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 16:
+case 15:
 YY_RULE_SETUP
-#line 229 "dhcp6_lexer.ll"
+#line 220 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2826,9 +2769,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 17:
+case 16:
 YY_RULE_SETUP
-#line 238 "dhcp6_lexer.ll"
+#line 229 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2838,9 +2781,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 18:
+case 17:
 YY_RULE_SETUP
-#line 247 "dhcp6_lexer.ll"
+#line 238 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2850,9 +2793,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 19:
+case 18:
 YY_RULE_SETUP
-#line 256 "dhcp6_lexer.ll"
+#line 247 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2862,9 +2805,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 20:
+case 19:
 YY_RULE_SETUP
-#line 265 "dhcp6_lexer.ll"
+#line 256 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2874,61 +2817,12 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 274 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp6Parser::make_OVERRIDE_NO_UPDATE(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("override-no-update", driver.loc_);
-    }
-}
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 283 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("override-client-update", driver.loc_);
-    }
-}
-       YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 292 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp6Parser::make_REPLACE_CLIENT_NAME(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("replace-client-name", driver.loc_);
-    }
-}
-       YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 301 "dhcp6_lexer.ll"
-{
-    switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
-        return isc::dhcp::Dhcp6Parser::make_GENERATED_PREFIX(driver.loc_);
-    default:
-        return isc::dhcp::Dhcp6Parser::make_STRING("generated-prefix", driver.loc_);
-    }
-}
-       YY_BREAK
-case 25:
+case 20:
 YY_RULE_SETUP
-#line 310 "dhcp6_lexer.ll"
+#line 265 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
     case isc::dhcp::Parser6Context::SUBNET6:
     case isc::dhcp::Parser6Context::SHARED_NETWORK:
         return isc::dhcp::Dhcp6Parser::make_HOSTNAME_CHAR_SET(driver.loc_);
@@ -2937,13 +2831,12 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 26:
+case 21:
 YY_RULE_SETUP
-#line 322 "dhcp6_lexer.ll"
+#line 276 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
-    case isc::dhcp::Parser6Context::DHCP_DDNS:
     case isc::dhcp::Parser6Context::SUBNET6:
     case isc::dhcp::Parser6Context::SHARED_NETWORK:
         return isc::dhcp::Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT(driver.loc_);
@@ -2952,9 +2845,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 27:
+case 22:
 YY_RULE_SETUP
-#line 334 "dhcp6_lexer.ll"
+#line 287 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
@@ -2965,9 +2858,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 28:
+case 23:
 YY_RULE_SETUP
-#line 344 "dhcp6_lexer.ll"
+#line 297 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
@@ -2978,9 +2871,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 29:
+case 24:
 YY_RULE_SETUP
-#line 354 "dhcp6_lexer.ll"
+#line 307 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) {
@@ -2991,9 +2884,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 30:
+case 25:
 YY_RULE_SETUP
-#line 364 "dhcp6_lexer.ll"
+#line 317 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3004,9 +2897,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 31:
+case 26:
 YY_RULE_SETUP
-#line 374 "dhcp6_lexer.ll"
+#line 327 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3017,9 +2910,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 32:
+case 27:
 YY_RULE_SETUP
-#line 384 "dhcp6_lexer.ll"
+#line 337 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME:
@@ -3029,9 +2922,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 28:
 YY_RULE_SETUP
-#line 393 "dhcp6_lexer.ll"
+#line 346 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3042,9 +2935,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 34:
+case 29:
 YY_RULE_SETUP
-#line 403 "dhcp6_lexer.ll"
+#line 356 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3055,9 +2948,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 35:
+case 30:
 YY_RULE_SETUP
-#line 413 "dhcp6_lexer.ll"
+#line 366 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3068,9 +2961,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 36:
+case 31:
 YY_RULE_SETUP
-#line 423 "dhcp6_lexer.ll"
+#line 376 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -3081,9 +2974,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 37:
+case 32:
 YY_RULE_SETUP
-#line 433 "dhcp6_lexer.ll"
+#line 386 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3093,9 +2986,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 33:
 YY_RULE_SETUP
-#line 442 "dhcp6_lexer.ll"
+#line 395 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3105,9 +2998,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 34:
 YY_RULE_SETUP
-#line 451 "dhcp6_lexer.ll"
+#line 404 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3117,9 +3010,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 35:
 YY_RULE_SETUP
-#line 460 "dhcp6_lexer.ll"
+#line 413 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -3129,9 +3022,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 36:
 YY_RULE_SETUP
-#line 469 "dhcp6_lexer.ll"
+#line 422 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -3141,9 +3034,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 37:
 YY_RULE_SETUP
-#line 478 "dhcp6_lexer.ll"
+#line 431 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -3153,9 +3046,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 38:
 YY_RULE_SETUP
-#line 487 "dhcp6_lexer.ll"
+#line 440 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -3165,9 +3058,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 39:
 YY_RULE_SETUP
-#line 496 "dhcp6_lexer.ll"
+#line 449 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -3177,9 +3070,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 40:
 YY_RULE_SETUP
-#line 505 "dhcp6_lexer.ll"
+#line 458 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3189,9 +3082,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 41:
 YY_RULE_SETUP
-#line 514 "dhcp6_lexer.ll"
+#line 467 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SANITY_CHECKS:
@@ -3201,9 +3094,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 42:
 YY_RULE_SETUP
-#line 523 "dhcp6_lexer.ll"
+#line 476 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SANITY_CHECKS:
@@ -3213,9 +3106,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 43:
 YY_RULE_SETUP
-#line 532 "dhcp6_lexer.ll"
+#line 485 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3225,9 +3118,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 44:
 YY_RULE_SETUP
-#line 541 "dhcp6_lexer.ll"
+#line 494 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3237,9 +3130,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 45:
 YY_RULE_SETUP
-#line 550 "dhcp6_lexer.ll"
+#line 503 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3249,9 +3142,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 46:
 YY_RULE_SETUP
-#line 559 "dhcp6_lexer.ll"
+#line 512 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3261,9 +3154,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 47:
 YY_RULE_SETUP
-#line 568 "dhcp6_lexer.ll"
+#line 521 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG_CONTROL:
@@ -3273,9 +3166,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 48:
 YY_RULE_SETUP
-#line 577 "dhcp6_lexer.ll"
+#line 530 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG_CONTROL:
@@ -3285,9 +3178,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 49:
 YY_RULE_SETUP
-#line 586 "dhcp6_lexer.ll"
+#line 539 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
@@ -3297,9 +3190,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 50:
 YY_RULE_SETUP
-#line 595 "dhcp6_lexer.ll"
+#line 548 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3313,9 +3206,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 51:
 YY_RULE_SETUP
-#line 608 "dhcp6_lexer.ll"
+#line 561 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -3325,9 +3218,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 52:
 YY_RULE_SETUP
-#line 617 "dhcp6_lexer.ll"
+#line 570 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -3337,9 +3230,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 53:
 YY_RULE_SETUP
-#line 626 "dhcp6_lexer.ll"
+#line 579 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -3349,9 +3242,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 54:
 YY_RULE_SETUP
-#line 635 "dhcp6_lexer.ll"
+#line 588 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3363,9 +3256,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 55:
 YY_RULE_SETUP
-#line 646 "dhcp6_lexer.ll"
+#line 599 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3377,9 +3270,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 56:
 YY_RULE_SETUP
-#line 657 "dhcp6_lexer.ll"
+#line 610 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3391,9 +3284,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 57:
 YY_RULE_SETUP
-#line 668 "dhcp6_lexer.ll"
+#line 621 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3405,9 +3298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 58:
 YY_RULE_SETUP
-#line 679 "dhcp6_lexer.ll"
+#line 632 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3420,9 +3313,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 59:
 YY_RULE_SETUP
-#line 691 "dhcp6_lexer.ll"
+#line 644 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3434,9 +3327,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 60:
 YY_RULE_SETUP
-#line 702 "dhcp6_lexer.ll"
+#line 655 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3448,9 +3341,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 61:
 YY_RULE_SETUP
-#line 713 "dhcp6_lexer.ll"
+#line 666 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3462,9 +3355,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 62:
 YY_RULE_SETUP
-#line 724 "dhcp6_lexer.ll"
+#line 677 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3476,9 +3369,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 63:
 YY_RULE_SETUP
-#line 735 "dhcp6_lexer.ll"
+#line 688 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3490,9 +3383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 64:
 YY_RULE_SETUP
-#line 746 "dhcp6_lexer.ll"
+#line 699 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3504,9 +3397,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 65:
 YY_RULE_SETUP
-#line 757 "dhcp6_lexer.ll"
+#line 710 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3518,9 +3411,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 66:
 YY_RULE_SETUP
-#line 768 "dhcp6_lexer.ll"
+#line 721 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_ON_FAIL:
@@ -3530,9 +3423,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 67:
 YY_RULE_SETUP
-#line 777 "dhcp6_lexer.ll"
+#line 730 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_ON_FAIL:
@@ -3542,9 +3435,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 68:
 YY_RULE_SETUP
-#line 786 "dhcp6_lexer.ll"
+#line 739 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_ON_FAIL:
@@ -3554,9 +3447,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 69:
 YY_RULE_SETUP
-#line 795 "dhcp6_lexer.ll"
+#line 748 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3568,9 +3461,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 70:
 YY_RULE_SETUP
-#line 806 "dhcp6_lexer.ll"
+#line 759 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3582,9 +3475,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 71:
 YY_RULE_SETUP
-#line 817 "dhcp6_lexer.ll"
+#line 770 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3594,9 +3487,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 72:
 YY_RULE_SETUP
-#line 826 "dhcp6_lexer.ll"
+#line 779 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3608,9 +3501,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 73:
 YY_RULE_SETUP
-#line 837 "dhcp6_lexer.ll"
+#line 790 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3622,9 +3515,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 74:
 YY_RULE_SETUP
-#line 848 "dhcp6_lexer.ll"
+#line 801 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3636,9 +3529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 75:
 YY_RULE_SETUP
-#line 859 "dhcp6_lexer.ll"
+#line 812 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3650,9 +3543,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 76:
 YY_RULE_SETUP
-#line 870 "dhcp6_lexer.ll"
+#line 823 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3665,9 +3558,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 77:
 YY_RULE_SETUP
-#line 882 "dhcp6_lexer.ll"
+#line 835 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3680,9 +3573,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 78:
 YY_RULE_SETUP
-#line 894 "dhcp6_lexer.ll"
+#line 847 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3695,9 +3588,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 79:
 YY_RULE_SETUP
-#line 906 "dhcp6_lexer.ll"
+#line 859 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3710,9 +3603,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 80:
 YY_RULE_SETUP
-#line 918 "dhcp6_lexer.ll"
+#line 871 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3725,9 +3618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 81:
 YY_RULE_SETUP
-#line 930 "dhcp6_lexer.ll"
+#line 883 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3740,9 +3633,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 82:
 YY_RULE_SETUP
-#line 942 "dhcp6_lexer.ll"
+#line 895 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3754,9 +3647,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 83:
 YY_RULE_SETUP
-#line 953 "dhcp6_lexer.ll"
+#line 906 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3768,9 +3661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 84:
 YY_RULE_SETUP
-#line 964 "dhcp6_lexer.ll"
+#line 917 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3780,9 +3673,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 85:
 YY_RULE_SETUP
-#line 973 "dhcp6_lexer.ll"
+#line 926 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3792,9 +3685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 86:
 YY_RULE_SETUP
-#line 982 "dhcp6_lexer.ll"
+#line 935 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3804,9 +3697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 87:
 YY_RULE_SETUP
-#line 991 "dhcp6_lexer.ll"
+#line 944 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3818,9 +3711,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 88:
 YY_RULE_SETUP
-#line 1002 "dhcp6_lexer.ll"
+#line 955 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3832,9 +3725,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 89:
 YY_RULE_SETUP
-#line 1013 "dhcp6_lexer.ll"
+#line 966 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3844,9 +3737,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 90:
 YY_RULE_SETUP
-#line 1022 "dhcp6_lexer.ll"
+#line 975 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3856,9 +3749,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 91:
 YY_RULE_SETUP
-#line 1031 "dhcp6_lexer.ll"
+#line 984 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3870,9 +3763,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 92:
 YY_RULE_SETUP
-#line 1042 "dhcp6_lexer.ll"
+#line 995 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3884,9 +3777,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 93:
 YY_RULE_SETUP
-#line 1053 "dhcp6_lexer.ll"
+#line 1006 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3898,9 +3791,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 94:
 YY_RULE_SETUP
-#line 1064 "dhcp6_lexer.ll"
+#line 1017 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3912,9 +3805,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 95:
 YY_RULE_SETUP
-#line 1075 "dhcp6_lexer.ll"
+#line 1028 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3926,9 +3819,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 96:
 YY_RULE_SETUP
-#line 1086 "dhcp6_lexer.ll"
+#line 1039 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3940,9 +3833,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 97:
 YY_RULE_SETUP
-#line 1097 "dhcp6_lexer.ll"
+#line 1050 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3954,9 +3847,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 98:
 YY_RULE_SETUP
-#line 1108 "dhcp6_lexer.ll"
+#line 1061 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3968,9 +3861,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 99:
 YY_RULE_SETUP
-#line 1119 "dhcp6_lexer.ll"
+#line 1072 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3982,9 +3875,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 100:
 YY_RULE_SETUP
-#line 1130 "dhcp6_lexer.ll"
+#line 1083 "dhcp6_lexer.ll"
 {
     if (driver.ctx_ == isc::dhcp::Parser6Context::DDNS_CONFLICT_RESOLUTION_MODE) {
         return isc::dhcp::Dhcp6Parser::make_CHECK_WITH_DHCID(driver.loc_);
@@ -3994,9 +3887,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 106:
+case 101:
 YY_RULE_SETUP
-#line 1139 "dhcp6_lexer.ll"
+#line 1092 "dhcp6_lexer.ll"
 {
     if (driver.ctx_ == isc::dhcp::Parser6Context::DDNS_CONFLICT_RESOLUTION_MODE) {
         return isc::dhcp::Dhcp6Parser::make_NO_CHECK_WITH_DHCID(driver.loc_);
@@ -4006,9 +3899,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 107:
+case 102:
 YY_RULE_SETUP
-#line 1148 "dhcp6_lexer.ll"
+#line 1101 "dhcp6_lexer.ll"
 {
     if (driver.ctx_ == isc::dhcp::Parser6Context::DDNS_CONFLICT_RESOLUTION_MODE) {
         return isc::dhcp::Dhcp6Parser::make_CHECK_EXISTS_WITH_DHCID(driver.loc_);
@@ -4018,9 +3911,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 108:
+case 103:
 YY_RULE_SETUP
-#line 1157 "dhcp6_lexer.ll"
+#line 1110 "dhcp6_lexer.ll"
 {
     if (driver.ctx_ == isc::dhcp::Parser6Context::DDNS_CONFLICT_RESOLUTION_MODE) {
         return isc::dhcp::Dhcp6Parser::make_NO_CHECK_WITHOUT_DHCID(driver.loc_);
@@ -4030,9 +3923,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 109:
+case 104:
 YY_RULE_SETUP
-#line 1169 "dhcp6_lexer.ll"
+#line 1122 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4044,9 +3937,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 105:
 YY_RULE_SETUP
-#line 1180 "dhcp6_lexer.ll"
+#line 1133 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4057,9 +3950,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 106:
 YY_RULE_SETUP
-#line 1190 "dhcp6_lexer.ll"
+#line 1143 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4071,9 +3964,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 107:
 YY_RULE_SETUP
-#line 1201 "dhcp6_lexer.ll"
+#line 1154 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4083,9 +3976,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 108:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1163 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4095,9 +3988,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 109:
 YY_RULE_SETUP
-#line 1219 "dhcp6_lexer.ll"
+#line 1172 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4113,9 +4006,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 110:
 YY_RULE_SETUP
-#line 1234 "dhcp6_lexer.ll"
+#line 1187 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -4132,9 +4025,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 111:
 YY_RULE_SETUP
-#line 1250 "dhcp6_lexer.ll"
+#line 1203 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4144,9 +4037,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 112:
 YY_RULE_SETUP
-#line 1259 "dhcp6_lexer.ll"
+#line 1212 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4156,9 +4049,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 113:
 YY_RULE_SETUP
-#line 1268 "dhcp6_lexer.ll"
+#line 1221 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4168,9 +4061,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 114:
 YY_RULE_SETUP
-#line 1277 "dhcp6_lexer.ll"
+#line 1230 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4180,9 +4073,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 115:
 YY_RULE_SETUP
-#line 1286 "dhcp6_lexer.ll"
+#line 1239 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4192,9 +4085,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 116:
 YY_RULE_SETUP
-#line 1295 "dhcp6_lexer.ll"
+#line 1248 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -4204,9 +4097,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 117:
 YY_RULE_SETUP
-#line 1304 "dhcp6_lexer.ll"
+#line 1257 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -4216,9 +4109,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 118:
 YY_RULE_SETUP
-#line 1313 "dhcp6_lexer.ll"
+#line 1266 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -4228,9 +4121,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 119:
 YY_RULE_SETUP
-#line 1322 "dhcp6_lexer.ll"
+#line 1275 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -4240,9 +4133,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 120:
 YY_RULE_SETUP
-#line 1331 "dhcp6_lexer.ll"
+#line 1284 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -4252,9 +4145,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 121:
 YY_RULE_SETUP
-#line 1340 "dhcp6_lexer.ll"
+#line 1293 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -4264,9 +4157,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 122:
 YY_RULE_SETUP
-#line 1349 "dhcp6_lexer.ll"
+#line 1302 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -4276,9 +4169,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 123:
 YY_RULE_SETUP
-#line 1358 "dhcp6_lexer.ll"
+#line 1311 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4303,9 +4196,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 124:
 YY_RULE_SETUP
-#line 1382 "dhcp6_lexer.ll"
+#line 1335 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4330,9 +4223,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 125:
 YY_RULE_SETUP
-#line 1406 "dhcp6_lexer.ll"
+#line 1359 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4342,9 +4235,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 126:
 YY_RULE_SETUP
-#line 1415 "dhcp6_lexer.ll"
+#line 1368 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4355,9 +4248,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 127:
 YY_RULE_SETUP
-#line 1425 "dhcp6_lexer.ll"
+#line 1378 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4368,9 +4261,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 128:
 YY_RULE_SETUP
-#line 1435 "dhcp6_lexer.ll"
+#line 1388 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4380,9 +4273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 129:
 YY_RULE_SETUP
-#line 1444 "dhcp6_lexer.ll"
+#line 1397 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4393,9 +4286,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 130:
 YY_RULE_SETUP
-#line 1454 "dhcp6_lexer.ll"
+#line 1407 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4407,9 +4300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 131:
 YY_RULE_SETUP
-#line 1465 "dhcp6_lexer.ll"
+#line 1418 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4419,9 +4312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 132:
 YY_RULE_SETUP
-#line 1474 "dhcp6_lexer.ll"
+#line 1427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4431,9 +4324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 133:
 YY_RULE_SETUP
-#line 1483 "dhcp6_lexer.ll"
+#line 1436 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4443,9 +4336,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 134:
 YY_RULE_SETUP
-#line 1492 "dhcp6_lexer.ll"
+#line 1445 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4455,9 +4348,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 135:
 YY_RULE_SETUP
-#line 1501 "dhcp6_lexer.ll"
+#line 1454 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -4467,9 +4360,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 136:
 YY_RULE_SETUP
-#line 1510 "dhcp6_lexer.ll"
+#line 1463 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4481,9 +4374,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 137:
 YY_RULE_SETUP
-#line 1521 "dhcp6_lexer.ll"
+#line 1474 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4495,9 +4388,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 138:
 YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4509,9 +4402,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 139:
 YY_RULE_SETUP
-#line 1543 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4522,9 +4415,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 140:
 YY_RULE_SETUP
-#line 1553 "dhcp6_lexer.ll"
+#line 1506 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4534,9 +4427,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 141:
 YY_RULE_SETUP
-#line 1562 "dhcp6_lexer.ll"
+#line 1515 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4546,9 +4439,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 142:
 YY_RULE_SETUP
-#line 1571 "dhcp6_lexer.ll"
+#line 1524 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4558,9 +4451,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 143:
 YY_RULE_SETUP
-#line 1580 "dhcp6_lexer.ll"
+#line 1533 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4572,9 +4465,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 144:
 YY_RULE_SETUP
-#line 1591 "dhcp6_lexer.ll"
+#line 1544 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4586,9 +4479,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 145:
 YY_RULE_SETUP
-#line 1602 "dhcp6_lexer.ll"
+#line 1555 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4600,9 +4493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 146:
 YY_RULE_SETUP
-#line 1613 "dhcp6_lexer.ll"
+#line 1566 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4614,9 +4507,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 147:
 YY_RULE_SETUP
-#line 1624 "dhcp6_lexer.ll"
+#line 1577 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4628,9 +4521,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 148:
 YY_RULE_SETUP
-#line 1635 "dhcp6_lexer.ll"
+#line 1588 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4640,9 +4533,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 149:
 YY_RULE_SETUP
-#line 1644 "dhcp6_lexer.ll"
+#line 1597 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4652,9 +4545,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 150:
 YY_RULE_SETUP
-#line 1653 "dhcp6_lexer.ll"
+#line 1606 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4664,9 +4557,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 151:
 YY_RULE_SETUP
-#line 1662 "dhcp6_lexer.ll"
+#line 1615 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4676,9 +4569,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 152:
 YY_RULE_SETUP
-#line 1671 "dhcp6_lexer.ll"
+#line 1624 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4688,9 +4581,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 153:
 YY_RULE_SETUP
-#line 1680 "dhcp6_lexer.ll"
+#line 1633 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4700,9 +4593,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 154:
 YY_RULE_SETUP
-#line 1689 "dhcp6_lexer.ll"
+#line 1642 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4712,9 +4605,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 155:
 YY_RULE_SETUP
-#line 1698 "dhcp6_lexer.ll"
+#line 1651 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4724,9 +4617,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 156:
 YY_RULE_SETUP
-#line 1707 "dhcp6_lexer.ll"
+#line 1660 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4736,9 +4629,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 157:
 YY_RULE_SETUP
-#line 1716 "dhcp6_lexer.ll"
+#line 1669 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4748,9 +4641,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 158:
 YY_RULE_SETUP
-#line 1725 "dhcp6_lexer.ll"
+#line 1678 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4761,9 +4654,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 159:
 YY_RULE_SETUP
-#line 1735 "dhcp6_lexer.ll"
+#line 1688 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4776,9 +4669,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 160:
 YY_RULE_SETUP
-#line 1747 "dhcp6_lexer.ll"
+#line 1700 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4792,9 +4685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 161:
 YY_RULE_SETUP
-#line 1760 "dhcp6_lexer.ll"
+#line 1713 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4804,9 +4697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 162:
 YY_RULE_SETUP
-#line 1769 "dhcp6_lexer.ll"
+#line 1722 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4816,9 +4709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 163:
 YY_RULE_SETUP
-#line 1778 "dhcp6_lexer.ll"
+#line 1731 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4828,9 +4721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 164:
 YY_RULE_SETUP
-#line 1787 "dhcp6_lexer.ll"
+#line 1740 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4841,9 +4734,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 165:
 YY_RULE_SETUP
-#line 1797 "dhcp6_lexer.ll"
+#line 1750 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4854,9 +4747,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 166:
 YY_RULE_SETUP
-#line 1807 "dhcp6_lexer.ll"
+#line 1760 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4866,9 +4759,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 167:
 YY_RULE_SETUP
-#line 1816 "dhcp6_lexer.ll"
+#line 1769 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -4880,9 +4773,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 168:
 YY_RULE_SETUP
-#line 1827 "dhcp6_lexer.ll"
+#line 1780 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4893,9 +4786,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 169:
 YY_RULE_SETUP
-#line 1837 "dhcp6_lexer.ll"
+#line 1790 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4905,9 +4798,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 170:
 YY_RULE_SETUP
-#line 1846 "dhcp6_lexer.ll"
+#line 1799 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4918,9 +4811,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 171:
 YY_RULE_SETUP
-#line 1856 "dhcp6_lexer.ll"
+#line 1809 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4931,9 +4824,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 172:
 YY_RULE_SETUP
-#line 1866 "dhcp6_lexer.ll"
+#line 1819 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4943,9 +4836,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 173:
 YY_RULE_SETUP
-#line 1875 "dhcp6_lexer.ll"
+#line 1828 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4955,9 +4848,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 174:
 YY_RULE_SETUP
-#line 1884 "dhcp6_lexer.ll"
+#line 1837 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4967,9 +4860,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 175:
 YY_RULE_SETUP
-#line 1893 "dhcp6_lexer.ll"
+#line 1846 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4979,9 +4872,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 176:
 YY_RULE_SETUP
-#line 1902 "dhcp6_lexer.ll"
+#line 1855 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4992,9 +4885,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 177:
 YY_RULE_SETUP
-#line 1912 "dhcp6_lexer.ll"
+#line 1865 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5004,9 +4897,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 178:
 YY_RULE_SETUP
-#line 1921 "dhcp6_lexer.ll"
+#line 1874 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -5016,9 +4909,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 184:
+case 179:
 YY_RULE_SETUP
-#line 1930 "dhcp6_lexer.ll"
+#line 1883 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -5028,9 +4921,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 185:
+case 180:
 YY_RULE_SETUP
-#line 1939 "dhcp6_lexer.ll"
+#line 1892 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5040,9 +4933,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 186:
+case 181:
 YY_RULE_SETUP
-#line 1948 "dhcp6_lexer.ll"
+#line 1901 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -5052,9 +4945,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 187:
+case 182:
 YY_RULE_SETUP
-#line 1957 "dhcp6_lexer.ll"
+#line 1910 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -5064,9 +4957,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 188:
+case 183:
 YY_RULE_SETUP
-#line 1966 "dhcp6_lexer.ll"
+#line 1919 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -5076,9 +4969,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 189:
+case 184:
 YY_RULE_SETUP
-#line 1975 "dhcp6_lexer.ll"
+#line 1928 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -5088,9 +4981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 190:
+case 185:
 YY_RULE_SETUP
-#line 1984 "dhcp6_lexer.ll"
+#line 1937 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -5100,9 +4993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 191:
+case 186:
 YY_RULE_SETUP
-#line 1993 "dhcp6_lexer.ll"
+#line 1946 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -5112,9 +5005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 192:
+case 187:
 YY_RULE_SETUP
-#line 2002 "dhcp6_lexer.ll"
+#line 1955 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -5124,9 +5017,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 193:
+case 188:
 YY_RULE_SETUP
-#line 2011 "dhcp6_lexer.ll"
+#line 1964 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5136,9 +5029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 194:
+case 189:
 YY_RULE_SETUP
-#line 2020 "dhcp6_lexer.ll"
+#line 1973 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5148,9 +5041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 195:
+case 190:
 YY_RULE_SETUP
-#line 2029 "dhcp6_lexer.ll"
+#line 1982 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5160,9 +5053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 196:
+case 191:
 YY_RULE_SETUP
-#line 2038 "dhcp6_lexer.ll"
+#line 1991 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5172,9 +5065,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 197:
+case 192:
 YY_RULE_SETUP
-#line 2047 "dhcp6_lexer.ll"
+#line 2000 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5184,9 +5077,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 198:
+case 193:
 YY_RULE_SETUP
-#line 2056 "dhcp6_lexer.ll"
+#line 2009 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5196,9 +5089,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 199:
+case 194:
 YY_RULE_SETUP
-#line 2065 "dhcp6_lexer.ll"
+#line 2018 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -5208,9 +5101,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 200:
+case 195:
 YY_RULE_SETUP
-#line 2074 "dhcp6_lexer.ll"
+#line 2027 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5220,9 +5113,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 201:
+case 196:
 YY_RULE_SETUP
-#line 2083 "dhcp6_lexer.ll"
+#line 2036 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5232,9 +5125,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 202:
+case 197:
 YY_RULE_SETUP
-#line 2092 "dhcp6_lexer.ll"
+#line 2045 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -5244,9 +5137,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 203:
+case 198:
 YY_RULE_SETUP
-#line 2101 "dhcp6_lexer.ll"
+#line 2054 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -5256,9 +5149,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 204:
+case 199:
 YY_RULE_SETUP
-#line 2110 "dhcp6_lexer.ll"
+#line 2063 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -5268,9 +5161,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 205:
+case 200:
 YY_RULE_SETUP
-#line 2119 "dhcp6_lexer.ll"
+#line 2072 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5280,9 +5173,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 206:
+case 201:
 YY_RULE_SETUP
-#line 2128 "dhcp6_lexer.ll"
+#line 2081 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -5292,9 +5185,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 207:
+case 202:
 YY_RULE_SETUP
-#line 2137 "dhcp6_lexer.ll"
+#line 2090 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -5304,9 +5197,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 208:
+case 203:
 YY_RULE_SETUP
-#line 2146 "dhcp6_lexer.ll"
+#line 2099 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5316,9 +5209,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 209:
+case 204:
 YY_RULE_SETUP
-#line 2155 "dhcp6_lexer.ll"
+#line 2108 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -5328,9 +5221,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 210:
+case 205:
 YY_RULE_SETUP
-#line 2164 "dhcp6_lexer.ll"
+#line 2117 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -5340,9 +5233,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 211:
+case 206:
 YY_RULE_SETUP
-#line 2173 "dhcp6_lexer.ll"
+#line 2126 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -5352,9 +5245,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 212:
+case 207:
 YY_RULE_SETUP
-#line 2182 "dhcp6_lexer.ll"
+#line 2135 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5364,9 +5257,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 213:
+case 208:
 YY_RULE_SETUP
-#line 2191 "dhcp6_lexer.ll"
+#line 2144 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5376,9 +5269,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 214:
+case 209:
 YY_RULE_SETUP
-#line 2200 "dhcp6_lexer.ll"
+#line 2153 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5388,9 +5281,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 215:
+case 210:
 YY_RULE_SETUP
-#line 2209 "dhcp6_lexer.ll"
+#line 2162 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5400,9 +5293,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 216:
+case 211:
 YY_RULE_SETUP
-#line 2218 "dhcp6_lexer.ll"
+#line 2171 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -5412,9 +5305,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 217:
+case 212:
 YY_RULE_SETUP
-#line 2227 "dhcp6_lexer.ll"
+#line 2180 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::COMPATIBILITY:
@@ -5424,9 +5317,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 218:
+case 213:
 YY_RULE_SETUP
-#line 2236 "dhcp6_lexer.ll"
+#line 2189 "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.
@@ -5528,10 +5421,10 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 219:
-/* rule 219 can match eol */
+case 214:
+/* rule 214 can match eol */
 YY_RULE_SETUP
-#line 2337 "dhcp6_lexer.ll"
+#line 2290 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     std::string raw(yytext+1);
@@ -5548,10 +5441,10 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 220:
-/* rule 220 can match eol */
+case 215:
+/* rule 215 can match eol */
 YY_RULE_SETUP
-#line 2353 "dhcp6_lexer.ll"
+#line 2306 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     std::string raw(yytext+1);
@@ -5601,9 +5494,9 @@ YY_RULE_SETUP
                  pos);
 }
        YY_BREAK
-case 221:
+case 216:
 YY_RULE_SETUP
-#line 2402 "dhcp6_lexer.ll"
+#line 2355 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     std::string raw(yytext+1);
@@ -5612,9 +5505,9 @@ YY_RULE_SETUP
                  raw.size() + 1);
 }
        YY_BREAK
-case 222:
+case 217:
 YY_RULE_SETUP
-#line 2410 "dhcp6_lexer.ll"
+#line 2363 "dhcp6_lexer.ll"
 {
     /* Bad string with an open unicode escape at the end */
     std::string raw(yytext+1);
@@ -5630,39 +5523,39 @@ YY_RULE_SETUP
                  pos + 1);
 }
        YY_BREAK
-case 223:
+case 218:
 YY_RULE_SETUP
-#line 2425 "dhcp6_lexer.ll"
+#line 2378 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 224:
+case 219:
 YY_RULE_SETUP
-#line 2426 "dhcp6_lexer.ll"
+#line 2379 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 225:
+case 220:
 YY_RULE_SETUP
-#line 2427 "dhcp6_lexer.ll"
+#line 2380 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 226:
+case 221:
 YY_RULE_SETUP
-#line 2428 "dhcp6_lexer.ll"
+#line 2381 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 227:
+case 222:
 YY_RULE_SETUP
-#line 2429 "dhcp6_lexer.ll"
+#line 2382 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 228:
+case 223:
 YY_RULE_SETUP
-#line 2430 "dhcp6_lexer.ll"
+#line 2383 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 229:
+case 224:
 YY_RULE_SETUP
-#line 2432 "dhcp6_lexer.ll"
+#line 2385 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -5681,9 +5574,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 230:
+case 225:
 YY_RULE_SETUP
-#line 2450 "dhcp6_lexer.ll"
+#line 2403 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -5697,43 +5590,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 231:
+case 226:
 YY_RULE_SETUP
-#line 2463 "dhcp6_lexer.ll"
+#line 2416 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 232:
+case 227:
 YY_RULE_SETUP
-#line 2468 "dhcp6_lexer.ll"
+#line 2421 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 233:
+case 228:
 YY_RULE_SETUP
-#line 2472 "dhcp6_lexer.ll"
+#line 2425 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 234:
+case 229:
 YY_RULE_SETUP
-#line 2474 "dhcp6_lexer.ll"
+#line 2427 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 235:
+case 230:
 YY_RULE_SETUP
-#line 2476 "dhcp6_lexer.ll"
+#line 2429 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 236:
+case 231:
 YY_RULE_SETUP
-#line 2478 "dhcp6_lexer.ll"
+#line 2431 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2480 "dhcp6_lexer.ll"
+#line 2433 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -5757,12 +5650,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 237:
+case 232:
 YY_RULE_SETUP
-#line 2503 "dhcp6_lexer.ll"
+#line 2456 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 5765 "dhcp6_lexer.cc"
+#line 5659 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -6081,7 +5974,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 >= 2318 )
+                       if ( yy_current_state >= 2236 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -6114,11 +6007,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 >= 2318 )
+               if ( yy_current_state >= 2236 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 2317);
+       yy_is_jam = (yy_current_state == 2235);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6867,7 +6760,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2503 "dhcp6_lexer.ll"
+#line 2456 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 457646d1ab269b01b6c0619e8dcc59c11bbcf679..aabdf623ee0f352bc4b3342deac7abc9f573686b 100644 (file)
@@ -407,79 +407,79 @@ namespace isc { namespace dhcp {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 413 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 419 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 425 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 431 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 437 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 443 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 449 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 455 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_db_type: // db_type
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 461 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_on_fail_mode: // on_fail_mode
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 467 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_hr_mode: // hr_mode
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 473 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_duid_type: // duid_type
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 479 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 314 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 485 "dhcp6_parser.cc"
         break;
@@ -760,133 +760,133 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 323 "dhcp6_parser.yy"
+#line 318 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 766 "dhcp6_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 324 "dhcp6_parser.yy"
+#line 319 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 772 "dhcp6_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 325 "dhcp6_parser.yy"
+#line 320 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.DHCP6; }
 #line 778 "dhcp6_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 326 "dhcp6_parser.yy"
+#line 321 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 784 "dhcp6_parser.cc"
     break;
 
   case 10: // $@5: %empty
-#line 327 "dhcp6_parser.yy"
+#line 322 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET6; }
 #line 790 "dhcp6_parser.cc"
     break;
 
   case 12: // $@6: %empty
-#line 328 "dhcp6_parser.yy"
+#line 323 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 796 "dhcp6_parser.cc"
     break;
 
   case 14: // $@7: %empty
-#line 329 "dhcp6_parser.yy"
+#line 324 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.PD_POOLS; }
 #line 802 "dhcp6_parser.cc"
     break;
 
   case 16: // $@8: %empty
-#line 330 "dhcp6_parser.yy"
+#line 325 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 808 "dhcp6_parser.cc"
     break;
 
   case 18: // $@9: %empty
-#line 331 "dhcp6_parser.yy"
+#line 326 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.DHCP6; }
 #line 814 "dhcp6_parser.cc"
     break;
 
   case 20: // $@10: %empty
-#line 332 "dhcp6_parser.yy"
+#line 327 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 820 "dhcp6_parser.cc"
     break;
 
   case 22: // $@11: %empty
-#line 333 "dhcp6_parser.yy"
+#line 328 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 826 "dhcp6_parser.cc"
     break;
 
   case 24: // $@12: %empty
-#line 334 "dhcp6_parser.yy"
+#line 329 "dhcp6_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 832 "dhcp6_parser.cc"
     break;
 
   case 26: // $@13: %empty
-#line 335 "dhcp6_parser.yy"
+#line 330 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 838 "dhcp6_parser.cc"
     break;
 
   case 28: // $@14: %empty
-#line 336 "dhcp6_parser.yy"
+#line 331 "dhcp6_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 844 "dhcp6_parser.cc"
     break;
 
   case 30: // value: "integer"
-#line 344 "dhcp6_parser.yy"
+#line 339 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 850 "dhcp6_parser.cc"
     break;
 
   case 31: // value: "floating point"
-#line 345 "dhcp6_parser.yy"
+#line 340 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 856 "dhcp6_parser.cc"
     break;
 
   case 32: // value: "boolean"
-#line 346 "dhcp6_parser.yy"
+#line 341 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 862 "dhcp6_parser.cc"
     break;
 
   case 33: // value: "constant string"
-#line 347 "dhcp6_parser.yy"
+#line 342 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 868 "dhcp6_parser.cc"
     break;
 
   case 34: // value: "null"
-#line 348 "dhcp6_parser.yy"
+#line 343 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 874 "dhcp6_parser.cc"
     break;
 
   case 35: // value: map2
-#line 349 "dhcp6_parser.yy"
+#line 344 "dhcp6_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 880 "dhcp6_parser.cc"
     break;
 
   case 36: // value: list_generic
-#line 350 "dhcp6_parser.yy"
+#line 345 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 886 "dhcp6_parser.cc"
     break;
 
   case 37: // sub_json: value
-#line 353 "dhcp6_parser.yy"
+#line 348 "dhcp6_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -895,7 +895,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38: // $@15: %empty
-#line 358 "dhcp6_parser.yy"
+#line 353 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -906,7 +906,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39: // map2: "{" $@15 map_content "}"
-#line 363 "dhcp6_parser.yy"
+#line 358 "dhcp6_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -916,13 +916,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 40: // map_value: map2
-#line 369 "dhcp6_parser.yy"
+#line 364 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 922 "dhcp6_parser.cc"
     break;
 
   case 43: // not_empty_map: "constant string" ":" value
-#line 376 "dhcp6_parser.yy"
+#line 371 "dhcp6_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
@@ -932,7 +932,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 381 "dhcp6_parser.yy"
+#line 376 "dhcp6_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -943,7 +943,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45: // not_empty_map: not_empty_map ","
-#line 387 "dhcp6_parser.yy"
+#line 382 "dhcp6_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46: // $@16: %empty
-#line 392 "dhcp6_parser.yy"
+#line 387 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -960,7 +960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47: // list_generic: "[" $@16 list_content "]"
-#line 395 "dhcp6_parser.yy"
+#line 390 "dhcp6_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -968,7 +968,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50: // not_empty_list: value
-#line 403 "dhcp6_parser.yy"
+#line 398 "dhcp6_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51: // not_empty_list: not_empty_list "," value
-#line 407 "dhcp6_parser.yy"
+#line 402 "dhcp6_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -986,7 +986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52: // not_empty_list: not_empty_list ","
-#line 411 "dhcp6_parser.yy"
+#line 406 "dhcp6_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -994,7 +994,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53: // $@17: %empty
-#line 417 "dhcp6_parser.yy"
+#line 412 "dhcp6_parser.yy"
                               {
     // List parsing about to start
 }
@@ -1002,7 +1002,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54: // list_strings: "[" $@17 list_strings_content "]"
-#line 419 "dhcp6_parser.yy"
+#line 414 "dhcp6_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -1011,7 +1011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57: // not_empty_list_strings: "constant string"
-#line 428 "dhcp6_parser.yy"
+#line 423 "dhcp6_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1020,7 +1020,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 432 "dhcp6_parser.yy"
+#line 427 "dhcp6_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1029,7 +1029,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59: // not_empty_list_strings: not_empty_list_strings ","
-#line 436 "dhcp6_parser.yy"
+#line 431 "dhcp6_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60: // unknown_map_entry: "constant string" ":"
-#line 446 "dhcp6_parser.yy"
+#line 441 "dhcp6_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61: // $@18: %empty
-#line 455 "dhcp6_parser.yy"
+#line 450 "dhcp6_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1059,7 +1059,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62: // syntax_map: "{" $@18 global_object "}"
-#line 460 "dhcp6_parser.yy"
+#line 455 "dhcp6_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1072,7 +1072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63: // $@19: %empty
-#line 470 "dhcp6_parser.yy"
+#line 465 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1087,7 +1087,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}"
-#line 479 "dhcp6_parser.yy"
+#line 474 "dhcp6_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1097,7 +1097,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66: // global_object_comma: global_object ","
-#line 487 "dhcp6_parser.yy"
+#line 482 "dhcp6_parser.yy"
                                          {
     ctx.warnAboutExtraCommas(yystack_[0].location);
 }
@@ -1105,7 +1105,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 67: // $@20: %empty
-#line 493 "dhcp6_parser.yy"
+#line 488 "dhcp6_parser.yy"
                           {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1115,7 +1115,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 68: // sub_dhcp6: "{" $@20 global_params "}"
-#line 497 "dhcp6_parser.yy"
+#line 492 "dhcp6_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1124,7 +1124,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71: // global_params: global_params ","
-#line 504 "dhcp6_parser.yy"
+#line 499 "dhcp6_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
@@ -1132,7 +1132,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 141: // $@21: %empty
-#line 582 "dhcp6_parser.yy"
+#line 577 "dhcp6_parser.yy"
                                {
     ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1141,7 +1141,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 142: // data_directory: "data-directory" $@21 ":" "constant string"
-#line 585 "dhcp6_parser.yy"
+#line 580 "dhcp6_parser.yy"
                {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
@@ -1151,7 +1151,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 143: // preferred_lifetime: "preferred-lifetime" ":" "integer"
-#line 591 "dhcp6_parser.yy"
+#line 586 "dhcp6_parser.yy"
                                                      {
     ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1161,7 +1161,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 144: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
-#line 597 "dhcp6_parser.yy"
+#line 592 "dhcp6_parser.yy"
                                                              {
     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)));
@@ -1171,7 +1171,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 145: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
-#line 603 "dhcp6_parser.yy"
+#line 598 "dhcp6_parser.yy"
                                                              {
     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)));
@@ -1181,7 +1181,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 146: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 609 "dhcp6_parser.yy"
+#line 604 "dhcp6_parser.yy"
                                              {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 147: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 615 "dhcp6_parser.yy"
+#line 610 "dhcp6_parser.yy"
                                                      {
     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)));
@@ -1201,7 +1201,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 148: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 621 "dhcp6_parser.yy"
+#line 616 "dhcp6_parser.yy"
                                                      {
     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)));
@@ -1211,7 +1211,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 149: // renew_timer: "renew-timer" ":" "integer"
-#line 627 "dhcp6_parser.yy"
+#line 622 "dhcp6_parser.yy"
                                        {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1221,7 +1221,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 150: // rebind_timer: "rebind-timer" ":" "integer"
-#line 633 "dhcp6_parser.yy"
+#line 628 "dhcp6_parser.yy"
                                          {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1231,7 +1231,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 151: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 639 "dhcp6_parser.yy"
+#line 634 "dhcp6_parser.yy"
                                                        {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1241,7 +1241,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 152: // t1_percent: "t1-percent" ":" "floating point"
-#line 645 "dhcp6_parser.yy"
+#line 640 "dhcp6_parser.yy"
                                    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1251,7 +1251,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 153: // t2_percent: "t2-percent" ":" "floating point"
-#line 651 "dhcp6_parser.yy"
+#line 646 "dhcp6_parser.yy"
                                    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1261,7 +1261,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 154: // cache_threshold: "cache-threshold" ":" "floating point"
-#line 657 "dhcp6_parser.yy"
+#line 652 "dhcp6_parser.yy"
                                              {
     ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
     ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1271,7 +1271,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 155: // cache_max_age: "cache-max-age" ":" "integer"
-#line 663 "dhcp6_parser.yy"
+#line 658 "dhcp6_parser.yy"
                                            {
     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)));
@@ -1281,7 +1281,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 156: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 669 "dhcp6_parser.yy"
+#line 664 "dhcp6_parser.yy"
                                                                  {
     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)));
@@ -1291,7 +1291,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 157: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 675 "dhcp6_parser.yy"
+#line 670 "dhcp6_parser.yy"
                                                    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1301,7 +1301,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 158: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 681 "dhcp6_parser.yy"
+#line 676 "dhcp6_parser.yy"
                                                                {
     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)));
@@ -1311,7 +1311,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 159: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 687 "dhcp6_parser.yy"
+#line 682 "dhcp6_parser.yy"
                                                                        {
     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)));
@@ -1321,16 +1321,16 @@ namespace isc { namespace dhcp {
     break;
 
   case 160: // $@22: %empty
-#line 693 "dhcp6_parser.yy"
+#line 688 "dhcp6_parser.yy"
                                                    {
-    ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
+    ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
 }
 #line 1330 "dhcp6_parser.cc"
     break;
 
   case 161: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 696 "dhcp6_parser.yy"
+#line 691 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1339,7 +1339,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 162: // ddns_replace_client_name_value: "when-present"
-#line 702 "dhcp6_parser.yy"
+#line 697 "dhcp6_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1347,7 +1347,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 163: // ddns_replace_client_name_value: "never"
-#line 705 "dhcp6_parser.yy"
+#line 700 "dhcp6_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1355,7 +1355,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 164: // ddns_replace_client_name_value: "always"
-#line 708 "dhcp6_parser.yy"
+#line 703 "dhcp6_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1363,7 +1363,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 165: // ddns_replace_client_name_value: "when-not-present"
-#line 711 "dhcp6_parser.yy"
+#line 706 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1371,16 +1371,16 @@ namespace isc { namespace dhcp {
     break;
 
   case 166: // ddns_replace_client_name_value: "boolean"
-#line 714 "dhcp6_parser.yy"
+#line 709 "dhcp6_parser.yy"
             {
-      error(yystack_[0].location, "boolean values for the replace-client-name are "
+      error(yystack_[0].location, "boolean values for the ddns-replace-client-name are "
                 "no longer supported");
       }
 #line 1380 "dhcp6_parser.cc"
     break;
 
   case 167: // $@23: %empty
-#line 720 "dhcp6_parser.yy"
+#line 715 "dhcp6_parser.yy"
                                              {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1389,7 +1389,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 168: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 723 "dhcp6_parser.yy"
+#line 718 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1399,7 +1399,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 169: // $@24: %empty
-#line 729 "dhcp6_parser.yy"
+#line 724 "dhcp6_parser.yy"
                                                {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1408,7 +1408,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 170: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 732 "dhcp6_parser.yy"
+#line 727 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1418,7 +1418,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 171: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
-#line 738 "dhcp6_parser.yy"
+#line 733 "dhcp6_parser.yy"
                                                          {
     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)));
@@ -1428,7 +1428,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 172: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 747 "dhcp6_parser.yy"
+#line 742 "dhcp6_parser.yy"
                                                                          {
     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)));
@@ -1442,7 +1442,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 173: // $@25: %empty
-#line 757 "dhcp6_parser.yy"
+#line 752 "dhcp6_parser.yy"
                                                              {
     ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE);
@@ -1451,7 +1451,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 174: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value
-#line 760 "dhcp6_parser.yy"
+#line 755 "dhcp6_parser.yy"
                                             {
     ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1460,7 +1460,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 175: // ddns_conflict_resolution_mode_value: "check-with-dhcid"
-#line 766 "dhcp6_parser.yy"
+#line 761 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1468,7 +1468,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 176: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid"
-#line 769 "dhcp6_parser.yy"
+#line 764 "dhcp6_parser.yy"
                         {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1476,7 +1476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 177: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid"
-#line 772 "dhcp6_parser.yy"
+#line 767 "dhcp6_parser.yy"
                             {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1484,7 +1484,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 178: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid"
-#line 775 "dhcp6_parser.yy"
+#line 770 "dhcp6_parser.yy"
                            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location)));
       }
@@ -1492,7 +1492,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 179: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point"
-#line 780 "dhcp6_parser.yy"
+#line 775 "dhcp6_parser.yy"
                                                {
     ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1502,7 +1502,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 180: // $@26: %empty
-#line 786 "dhcp6_parser.yy"
+#line 781 "dhcp6_parser.yy"
                                      {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1511,7 +1511,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 181: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string"
-#line 789 "dhcp6_parser.yy"
+#line 784 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -1521,7 +1521,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 182: // $@27: %empty
-#line 795 "dhcp6_parser.yy"
+#line 790 "dhcp6_parser.yy"
                                                      {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1530,7 +1530,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 183: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string"
-#line 798 "dhcp6_parser.yy"
+#line 793 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -1540,7 +1540,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 184: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 804 "dhcp6_parser.yy"
+#line 799 "dhcp6_parser.yy"
                                                        {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1550,7 +1550,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 185: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 810 "dhcp6_parser.yy"
+#line 805 "dhcp6_parser.yy"
                                                                              {
     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)));
@@ -1560,7 +1560,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 186: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 816 "dhcp6_parser.yy"
+#line 811 "dhcp6_parser.yy"
                                                                          {
     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)));
@@ -1570,7 +1570,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 187: // $@28: %empty
-#line 822 "dhcp6_parser.yy"
+#line 817 "dhcp6_parser.yy"
                        {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1579,7 +1579,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 188: // server_tag: "server-tag" $@28 ":" "constant string"
-#line 825 "dhcp6_parser.yy"
+#line 820 "dhcp6_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
@@ -1589,7 +1589,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 189: // parked_packet_limit: "parked-packet-limit" ":" "integer"
-#line 831 "dhcp6_parser.yy"
+#line 826 "dhcp6_parser.yy"
                                                        {
     ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location));
     ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1599,7 +1599,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 190: // $@29: %empty
-#line 837 "dhcp6_parser.yy"
+#line 832 "dhcp6_parser.yy"
                      {
     ctx.unique("allocator", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1608,7 +1608,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 191: // allocator: "allocator" $@29 ":" "constant string"
-#line 840 "dhcp6_parser.yy"
+#line 835 "dhcp6_parser.yy"
                {
     ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("allocator", al);
@@ -1618,7 +1618,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 192: // $@30: %empty
-#line 846 "dhcp6_parser.yy"
+#line 841 "dhcp6_parser.yy"
                            {
     ctx.unique("pd-allocator", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1627,7 +1627,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 193: // pd_allocator: "pd-allocator" $@30 ":" "constant string"
-#line 849 "dhcp6_parser.yy"
+#line 844 "dhcp6_parser.yy"
                {
     ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-allocator", al);
@@ -1637,7 +1637,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 194: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
-#line 855 "dhcp6_parser.yy"
+#line 850 "dhcp6_parser.yy"
                                                                                  {
     ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
     ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1647,7 +1647,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 195: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 861 "dhcp6_parser.yy"
+#line 856 "dhcp6_parser.yy"
                                                              {
     ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
     ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1657,7 +1657,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 196: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
-#line 867 "dhcp6_parser.yy"
+#line 862 "dhcp6_parser.yy"
                                                                    {
     ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
     ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1667,7 +1667,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 197: // $@31: %empty
-#line 873 "dhcp6_parser.yy"
+#line 868 "dhcp6_parser.yy"
                                      {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1679,7 +1679,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 198: // interfaces_config: "interfaces-config" $@31 ":" "{" interfaces_config_params "}"
-#line 879 "dhcp6_parser.yy"
+#line 874 "dhcp6_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
@@ -1689,7 +1689,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 199: // $@32: %empty
-#line 885 "dhcp6_parser.yy"
+#line 880 "dhcp6_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1699,7 +1699,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 200: // sub_interfaces6: "{" $@32 interfaces_config_params "}"
-#line 889 "dhcp6_parser.yy"
+#line 884 "dhcp6_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
@@ -1708,7 +1708,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 203: // interfaces_config_params: interfaces_config_params ","
-#line 896 "dhcp6_parser.yy"
+#line 891 "dhcp6_parser.yy"
                                                          {
                             ctx.warnAboutExtraCommas(yystack_[0].location);
                             }
@@ -1716,7 +1716,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 212: // $@33: %empty
-#line 911 "dhcp6_parser.yy"
+#line 906 "dhcp6_parser.yy"
                             {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1728,7 +1728,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 213: // interfaces_list: "interfaces" $@33 ":" list_strings
-#line 917 "dhcp6_parser.yy"
+#line 912 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1737,7 +1737,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 214: // re_detect: "re-detect" ":" "boolean"
-#line 922 "dhcp6_parser.yy"
+#line 917 "dhcp6_parser.yy"
                                    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1747,7 +1747,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 215: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
-#line 928 "dhcp6_parser.yy"
+#line 923 "dhcp6_parser.yy"
                                                                        {
     ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1757,7 +1757,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 216: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
-#line 934 "dhcp6_parser.yy"
+#line 929 "dhcp6_parser.yy"
                                                                                {
     ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1767,7 +1767,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 217: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
-#line 940 "dhcp6_parser.yy"
+#line 935 "dhcp6_parser.yy"
                                                                        {
     ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1777,7 +1777,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 218: // $@34: %empty
-#line 946 "dhcp6_parser.yy"
+#line 941 "dhcp6_parser.yy"
                                {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1789,7 +1789,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 219: // lease_database: "lease-database" $@34 ":" "{" database_map_params "}"
-#line 952 "dhcp6_parser.yy"
+#line 947 "dhcp6_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1800,7 +1800,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 220: // $@35: %empty
-#line 959 "dhcp6_parser.yy"
+#line 954 "dhcp6_parser.yy"
                                {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1812,7 +1812,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 221: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}"
-#line 965 "dhcp6_parser.yy"
+#line 960 "dhcp6_parser.yy"
                                                           {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1823,7 +1823,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 222: // $@36: %empty
-#line 972 "dhcp6_parser.yy"
+#line 967 "dhcp6_parser.yy"
                                  {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1835,7 +1835,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 223: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]"
-#line 978 "dhcp6_parser.yy"
+#line 973 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1844,7 +1844,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 228: // not_empty_database_list: not_empty_database_list ","
-#line 989 "dhcp6_parser.yy"
+#line 984 "dhcp6_parser.yy"
                                                        {
                            ctx.warnAboutExtraCommas(yystack_[0].location);
                            }
@@ -1852,7 +1852,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 229: // $@37: %empty
-#line 994 "dhcp6_parser.yy"
+#line 989 "dhcp6_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1862,7 +1862,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 230: // database: "{" $@37 database_map_params "}"
-#line 998 "dhcp6_parser.yy"
+#line 993 "dhcp6_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -1872,7 +1872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 233: // database_map_params: database_map_params ","
-#line 1006 "dhcp6_parser.yy"
+#line 1001 "dhcp6_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -1880,7 +1880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 257: // $@38: %empty
-#line 1036 "dhcp6_parser.yy"
+#line 1031 "dhcp6_parser.yy"
                     {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
@@ -1889,7 +1889,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 258: // database_type: "type" $@38 ":" db_type
-#line 1039 "dhcp6_parser.yy"
+#line 1034 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1898,25 +1898,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 259: // db_type: "memfile"
-#line 1044 "dhcp6_parser.yy"
+#line 1039 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1904 "dhcp6_parser.cc"
     break;
 
   case 260: // db_type: "mysql"
-#line 1045 "dhcp6_parser.yy"
+#line 1040 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1910 "dhcp6_parser.cc"
     break;
 
   case 261: // db_type: "postgresql"
-#line 1046 "dhcp6_parser.yy"
+#line 1041 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1916 "dhcp6_parser.cc"
     break;
 
   case 262: // $@39: %empty
-#line 1049 "dhcp6_parser.yy"
+#line 1044 "dhcp6_parser.yy"
            {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1925,7 +1925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 263: // user: "user" $@39 ":" "constant string"
-#line 1052 "dhcp6_parser.yy"
+#line 1047 "dhcp6_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1935,7 +1935,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 264: // $@40: %empty
-#line 1058 "dhcp6_parser.yy"
+#line 1053 "dhcp6_parser.yy"
                    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1944,7 +1944,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 265: // password: "password" $@40 ":" "constant string"
-#line 1061 "dhcp6_parser.yy"
+#line 1056 "dhcp6_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1954,7 +1954,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 266: // $@41: %empty
-#line 1067 "dhcp6_parser.yy"
+#line 1062 "dhcp6_parser.yy"
            {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1963,7 +1963,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 267: // host: "host" $@41 ":" "constant string"
-#line 1070 "dhcp6_parser.yy"
+#line 1065 "dhcp6_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1973,7 +1973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 268: // port: "port" ":" "integer"
-#line 1076 "dhcp6_parser.yy"
+#line 1071 "dhcp6_parser.yy"
                          {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1983,7 +1983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 269: // $@42: %empty
-#line 1082 "dhcp6_parser.yy"
+#line 1077 "dhcp6_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1992,7 +1992,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 270: // name: "name" $@42 ":" "constant string"
-#line 1085 "dhcp6_parser.yy"
+#line 1080 "dhcp6_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -2002,7 +2002,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 271: // persist: "persist" ":" "boolean"
-#line 1091 "dhcp6_parser.yy"
+#line 1086 "dhcp6_parser.yy"
                                {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2012,7 +2012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 272: // lfc_interval: "lfc-interval" ":" "integer"
-#line 1097 "dhcp6_parser.yy"
+#line 1092 "dhcp6_parser.yy"
                                          {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2022,7 +2022,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 273: // readonly: "readonly" ":" "boolean"
-#line 1103 "dhcp6_parser.yy"
+#line 1098 "dhcp6_parser.yy"
                                  {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2032,7 +2032,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 274: // connect_timeout: "connect-timeout" ":" "integer"
-#line 1109 "dhcp6_parser.yy"
+#line 1104 "dhcp6_parser.yy"
                                                {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2042,7 +2042,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 275: // read_timeout: "read-timeout" ":" "integer"
-#line 1115 "dhcp6_parser.yy"
+#line 1110 "dhcp6_parser.yy"
                                          {
     ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2052,7 +2052,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 276: // write_timeout: "write-timeout" ":" "integer"
-#line 1121 "dhcp6_parser.yy"
+#line 1116 "dhcp6_parser.yy"
                                            {
     ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2062,7 +2062,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 277: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
-#line 1127 "dhcp6_parser.yy"
+#line 1122 "dhcp6_parser.yy"
                                                  {
     ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2072,7 +2072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 278: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1134 "dhcp6_parser.yy"
+#line 1129 "dhcp6_parser.yy"
                                                        {
     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)));
@@ -2082,7 +2082,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 279: // $@43: %empty
-#line 1140 "dhcp6_parser.yy"
+#line 1135 "dhcp6_parser.yy"
                  {
     ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_ON_FAIL);
@@ -2091,7 +2091,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 280: // on_fail: "on-fail" $@43 ":" on_fail_mode
-#line 1143 "dhcp6_parser.yy"
+#line 1138 "dhcp6_parser.yy"
                      {
     ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2100,25 +2100,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 281: // on_fail_mode: "stop-retry-exit"
-#line 1148 "dhcp6_parser.yy"
+#line 1143 "dhcp6_parser.yy"
                               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2106 "dhcp6_parser.cc"
     break;
 
   case 282: // on_fail_mode: "serve-retry-exit"
-#line 1149 "dhcp6_parser.yy"
+#line 1144 "dhcp6_parser.yy"
                                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
 #line 2112 "dhcp6_parser.cc"
     break;
 
   case 283: // on_fail_mode: "serve-retry-continue"
-#line 1150 "dhcp6_parser.yy"
+#line 1145 "dhcp6_parser.yy"
                                    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
 #line 2118 "dhcp6_parser.cc"
     break;
 
   case 284: // retry_on_startup: "retry-on-startup" ":" "boolean"
-#line 1153 "dhcp6_parser.yy"
+#line 1148 "dhcp6_parser.yy"
                                                  {
     ctx.unique("retry-on-startup", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2128,7 +2128,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 285: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1159 "dhcp6_parser.yy"
+#line 1154 "dhcp6_parser.yy"
                                              {
     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)));
@@ -2138,7 +2138,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 286: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1165 "dhcp6_parser.yy"
+#line 1160 "dhcp6_parser.yy"
                                                        {
     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)));
@@ -2148,7 +2148,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 287: // $@44: %empty
-#line 1171 "dhcp6_parser.yy"
+#line 1166 "dhcp6_parser.yy"
                            {
     ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2157,7 +2157,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 288: // trust_anchor: "trust-anchor" $@44 ":" "constant string"
-#line 1174 "dhcp6_parser.yy"
+#line 1169 "dhcp6_parser.yy"
                {
     ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("trust-anchor", ca);
@@ -2167,7 +2167,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 289: // $@45: %empty
-#line 1180 "dhcp6_parser.yy"
+#line 1175 "dhcp6_parser.yy"
                      {
     ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2176,7 +2176,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 290: // cert_file: "cert-file" $@45 ":" "constant string"
-#line 1183 "dhcp6_parser.yy"
+#line 1178 "dhcp6_parser.yy"
                {
     ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cert-file", cert);
@@ -2186,7 +2186,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 291: // $@46: %empty
-#line 1189 "dhcp6_parser.yy"
+#line 1184 "dhcp6_parser.yy"
                    {
     ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2195,7 +2195,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 292: // key_file: "key-file" $@46 ":" "constant string"
-#line 1192 "dhcp6_parser.yy"
+#line 1187 "dhcp6_parser.yy"
                {
     ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("key-file", key);
@@ -2205,7 +2205,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 293: // $@47: %empty
-#line 1198 "dhcp6_parser.yy"
+#line 1193 "dhcp6_parser.yy"
                          {
     ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2214,7 +2214,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 294: // cipher_list: "cipher-list" $@47 ":" "constant string"
-#line 1201 "dhcp6_parser.yy"
+#line 1196 "dhcp6_parser.yy"
                {
     ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("cipher-list", cl);
@@ -2224,7 +2224,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 295: // $@48: %empty
-#line 1207 "dhcp6_parser.yy"
+#line 1202 "dhcp6_parser.yy"
                              {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2236,7 +2236,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 296: // sanity_checks: "sanity-checks" $@48 ":" "{" sanity_checks_params "}"
-#line 1213 "dhcp6_parser.yy"
+#line 1208 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2245,7 +2245,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 299: // sanity_checks_params: sanity_checks_params ","
-#line 1220 "dhcp6_parser.yy"
+#line 1215 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -2253,7 +2253,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 302: // $@49: %empty
-#line 1229 "dhcp6_parser.yy"
+#line 1224 "dhcp6_parser.yy"
                            {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2262,7 +2262,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 303: // lease_checks: "lease-checks" $@49 ":" "constant string"
-#line 1232 "dhcp6_parser.yy"
+#line 1227 "dhcp6_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -2282,7 +2282,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 304: // $@50: %empty
-#line 1248 "dhcp6_parser.yy"
+#line 1243 "dhcp6_parser.yy"
                                            {
     ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2291,7 +2291,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 305: // extended_info_checks: "extended-info-checks" $@50 ":" "constant string"
-#line 1251 "dhcp6_parser.yy"
+#line 1246 "dhcp6_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -2310,7 +2310,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 306: // $@51: %empty
-#line 1266 "dhcp6_parser.yy"
+#line 1261 "dhcp6_parser.yy"
                          {
     ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2322,7 +2322,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 307: // mac_sources: "mac-sources" $@51 ":" "[" mac_sources_list "]"
-#line 1272 "dhcp6_parser.yy"
+#line 1267 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2331,7 +2331,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 310: // mac_sources_list: mac_sources_list ","
-#line 1279 "dhcp6_parser.yy"
+#line 1274 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
@@ -2339,7 +2339,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 313: // duid_id: "duid"
-#line 1288 "dhcp6_parser.yy"
+#line 1283 "dhcp6_parser.yy"
               {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -2348,7 +2348,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 314: // string_id: "constant string"
-#line 1293 "dhcp6_parser.yy"
+#line 1288 "dhcp6_parser.yy"
                   {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -2357,7 +2357,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 315: // $@52: %empty
-#line 1298 "dhcp6_parser.yy"
+#line 1293 "dhcp6_parser.yy"
                                                            {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2369,7 +2369,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 316: // host_reservation_identifiers: "host-reservation-identifiers" $@52 ":" "[" host_reservation_identifiers_list "]"
-#line 1304 "dhcp6_parser.yy"
+#line 1299 "dhcp6_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2378,7 +2378,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 319: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
-#line 1311 "dhcp6_parser.yy"
+#line 1306 "dhcp6_parser.yy"
                                               {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2386,7 +2386,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 323: // hw_address_id: "hw-address"
-#line 1321 "dhcp6_parser.yy"
+#line 1316 "dhcp6_parser.yy"
                           {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -2395,7 +2395,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 324: // flex_id: "flex-id"
-#line 1326 "dhcp6_parser.yy"
+#line 1321 "dhcp6_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
@@ -2404,7 +2404,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 325: // $@53: %empty
-#line 1333 "dhcp6_parser.yy"
+#line 1328 "dhcp6_parser.yy"
                                                {
     ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2416,7 +2416,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 326: // relay_supplied_options: "relay-supplied-options" $@53 ":" "[" list_content "]"
-#line 1339 "dhcp6_parser.yy"
+#line 1334 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2425,7 +2425,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 327: // $@54: %empty
-#line 1346 "dhcp6_parser.yy"
+#line 1341 "dhcp6_parser.yy"
                                            {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2437,7 +2437,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 328: // dhcp_multi_threading: "multi-threading" $@54 ":" "{" multi_threading_params "}"
-#line 1352 "dhcp6_parser.yy"
+#line 1347 "dhcp6_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -2448,7 +2448,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 331: // multi_threading_params: multi_threading_params ","
-#line 1361 "dhcp6_parser.yy"
+#line 1356 "dhcp6_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2456,7 +2456,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 338: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1374 "dhcp6_parser.yy"
+#line 1369 "dhcp6_parser.yy"
                                                              {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2466,7 +2466,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 339: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1380 "dhcp6_parser.yy"
+#line 1375 "dhcp6_parser.yy"
                                                  {
     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)));
@@ -2476,7 +2476,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 340: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1386 "dhcp6_parser.yy"
+#line 1381 "dhcp6_parser.yy"
                                                    {
     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)));
@@ -2486,7 +2486,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 341: // $@55: %empty
-#line 1392 "dhcp6_parser.yy"
+#line 1387 "dhcp6_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2498,7 +2498,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 342: // hooks_libraries: "hooks-libraries" $@55 ":" "[" hooks_libraries_list "]"
-#line 1398 "dhcp6_parser.yy"
+#line 1393 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2507,7 +2507,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 347: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
-#line 1409 "dhcp6_parser.yy"
+#line 1404 "dhcp6_parser.yy"
                                            {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -2515,7 +2515,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 348: // $@56: %empty
-#line 1414 "dhcp6_parser.yy"
+#line 1409 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2525,7 +2525,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 349: // hooks_library: "{" $@56 hooks_params "}"
-#line 1418 "dhcp6_parser.yy"
+#line 1413 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2535,7 +2535,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 350: // $@57: %empty
-#line 1424 "dhcp6_parser.yy"
+#line 1419 "dhcp6_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2545,7 +2545,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 351: // sub_hooks_library: "{" $@57 hooks_params "}"
-#line 1428 "dhcp6_parser.yy"
+#line 1423 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2555,7 +2555,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 354: // hooks_params: hooks_params ","
-#line 1436 "dhcp6_parser.yy"
+#line 1431 "dhcp6_parser.yy"
                                  {
                 ctx.warnAboutExtraCommas(yystack_[0].location);
                 }
@@ -2563,7 +2563,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 358: // $@58: %empty
-#line 1446 "dhcp6_parser.yy"
+#line 1441 "dhcp6_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2572,7 +2572,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 359: // library: "library" $@58 ":" "constant string"
-#line 1449 "dhcp6_parser.yy"
+#line 1444 "dhcp6_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -2582,7 +2582,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 360: // $@59: %empty
-#line 1455 "dhcp6_parser.yy"
+#line 1450 "dhcp6_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2591,7 +2591,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 361: // parameters: "parameters" $@59 ":" map_value
-#line 1458 "dhcp6_parser.yy"
+#line 1453 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2600,7 +2600,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 362: // $@60: %empty
-#line 1464 "dhcp6_parser.yy"
+#line 1459 "dhcp6_parser.yy"
                                                      {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2612,7 +2612,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 363: // expired_leases_processing: "expired-leases-processing" $@60 ":" "{" expired_leases_params "}"
-#line 1470 "dhcp6_parser.yy"
+#line 1465 "dhcp6_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
@@ -2622,7 +2622,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 366: // expired_leases_params: expired_leases_params ","
-#line 1478 "dhcp6_parser.yy"
+#line 1473 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -2630,7 +2630,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 373: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1491 "dhcp6_parser.yy"
+#line 1486 "dhcp6_parser.yy"
                                                                {
     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)));
@@ -2640,7 +2640,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 374: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1497 "dhcp6_parser.yy"
+#line 1492 "dhcp6_parser.yy"
                                                                                {
     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)));
@@ -2650,7 +2650,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 375: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1503 "dhcp6_parser.yy"
+#line 1498 "dhcp6_parser.yy"
                                                        {
     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)));
@@ -2660,7 +2660,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 376: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1509 "dhcp6_parser.yy"
+#line 1504 "dhcp6_parser.yy"
                                                      {
     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)));
@@ -2670,7 +2670,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 377: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1515 "dhcp6_parser.yy"
+#line 1510 "dhcp6_parser.yy"
                                                  {
     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)));
@@ -2680,7 +2680,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 378: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1521 "dhcp6_parser.yy"
+#line 1516 "dhcp6_parser.yy"
                                                                {
     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)));
@@ -2690,7 +2690,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 379: // $@61: %empty
-#line 1530 "dhcp6_parser.yy"
+#line 1525 "dhcp6_parser.yy"
                       {
     ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2702,7 +2702,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 380: // subnet6_list: "subnet6" $@61 ":" "[" subnet6_list_content "]"
-#line 1536 "dhcp6_parser.yy"
+#line 1531 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2711,7 +2711,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 385: // not_empty_subnet6_list: not_empty_subnet6_list ","
-#line 1550 "dhcp6_parser.yy"
+#line 1545 "dhcp6_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
@@ -2719,7 +2719,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 386: // $@62: %empty
-#line 1559 "dhcp6_parser.yy"
+#line 1554 "dhcp6_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2729,7 +2729,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 387: // subnet6: "{" $@62 subnet6_params "}"
-#line 1563 "dhcp6_parser.yy"
+#line 1558 "dhcp6_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2755,7 +2755,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 388: // $@63: %empty
-#line 1585 "dhcp6_parser.yy"
+#line 1580 "dhcp6_parser.yy"
                             {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2765,7 +2765,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 389: // sub_subnet6: "{" $@63 subnet6_params "}"
-#line 1589 "dhcp6_parser.yy"
+#line 1584 "dhcp6_parser.yy"
                                 {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2775,7 +2775,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 392: // subnet6_params: subnet6_params ","
-#line 1598 "dhcp6_parser.yy"
+#line 1593 "dhcp6_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -2783,7 +2783,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 440: // $@64: %empty
-#line 1653 "dhcp6_parser.yy"
+#line 1648 "dhcp6_parser.yy"
                {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2792,7 +2792,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 441: // subnet: "subnet" $@64 ":" "constant string"
-#line 1656 "dhcp6_parser.yy"
+#line 1651 "dhcp6_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -2802,7 +2802,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 442: // $@65: %empty
-#line 1662 "dhcp6_parser.yy"
+#line 1657 "dhcp6_parser.yy"
                      {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2811,7 +2811,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 443: // interface: "interface" $@65 ":" "constant string"
-#line 1665 "dhcp6_parser.yy"
+#line 1660 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -2821,7 +2821,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 444: // $@66: %empty
-#line 1671 "dhcp6_parser.yy"
+#line 1666 "dhcp6_parser.yy"
                            {
     ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2830,7 +2830,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 445: // interface_id: "interface-id" $@66 ":" "constant string"
-#line 1674 "dhcp6_parser.yy"
+#line 1669 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
@@ -2840,7 +2840,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 446: // $@67: %empty
-#line 1680 "dhcp6_parser.yy"
+#line 1675 "dhcp6_parser.yy"
                            {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -2849,7 +2849,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 447: // client_class: "client-class" $@67 ":" "constant string"
-#line 1683 "dhcp6_parser.yy"
+#line 1678 "dhcp6_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -2859,7 +2859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 448: // $@68: %empty
-#line 1689 "dhcp6_parser.yy"
+#line 1684 "dhcp6_parser.yy"
                                                {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2871,7 +2871,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 449: // require_client_classes: "require-client-classes" $@68 ":" list_strings
-#line 1695 "dhcp6_parser.yy"
+#line 1690 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2880,7 +2880,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 450: // reservations_global: "reservations-global" ":" "boolean"
-#line 1700 "dhcp6_parser.yy"
+#line 1695 "dhcp6_parser.yy"
                                                        {
     ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2890,7 +2890,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 451: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1706 "dhcp6_parser.yy"
+#line 1701 "dhcp6_parser.yy"
                                                              {
     ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2900,7 +2900,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 452: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1712 "dhcp6_parser.yy"
+#line 1707 "dhcp6_parser.yy"
                                                                  {
     ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2910,7 +2910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 453: // $@69: %empty
-#line 1718 "dhcp6_parser.yy"
+#line 1713 "dhcp6_parser.yy"
                                    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
@@ -2919,7 +2919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 454: // reservation_mode: "reservation-mode" $@69 ":" hr_mode
-#line 1721 "dhcp6_parser.yy"
+#line 1716 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -2928,31 +2928,31 @@ namespace isc { namespace dhcp {
     break;
 
   case 455: // hr_mode: "disabled"
-#line 1726 "dhcp6_parser.yy"
+#line 1721 "dhcp6_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 2934 "dhcp6_parser.cc"
     break;
 
   case 456: // hr_mode: "out-of-pool"
-#line 1727 "dhcp6_parser.yy"
+#line 1722 "dhcp6_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 2940 "dhcp6_parser.cc"
     break;
 
   case 457: // hr_mode: "global"
-#line 1728 "dhcp6_parser.yy"
+#line 1723 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
 #line 2946 "dhcp6_parser.cc"
     break;
 
   case 458: // hr_mode: "all"
-#line 1729 "dhcp6_parser.yy"
+#line 1724 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 2952 "dhcp6_parser.cc"
     break;
 
   case 459: // id: "id" ":" "integer"
-#line 1732 "dhcp6_parser.yy"
+#line 1727 "dhcp6_parser.yy"
                      {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2962,7 +2962,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 460: // rapid_commit: "rapid-commit" ":" "boolean"
-#line 1738 "dhcp6_parser.yy"
+#line 1733 "dhcp6_parser.yy"
                                          {
     ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location));
     ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2972,7 +2972,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 461: // $@70: %empty
-#line 1746 "dhcp6_parser.yy"
+#line 1741 "dhcp6_parser.yy"
                                  {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2984,7 +2984,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 462: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]"
-#line 1752 "dhcp6_parser.yy"
+#line 1747 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2993,7 +2993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 467: // shared_networks_list: shared_networks_list ","
-#line 1765 "dhcp6_parser.yy"
+#line 1760 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3001,7 +3001,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 468: // $@71: %empty
-#line 1770 "dhcp6_parser.yy"
+#line 1765 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3011,7 +3011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 469: // shared_network: "{" $@71 shared_network_params "}"
-#line 1774 "dhcp6_parser.yy"
+#line 1769 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
@@ -3019,7 +3019,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 472: // shared_network_params: shared_network_params ","
-#line 1780 "dhcp6_parser.yy"
+#line 1775 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -3027,7 +3027,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 517: // $@72: %empty
-#line 1835 "dhcp6_parser.yy"
+#line 1830 "dhcp6_parser.yy"
                             {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3039,7 +3039,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 518: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]"
-#line 1841 "dhcp6_parser.yy"
+#line 1836 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3048,7 +3048,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 519: // $@73: %empty
-#line 1849 "dhcp6_parser.yy"
+#line 1844 "dhcp6_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
@@ -3057,7 +3057,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 520: // sub_option_def_list: "{" $@73 option_def_list "}"
-#line 1852 "dhcp6_parser.yy"
+#line 1847 "dhcp6_parser.yy"
                                  {
     // parsing completed
 }
@@ -3065,7 +3065,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 525: // not_empty_option_def_list: not_empty_option_def_list ","
-#line 1864 "dhcp6_parser.yy"
+#line 1859 "dhcp6_parser.yy"
                                                            {
                              ctx.warnAboutExtraCommas(yystack_[0].location);
                              }
@@ -3073,7 +3073,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 526: // $@74: %empty
-#line 1871 "dhcp6_parser.yy"
+#line 1866 "dhcp6_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3083,7 +3083,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 527: // option_def_entry: "{" $@74 option_def_params "}"
-#line 1875 "dhcp6_parser.yy"
+#line 1870 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3095,7 +3095,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 528: // $@75: %empty
-#line 1886 "dhcp6_parser.yy"
+#line 1881 "dhcp6_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3105,7 +3105,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 529: // sub_option_def: "{" $@75 option_def_params "}"
-#line 1890 "dhcp6_parser.yy"
+#line 1885 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3117,7 +3117,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 534: // not_empty_option_def_params: not_empty_option_def_params ","
-#line 1906 "dhcp6_parser.yy"
+#line 1901 "dhcp6_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3125,7 +3125,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 546: // code: "code" ":" "integer"
-#line 1925 "dhcp6_parser.yy"
+#line 1920 "dhcp6_parser.yy"
                          {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3135,7 +3135,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 548: // $@76: %empty
-#line 1933 "dhcp6_parser.yy"
+#line 1928 "dhcp6_parser.yy"
                       {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3144,7 +3144,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 549: // option_def_type: "type" $@76 ":" "constant string"
-#line 1936 "dhcp6_parser.yy"
+#line 1931 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -3154,7 +3154,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 550: // $@77: %empty
-#line 1942 "dhcp6_parser.yy"
+#line 1937 "dhcp6_parser.yy"
                                       {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3163,7 +3163,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 551: // option_def_record_types: "record-types" $@77 ":" "constant string"
-#line 1945 "dhcp6_parser.yy"
+#line 1940 "dhcp6_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -3173,7 +3173,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 552: // $@78: %empty
-#line 1951 "dhcp6_parser.yy"
+#line 1946 "dhcp6_parser.yy"
              {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3182,7 +3182,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 553: // space: "space" $@78 ":" "constant string"
-#line 1954 "dhcp6_parser.yy"
+#line 1949 "dhcp6_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -3192,7 +3192,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 555: // $@79: %empty
-#line 1962 "dhcp6_parser.yy"
+#line 1957 "dhcp6_parser.yy"
                                     {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3201,7 +3201,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 556: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string"
-#line 1965 "dhcp6_parser.yy"
+#line 1960 "dhcp6_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -3211,7 +3211,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 557: // option_def_array: "array" ":" "boolean"
-#line 1971 "dhcp6_parser.yy"
+#line 1966 "dhcp6_parser.yy"
                                       {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3221,7 +3221,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 558: // $@80: %empty
-#line 1981 "dhcp6_parser.yy"
+#line 1976 "dhcp6_parser.yy"
                               {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3233,7 +3233,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 559: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]"
-#line 1987 "dhcp6_parser.yy"
+#line 1982 "dhcp6_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3242,7 +3242,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 564: // not_empty_option_data_list: not_empty_option_data_list ","
-#line 2002 "dhcp6_parser.yy"
+#line 1997 "dhcp6_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
@@ -3250,7 +3250,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 565: // $@81: %empty
-#line 2009 "dhcp6_parser.yy"
+#line 2004 "dhcp6_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3260,7 +3260,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 566: // option_data_entry: "{" $@81 option_data_params "}"
-#line 2013 "dhcp6_parser.yy"
+#line 2008 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
@@ -3269,7 +3269,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 567: // $@82: %empty
-#line 2021 "dhcp6_parser.yy"
+#line 2016 "dhcp6_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3279,7 +3279,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 568: // sub_option_data: "{" $@82 option_data_params "}"
-#line 2025 "dhcp6_parser.yy"
+#line 2020 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
@@ -3288,7 +3288,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 573: // not_empty_option_data_params: not_empty_option_data_params ","
-#line 2041 "dhcp6_parser.yy"
+#line 2036 "dhcp6_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3296,7 +3296,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 585: // $@83: %empty
-#line 2062 "dhcp6_parser.yy"
+#line 2057 "dhcp6_parser.yy"
                        {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3305,7 +3305,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 586: // option_data_data: "data" $@83 ":" "constant string"
-#line 2065 "dhcp6_parser.yy"
+#line 2060 "dhcp6_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -3315,7 +3315,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 589: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 2075 "dhcp6_parser.yy"
+#line 2070 "dhcp6_parser.yy"
                                                  {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
     ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3325,7 +3325,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 590: // option_data_always_send: "always-send" ":" "boolean"
-#line 2081 "dhcp6_parser.yy"
+#line 2076 "dhcp6_parser.yy"
                                                    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3335,7 +3335,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 591: // option_data_never_send: "never-send" ":" "boolean"
-#line 2087 "dhcp6_parser.yy"
+#line 2082 "dhcp6_parser.yy"
                                                  {
     ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3345,7 +3345,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 592: // $@84: %empty
-#line 2096 "dhcp6_parser.yy"
+#line 2091 "dhcp6_parser.yy"
                   {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3357,7 +3357,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 593: // pools_list: "pools" $@84 ":" "[" pools_list_content "]"
-#line 2102 "dhcp6_parser.yy"
+#line 2097 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3366,7 +3366,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 598: // not_empty_pools_list: not_empty_pools_list ","
-#line 2115 "dhcp6_parser.yy"
+#line 2110 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -3374,7 +3374,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 599: // $@85: %empty
-#line 2120 "dhcp6_parser.yy"
+#line 2115 "dhcp6_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3384,7 +3384,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 600: // pool_list_entry: "{" $@85 pool_params "}"
-#line 2124 "dhcp6_parser.yy"
+#line 2119 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3394,7 +3394,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 601: // $@86: %empty
-#line 2130 "dhcp6_parser.yy"
+#line 2125 "dhcp6_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3404,7 +3404,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 602: // sub_pool6: "{" $@86 pool_params "}"
-#line 2134 "dhcp6_parser.yy"
+#line 2129 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3414,7 +3414,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 605: // pool_params: pool_params ","
-#line 2142 "dhcp6_parser.yy"
+#line 2137 "dhcp6_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
@@ -3422,7 +3422,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 614: // $@87: %empty
-#line 2157 "dhcp6_parser.yy"
+#line 2152 "dhcp6_parser.yy"
                  {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3431,7 +3431,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 615: // pool_entry: "pool" $@87 ":" "constant string"
-#line 2160 "dhcp6_parser.yy"
+#line 2155 "dhcp6_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -3441,7 +3441,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 616: // pool_id: "pool-id" ":" "integer"
-#line 2166 "dhcp6_parser.yy"
+#line 2161 "dhcp6_parser.yy"
                                {
     ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3451,7 +3451,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 617: // $@88: %empty
-#line 2172 "dhcp6_parser.yy"
+#line 2167 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3459,7 +3459,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 618: // user_context: "user-context" $@88 ":" map_value
-#line 2174 "dhcp6_parser.yy"
+#line 2169 "dhcp6_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -3486,7 +3486,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 619: // $@89: %empty
-#line 2197 "dhcp6_parser.yy"
+#line 2192 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -3494,7 +3494,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 620: // comment: "comment" $@89 ":" "constant string"
-#line 2199 "dhcp6_parser.yy"
+#line 2194 "dhcp6_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -3523,7 +3523,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 621: // $@90: %empty
-#line 2227 "dhcp6_parser.yy"
+#line 2222 "dhcp6_parser.yy"
                         {
     ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3535,7 +3535,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 622: // pd_pools_list: "pd-pools" $@90 ":" "[" pd_pools_list_content "]"
-#line 2233 "dhcp6_parser.yy"
+#line 2228 "dhcp6_parser.yy"
                                                               {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3544,7 +3544,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 627: // not_empty_pd_pools_list: not_empty_pd_pools_list ","
-#line 2246 "dhcp6_parser.yy"
+#line 2241 "dhcp6_parser.yy"
                                                        {
                            ctx.warnAboutExtraCommas(yystack_[0].location);
                            }
@@ -3552,7 +3552,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 628: // $@91: %empty
-#line 2251 "dhcp6_parser.yy"
+#line 2246 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3562,7 +3562,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 629: // pd_pool_entry: "{" $@91 pd_pool_params "}"
-#line 2255 "dhcp6_parser.yy"
+#line 2250 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3574,7 +3574,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 630: // $@92: %empty
-#line 2263 "dhcp6_parser.yy"
+#line 2258 "dhcp6_parser.yy"
                             {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3584,7 +3584,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 631: // sub_pd_pool: "{" $@92 pd_pool_params "}"
-#line 2267 "dhcp6_parser.yy"
+#line 2262 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3596,7 +3596,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 634: // pd_pool_params: pd_pool_params ","
-#line 2277 "dhcp6_parser.yy"
+#line 2272 "dhcp6_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
@@ -3604,7 +3604,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 646: // $@93: %empty
-#line 2295 "dhcp6_parser.yy"
+#line 2290 "dhcp6_parser.yy"
                   {
     ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3613,7 +3613,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 647: // pd_prefix: "prefix" $@93 ":" "constant string"
-#line 2298 "dhcp6_parser.yy"
+#line 2293 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
@@ -3623,7 +3623,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 648: // pd_prefix_len: "prefix-len" ":" "integer"
-#line 2304 "dhcp6_parser.yy"
+#line 2299 "dhcp6_parser.yy"
                                         {
     ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3633,7 +3633,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 649: // $@94: %empty
-#line 2310 "dhcp6_parser.yy"
+#line 2305 "dhcp6_parser.yy"
                                  {
     ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3642,7 +3642,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 650: // excluded_prefix: "excluded-prefix" $@94 ":" "constant string"
-#line 2313 "dhcp6_parser.yy"
+#line 2308 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
@@ -3652,7 +3652,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 651: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
-#line 2319 "dhcp6_parser.yy"
+#line 2314 "dhcp6_parser.yy"
                                                        {
     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)));
@@ -3662,7 +3662,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 652: // pd_delegated_len: "delegated-len" ":" "integer"
-#line 2325 "dhcp6_parser.yy"
+#line 2320 "dhcp6_parser.yy"
                                               {
     ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location));
     ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3672,7 +3672,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 653: // $@95: %empty
-#line 2334 "dhcp6_parser.yy"
+#line 2329 "dhcp6_parser.yy"
                            {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3684,7 +3684,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 654: // reservations: "reservations" $@95 ":" "[" reservations_list "]"
-#line 2340 "dhcp6_parser.yy"
+#line 2335 "dhcp6_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3693,7 +3693,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 659: // not_empty_reservations_list: not_empty_reservations_list ","
-#line 2351 "dhcp6_parser.yy"
+#line 2346 "dhcp6_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
@@ -3701,7 +3701,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 660: // $@96: %empty
-#line 2356 "dhcp6_parser.yy"
+#line 2351 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3711,7 +3711,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 661: // reservation: "{" $@96 reservation_params "}"
-#line 2360 "dhcp6_parser.yy"
+#line 2355 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
@@ -3720,7 +3720,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 662: // $@97: %empty
-#line 2365 "dhcp6_parser.yy"
+#line 2360 "dhcp6_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3730,7 +3730,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 663: // sub_reservation: "{" $@97 reservation_params "}"
-#line 2369 "dhcp6_parser.yy"
+#line 2364 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
@@ -3739,7 +3739,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 668: // not_empty_reservation_params: not_empty_reservation_params ","
-#line 2380 "dhcp6_parser.yy"
+#line 2375 "dhcp6_parser.yy"
                                          {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3747,7 +3747,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 680: // $@98: %empty
-#line 2399 "dhcp6_parser.yy"
+#line 2394 "dhcp6_parser.yy"
                            {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3759,7 +3759,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 681: // ip_addresses: "ip-addresses" $@98 ":" list_strings
-#line 2405 "dhcp6_parser.yy"
+#line 2400 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3768,7 +3768,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 682: // $@99: %empty
-#line 2410 "dhcp6_parser.yy"
+#line 2405 "dhcp6_parser.yy"
                    {
     ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3780,7 +3780,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 683: // prefixes: "prefixes" $@99 ":" list_strings
-#line 2416 "dhcp6_parser.yy"
+#line 2411 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3789,7 +3789,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 684: // $@100: %empty
-#line 2421 "dhcp6_parser.yy"
+#line 2416 "dhcp6_parser.yy"
            {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3798,7 +3798,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 685: // duid: "duid" $@100 ":" "constant string"
-#line 2424 "dhcp6_parser.yy"
+#line 2419 "dhcp6_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -3808,7 +3808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 686: // $@101: %empty
-#line 2430 "dhcp6_parser.yy"
+#line 2425 "dhcp6_parser.yy"
                        {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3817,7 +3817,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 687: // hw_address: "hw-address" $@101 ":" "constant string"
-#line 2433 "dhcp6_parser.yy"
+#line 2428 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -3827,7 +3827,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 688: // $@102: %empty
-#line 2439 "dhcp6_parser.yy"
+#line 2434 "dhcp6_parser.yy"
                    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3836,7 +3836,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 689: // hostname: "hostname" $@102 ":" "constant string"
-#line 2442 "dhcp6_parser.yy"
+#line 2437 "dhcp6_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -3846,7 +3846,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 690: // $@103: %empty
-#line 2448 "dhcp6_parser.yy"
+#line 2443 "dhcp6_parser.yy"
                        {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3855,7 +3855,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 691: // flex_id_value: "flex-id" $@103 ":" "constant string"
-#line 2451 "dhcp6_parser.yy"
+#line 2446 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
@@ -3865,7 +3865,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 692: // $@104: %empty
-#line 2457 "dhcp6_parser.yy"
+#line 2452 "dhcp6_parser.yy"
                                            {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3877,7 +3877,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 693: // reservation_client_classes: "client-classes" $@104 ":" list_strings
-#line 2463 "dhcp6_parser.yy"
+#line 2458 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3886,7 +3886,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 694: // $@105: %empty
-#line 2471 "dhcp6_parser.yy"
+#line 2466 "dhcp6_parser.yy"
              {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3898,7 +3898,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 695: // relay: "relay" $@105 ":" "{" relay_map "}"
-#line 2477 "dhcp6_parser.yy"
+#line 2472 "dhcp6_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3907,7 +3907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 697: // $@106: %empty
-#line 2488 "dhcp6_parser.yy"
+#line 2483 "dhcp6_parser.yy"
                                {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3919,7 +3919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 698: // client_classes: "client-classes" $@106 ":" "[" client_classes_list "]"
-#line 2494 "dhcp6_parser.yy"
+#line 2489 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3928,7 +3928,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 701: // client_classes_list: client_classes_list ","
-#line 2501 "dhcp6_parser.yy"
+#line 2496 "dhcp6_parser.yy"
                                                {
                        ctx.warnAboutExtraCommas(yystack_[0].location);
                        }
@@ -3936,7 +3936,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 702: // $@107: %empty
-#line 2506 "dhcp6_parser.yy"
+#line 2501 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3946,7 +3946,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 703: // client_class_entry: "{" $@107 client_class_params "}"
-#line 2510 "dhcp6_parser.yy"
+#line 2505 "dhcp6_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3956,7 +3956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 708: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2522 "dhcp6_parser.yy"
+#line 2517 "dhcp6_parser.yy"
                                           {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
@@ -3964,7 +3964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 724: // $@108: %empty
-#line 2545 "dhcp6_parser.yy"
+#line 2540 "dhcp6_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3973,7 +3973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 725: // client_class_test: "test" $@108 ":" "constant string"
-#line 2548 "dhcp6_parser.yy"
+#line 2543 "dhcp6_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -3983,7 +3983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 726: // $@109: %empty
-#line 2554 "dhcp6_parser.yy"
+#line 2549 "dhcp6_parser.yy"
                                           {
     ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -3992,7 +3992,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 727: // client_class_template_test: "template-test" $@109 ":" "constant string"
-#line 2557 "dhcp6_parser.yy"
+#line 2552 "dhcp6_parser.yy"
                {
     ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("template-test", template_test);
@@ -4002,7 +4002,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 728: // only_if_required: "only-if-required" ":" "boolean"
-#line 2563 "dhcp6_parser.yy"
+#line 2558 "dhcp6_parser.yy"
                                                  {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4012,7 +4012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 729: // $@110: %empty
-#line 2572 "dhcp6_parser.yy"
+#line 2567 "dhcp6_parser.yy"
                      {
     ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4024,7 +4024,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 730: // server_id: "server-id" $@110 ":" "{" server_id_params "}"
-#line 2578 "dhcp6_parser.yy"
+#line 2573 "dhcp6_parser.yy"
                                                        {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4035,7 +4035,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 733: // server_id_params: server_id_params ","
-#line 2587 "dhcp6_parser.yy"
+#line 2582 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
@@ -4043,7 +4043,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 743: // $@111: %empty
-#line 2603 "dhcp6_parser.yy"
+#line 2598 "dhcp6_parser.yy"
                      {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DUID_TYPE);
@@ -4052,7 +4052,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 744: // server_id_type: "type" $@111 ":" duid_type
-#line 2606 "dhcp6_parser.yy"
+#line 2601 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4061,25 +4061,25 @@ namespace isc { namespace dhcp {
     break;
 
   case 745: // duid_type: "LLT"
-#line 2611 "dhcp6_parser.yy"
+#line 2606 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 4067 "dhcp6_parser.cc"
     break;
 
   case 746: // duid_type: "EN"
-#line 2612 "dhcp6_parser.yy"
+#line 2607 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 4073 "dhcp6_parser.cc"
     break;
 
   case 747: // duid_type: "LL"
-#line 2613 "dhcp6_parser.yy"
+#line 2608 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
 #line 4079 "dhcp6_parser.cc"
     break;
 
   case 748: // htype: "htype" ":" "integer"
-#line 2616 "dhcp6_parser.yy"
+#line 2611 "dhcp6_parser.yy"
                            {
     ctx.unique("htype", ctx.loc2pos(yystack_[2].location));
     ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4089,7 +4089,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 749: // $@112: %empty
-#line 2622 "dhcp6_parser.yy"
+#line 2617 "dhcp6_parser.yy"
                        {
     ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4098,7 +4098,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 750: // identifier: "identifier" $@112 ":" "constant string"
-#line 2625 "dhcp6_parser.yy"
+#line 2620 "dhcp6_parser.yy"
                {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
@@ -4108,7 +4108,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 751: // time: "time" ":" "integer"
-#line 2631 "dhcp6_parser.yy"
+#line 2626 "dhcp6_parser.yy"
                          {
     ctx.unique("time", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4118,7 +4118,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 752: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2637 "dhcp6_parser.yy"
+#line 2632 "dhcp6_parser.yy"
                                            {
     ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4128,7 +4128,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 753: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2645 "dhcp6_parser.yy"
+#line 2640 "dhcp6_parser.yy"
                                          {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4138,7 +4138,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 754: // $@113: %empty
-#line 2653 "dhcp6_parser.yy"
+#line 2648 "dhcp6_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4150,7 +4150,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 755: // control_socket: "control-socket" $@113 ":" "{" control_socket_params "}"
-#line 2659 "dhcp6_parser.yy"
+#line 2654 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4159,7 +4159,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 758: // control_socket_params: control_socket_params ","
-#line 2666 "dhcp6_parser.yy"
+#line 2661 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
@@ -4167,7 +4167,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 764: // $@114: %empty
-#line 2678 "dhcp6_parser.yy"
+#line 2673 "dhcp6_parser.yy"
                          {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4176,7 +4176,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 765: // socket_type: "socket-type" $@114 ":" "constant string"
-#line 2681 "dhcp6_parser.yy"
+#line 2676 "dhcp6_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -4186,7 +4186,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 766: // $@115: %empty
-#line 2687 "dhcp6_parser.yy"
+#line 2682 "dhcp6_parser.yy"
                          {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4195,7 +4195,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 767: // socket_name: "socket-name" $@115 ":" "constant string"
-#line 2690 "dhcp6_parser.yy"
+#line 2685 "dhcp6_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -4205,7 +4205,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 768: // $@116: %empty
-#line 2699 "dhcp6_parser.yy"
+#line 2694 "dhcp6_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4217,7 +4217,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 769: // dhcp_queue_control: "dhcp-queue-control" $@116 ":" "{" queue_control_params "}"
-#line 2705 "dhcp6_parser.yy"
+#line 2700 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4228,7 +4228,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 772: // queue_control_params: queue_control_params ","
-#line 2714 "dhcp6_parser.yy"
+#line 2709 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
@@ -4236,7 +4236,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 779: // enable_queue: "enable-queue" ":" "boolean"
-#line 2727 "dhcp6_parser.yy"
+#line 2722 "dhcp6_parser.yy"
                                          {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4246,7 +4246,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 780: // $@117: %empty
-#line 2733 "dhcp6_parser.yy"
+#line 2728 "dhcp6_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4255,7 +4255,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 781: // queue_type: "queue-type" $@117 ":" "constant string"
-#line 2736 "dhcp6_parser.yy"
+#line 2731 "dhcp6_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
@@ -4265,7 +4265,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 782: // capacity: "capacity" ":" "integer"
-#line 2742 "dhcp6_parser.yy"
+#line 2737 "dhcp6_parser.yy"
                                  {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -4275,7 +4275,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 783: // $@118: %empty
-#line 2748 "dhcp6_parser.yy"
+#line 2743 "dhcp6_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4284,7 +4284,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 784: // arbitrary_map_entry: "constant string" $@118 ":" value
-#line 2751 "dhcp6_parser.yy"
+#line 2746 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4293,7 +4293,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 785: // $@119: %empty
-#line 2758 "dhcp6_parser.yy"
+#line 2753 "dhcp6_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4305,7 +4305,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 786: // dhcp_ddns: "dhcp-ddns" $@119 ":" "{" dhcp_ddns_params "}"
-#line 2764 "dhcp6_parser.yy"
+#line 2759 "dhcp6_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4316,7 +4316,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 787: // $@120: %empty
-#line 2771 "dhcp6_parser.yy"
+#line 2766 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4326,7 +4326,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 788: // sub_dhcp_ddns: "{" $@120 dhcp_ddns_params "}"
-#line 2775 "dhcp6_parser.yy"
+#line 2770 "dhcp6_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -4336,15 +4336,15 @@ namespace isc { namespace dhcp {
     break;
 
   case 791: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 2783 "dhcp6_parser.yy"
+#line 2778 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
 #line 4344 "dhcp6_parser.cc"
     break;
 
-  case 810: // enable_updates: "enable-updates" ":" "boolean"
-#line 2808 "dhcp6_parser.yy"
+  case 803: // enable_updates: "enable-updates" ":" "boolean"
+#line 2796 "dhcp6_parser.yy"
                                              {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4353,239 +4353,125 @@ namespace isc { namespace dhcp {
 #line 4354 "dhcp6_parser.cc"
     break;
 
-  case 811: // $@121: %empty
-#line 2815 "dhcp6_parser.yy"
-                                         {
-    ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4363 "dhcp6_parser.cc"
-    break;
-
-  case 812: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string"
-#line 2818 "dhcp6_parser.yy"
-               {
-    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 4373 "dhcp6_parser.cc"
-    break;
-
-  case 813: // $@122: %empty
-#line 2824 "dhcp6_parser.yy"
+  case 804: // $@121: %empty
+#line 2802 "dhcp6_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4382 "dhcp6_parser.cc"
+#line 4363 "dhcp6_parser.cc"
     break;
 
-  case 814: // server_ip: "server-ip" $@122 ":" "constant string"
-#line 2827 "dhcp6_parser.yy"
+  case 805: // server_ip: "server-ip" $@121 ":" "constant string"
+#line 2805 "dhcp6_parser.yy"
                {
     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 4392 "dhcp6_parser.cc"
+#line 4373 "dhcp6_parser.cc"
     break;
 
-  case 815: // server_port: "server-port" ":" "integer"
-#line 2833 "dhcp6_parser.yy"
+  case 806: // server_port: "server-port" ":" "integer"
+#line 2811 "dhcp6_parser.yy"
                                        {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 4402 "dhcp6_parser.cc"
+#line 4383 "dhcp6_parser.cc"
     break;
 
-  case 816: // $@123: %empty
-#line 2839 "dhcp6_parser.yy"
+  case 807: // $@122: %empty
+#line 2817 "dhcp6_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4411 "dhcp6_parser.cc"
+#line 4392 "dhcp6_parser.cc"
     break;
 
-  case 817: // sender_ip: "sender-ip" $@123 ":" "constant string"
-#line 2842 "dhcp6_parser.yy"
+  case 808: // sender_ip: "sender-ip" $@122 ":" "constant string"
+#line 2820 "dhcp6_parser.yy"
                {
     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 4421 "dhcp6_parser.cc"
+#line 4402 "dhcp6_parser.cc"
     break;
 
-  case 818: // sender_port: "sender-port" ":" "integer"
-#line 2848 "dhcp6_parser.yy"
+  case 809: // sender_port: "sender-port" ":" "integer"
+#line 2826 "dhcp6_parser.yy"
                                        {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 4431 "dhcp6_parser.cc"
+#line 4412 "dhcp6_parser.cc"
     break;
 
-  case 819: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2854 "dhcp6_parser.yy"
+  case 810: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2832 "dhcp6_parser.yy"
                                              {
     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)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 4441 "dhcp6_parser.cc"
+#line 4422 "dhcp6_parser.cc"
     break;
 
-  case 820: // $@124: %empty
-#line 2860 "dhcp6_parser.yy"
+  case 811: // $@123: %empty
+#line 2838 "dhcp6_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 4450 "dhcp6_parser.cc"
+#line 4431 "dhcp6_parser.cc"
     break;
 
-  case 821: // ncr_protocol: "ncr-protocol" $@124 ":" ncr_protocol_value
-#line 2863 "dhcp6_parser.yy"
+  case 812: // ncr_protocol: "ncr-protocol" $@123 ":" ncr_protocol_value
+#line 2841 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4459 "dhcp6_parser.cc"
+#line 4440 "dhcp6_parser.cc"
     break;
 
-  case 822: // ncr_protocol_value: "UDP"
-#line 2869 "dhcp6_parser.yy"
+  case 813: // ncr_protocol_value: "UDP"
+#line 2847 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 4465 "dhcp6_parser.cc"
+#line 4446 "dhcp6_parser.cc"
     break;
 
-  case 823: // ncr_protocol_value: "TCP"
-#line 2870 "dhcp6_parser.yy"
+  case 814: // ncr_protocol_value: "TCP"
+#line 2848 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 4471 "dhcp6_parser.cc"
+#line 4452 "dhcp6_parser.cc"
     break;
 
-  case 824: // $@125: %empty
-#line 2873 "dhcp6_parser.yy"
+  case 815: // $@124: %empty
+#line 2851 "dhcp6_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 4480 "dhcp6_parser.cc"
+#line 4461 "dhcp6_parser.cc"
     break;
 
-  case 825: // ncr_format: "ncr-format" $@125 ":" "JSON"
-#line 2876 "dhcp6_parser.yy"
+  case 816: // ncr_format: "ncr-format" $@124 ":" "JSON"
+#line 2854 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 4490 "dhcp6_parser.cc"
-    break;
-
-  case 826: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2883 "dhcp6_parser.yy"
-                                                         {
-    ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("override-no-update", b);
-}
-#line 4500 "dhcp6_parser.cc"
-    break;
-
-  case 827: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2890 "dhcp6_parser.yy"
-                                                                 {
-    ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
-    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("override-client-update", b);
-}
-#line 4510 "dhcp6_parser.cc"
-    break;
-
-  case 828: // $@126: %empty
-#line 2897 "dhcp6_parser.yy"
-                                             {
-    ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.REPLACE_CLIENT_NAME);
-}
-#line 4519 "dhcp6_parser.cc"
-    break;
-
-  case 829: // dep_replace_client_name: "replace-client-name" $@126 ":" ddns_replace_client_name_value
-#line 2900 "dhcp6_parser.yy"
-                                       {
-    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
-    ctx.leave();
-}
-#line 4528 "dhcp6_parser.cc"
-    break;
-
-  case 830: // $@127: %empty
-#line 2906 "dhcp6_parser.yy"
-                                       {
-    ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4537 "dhcp6_parser.cc"
-    break;
-
-  case 831: // dep_generated_prefix: "generated-prefix" $@127 ":" "constant string"
-#line 2909 "dhcp6_parser.yy"
-               {
-    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 4547 "dhcp6_parser.cc"
-    break;
-
-  case 832: // $@128: %empty
-#line 2916 "dhcp6_parser.yy"
-                                         {
-    ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4556 "dhcp6_parser.cc"
-    break;
-
-  case 833: // dep_hostname_char_set: "hostname-char-set" $@128 ":" "constant string"
-#line 2919 "dhcp6_parser.yy"
-               {
-    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 4566 "dhcp6_parser.cc"
-    break;
-
-  case 834: // $@129: %empty
-#line 2926 "dhcp6_parser.yy"
-                                                         {
-    ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 4575 "dhcp6_parser.cc"
-    break;
-
-  case 835: // dep_hostname_char_replacement: "hostname-char-replacement" $@129 ":" "constant string"
-#line 2929 "dhcp6_parser.yy"
-               {
-    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 4585 "dhcp6_parser.cc"
+#line 4471 "dhcp6_parser.cc"
     break;
 
-  case 836: // $@130: %empty
-#line 2938 "dhcp6_parser.yy"
+  case 817: // $@125: %empty
+#line 2862 "dhcp6_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4593,48 +4479,48 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 4597 "dhcp6_parser.cc"
+#line 4483 "dhcp6_parser.cc"
     break;
 
-  case 837: // config_control: "config-control" $@130 ":" "{" config_control_params "}"
-#line 2944 "dhcp6_parser.yy"
+  case 818: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
+#line 2868 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4607 "dhcp6_parser.cc"
+#line 4493 "dhcp6_parser.cc"
     break;
 
-  case 838: // $@131: %empty
-#line 2950 "dhcp6_parser.yy"
+  case 819: // $@126: %empty
+#line 2874 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4617 "dhcp6_parser.cc"
+#line 4503 "dhcp6_parser.cc"
     break;
 
-  case 839: // sub_config_control: "{" $@131 config_control_params "}"
-#line 2954 "dhcp6_parser.yy"
+  case 820: // sub_config_control: "{" $@126 config_control_params "}"
+#line 2878 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 4626 "dhcp6_parser.cc"
+#line 4512 "dhcp6_parser.cc"
     break;
 
-  case 842: // config_control_params: config_control_params ","
-#line 2962 "dhcp6_parser.yy"
+  case 823: // config_control_params: config_control_params ","
+#line 2886 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
-#line 4634 "dhcp6_parser.cc"
+#line 4520 "dhcp6_parser.cc"
     break;
 
-  case 845: // $@132: %empty
-#line 2972 "dhcp6_parser.yy"
+  case 826: // $@127: %empty
+#line 2896 "dhcp6_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4642,30 +4528,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 4646 "dhcp6_parser.cc"
+#line 4532 "dhcp6_parser.cc"
     break;
 
-  case 846: // config_databases: "config-databases" $@132 ":" "[" database_list "]"
-#line 2978 "dhcp6_parser.yy"
+  case 827: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
+#line 2902 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4655 "dhcp6_parser.cc"
+#line 4541 "dhcp6_parser.cc"
     break;
 
-  case 847: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2983 "dhcp6_parser.yy"
+  case 828: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2907 "dhcp6_parser.yy"
                                                              {
     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)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 4665 "dhcp6_parser.cc"
+#line 4551 "dhcp6_parser.cc"
     break;
 
-  case 848: // $@133: %empty
-#line 2991 "dhcp6_parser.yy"
+  case 829: // $@128: %empty
+#line 2915 "dhcp6_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4673,83 +4559,83 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 4677 "dhcp6_parser.cc"
+#line 4563 "dhcp6_parser.cc"
     break;
 
-  case 849: // loggers: "loggers" $@133 ":" "[" loggers_entries "]"
-#line 2997 "dhcp6_parser.yy"
+  case 830: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
+#line 2921 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4686 "dhcp6_parser.cc"
+#line 4572 "dhcp6_parser.cc"
     break;
 
-  case 852: // loggers_entries: loggers_entries ","
-#line 3006 "dhcp6_parser.yy"
+  case 833: // loggers_entries: loggers_entries ","
+#line 2930 "dhcp6_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
-#line 4694 "dhcp6_parser.cc"
+#line 4580 "dhcp6_parser.cc"
     break;
 
-  case 853: // $@134: %empty
-#line 3012 "dhcp6_parser.yy"
+  case 834: // $@129: %empty
+#line 2936 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 4704 "dhcp6_parser.cc"
+#line 4590 "dhcp6_parser.cc"
     break;
 
-  case 854: // logger_entry: "{" $@134 logger_params "}"
-#line 3016 "dhcp6_parser.yy"
+  case 835: // logger_entry: "{" $@129 logger_params "}"
+#line 2940 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 4712 "dhcp6_parser.cc"
+#line 4598 "dhcp6_parser.cc"
     break;
 
-  case 857: // logger_params: logger_params ","
-#line 3022 "dhcp6_parser.yy"
+  case 838: // logger_params: logger_params ","
+#line 2946 "dhcp6_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
-#line 4720 "dhcp6_parser.cc"
+#line 4606 "dhcp6_parser.cc"
     break;
 
-  case 865: // debuglevel: "debuglevel" ":" "integer"
-#line 3036 "dhcp6_parser.yy"
+  case 846: // debuglevel: "debuglevel" ":" "integer"
+#line 2960 "dhcp6_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 4730 "dhcp6_parser.cc"
+#line 4616 "dhcp6_parser.cc"
     break;
 
-  case 866: // $@135: %empty
-#line 3042 "dhcp6_parser.yy"
+  case 847: // $@130: %empty
+#line 2966 "dhcp6_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4739 "dhcp6_parser.cc"
+#line 4625 "dhcp6_parser.cc"
     break;
 
-  case 867: // severity: "severity" $@135 ":" "constant string"
-#line 3045 "dhcp6_parser.yy"
+  case 848: // severity: "severity" $@130 ":" "constant string"
+#line 2969 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 4749 "dhcp6_parser.cc"
+#line 4635 "dhcp6_parser.cc"
     break;
 
-  case 868: // $@136: %empty
-#line 3051 "dhcp6_parser.yy"
+  case 849: // $@131: %empty
+#line 2975 "dhcp6_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4757,122 +4643,122 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 4761 "dhcp6_parser.cc"
+#line 4647 "dhcp6_parser.cc"
     break;
 
-  case 869: // output_options_list: "output-options" $@136 ":" "[" output_options_list_content "]"
-#line 3057 "dhcp6_parser.yy"
+  case 850: // output_options_list: "output-options" $@131 ":" "[" output_options_list_content "]"
+#line 2981 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4770 "dhcp6_parser.cc"
+#line 4656 "dhcp6_parser.cc"
     break;
 
-  case 872: // output_options_list_content: output_options_list_content ","
-#line 3064 "dhcp6_parser.yy"
+  case 853: // output_options_list_content: output_options_list_content ","
+#line 2988 "dhcp6_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
-#line 4778 "dhcp6_parser.cc"
+#line 4664 "dhcp6_parser.cc"
     break;
 
-  case 873: // $@137: %empty
-#line 3069 "dhcp6_parser.yy"
+  case 854: // $@132: %empty
+#line 2993 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4788 "dhcp6_parser.cc"
+#line 4674 "dhcp6_parser.cc"
     break;
 
-  case 874: // output_entry: "{" $@137 output_params_list "}"
-#line 3073 "dhcp6_parser.yy"
+  case 855: // output_entry: "{" $@132 output_params_list "}"
+#line 2997 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4796 "dhcp6_parser.cc"
+#line 4682 "dhcp6_parser.cc"
     break;
 
-  case 877: // output_params_list: output_params_list ","
-#line 3079 "dhcp6_parser.yy"
+  case 858: // output_params_list: output_params_list ","
+#line 3003 "dhcp6_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 4804 "dhcp6_parser.cc"
+#line 4690 "dhcp6_parser.cc"
     break;
 
-  case 883: // $@138: %empty
-#line 3091 "dhcp6_parser.yy"
+  case 864: // $@133: %empty
+#line 3015 "dhcp6_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4813 "dhcp6_parser.cc"
+#line 4699 "dhcp6_parser.cc"
     break;
 
-  case 884: // output: "output" $@138 ":" "constant string"
-#line 3094 "dhcp6_parser.yy"
+  case 865: // output: "output" $@133 ":" "constant string"
+#line 3018 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4823 "dhcp6_parser.cc"
+#line 4709 "dhcp6_parser.cc"
     break;
 
-  case 885: // flush: "flush" ":" "boolean"
-#line 3100 "dhcp6_parser.yy"
+  case 866: // flush: "flush" ":" "boolean"
+#line 3024 "dhcp6_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4833 "dhcp6_parser.cc"
+#line 4719 "dhcp6_parser.cc"
     break;
 
-  case 886: // maxsize: "maxsize" ":" "integer"
-#line 3106 "dhcp6_parser.yy"
+  case 867: // maxsize: "maxsize" ":" "integer"
+#line 3030 "dhcp6_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 4843 "dhcp6_parser.cc"
+#line 4729 "dhcp6_parser.cc"
     break;
 
-  case 887: // maxver: "maxver" ":" "integer"
-#line 3112 "dhcp6_parser.yy"
+  case 868: // maxver: "maxver" ":" "integer"
+#line 3036 "dhcp6_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 4853 "dhcp6_parser.cc"
+#line 4739 "dhcp6_parser.cc"
     break;
 
-  case 888: // $@139: %empty
-#line 3118 "dhcp6_parser.yy"
+  case 869: // $@134: %empty
+#line 3042 "dhcp6_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4862 "dhcp6_parser.cc"
+#line 4748 "dhcp6_parser.cc"
     break;
 
-  case 889: // pattern: "pattern" $@139 ":" "constant string"
-#line 3121 "dhcp6_parser.yy"
+  case 870: // pattern: "pattern" $@134 ":" "constant string"
+#line 3045 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4872 "dhcp6_parser.cc"
+#line 4758 "dhcp6_parser.cc"
     break;
 
-  case 890: // $@140: %empty
-#line 3127 "dhcp6_parser.yy"
+  case 871: // $@135: %empty
+#line 3051 "dhcp6_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4880,38 +4766,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.COMPATIBILITY);
 }
-#line 4884 "dhcp6_parser.cc"
+#line 4770 "dhcp6_parser.cc"
     break;
 
-  case 891: // compatibility: "compatibility" $@140 ":" "{" compatibility_params "}"
-#line 3133 "dhcp6_parser.yy"
+  case 872: // compatibility: "compatibility" $@135 ":" "{" compatibility_params "}"
+#line 3057 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4893 "dhcp6_parser.cc"
+#line 4779 "dhcp6_parser.cc"
     break;
 
-  case 894: // compatibility_params: compatibility_params ","
-#line 3140 "dhcp6_parser.yy"
+  case 875: // compatibility_params: compatibility_params ","
+#line 3064 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 4901 "dhcp6_parser.cc"
+#line 4787 "dhcp6_parser.cc"
     break;
 
-  case 897: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3149 "dhcp6_parser.yy"
+  case 878: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
+#line 3073 "dhcp6_parser.yy"
                                                              {
     ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lenient-option-parsing", b);
 }
-#line 4911 "dhcp6_parser.cc"
+#line 4797 "dhcp6_parser.cc"
     break;
 
 
-#line 4915 "dhcp6_parser.cc"
+#line 4801 "dhcp6_parser.cc"
 
             default:
               break;
@@ -5263,152 +5149,149 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -1043;
+  const short Dhcp6Parser::yypact_ninf_ = -1010;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     -26, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043,    36,    34,    35,    82,    90,
-     114,   118,   122,   143,   144,   164,   166,   175,   196,   244,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,    34,  -164,
-      70,   155,    75,   592,   298,   318,   231,   126,    91,   250,
-     -99,   681,    54, -1043,   138,   262,   268,   258,   279, -1043,
-      71, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   288,   297,
-     316,   317,   322,   326,   334,   343,   344,   358,   359,   370,
-     371,   393, -1043,   404,   405,   437,   443,   453, -1043, -1043,
-   -1043,   466,   467,   473,   478, -1043, -1043, -1043,   479, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,   482,   483,   489, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   490, -1043,
-   -1043, -1043, -1043, -1043, -1043,   492,   493,   494, -1043, -1043,
-     497, -1043,    74, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043,   499,   500,   503,   504, -1043,    93, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,   506,   511, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,    96, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043,   514, -1043, -1043,
-   -1043, -1043,   111, -1043, -1043, -1043, -1043, -1043, -1043,   516,
-   -1043,   518,   522, -1043, -1043, -1043, -1043, -1043, -1043,   119,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043,   275,   342, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043,   296, -1043, -1043,
-     523, -1043, -1043, -1043,   528, -1043, -1043,   423,   448, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,   532,   533,   534, -1043, -1043, -1043, -1043,   432,
-     536, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   151, -1043, -1043, -1043,   540, -1043,
-   -1043,   543, -1043,   544,   545, -1043, -1043,   547,   548, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,   161, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   550,   290, -1043, -1043, -1043, -1043,
-      34,    34, -1043,   225,   552, -1043, -1043,   553,   554,   557,
-     560,   561,   562,   345,   346,   350,   360,   361,   364,   365,
-     367,   339,   354,   356,   375,   368,   372,   564,   377,   378,
-     369,   384,   387,   565,   580,   581,   388,   389,   379,   390,
-     596,   597,   601,   394,   615,   619,   622,   623,   624,   627,
-     628,   406,   410,   411,   629,   631,   632,   636,   637,   638,
-     652,   653,   654,   433,   666,   667,   669,   670,   671,   672,
-     449,   451,   459,   674,   677, -1043,   155, -1043,   678,   462,
-     463,   469,   470,    75, -1043,   684,   685,   689,   694,   695,
-     484,   480,   705,   707,   711,   592, -1043,   712,   491,   298,
-   -1043,   714,   495,   715,   507,   508,   318, -1043,   716,   725,
-     726,   728,   732,   738,   739, -1043,   231, -1043,   740,   742,
-     521,   744,   745,   746,   524, -1043,    91,   749,   526,   541,
-     542, -1043,   250,   764,   767,   -95, -1043,   555,   782,   795,
-     574,   797,   576,   577,   800,   801,   578,   579,   804,   805,
-     806,   807,   681, -1043,   810,   594,    54, -1043, -1043, -1043,
-     817,   815,   598,   820,   821,   822,   823,   826, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,   607, -1043, -1043, -1043, -1043, -1043,  -128,   608,
-     610, -1043, -1043, -1043, -1043,   831,   832,   834, -1043,   616,
-     617,   160,   835,   836,   620,   301, -1043, -1043, -1043,   839,
-     841,   843,   842,   845,   846,   847,   848,   862, -1043,   863,
-     864,   865,   866,   649,   650, -1043, -1043, -1043,   849,   871,
-   -1043,   874, -1043, -1043, -1043, -1043, -1043,   875,   876,   657,
-     658,   659, -1043, -1043,   874,   660,   879, -1043,   662, -1043,
-   -1043,   663, -1043,   664, -1043, -1043, -1043,   874,   874,   874,
-     665,   668,   673,   676, -1043,   679,   680, -1043,   682,   683,
-     686, -1043, -1043,   687, -1043, -1043, -1043, -1043,   688,   836,
-   -1043, -1043,   690,   691, -1043,   692, -1043, -1043,   -76,   701,
-   -1043, -1043,  -128,   693,   696,   697, -1043,   887, -1043, -1043,
-      34,   155, -1043,    54,    75,   355,   355,   888, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043,   889,   890,   895,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043,   896, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,  -107,    34,    23,   115,
-     902,   903,   907,    88,   136,   248,   -23,   -64,   681, -1043,
-   -1043,   912,  -177, -1043, -1043,   913,   916, -1043, -1043, -1043,
-   -1043, -1043,   757, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,   888, -1043,   302,   304,   320, -1043, -1043, -1043,
-   -1043,   920,   921,   922,   923,   924,   926,   927,   928,   929,
-     930, -1043,   931,   932, -1043, -1043, -1043, -1043, -1043,   338,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043,   341, -1043,   933,   850, -1043, -1043,   934,
-     935, -1043, -1043,   936,   938, -1043, -1043,   937,   941, -1043,
-   -1043,   939,   943, -1043, -1043, -1043,    78, -1043, -1043, -1043,
-     942, -1043, -1043, -1043,   137, -1043, -1043, -1043, -1043, -1043,
-     373, -1043, -1043, -1043, -1043,   198, -1043, -1043,   944,   946,
-   -1043, -1043,   945,   949, -1043,   950,   951,   952,   953,   954,
-     955,   374, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   956,   957,   958, -1043, -1043, -1043, -1043,   407, -1043,
-   -1043, -1043, -1043, -1043, -1043,   959,   960,   961, -1043,   408,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   426, -1043, -1043, -1043,   962, -1043,   963, -1043, -1043,
-   -1043,   427, -1043, -1043, -1043, -1043, -1043,   434, -1043,   300,
-   -1043,   964, -1043,   435, -1043, -1043,   722, -1043,   947,   966,
-   -1043, -1043,   965,   967, -1043, -1043,   968,   969, -1043, -1043,
-   -1043,   970,   973,   974,   975,   747,   709,   754,   753,   756,
-     758,   759,   760,   762,   763,   979,   766,   765,   988,   991,
-     996,   998,   355, -1043, -1043,   355, -1043,   888,   592, -1043,
-     889,    91, -1043,   890,   250, -1043,   895,   704, -1043,   896,
-    -107, -1043, -1043,    23, -1043,   999,  1001,   115, -1043,   234,
-     902, -1043,   231, -1043,   903,   -99, -1043,   907,   783,   786,
-     790,   791,   803,   819,    88, -1043,  1017,  1023,   828,   844,
-     854,   136, -1043,   837,   859,   860,   248, -1043,  1027,  1028,
-     -23, -1043,   878,  1029,   893,  1063,   -64, -1043, -1043,    49,
-     912, -1043,   911,  -177, -1043, -1043,  1135,  1066,   298, -1043,
-     913,   318, -1043,   916, -1043, -1043,   454,   917,   919,   925,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-     447, -1043, -1043,   940,   948,   971,   972, -1043,   436, -1043,
-     446, -1043,  1137, -1043,  1141, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,   450, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043,   977,   978, -1043, -1043, -1043,
-    1147, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,  1144,  1150, -1043, -1043, -1043, -1043, -1043, -1043,
-    1146, -1043,   457, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   357,   980, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   981,   982, -1043, -1043,   983, -1043,    34, -1043, -1043,
-    1151, -1043, -1043, -1043, -1043, -1043,   458, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043,   985,   460, -1043,   461, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   704,
-   -1043, -1043, -1043,  1152,  1153,   986, -1043,   234, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,  1154,
-     987,  1155,    49, -1043, -1043, -1043, -1043, -1043,   990,   992,
-   -1043, -1043,  1156, -1043,   993, -1043, -1043, -1043,  1157, -1043,
-   -1043,   321, -1043,   -74,  1157, -1043, -1043,  1158,  1159,  1162,
-   -1043,   464, -1043, -1043, -1043, -1043, -1043, -1043, -1043,  1163,
-     994,   995,   997,  1164,   -74, -1043,  1000, -1043, -1043, -1043,
-    1002, -1043, -1043, -1043
+     473, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010,    36,    34,    35,    70,   108,
+     123,   127,   141,   151,   178,   180,   200,   245,   246,   254,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,    34,  -136,
+     140,   171,   102,   676,   201,   293,   239,   142,   107,   331,
+     -94,   458,    87, -1010,   278,   285,   294,   297,   317, -1010,
+      58, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   342,   355,
+     356,   367,   386,   401,   405,   420,   421,   426,   442,   443,
+     451,   453, -1010,   454,   457,   459,   461,   462, -1010, -1010,
+   -1010,   463,   464,   465,   468, -1010, -1010, -1010,   469, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,   471,   472,   475, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   476, -1010,
+   -1010, -1010, -1010, -1010, -1010,   478,   479,   480, -1010, -1010,
+     483, -1010,    60, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010,   485,   486,   489,   490, -1010,    71, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   492,   494, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,    77, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010,   495, -1010, -1010,
+   -1010, -1010,    78, -1010, -1010, -1010, -1010, -1010, -1010,   496,
+   -1010,   497,   500, -1010, -1010, -1010, -1010, -1010, -1010,    86,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010,   332,   417, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010,   362, -1010, -1010,
+     502, -1010, -1010, -1010,   504, -1010, -1010,   501,   474, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   508,   513,   514, -1010, -1010, -1010, -1010,   515,
+     522, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,    96, -1010, -1010, -1010,   525, -1010,
+     526, -1010,   527,   529, -1010, -1010, -1010, -1010, -1010,   106,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+     530,   124, -1010, -1010, -1010, -1010,    34,    34, -1010,   315,
+     533, -1010, -1010,   534,   536,   538,   539,   540,   543,   334,
+     337,   341,   348,   349,   350,   351,   358,   327,   330,   335,
+     354,   363,   365,   549,   368,   369,   360,   373,   375,   550,
+     573,   581,   378,   379,   370,   380,   584,   587,   600,   385,
+     604,   605,   609,   610,   611,   612,   614,   396,   397,   398,
+     618,   619,   621,   622,   623,   624,   625,   626,   627,   411,
+     637,   638,   639,   640,   641,   642,   424,   425,   427,   645,
+     647, -1010,   171, -1010,   649,   431,   433,   436,   437,   102,
+   -1010,   655,   656,   657,   658,   659,   444,   441,   662,   663,
+     664,   676, -1010,   666,   452,   201, -1010,   667,   455,   668,
+     456,   477,   293, -1010,   670,   671,   689,   690,   696,   697,
+     698, -1010,   239, -1010,   700,   701,   487,   702,   703,   710,
+     493, -1010,   107,   711,   498,   499,   503, -1010,   331,   714,
+     715,   -38, -1010,   517,   716,   520,   720,   521,   537,   721,
+     739,   458, -1010,   750,   541,    87, -1010, -1010, -1010,   751,
+     752,   551,   753,   754,   765,   766,   769, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010,   555, -1010, -1010, -1010, -1010, -1010,  -141,   557,   559,
+   -1010, -1010, -1010, -1010,   775,   776,   777, -1010,   563,   572,
+     347,   788,   787,   575,   333, -1010, -1010, -1010,   794,   795,
+     796,   797,   798,   800,   802,   801,   804, -1010,   806,   807,
+     808,   809,   582,   589, -1010, -1010, -1010,   812,   811, -1010,
+     815, -1010, -1010, -1010, -1010, -1010,   816,   817,   603,   606,
+     607, -1010, -1010,   815,   608,   818, -1010,   643, -1010, -1010,
+     644, -1010,   648, -1010, -1010, -1010,   815,   815,   815,   650,
+     654,   660,   661, -1010,   665,   669, -1010,   672,   675,   677,
+   -1010, -1010,   678, -1010, -1010, -1010, -1010,   682,   787, -1010,
+   -1010,   683, -1010,   684, -1010, -1010,    22,   673, -1010,   819,
+   -1010, -1010,    34,   171, -1010,    87,   102,   131,   131,   822,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   836,
+     837,   838, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   839,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   -95,    34,
+     210,   185,   854,   855,   858,   236,   234,   110,    91,   -76,
+     458, -1010, -1010,   862,  -155, -1010, -1010,   868,   869, -1010,
+   -1010, -1010, -1010, -1010,   620, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   822,
+   -1010,   125,   135,   137, -1010, -1010, -1010, -1010,   873,   874,
+     875,   878,   879,   880,   882,   901,   902,   903, -1010,   904,
+     906, -1010, -1010, -1010, -1010, -1010,   143, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+     181, -1010,   905,   909, -1010, -1010,   908,   912, -1010, -1010,
+     910,   914, -1010, -1010,   913,   915, -1010, -1010,   917,   918,
+   -1010, -1010, -1010,    61, -1010, -1010, -1010,   919, -1010, -1010,
+   -1010,   214, -1010, -1010, -1010, -1010, -1010,   205, -1010, -1010,
+   -1010, -1010,   416, -1010, -1010,   920,   921, -1010, -1010,   922,
+     924, -1010,   916,   925,   926,   927,   928,   929,   206, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   930,   931,
+     932, -1010, -1010, -1010, -1010,   269, -1010, -1010, -1010, -1010,
+   -1010, -1010,   933,   934,   935, -1010,   275, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   279, -1010,
+   -1010, -1010,   936, -1010,   937, -1010, -1010, -1010,   282, -1010,
+   -1010, -1010, -1010, -1010,   296, -1010,   423, -1010,   938, -1010,
+     298, -1010, -1010,   723, -1010,   939,   941, -1010, -1010,   940,
+     944, -1010, -1010,   942,   943, -1010, -1010, -1010,   947,   948,
+     949,   951,   727,   733,   737,   736,   740,   741,   746,   755,
+     758,   762,   968,   761,   767,   990,   992,   994,   996,   131,
+   -1010, -1010,   131, -1010,   822,   676, -1010,   836,   107, -1010,
+     837,   331, -1010,   838,   779, -1010,   839,   -95, -1010, -1010,
+     210, -1010,  1000,  1008,   185, -1010,   302,   854, -1010,   239,
+   -1010,   855,   -94, -1010,   858,   792,   813,   826,   831,   832,
+     852,   236, -1010,  1017,  1028,   865,   886,   888,   234, -1010,
+     814,   890,   891,   110, -1010,  1032,  1113,    91, -1010,   895,
+    1115,   899,  1117,   -76, -1010, -1010,   208,   862, -1010,   900,
+    -155, -1010, -1010,  1116,  1121,   201, -1010,   868,   293, -1010,
+     869, -1010, -1010,   148,   907,   911,   923, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010,    49, -1010, -1010,
+     945,   946,   950,   952, -1010,   318, -1010,   320, -1010,  1118,
+   -1010,  1120, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010,   321, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   953,   954, -1010, -1010, -1010,  1125, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,  1122,
+    1129, -1010, -1010, -1010, -1010, -1010, -1010,  1126, -1010,   329,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   281,   955,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   956,   958,
+   -1010, -1010,   959, -1010,    34, -1010, -1010,  1131, -1010, -1010,
+   -1010, -1010, -1010,   336, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   961,   364, -1010,   366, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,   779, -1010, -1010, -1010,
+    1133,  1134,   960, -1010,   302, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,  1135,   963,  1136,   208,
+   -1010, -1010, -1010, -1010, -1010,   962,   965, -1010, -1010,  1137,
+   -1010,   966, -1010, -1010, -1010,  1138, -1010, -1010,   450, -1010,
+       1,  1138, -1010, -1010,  1140,  1142,  1143, -1010,   400, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,  1144,   964,   967,   969,
+    1145,     1, -1010,   971, -1010, -1010, -1010,   972, -1010, -1010,
+   -1010
   };
 
   const short
@@ -5420,16 +5303,16 @@ namespace isc { namespace dhcp {
        1,    46,    38,    34,    33,    30,    31,    32,    37,     3,
       35,    36,    61,     5,    67,     7,   199,     9,   388,    11,
      601,    13,   630,    15,   662,    17,   519,    19,   528,    21,
-     567,    23,   350,    25,   787,    27,   838,    29,    48,    41,
+     567,    23,   350,    25,   787,    27,   819,    29,    48,    41,
        0,     0,     0,     0,     0,     0,   664,     0,   530,   569,
        0,     0,     0,    50,     0,    49,     0,     0,    42,    63,
-       0,    65,   141,   836,   197,   218,   220,   222,     0,     0,
+       0,    65,   141,   817,   197,   218,   220,   222,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   187,     0,     0,     0,     0,     0,   160,   167,
      169,     0,     0,     0,     0,   379,   517,   558,     0,   190,
      192,   173,   461,   617,   619,   453,     0,     0,     0,   306,
      325,   315,   295,   697,   653,   341,   362,   729,     0,   327,
-     754,   768,   785,   180,   182,     0,     0,     0,   848,   890,
+     754,   768,   785,   180,   182,     0,     0,     0,   829,   871,
        0,   140,     0,    69,    72,    73,    74,    75,    76,    77,
       78,    79,    80,   111,   112,   113,   114,   115,    81,   119,
      120,   121,   122,   123,   124,   125,   126,   127,   128,   117,
@@ -5454,156 +5337,152 @@ namespace isc { namespace dhcp {
      535,   547,   536,   537,   538,   554,   539,   540,   541,   542,
      543,   585,     0,     0,     0,   583,   584,   587,   588,     0,
      570,   571,   574,   575,   576,   577,   578,   579,   580,   581,
-     582,   358,   360,   355,     0,   352,   356,   357,     0,   811,
-     813,     0,   816,     0,     0,   820,   824,     0,     0,   828,
-     830,   832,   834,   809,   807,   808,     0,   789,   792,   804,
-     793,   794,   795,   796,   797,   798,   799,   800,   801,   802,
-     803,   805,   806,   845,     0,     0,   840,   843,   844,    47,
-      52,     0,    39,    45,     0,    66,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     582,   358,   360,   355,     0,   352,   356,   357,     0,   804,
+       0,   807,     0,     0,   811,   815,   802,   800,   801,     0,
+     789,   792,   793,   794,   795,   796,   797,   798,   799,   826,
+       0,     0,   821,   824,   825,    47,    52,     0,    39,    45,
+       0,    66,    62,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    60,    71,    68,     0,     0,
-       0,     0,     0,   203,   200,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   392,   389,     0,     0,   605,
-     602,     0,     0,     0,     0,     0,   634,   631,     0,     0,
-       0,     0,     0,     0,     0,   663,   668,   520,     0,     0,
-       0,     0,     0,     0,     0,   529,   534,     0,     0,     0,
-       0,   568,   573,     0,     0,   354,   351,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   791,   788,     0,     0,   842,   839,    51,    43,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,     0,   185,   186,   157,   158,   159,     0,     0,
-       0,   171,   172,   179,   184,     0,     0,     0,   189,     0,
-       0,     0,     0,     0,     0,     0,   450,   451,   452,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   753,     0,
-       0,     0,     0,     0,     0,   194,   195,   196,     0,     0,
-      70,     0,   214,   215,   216,   217,   202,     0,     0,     0,
-       0,     0,   459,   460,     0,     0,     0,   391,     0,   616,
-     604,     0,   648,     0,   651,   652,   633,     0,     0,     0,
-       0,     0,     0,     0,   667,     0,     0,   546,     0,     0,
-       0,   557,   533,     0,   589,   590,   591,   572,     0,     0,
-     353,   810,     0,     0,   815,     0,   818,   819,     0,     0,
-     826,   827,     0,     0,     0,     0,   790,     0,   847,   841,
-       0,     0,   142,     0,     0,     0,     0,   224,   188,   162,
-     163,   164,   165,   166,   161,   168,   170,   381,   521,   560,
-     191,   193,   175,   176,   177,   178,   174,   463,    40,   618,
-     620,   455,   456,   457,   458,   454,     0,    48,     0,     0,
-       0,   655,   343,     0,     0,     0,     0,     0,     0,   181,
-     183,     0,     0,    53,   213,   594,   623,   441,   443,   445,
-     449,   447,     0,   615,   647,   650,   693,   681,   683,   685,
-     687,   689,   691,   549,   270,   553,   551,   556,   586,   359,
-     361,   812,   814,   817,   822,   823,   821,   825,   829,   831,
-     833,   835,   224,    44,     0,     0,     0,   257,   262,   264,
-     266,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   279,     0,     0,   287,   289,   291,   293,   256,     0,
-     231,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   248,   249,   250,   251,   247,   252,
-     253,   254,   255,     0,   229,     0,   225,   226,   386,     0,
-     382,   383,   526,     0,   522,   523,   565,     0,   561,   562,
-     468,     0,   464,   465,   313,   314,     0,   308,   311,   312,
-       0,   323,   324,   320,     0,   317,   321,   322,   302,   304,
-       0,   297,   300,   301,   702,     0,   699,   660,     0,   656,
-     657,   348,     0,   344,   345,     0,     0,     0,     0,     0,
-       0,     0,   364,   367,   368,   369,   370,   371,   372,   743,
-     749,     0,     0,     0,   742,   739,   740,   741,     0,   731,
-     734,   737,   735,   736,   738,     0,     0,     0,   337,     0,
-     329,   332,   333,   334,   335,   336,   764,   766,   763,   761,
-     762,     0,   756,   759,   760,     0,   780,     0,   783,   776,
-     777,     0,   770,   773,   774,   775,   778,     0,   853,     0,
-     850,     0,   896,     0,   892,   895,    55,   599,     0,   595,
-     596,   628,     0,   624,   625,   696,     0,     0,    64,   837,
-     198,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    60,    71,    68,     0,     0,     0,     0,     0,   203,
+     200,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   392,   389,     0,     0,   605,   602,     0,     0,     0,
+       0,     0,   634,   631,     0,     0,     0,     0,     0,     0,
+       0,   663,   668,   520,     0,     0,     0,     0,     0,     0,
+       0,   529,   534,     0,     0,     0,     0,   568,   573,     0,
+       0,   354,   351,     0,     0,     0,     0,     0,     0,     0,
+       0,   791,   788,     0,     0,   823,   820,    51,    43,     0,
+       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,     0,   185,   186,   157,   158,   159,     0,     0,     0,
+     171,   172,   179,   184,     0,     0,     0,   189,     0,     0,
+       0,     0,     0,     0,     0,   450,   451,   452,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   753,     0,     0,
+       0,     0,     0,     0,   194,   195,   196,     0,     0,    70,
+       0,   214,   215,   216,   217,   202,     0,     0,     0,     0,
+       0,   459,   460,     0,     0,     0,   391,     0,   616,   604,
+       0,   648,     0,   651,   652,   633,     0,     0,     0,     0,
+       0,     0,     0,   667,     0,     0,   546,     0,     0,     0,
+     557,   533,     0,   589,   590,   591,   572,     0,     0,   353,
+     803,     0,   806,     0,   809,   810,     0,     0,   790,     0,
+     828,   822,     0,     0,   142,     0,     0,     0,     0,   224,
+     188,   162,   163,   164,   165,   166,   161,   168,   170,   381,
+     521,   560,   191,   193,   175,   176,   177,   178,   174,   463,
+      40,   618,   620,   455,   456,   457,   458,   454,     0,    48,
+       0,     0,     0,   655,   343,     0,     0,     0,     0,     0,
+       0,   181,   183,     0,     0,    53,   213,   594,   623,   441,
+     443,   445,   449,   447,     0,   615,   647,   650,   693,   681,
+     683,   685,   687,   689,   691,   549,   270,   553,   551,   556,
+     586,   359,   361,   805,   808,   813,   814,   812,   816,   224,
+      44,     0,     0,     0,   257,   262,   264,   266,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   279,     0,
+       0,   287,   289,   291,   293,   256,     0,   231,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   248,   249,   250,   251,   247,   252,   253,   254,   255,
+       0,   229,     0,   225,   226,   386,     0,   382,   383,   526,
+       0,   522,   523,   565,     0,   561,   562,   468,     0,   464,
+     465,   313,   314,     0,   308,   311,   312,     0,   323,   324,
+     320,     0,   317,   321,   322,   302,   304,     0,   297,   300,
+     301,   702,     0,   699,   660,     0,   656,   657,   348,     0,
+     344,   345,     0,     0,     0,     0,     0,     0,     0,   364,
+     367,   368,   369,   370,   371,   372,   743,   749,     0,     0,
+       0,   742,   739,   740,   741,     0,   731,   734,   737,   735,
+     736,   738,     0,     0,     0,   337,     0,   329,   332,   333,
+     334,   335,   336,   764,   766,   763,   761,   762,     0,   756,
+     759,   760,     0,   780,     0,   783,   776,   777,     0,   770,
+     773,   774,   775,   778,     0,   834,     0,   831,     0,   877,
+       0,   873,   876,    55,   599,     0,   595,   596,   628,     0,
+     624,   625,   696,     0,     0,    64,   818,   198,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   233,   219,   221,     0,   223,   228,     0,   380,
-     385,   530,   518,   525,   569,   559,   564,     0,   462,   467,
-     310,   307,   326,   319,   316,     0,     0,   299,   296,   704,
-     701,   698,   664,   654,   659,     0,   342,   347,     0,     0,
-       0,     0,     0,     0,   366,   363,     0,     0,     0,     0,
-       0,   733,   730,     0,     0,     0,   331,   328,     0,     0,
-     758,   755,     0,     0,     0,     0,   772,   769,   786,     0,
-     852,   849,     0,   894,   891,    57,     0,    56,     0,   593,
-     598,     0,   622,   627,   695,   846,     0,     0,     0,     0,
-     268,   271,   272,   273,   274,   275,   276,   277,   286,   278,
-       0,   284,   285,     0,     0,     0,     0,   232,     0,   227,
-       0,   384,     0,   524,     0,   563,   516,   487,   488,   489,
-     491,   492,   493,   477,   478,   496,   497,   498,   499,   500,
-     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
-     501,   502,   513,   514,   515,   473,   474,   475,   476,   485,
-     486,   482,   483,   484,   481,   490,     0,   470,   479,   494,
-     495,   480,   466,   309,   318,     0,     0,   298,   724,   726,
-       0,   722,   716,   717,   718,   719,   720,   721,   723,   713,
-     714,   715,     0,   705,   706,   709,   710,   711,   712,   700,
-       0,   658,     0,   346,   373,   374,   375,   376,   377,   378,
-     365,     0,     0,   748,   751,   752,   732,   338,   339,   340,
-     330,     0,     0,   757,   779,     0,   782,     0,   771,   868,
-       0,   866,   864,   858,   862,   863,     0,   855,   860,   861,
-     859,   851,   897,   893,    54,    59,     0,   597,     0,   626,
-     259,   260,   261,   258,   263,   265,   267,   281,   282,   283,
-     280,   288,   290,   292,   294,   230,   387,   527,   566,   472,
-     469,   303,   305,     0,     0,     0,   703,   708,   661,   349,
-     745,   746,   747,   744,   750,   765,   767,   781,   784,     0,
-       0,     0,   857,   854,    58,   600,   629,   471,     0,     0,
-     728,   707,     0,   865,     0,   856,   725,   727,     0,   867,
-     873,     0,   870,     0,   872,   869,   883,     0,     0,     0,
-     888,     0,   875,   878,   879,   880,   881,   882,   871,     0,
-       0,     0,     0,     0,   877,   874,     0,   885,   886,   887,
-       0,   876,   884,   889
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   233,
+     219,   221,     0,   223,   228,     0,   380,   385,   530,   518,
+     525,   569,   559,   564,     0,   462,   467,   310,   307,   326,
+     319,   316,     0,     0,   299,   296,   704,   701,   698,   664,
+     654,   659,     0,   342,   347,     0,     0,     0,     0,     0,
+       0,   366,   363,     0,     0,     0,     0,     0,   733,   730,
+       0,     0,     0,   331,   328,     0,     0,   758,   755,     0,
+       0,     0,     0,   772,   769,   786,     0,   833,   830,     0,
+     875,   872,    57,     0,    56,     0,   593,   598,     0,   622,
+     627,   695,   827,     0,     0,     0,     0,   268,   271,   272,
+     273,   274,   275,   276,   277,   286,   278,     0,   284,   285,
+       0,     0,     0,     0,   232,     0,   227,     0,   384,     0,
+     524,     0,   563,   516,   487,   488,   489,   491,   492,   493,
+     477,   478,   496,   497,   498,   499,   500,   503,   504,   505,
+     506,   507,   508,   509,   510,   511,   512,   501,   502,   513,
+     514,   515,   473,   474,   475,   476,   485,   486,   482,   483,
+     484,   481,   490,     0,   470,   479,   494,   495,   480,   466,
+     309,   318,     0,     0,   298,   724,   726,     0,   722,   716,
+     717,   718,   719,   720,   721,   723,   713,   714,   715,     0,
+     705,   706,   709,   710,   711,   712,   700,     0,   658,     0,
+     346,   373,   374,   375,   376,   377,   378,   365,     0,     0,
+     748,   751,   752,   732,   338,   339,   340,   330,     0,     0,
+     757,   779,     0,   782,     0,   771,   849,     0,   847,   845,
+     839,   843,   844,     0,   836,   841,   842,   840,   832,   878,
+     874,    54,    59,     0,   597,     0,   626,   259,   260,   261,
+     258,   263,   265,   267,   281,   282,   283,   280,   288,   290,
+     292,   294,   230,   387,   527,   566,   472,   469,   303,   305,
+       0,     0,     0,   703,   708,   661,   349,   745,   746,   747,
+     744,   750,   765,   767,   781,   784,     0,     0,     0,   838,
+     835,    58,   600,   629,   471,     0,     0,   728,   707,     0,
+     846,     0,   837,   725,   727,     0,   848,   854,     0,   851,
+       0,   853,   850,   864,     0,     0,     0,   869,     0,   856,
+     859,   860,   861,   862,   863,   852,     0,     0,     0,     0,
+       0,   858,   855,     0,   866,   867,   868,     0,   857,   865,
+     870
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,    -5, -1043,  -618, -1043,
-     243, -1043, -1043, -1043, -1043,   382, -1043,  -654, -1043, -1043,
-   -1043,   -71, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   409,
-     644, -1043, -1043,   -61,   -43,   -39,    10,    14,    15,   -24,
-     -21,   -17,   -11,    17,    25,    29, -1043,    30,    32,    33,
-      37, -1043,   429,    43, -1043,    44, -1043,    47,    50,    51,
-   -1043, -1043,    62,    63, -1043,    64, -1043,    65, -1043, -1043,
-   -1043, -1043, -1043,    66, -1043,    68, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   418,   641, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   333, -1043,
-     120, -1043,  -736,   124, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   -41, -1043,  -788, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   101, -1043, -1043, -1043, -1043, -1043, -1043, -1043,   109,
-    -765, -1043, -1043, -1043, -1043,   107, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043,    77, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,    94, -1043, -1043, -1043,    97,   599, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,    92, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1042, -1043, -1043, -1043,   125, -1043, -1043, -1043,   129,
-     643, -1043, -1043, -1041, -1043, -1040, -1043,    73, -1043,    81,
-   -1043,    69,    76,    79,    80, -1043, -1043, -1043, -1038, -1043,
-   -1043, -1043, -1043,   121, -1043, -1043,  -120,  1114, -1043, -1043,
-   -1043, -1043, -1043,   130, -1043, -1043, -1043,   131, -1043,   618,
-   -1043,   -66, -1043, -1043, -1043, -1043, -1043,   -65, -1043, -1043,
-   -1043, -1043, -1043,   -16, -1043, -1043, -1043,   132, -1043, -1043,
-   -1043,   135, -1043,   613, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,    86, -1043, -1043, -1043,
-      72,   675, -1043, -1043, -1043,   -57, -1043,    -3, -1043, -1043,
-   -1043, -1043, -1043,    87, -1043, -1043, -1043,    95,   655, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,   -45, -1043, -1043, -1043,
-     145, -1043, -1043, -1043,   146, -1043,   698,   419, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1036, -1043, -1043, -1043, -1043, -1043,   139, -1043, -1043,
-   -1043,   -87, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043,   133, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   123, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043,   116, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043,   438,   633, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043,   486,   634, -1043, -1043, -1043, -1043,
-   -1043, -1043,   117, -1043, -1043,   -91, -1043, -1043, -1043, -1043,
-   -1043, -1043,  -112, -1043, -1043,  -131, -1043, -1043, -1043, -1043,
-   -1043, -1043, -1043, -1043, -1043, -1043,   127, -1043
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,    -5, -1010,  -597, -1010,
+     445, -1010, -1010, -1010, -1010,   382, -1010,  -633, -1010, -1010,
+   -1010,   -71, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   402,
+     646, -1010, -1010,   -61,   -43,   -39,    10,    14,    15,   -24,
+     -17,   -11,    17,    25,    29,    30, -1010,    32,    33,    37,
+      43, -1010, -1010,    44, -1010,    50, -1010,    51,    56,    62,
+   -1010, -1010,    63,    64, -1010,    66, -1010,    68, -1010, -1010,
+   -1010, -1010, -1010,    69, -1010,    74, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,   428,   631, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   343, -1010,
+     132, -1010,  -708,   136, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,   -41, -1010,  -760, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010,   113, -1010, -1010, -1010, -1010, -1010, -1010, -1010,   114,
+    -737, -1010, -1010, -1010, -1010,   119, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010,    88, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010,   109, -1010, -1010, -1010,   112,   591, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,    99, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1009, -1010, -1010, -1010,   144, -1010, -1010, -1010,   164,
+     636, -1010, -1010, -1008, -1010, -1007, -1010,    38, -1010,    82,
+   -1010,    76,    79,    80,    81, -1010, -1010, -1010, -1005, -1010,
+   -1010, -1010, -1010,   133, -1010, -1010,  -108,  1119, -1010, -1010,
+   -1010, -1010, -1010,   163, -1010, -1010, -1010,   166, -1010,   633,
+   -1010,   -66, -1010, -1010, -1010, -1010, -1010,   -65, -1010, -1010,
+   -1010, -1010, -1010,   -16, -1010, -1010, -1010,   165, -1010, -1010,
+   -1010,   168, -1010,   629, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,   103, -1010, -1010, -1010,
+     111,   674, -1010, -1010, -1010,   -57, -1010,    -3, -1010, -1010,
+   -1010, -1010, -1010,   101, -1010, -1010, -1010,   104,   679, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010,   -45, -1010, -1010, -1010,
+     152, -1010, -1010, -1010,   155, -1010,   680,   430, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1003, -1010, -1010, -1010, -1010, -1010,   160, -1010, -1010,
+   -1010,   -74, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010,   149, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,   134, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   129, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010,   438,   635, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010,   505,   651, -1010, -1010, -1010, -1010, -1010, -1010,
+     138, -1010, -1010,   -81, -1010, -1010, -1010, -1010, -1010, -1010,
+    -101, -1010, -1010,  -119, -1010, -1010, -1010, -1010, -1010, -1010,
+   -1010, -1010, -1010, -1010,   150, -1010
   };
 
   const short
@@ -5611,579 +5490,565 @@ namespace isc { namespace dhcp {
   {
        0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     779,    87,    88,    41,    68,    84,    85,   804,  1016,  1126,
-    1127,   868,    43,    70,    90,   454,    91,    45,    71,   162,
-     163,   164,   457,   165,   166,   167,   168,   169,   170,   171,
+     751,    87,    88,    41,    68,    84,    85,   776,   983,  1093,
+    1094,   835,    43,    70,    90,   440,    91,    45,    71,   162,
+     163,   164,   443,   165,   166,   167,   168,   169,   170,   171,
      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   483,   764,   183,   484,   184,   485,   185,   186,   187,
-     496,   776,   188,   189,   518,   190,   519,   191,   192,   193,
-     194,   477,   195,   196,   494,   197,   495,   198,   199,   200,
-     201,   459,    47,    72,   238,   239,   240,   528,   241,   242,
-     243,   244,   202,   460,   203,   461,   204,   462,   895,   896,
-     897,  1055,   869,   870,   871,  1031,  1293,   872,  1032,   873,
-    1033,   874,  1034,   875,   876,   569,   877,   878,   879,   880,
-     881,   882,   883,   884,   885,  1045,  1300,   886,   887,   888,
-     889,  1048,   890,  1049,   891,  1050,   892,  1051,   205,   507,
-     930,   931,   932,  1075,   933,  1076,   206,   504,   916,   917,
-     918,   919,   207,   506,   924,   925,   926,   927,   208,   505,
-     209,   514,   979,   980,   981,   982,   983,   210,   510,   942,
-     943,   944,  1085,    63,    80,   404,   405,   406,   583,   407,
-     584,   211,   511,   951,   952,   953,   954,   955,   956,   957,
-     958,   212,   490,   899,   900,   901,  1058,    49,    73,   286,
-     287,   288,   537,   289,   538,   290,   539,   291,   543,   292,
-     542,   213,   214,   215,   216,   500,   785,   297,   298,   217,
-     497,   911,   912,   913,  1067,  1206,  1207,   218,   491,    57,
-      77,   903,   904,   905,  1061,    59,    78,   367,   368,   369,
-     370,   371,   372,   373,   568,   374,   572,   375,   571,   376,
-     377,   573,   378,   219,   492,   907,   908,   909,  1064,    61,
-      79,   389,   390,   391,   392,   393,   577,   394,   395,   396,
-     397,   398,   300,   535,  1018,  1019,  1020,  1128,    51,    74,
-     312,   313,   314,   547,   315,   220,   498,   221,   499,   303,
-     536,  1022,  1023,  1024,  1131,    53,    75,   329,   330,   331,
-     551,   332,   333,   553,   334,   335,   222,   509,   938,   939,
-     940,  1082,    55,    76,   347,   348,   349,   350,   559,   351,
-     560,   352,   561,   353,   562,   354,   563,   355,   564,   356,
-     558,   305,   544,  1026,   223,   508,   935,   936,  1079,  1232,
-    1233,  1234,  1235,  1236,  1313,  1237,  1314,  1238,   224,   512,
-     968,   969,   970,  1096,  1323,   971,   972,  1097,   973,   974,
-     225,   226,   515,   991,   992,   993,  1108,   994,  1109,   227,
-     516,  1001,  1002,  1003,  1004,  1113,  1005,  1006,  1115,   228,
-     517,    65,    81,   426,   427,   428,   429,   588,   430,   589,
-     431,   432,   591,   433,   434,   435,   594,   836,   436,   595,
-     437,   438,   439,   598,   440,   599,   441,   600,   442,   601,
-     229,   458,    67,    82,   445,   446,   447,   604,   448,   230,
-     523,  1009,  1010,  1119,  1276,  1277,  1278,  1279,  1331,  1280,
-    1329,  1351,  1352,  1353,  1361,  1362,  1363,  1369,  1364,  1365,
-    1366,  1367,  1373,   231,   524,  1013,  1014,  1015
+     182,   469,   736,   183,   470,   184,   471,   185,   186,   187,
+     482,   748,   188,   189,   504,   190,   505,   191,   192,   193,
+     194,   463,   195,   196,   480,   197,   481,   198,   199,   200,
+     201,   445,    47,    72,   238,   239,   240,   514,   241,   242,
+     243,   244,   202,   446,   203,   447,   204,   448,   862,   863,
+     864,  1022,   836,   837,   838,   998,  1260,   839,   999,   840,
+    1000,   841,  1001,   842,   843,   555,   844,   845,   846,   847,
+     848,   849,   850,   851,   852,  1012,  1267,   853,   854,   855,
+     856,  1015,   857,  1016,   858,  1017,   859,  1018,   205,   493,
+     897,   898,   899,  1042,   900,  1043,   206,   490,   883,   884,
+     885,   886,   207,   492,   891,   892,   893,   894,   208,   491,
+     209,   500,   946,   947,   948,   949,   950,   210,   496,   909,
+     910,   911,  1052,    63,    80,   404,   405,   406,   569,   407,
+     570,   211,   497,   918,   919,   920,   921,   922,   923,   924,
+     925,   212,   476,   866,   867,   868,  1025,    49,    73,   286,
+     287,   288,   523,   289,   524,   290,   525,   291,   529,   292,
+     528,   213,   214,   215,   216,   486,   757,   297,   298,   217,
+     483,   878,   879,   880,  1034,  1173,  1174,   218,   477,    57,
+      77,   870,   871,   872,  1028,    59,    78,   367,   368,   369,
+     370,   371,   372,   373,   554,   374,   558,   375,   557,   376,
+     377,   559,   378,   219,   478,   874,   875,   876,  1031,    61,
+      79,   389,   390,   391,   392,   393,   563,   394,   395,   396,
+     397,   398,   300,   521,   985,   986,   987,  1095,    51,    74,
+     312,   313,   314,   533,   315,   220,   484,   221,   485,   303,
+     522,   989,   990,   991,  1098,    53,    75,   329,   330,   331,
+     537,   332,   333,   539,   334,   335,   222,   495,   905,   906,
+     907,  1049,    55,    76,   347,   348,   349,   350,   545,   351,
+     546,   352,   547,   353,   548,   354,   549,   355,   550,   356,
+     544,   305,   530,   993,   223,   494,   902,   903,  1046,  1199,
+    1200,  1201,  1202,  1203,  1280,  1204,  1281,  1205,   224,   498,
+     935,   936,   937,  1063,  1290,   938,   939,  1064,   940,   941,
+     225,   226,   501,   958,   959,   960,  1075,   961,  1076,   227,
+     502,   968,   969,   970,   971,  1080,   972,   973,  1082,   228,
+     503,    65,    81,   419,   420,   421,   422,   574,   423,   424,
+     576,   425,   426,   427,   579,   807,   428,   580,   229,   444,
+      67,    82,   431,   432,   433,   583,   434,   230,   509,   976,
+     977,  1086,  1243,  1244,  1245,  1246,  1298,  1247,  1296,  1318,
+    1319,  1320,  1328,  1329,  1330,  1336,  1331,  1332,  1333,  1334,
+    1340,   231,   510,   980,   981,   982
   };
 
   const short
   Dhcp6Parser::yytable_[] =
   {
-     161,   237,   257,   308,   323,   343,   965,   365,   385,   403,
-     423,    38,   258,   387,   388,   245,   301,   316,   327,   345,
-     893,   379,   399,   923,   424,  1196,  1197,  1198,   304,  1205,
-     259,  1211,   914,  1011,   260,   778,    30,   366,   386,    31,
-     810,    32,    42,    33,   133,   134,   401,   402,   160,   264,
-     401,   402,   265,   816,   817,   818,   266,   299,   311,   326,
-     344,    86,   267,   759,   760,   761,   762,   443,   444,   246,
-     302,   317,   328,   346,   455,   380,   400,   526,   425,   456,
-      89,  1070,   527,   261,  1071,   133,   134,   262,   263,    44,
-     268,   232,   233,   234,   235,   236,   533,    46,   269,   545,
-     763,   534,   270,   271,   546,   272,   273,   995,   996,   997,
-     274,   778,   834,   835,   549,   358,   275,   276,   915,   550,
-     277,    48,   556,   278,   279,    50,   160,   557,  1356,    52,
-     359,  1357,  1358,  1359,  1360,   280,   281,   282,   283,   284,
-    1073,   285,   293,  1074,   449,   986,   987,   309,   324,   294,
-      54,    56,   295,   296,   585,   310,   325,   133,   134,   586,
-     959,   998,   914,   921,   602,   922,    92,    93,   852,   603,
-      94,    58,   359,    60,   360,   361,    95,    96,    97,   362,
-     363,   364,    62,   133,   134,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,   133,
-     134,  1080,   160,    64,  1081,   126,    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,   945,   946,   947,   948,
-     949,   950,   928,   929,   133,   134,   128,   129,   130,   131,
-    1269,    66,  1270,  1271,   132,   772,   773,   774,   775,    34,
-      35,    36,    37,   133,   134,   450,   452,  1196,  1197,  1198,
-     135,  1205,   451,  1211,   160,   136,   137,   138,   139,   140,
-     141,   142,   453,   565,   143,    98,    99,   100,   101,   102,
-     103,   144,   463,   606,   960,   961,   962,   963,   607,   145,
-     160,   464,   146,  1120,   567,   526,  1121,   606,   923,   147,
-    1028,   127,  1029,   965,   127,   359,   160,   148,   149,  1158,
-     465,   466,   150,   533,  1354,   151,   467,  1355,  1030,   152,
-     468,   359,   381,   360,   361,   382,   383,   384,   469,   133,
-     134,  1052,   133,   134,  1052,   566,  1053,   470,   471,  1054,
-     153,   154,   155,   156,   157,   158,   133,   134,   133,   134,
-     336,   160,   472,   473,   159,  1218,  1219,  1220,   337,   338,
-     339,   340,   341,   342,   474,   475,  1077,  1094,   127,   847,
-     160,  1078,  1095,   848,   849,   850,   851,   852,   853,   854,
-     855,   856,   857,   858,   859,   860,   861,   476,   127,   306,
-     862,   863,   864,   865,   866,   867,   133,   134,   478,   479,
-    1101,  1106,   975,   976,   977,  1102,  1107,   781,   782,   783,
-     784,   318,   319,   320,   321,   322,   133,   134,   254,  1110,
-    1116,   575,   255,   307,  1111,  1117,   359,   602,  1123,  1052,
-     581,   480,  1118,  1124,  1305,   608,   609,   481,   254,   545,
-     610,   576,   255,  1309,  1306,   161,   160,   482,  1310,   160,
-     585,  1332,   237,   549,   556,  1319,  1333,  1374,  1335,  1336,
-     486,   487,  1375,   160,   257,   160,   245,   488,   308,  1290,
-    1291,  1292,   489,   493,   258,   323,   501,   502,   301,  1297,
-    1298,  1299,   316,   503,   513,   343,   520,   521,   522,   327,
-     304,   525,   259,   529,   530,   365,   260,   531,   532,   345,
-     540,   385,  1320,  1321,  1322,   541,   387,   388,   548,   379,
-     552,   264,   554,   160,   265,   399,   555,   570,   266,   299,
-     246,   423,   574,   311,   267,   366,   578,   579,   580,   582,
-     326,   386,   302,   160,   587,   424,   317,   590,   592,   593,
-     344,   596,   597,   328,   605,   261,   611,   612,   613,   262,
-     263,   614,   268,   346,   615,   616,   617,   626,   632,   638,
-     269,   618,   619,   380,   270,   271,   620,   272,   273,   400,
-     160,   627,   274,   628,   639,   640,   621,   622,   275,   276,
-     623,   624,   277,   625,   630,   278,   279,   635,   631,   425,
-     645,   646,   629,   633,   634,   647,   643,   280,   281,   282,
-     283,   284,   636,   285,   293,   637,   641,   642,   644,   649,
-     648,   294,   309,   650,   295,   296,   651,   652,   653,   324,
-     310,   654,   655,   659,   656,   660,   661,   325,   657,   658,
-     662,   663,   664,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   665,   666,   667,   668,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     669,   670,   127,   671,   672,   673,   674,   675,   678,   676,
-     161,   679,   681,   237,   129,   130,   131,   677,   687,   688,
-     682,   683,   247,   689,   248,   684,   685,   245,   690,   691,
-     133,   134,   249,   250,   251,   252,   253,   135,   693,   694,
-     692,   695,   136,   137,   138,   696,   698,   699,   701,   703,
-     707,   702,   254,   964,   978,   988,   255,   423,   144,   708,
-     709,  1012,   710,   704,   705,   256,   711,   966,   984,   989,
-     999,   424,   712,   713,   715,   843,   716,   717,   718,   719,
-     720,   246,   721,   723,   724,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   728,   725,
-     726,   729,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   731,   127,   359,   732,   153,   154,   133,
-     134,   967,   985,   990,  1000,   425,   129,   130,   131,   733,
-     734,   735,   736,   737,   738,   739,   740,   741,   742,   743,
-     744,   745,   133,   134,   747,   250,   251,   160,   253,   135,
-     748,   750,   751,   752,   136,   137,   138,   753,   754,   755,
-     756,   757,   758,   765,   254,   766,   767,   768,   255,   769,
-     777,   770,   771,    32,   786,   780,   787,   256,   788,   789,
-     790,   791,   792,  1057,   801,   793,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,   419,   420,   794,
-     795,   796,   797,   798,   799,   800,   421,   422,   802,   803,
-     805,   806,   807,   808,   809,   811,   812,   813,   814,   815,
-     819,   837,   842,   820,   337,   894,   898,   902,   821,   153,
-     154,   822,   906,   910,   823,   824,   160,   825,   826,   934,
-     937,   827,   828,   829,   941,   831,   832,   833,   839,  1008,
-    1017,   840,   841,  1021,  1035,  1036,  1037,  1038,  1039,   160,
-    1040,  1041,  1042,  1043,  1044,  1046,  1047,  1141,  1060,  1056,
-    1059,  1063,  1062,  1065,  1066,  1068,  1069,  1125,  1072,  1084,
-    1083,  1086,  1087,  1129,  1088,  1089,  1090,  1091,  1092,  1093,
-    1098,  1099,  1100,  1103,  1104,  1105,  1112,  1114,  1122,  1130,
-    1133,  1132,   830,  1140,  1136,  1135,  1134,  1137,  1138,  1139,
-    1142,  1143,  1144,  1150,  1145,  1146,  1147,   257,  1148,  1149,
-     365,  1152,  1153,   385,  1151,  1154,  1166,   258,   387,   388,
-    1155,   301,  1156,  1215,   379,  1216,  1167,   399,  1221,  1244,
-    1209,   343,  1245,   304,   403,   259,  1246,  1247,  1222,   260,
-     366,  1251,  1230,   386,  1168,   345,  1195,  1252,  1169,  1248,
-     964,  1261,  1262,  1265,   264,   978,  1223,   265,  1228,   988,
-    1224,   266,   299,  1173,   966,  1249,  1174,   267,  1272,   984,
-    1175,  1208,  1012,   989,  1253,   302,  1176,   308,   380,   999,
-     323,   400,  1274,  1229,  1210,  1257,   344,  1267,   261,  1285,
-    1254,   316,   262,   263,   327,   268,  1231,  1170,  1273,   346,
-    1255,  1171,  1172,   269,  1177,  1258,  1259,   270,   271,  1225,
-     272,   273,  1178,  1226,  1227,   274,  1179,  1180,   967,  1181,
-    1182,   275,   276,   985,  1183,   277,  1264,   990,   278,   279,
-    1184,  1185,   311,  1000,  1186,   326,  1275,  1187,  1188,  1266,
-     280,   281,   282,   283,   284,   317,   285,   293,   328,  1189,
-    1190,  1191,  1192,  1193,   294,  1194,  1201,   295,   296,  1282,
-    1199,  1284,  1294,  1202,  1295,  1307,  1203,  1204,  1200,  1308,
-    1296,  1315,  1316,  1317,  1318,  1330,  1338,  1339,  1342,  1344,
-     844,  1348,  1370,  1371,  1350,  1301,  1372,  1376,  1380,   920,
-     680,   838,   846,  1302,   686,  1027,  1157,  1159,  1217,  1213,
-    1214,  1243,  1242,  1260,   730,  1161,  1250,  1160,   697,  1337,
-    1212,   357,  1162,  1163,   722,   727,  1303,  1304,  1165,  1164,
-    1286,   309,  1311,  1312,   324,  1324,  1325,  1326,  1327,   310,
-    1334,   706,   325,  1343,  1340,  1346,  1287,  1347,  1349,  1239,
-    1289,  1378,  1377,  1379,   700,  1382,  1288,  1383,  1240,  1241,
-    1341,  1025,  1268,  1263,  1256,   746,  1007,  1281,  1166,   845,
-     749,  1345,  1368,  1381,     0,     0,  1221,     0,  1167,     0,
-    1283,     0,  1209,     0,     0,     0,  1222,     0,     0,     0,
-    1230,  1272,  1328,     0,   714,     0,  1168,     0,  1195,     0,
-    1169,     0,     0,     0,  1223,  1274,  1228,     0,  1224,     0,
-       0,     0,     0,     0,     0,  1173,     0,     0,  1174,     0,
-       0,  1273,  1175,  1208,     0,     0,     0,     0,  1176,     0,
-       0,  1229,     0,     0,     0,     0,  1210,     0,     0,     0,
-       0,     0,     0,     0,  1231,     0,     0,     0,     0,  1170,
-       0,     0,     0,  1171,  1172,     0,  1177,  1225,     0,  1275,
-       0,  1226,  1227,     0,  1178,     0,     0,     0,  1179,  1180,
-       0,  1181,  1182,     0,     0,     0,  1183,     0,     0,     0,
-       0,     0,  1184,  1185,     0,     0,  1186,     0,     0,  1187,
-    1188,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1189,  1190,  1191,  1192,  1193,     0,  1194,  1201,     0,
-       0,     0,  1199,     0,     0,  1202,     0,     0,  1203,  1204,
-    1200
+     161,   237,   257,   308,   323,   343,   932,   365,   385,   403,
+     416,    38,   258,   387,   388,   245,   301,   316,   327,   345,
+     860,   379,   399,   890,   417,  1163,  1164,  1165,   304,  1172,
+     259,  1178,   133,   134,   260,   750,    30,   366,   386,    31,
+     782,    32,    42,    33,   881,   731,   732,   733,   734,   264,
+     978,   401,   402,   788,   789,   790,   265,   299,   311,   326,
+     344,   441,   266,   512,  1037,   160,   442,  1038,   513,   246,
+     302,   317,   328,   346,   519,   380,   400,    44,   418,   520,
+     531,   535,   735,   261,    86,   532,   536,   262,   263,   542,
+     267,  1264,  1265,  1266,   543,   962,   963,   964,   268,   571,
+     429,   430,   269,   270,   572,   271,   272,   401,   402,   581,
+     273,   750,   309,   324,   582,    46,   274,   275,   232,   233,
+     234,   235,   236,   276,   277,   882,   160,   585,   512,   278,
+      48,   358,   586,   995,    50,   279,   280,   281,   585,   282,
+     519,   283,   284,   996,   965,   997,  1019,   285,    52,   293,
+      89,  1020,   294,   295,   296,   814,   310,   325,    54,   815,
+     816,   817,   818,   819,   820,   821,   822,   823,   824,   825,
+     826,   827,   828,  1257,  1258,  1259,   829,   830,   831,   832,
+     833,   834,    92,    93,  1019,    56,    94,    58,   359,  1021,
+     360,   361,    95,    96,    97,   362,   363,   364,  1323,   133,
+     134,  1324,  1325,  1326,  1327,   805,   806,    60,  1044,  1061,
+     133,   134,   359,  1045,  1062,   133,   134,  1040,   133,   134,
+    1041,   126,    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,    62,    64,    34,    35,    36,    37,   926,   953,
+     954,    66,   128,   129,   130,   131,   819,  1163,  1164,  1165,
+     132,  1172,  1068,  1178,   942,   943,   944,  1069,  1073,   133,
+     134,   127,  1077,  1074,   435,  1083,   135,  1078,   436,   359,
+    1084,   136,   137,   138,   139,   140,   141,   142,   437,   581,
+     143,  1090,   306,   890,  1085,   438,  1091,   144,   932,   133,
+     134,   160,   895,   896,  1125,   145,   133,   134,   146,   127,
+     439,  1019,   160,   531,  1276,   147,  1272,   160,  1273,  1277,
+     160,   254,   571,   148,   149,   255,   307,  1286,   150,  1299,
+     551,   151,   133,   134,  1300,   152,   449,   133,   134,   881,
+     888,   160,   889,    98,    99,   100,   101,   102,   103,   450,
+     451,   153,   154,   155,   156,   157,   158,   535,   336,   542,
+     553,   452,  1302,   127,  1303,   159,   337,   338,   339,   340,
+     341,   342,   127,   359,   912,   913,   914,   915,   916,   917,
+     453,   160,   927,   928,   929,   930,   318,   319,   320,   321,
+     322,   133,   134,  1341,  1236,   454,  1237,  1238,  1342,   455,
+     133,   134,   359,   381,   360,   361,   382,   383,   384,  1047,
+     552,   160,  1048,   254,   456,   457,  1087,   255,   160,  1088,
+     458,   587,   588,  1185,  1186,  1187,  1287,  1288,  1289,   133,
+     134,   161,   744,   745,   746,   747,   459,   460,   237,   753,
+     754,   755,   756,  1321,   160,   461,  1322,   462,   464,   160,
+     257,   465,   245,   466,   308,   467,   468,   472,   473,   474,
+     258,   323,   475,   479,   301,   487,   488,   562,   316,   489,
+     499,   343,   506,   507,   508,   327,   304,   511,   259,   515,
+     516,   365,   260,   517,   518,   345,   526,   385,   527,   534,
+     538,   540,   387,   388,   541,   379,   556,   264,   560,   561,
+     416,   399,   564,   160,   265,   299,   246,   565,   566,   311,
+     266,   366,   160,   567,   417,   568,   326,   386,   302,   573,
+     575,   577,   317,   578,   584,   589,   344,   590,   591,   328,
+     592,   261,   593,   594,   595,   262,   263,   596,   267,   346,
+     605,   160,   606,   611,   617,   597,   268,   607,   598,   380,
+     269,   270,   599,   271,   272,   400,   133,   134,   273,   600,
+     601,   602,   603,   309,   274,   275,   608,   618,   418,   604,
+     324,   276,   277,   614,   609,   619,   610,   278,   624,   612,
+     613,   625,   622,   279,   280,   281,   615,   282,   616,   283,
+     284,   620,   621,   623,   626,   285,   627,   293,   628,   629,
+     294,   295,   296,   630,   631,   632,   633,   310,   634,   635,
+     636,   637,   638,   639,   325,   640,   641,   642,   643,   644,
+     645,   646,   647,   408,   409,   410,   411,   412,   413,   414,
+     415,   648,   649,   650,   651,   652,   653,   654,   655,   657,
+     656,   658,   161,   660,   661,   237,   662,   663,   664,   666,
+     667,   668,   669,   670,   672,   671,   673,   674,   675,   245,
+     677,   680,   682,   678,   686,   687,   681,   683,   160,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,   688,   689,   931,   945,   955,   684,   416,
+     690,   691,   692,   979,   694,   695,   697,   698,   696,   933,
+     951,   956,   966,   417,   699,   702,   700,   810,   707,   708,
+     711,   703,   704,   246,   713,   716,   705,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     710,   712,   714,   717,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   719,   722,   127,   337,   715,   723,
+     725,   726,   720,   934,   952,   957,   967,   418,   129,   130,
+     131,   724,   727,   728,   729,   730,   247,   737,   248,   738,
+     739,   740,   741,   742,   133,   134,   249,   250,   251,   252,
+     253,   135,   743,   749,    32,   752,   136,   137,   138,   758,
+     759,   760,   771,   762,   761,   763,   254,   764,   765,   772,
+     255,   766,   144,   767,   768,   769,   770,   773,   774,   256,
+     775,   777,   778,   779,   809,   784,   780,   781,   783,   861,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   865,   869,   873,   877,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   808,   127,
+     359,   901,   904,   785,   786,   908,   153,   154,   787,   975,
+     791,   129,   130,   131,   792,   984,   988,  1002,  1003,  1004,
+     793,   794,  1005,  1006,  1007,   795,  1008,   133,   134,   796,
+     250,   251,   797,   253,   135,   798,   160,   799,   800,   136,
+     137,   138,   801,   803,   804,  1009,  1010,  1011,  1013,   254,
+    1014,  1023,  1024,   255,  1026,  1027,  1029,  1030,  1033,  1032,
+    1055,  1036,   256,  1035,  1051,  1039,  1050,  1054,  1053,  1056,
+    1057,  1058,  1059,  1060,  1065,  1066,  1067,  1070,  1071,  1072,
+    1079,  1081,  1089,  1092,  1097,  1096,  1099,  1100,  1107,  1102,
+    1101,  1103,  1104,  1105,   257,  1106,  1108,   365,  1109,  1110,
+     385,  1111,  1112,  1133,   258,   387,   388,  1113,   301,   153,
+     154,   379,  1117,  1134,   399,  1188,  1114,  1176,   343,  1115,
+     304,   403,   259,  1116,  1118,  1189,   260,   366,  1119,  1197,
+     386,  1135,   345,  1162,  1120,  1136,  1121,   931,  1122,   160,
+    1123,   264,   945,  1190,  1182,  1195,   955,  1191,   265,   299,
+    1140,   933,  1183,  1211,   266,  1239,   951,  1141,  1175,   979,
+     956,  1218,   302,  1142,   308,   380,   966,   323,   400,  1241,
+    1196,  1177,  1219,   344,  1212,   261,  1228,  1224,   316,   262,
+     263,   327,   267,  1198,  1137,  1240,   346,  1213,  1138,  1139,
+     268,  1143,  1214,  1215,   269,   270,  1192,   271,   272,  1144,
+    1193,  1194,   273,  1145,  1146,   934,  1147,  1148,   274,   275,
+     952,  1149,  1166,  1216,   957,   276,   277,  1150,  1151,   311,
+     967,   278,   326,  1242,  1152,  1153,  1220,   279,   280,   281,
+    1154,   282,   317,   283,   284,   328,  1155,  1156,  1157,   285,
+    1158,   293,  1159,  1160,   294,   295,   296,  1221,  1161,  1222,
+    1168,  1225,  1226,  1169,  1170,  1171,  1167,  1229,  1231,  1232,
+    1233,  1234,  1251,  1249,  1252,   811,  1274,  1261,  1275,  1282,
+    1283,  1262,  1284,   309,  1285,  1297,   324,  1305,  1306,  1309,
+    1311,   887,  1315,  1263,  1337,  1317,  1338,  1339,  1343,  1347,
+     665,  1180,   994,   802,   813,  1124,  1126,  1184,   659,  1181,
+    1217,  1227,   709,  1210,  1209,  1268,  1269,   676,  1304,  1179,
+    1270,  1128,  1271,  1278,  1279,  1291,  1292,   310,  1293,  1294,
+     325,  1301,  1313,  1307,  1310,  1314,  1316,  1344,  1345,  1127,
+    1346,  1349,  1350,  1130,  1129,   701,   357,   706,  1132,  1131,
+    1254,  1256,  1255,  1208,  1207,  1133,  1253,  1206,   974,   679,
+    1308,  1230,  1235,  1188,   992,  1134,   718,  1223,  1312,  1176,
+    1335,   685,  1348,  1189,     0,  1248,     0,  1197,  1239,  1295,
+     812,     0,   693,  1135,     0,  1162,   721,  1136,     0,     0,
+    1250,  1190,  1241,  1195,     0,  1191,     0,     0,     0,     0,
+       0,     0,  1140,     0,     0,     0,     0,     0,  1240,  1141,
+    1175,     0,     0,     0,     0,  1142,     0,     0,  1196,     0,
+       0,     0,     0,  1177,     0,     0,     0,     0,     0,     0,
+       0,  1198,     0,     0,     0,     0,  1137,     0,     0,     0,
+    1138,  1139,     0,  1143,  1192,     0,  1242,     0,  1193,  1194,
+       0,  1144,     0,     0,     0,  1145,  1146,     0,  1147,  1148,
+       0,     0,     0,  1149,  1166,     0,     0,     0,     0,  1150,
+    1151,     0,     0,     0,     0,     0,  1152,  1153,     0,     0,
+       0,     0,  1154,     0,     0,     0,     0,     0,  1155,  1156,
+    1157,     0,  1158,     0,  1159,  1160,     0,     0,     0,     0,
+    1161,     0,  1168,     0,     0,  1169,  1170,  1171,  1167
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
-      71,    72,    73,    74,    75,    76,   794,    78,    79,    80,
+      71,    72,    73,    74,    75,    76,   766,    78,    79,    80,
       81,    16,    73,    79,    79,    72,    73,    74,    75,    76,
-     756,    78,    79,   788,    81,  1067,  1067,  1067,    73,  1067,
-      73,  1067,   139,   210,    73,   653,     0,    78,    79,     5,
-     694,     7,     7,     9,   108,   109,   145,   146,   225,    73,
-     145,   146,    73,   707,   708,   709,    73,    73,    74,    75,
-      76,   225,    73,   191,   192,   193,   194,    13,    14,    72,
-      73,    74,    75,    76,     3,    78,    79,     3,    81,     8,
-      10,     3,     8,    73,     6,   108,   109,    73,    73,     7,
-      73,    16,    17,    18,    19,    20,     3,     7,    73,     3,
-     228,     8,    73,    73,     8,    73,    73,   171,   172,   173,
-      73,   729,   188,   189,     3,    24,    73,    73,   225,     8,
-      73,     7,     3,    73,    73,     7,   225,     8,   202,     7,
-      81,   205,   206,   207,   208,    73,    73,    73,    73,    73,
-       3,    73,    73,     6,     6,   168,   169,    74,    75,    73,
-       7,     7,    73,    73,     3,    74,    75,   108,   109,     8,
-      24,   225,   139,   140,     3,   142,    11,    12,    32,     8,
-      15,     7,    81,     7,    83,    84,    21,    22,    23,    88,
-      89,    90,     7,   108,   109,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   108,
-     109,     3,   225,     7,     6,    79,    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,   148,   149,   150,   151,
-     152,   153,   127,   128,   108,   109,    91,    92,    93,    94,
-     201,     7,   203,   204,    99,    95,    96,    97,    98,   225,
-     226,   227,   228,   108,   109,     3,     8,  1309,  1309,  1309,
-     115,  1309,     4,  1309,   225,   120,   121,   122,   123,   124,
-     125,   126,     3,     8,   129,    51,    52,    53,    54,    55,
-      56,   136,     4,     3,   158,   159,   160,   161,     8,   144,
-     225,     4,   147,     3,     8,     3,     6,     3,  1073,   154,
-       8,    80,     8,  1101,    80,    81,   225,   162,   163,  1055,
-       4,     4,   167,     3,     3,   170,     4,     6,     8,   174,
-       4,    81,    82,    83,    84,    85,    86,    87,     4,   108,
-     109,     3,   108,   109,     3,     3,     8,     4,     4,     8,
-     195,   196,   197,   198,   199,   200,   108,   109,   108,   109,
-     129,   225,     4,     4,   209,   131,   132,   133,   137,   138,
-     139,   140,   141,   142,     4,     4,     3,     3,    80,    24,
-     225,     8,     8,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,     4,    80,   101,
-      45,    46,    47,    48,    49,    50,   108,   109,     4,     4,
-       3,     3,   164,   165,   166,     8,     8,   116,   117,   118,
-     119,   103,   104,   105,   106,   107,   108,   109,   130,     3,
-       3,     8,   134,   135,     8,     8,    81,     3,     3,     3,
-       8,     4,     8,     8,     8,   450,   451,     4,   130,     3,
-     225,     3,   134,     3,     8,   526,   225,     4,     8,   225,
-       3,     3,   533,     3,     3,     8,     8,     3,     8,     8,
-       4,     4,     8,   225,   545,   225,   533,     4,   549,    25,
-      26,    27,     4,     4,   545,   556,     4,     4,   545,    42,
-      43,    44,   549,     4,     4,   566,     4,     4,     4,   556,
-     545,     4,   545,     4,     4,   576,   545,     4,     4,   566,
-       4,   582,   155,   156,   157,     4,   582,   582,     4,   576,
-       4,   545,     4,   225,   545,   582,     4,     4,   545,   545,
-     533,   602,     4,   549,   545,   576,     4,     4,     4,     3,
-     556,   582,   545,   225,     4,   602,   549,     4,     4,     4,
-     566,     4,     4,   556,     4,   545,     4,     4,     4,   545,
-     545,     4,   545,   566,     4,     4,     4,   228,     4,     4,
-     545,   226,   226,   576,   545,   545,   226,   545,   545,   582,
-     225,   227,   545,   227,     4,     4,   226,   226,   545,   545,
-     226,   226,   545,   226,   226,   545,   545,   228,   226,   602,
-       4,     4,   227,   226,   226,     4,   227,   545,   545,   545,
-     545,   545,   228,   545,   545,   228,   228,   228,   228,     4,
-     226,   545,   549,     4,   545,   545,     4,     4,     4,   556,
-     549,     4,     4,     4,   228,     4,     4,   556,   228,   228,
-       4,     4,     4,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,     4,     4,     4,   226,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-       4,     4,    80,     4,     4,     4,     4,   228,     4,   228,
-     751,     4,     4,   754,    92,    93,    94,   228,     4,     4,
-     228,   228,   100,     4,   102,   226,   226,   754,     4,     4,
-     108,   109,   110,   111,   112,   113,   114,   115,   228,     4,
-     226,     4,   120,   121,   122,     4,     4,   226,     4,     4,
-       4,   226,   130,   794,   795,   796,   134,   798,   136,     4,
-       4,   802,     4,   226,   226,   143,     4,   794,   795,   796,
-     797,   798,     4,     4,     4,   750,     4,   226,     4,     4,
-       4,   754,   228,     4,   228,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,     4,   228,
-     228,     4,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,   228,    80,    81,     4,   195,   196,   108,
-     109,   794,   795,   796,   797,   798,    92,    93,    94,     4,
-     226,     4,   226,   226,     4,     4,   228,   228,     4,     4,
-       4,     4,   108,   109,     4,   111,   112,   225,   114,   115,
-     226,     4,     7,   225,   120,   121,   122,     7,     7,     7,
-       7,     5,   225,   225,   130,   225,     5,     5,   134,     5,
-       5,   225,   225,     7,     5,   225,     5,   143,     5,     7,
-       5,     5,     5,     3,     5,     7,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,     7,
-       7,     7,     7,     7,   225,   225,   195,   196,     7,     5,
-       5,     5,   225,   225,   225,   225,     7,   225,   225,   225,
-     225,   190,     5,   225,   137,     7,     7,     7,   225,   195,
-     196,   225,     7,     7,   225,   225,   225,   225,   225,     7,
-       7,   225,   225,   225,     7,   225,   225,   225,   225,     7,
-       7,   225,   225,     7,     4,     4,     4,     4,     4,   225,
-       4,     4,     4,     4,     4,     4,     4,   228,     3,     6,
-       6,     3,     6,     6,     3,     6,     3,   225,     6,     3,
-       6,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
-       3,     6,   729,   226,     4,     6,     8,     4,     4,     4,
-     226,   228,   226,     4,   226,   226,   226,  1058,   226,   226,
-    1061,   226,     4,  1064,   228,     4,  1067,  1058,  1064,  1064,
-       4,  1058,     4,     4,  1061,     4,  1067,  1064,  1079,   226,
-    1067,  1082,   226,  1058,  1085,  1058,   226,   226,  1079,  1058,
-    1061,     4,  1079,  1064,  1067,  1082,  1067,     4,  1067,   226,
-    1101,     4,     4,     4,  1058,  1106,  1079,  1058,  1079,  1110,
-    1079,  1058,  1058,  1067,  1101,   226,  1067,  1058,  1119,  1106,
-    1067,  1067,  1123,  1110,   226,  1058,  1067,  1128,  1061,  1116,
-    1131,  1064,  1119,  1079,  1067,   228,  1082,     4,  1058,     3,
-     226,  1128,  1058,  1058,  1131,  1058,  1079,  1067,  1119,  1082,
-     226,  1067,  1067,  1058,  1067,   226,   226,  1058,  1058,  1079,
-    1058,  1058,  1067,  1079,  1079,  1058,  1067,  1067,  1101,  1067,
-    1067,  1058,  1058,  1106,  1067,  1058,   228,  1110,  1058,  1058,
-    1067,  1067,  1128,  1116,  1067,  1131,  1119,  1067,  1067,   226,
-    1058,  1058,  1058,  1058,  1058,  1128,  1058,  1058,  1131,  1067,
-    1067,  1067,  1067,  1067,  1058,  1067,  1067,  1058,  1058,   228,
-    1067,     6,   225,  1067,   225,     8,  1067,  1067,  1067,     8,
-     225,     4,     8,     3,     8,     4,     4,     4,     4,     4,
-     751,     5,     4,     4,     7,   225,     4,     4,     4,   787,
-     526,   742,   754,   225,   533,   842,  1052,  1057,  1077,  1070,
-    1073,  1087,  1085,  1106,   585,  1060,  1094,  1058,   545,  1309,
-    1069,    77,  1061,  1063,   576,   582,   225,   225,  1066,  1064,
-    1128,  1128,   225,   225,  1131,   225,   225,   225,   225,  1128,
-     225,   556,  1131,   226,   228,   225,  1130,   225,   225,  1080,
-    1133,   226,   228,   226,   549,   225,  1131,   225,  1082,  1084,
-    1317,   812,  1116,  1110,  1101,   602,   798,  1120,  1309,   753,
-     606,  1332,  1354,  1374,    -1,    -1,  1317,    -1,  1309,    -1,
-    1123,    -1,  1309,    -1,    -1,    -1,  1317,    -1,    -1,    -1,
-    1317,  1332,  1267,    -1,   566,    -1,  1309,    -1,  1309,    -1,
-    1309,    -1,    -1,    -1,  1317,  1332,  1317,    -1,  1317,    -1,
-      -1,    -1,    -1,    -1,    -1,  1309,    -1,    -1,  1309,    -1,
-      -1,  1332,  1309,  1309,    -1,    -1,    -1,    -1,  1309,    -1,
-      -1,  1317,    -1,    -1,    -1,    -1,  1309,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1317,    -1,    -1,    -1,    -1,  1309,
-      -1,    -1,    -1,  1309,  1309,    -1,  1309,  1317,    -1,  1332,
-      -1,  1317,  1317,    -1,  1309,    -1,    -1,    -1,  1309,  1309,
-      -1,  1309,  1309,    -1,    -1,    -1,  1309,    -1,    -1,    -1,
-      -1,    -1,  1309,  1309,    -1,    -1,  1309,    -1,    -1,  1309,
-    1309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1309,  1309,  1309,  1309,  1309,    -1,  1309,  1309,    -1,
-      -1,    -1,  1309,    -1,    -1,  1309,    -1,    -1,  1309,  1309,
-    1309
+     728,    78,    79,   760,    81,  1034,  1034,  1034,    73,  1034,
+      73,  1034,   108,   109,    73,   632,     0,    78,    79,     5,
+     673,     7,     7,     9,   139,   186,   187,   188,   189,    73,
+     205,   145,   146,   686,   687,   688,    73,    73,    74,    75,
+      76,     3,    73,     3,     3,   220,     8,     6,     8,    72,
+      73,    74,    75,    76,     3,    78,    79,     7,    81,     8,
+       3,     3,   223,    73,   220,     8,     8,    73,    73,     3,
+      73,    42,    43,    44,     8,   171,   172,   173,    73,     3,
+      13,    14,    73,    73,     8,    73,    73,   145,   146,     3,
+      73,   708,    74,    75,     8,     7,    73,    73,    16,    17,
+      18,    19,    20,    73,    73,   220,   220,     3,     3,    73,
+       7,    24,     8,     8,     7,    73,    73,    73,     3,    73,
+       3,    73,    73,     8,   220,     8,     3,    73,     7,    73,
+      10,     8,    73,    73,    73,    24,    74,    75,     7,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    25,    26,    27,    45,    46,    47,    48,
+      49,    50,    11,    12,     3,     7,    15,     7,    81,     8,
+      83,    84,    21,    22,    23,    88,    89,    90,   197,   108,
+     109,   200,   201,   202,   203,   183,   184,     7,     3,     3,
+     108,   109,    81,     8,     8,   108,   109,     3,   108,   109,
+       6,    79,    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,     7,     7,   220,   221,   222,   223,    24,   168,
+     169,     7,    91,    92,    93,    94,    32,  1276,  1276,  1276,
+      99,  1276,     3,  1276,   164,   165,   166,     8,     3,   108,
+     109,    80,     3,     8,     6,     3,   115,     8,     3,    81,
+       8,   120,   121,   122,   123,   124,   125,   126,     4,     3,
+     129,     3,   101,  1040,     8,     8,     8,   136,  1068,   108,
+     109,   220,   127,   128,  1022,   144,   108,   109,   147,    80,
+       3,     3,   220,     3,     3,   154,     8,   220,     8,     8,
+     220,   130,     3,   162,   163,   134,   135,     8,   167,     3,
+       8,   170,   108,   109,     8,   174,     4,   108,   109,   139,
+     140,   220,   142,    51,    52,    53,    54,    55,    56,     4,
+       4,   190,   191,   192,   193,   194,   195,     3,   129,     3,
+       8,     4,     8,    80,     8,   204,   137,   138,   139,   140,
+     141,   142,    80,    81,   148,   149,   150,   151,   152,   153,
+       4,   220,   158,   159,   160,   161,   103,   104,   105,   106,
+     107,   108,   109,     3,   196,     4,   198,   199,     8,     4,
+     108,   109,    81,    82,    83,    84,    85,    86,    87,     3,
+       3,   220,     6,   130,     4,     4,     3,   134,   220,     6,
+       4,   436,   437,   131,   132,   133,   155,   156,   157,   108,
+     109,   512,    95,    96,    97,    98,     4,     4,   519,   116,
+     117,   118,   119,     3,   220,     4,     6,     4,     4,   220,
+     531,     4,   519,     4,   535,     4,     4,     4,     4,     4,
+     531,   542,     4,     4,   531,     4,     4,     3,   535,     4,
+       4,   552,     4,     4,     4,   542,   531,     4,   531,     4,
+       4,   562,   531,     4,     4,   552,     4,   568,     4,     4,
+       4,     4,   568,   568,     4,   562,     4,   531,     4,     8,
+     581,   568,     4,   220,   531,   531,   519,     4,     4,   535,
+     531,   562,   220,     8,   581,     3,   542,   568,   531,     4,
+       4,     4,   535,     4,     4,   220,   552,     4,     4,   542,
+       4,   531,     4,     4,     4,   531,   531,     4,   531,   552,
+     223,   220,   222,     4,     4,   221,   531,   222,   221,   562,
+     531,   531,   221,   531,   531,   568,   108,   109,   531,   221,
+     221,   221,   221,   535,   531,   531,   222,     4,   581,   221,
+     542,   531,   531,   223,   221,     4,   221,   531,     4,   221,
+     221,     4,   222,   531,   531,   531,   223,   531,   223,   531,
+     531,   223,   223,   223,     4,   531,   221,   531,     4,     4,
+     531,   531,   531,     4,     4,     4,     4,   535,     4,   223,
+     223,   223,     4,     4,   542,     4,     4,     4,     4,     4,
+       4,     4,   221,   175,   176,   177,   178,   179,   180,   181,
+     182,     4,     4,     4,     4,     4,     4,   223,   223,     4,
+     223,     4,   723,     4,   223,   726,   223,   221,   221,     4,
+       4,     4,     4,     4,   223,   221,     4,     4,     4,   726,
+       4,     4,     4,   221,     4,     4,   221,   221,   220,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,     4,     4,   766,   767,   768,   221,   770,
+       4,     4,     4,   774,     4,     4,     4,     4,   221,   766,
+     767,   768,   769,   770,     4,     4,   223,   722,     4,     4,
+       4,   223,   223,   726,     4,     4,   223,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+     223,   221,   221,     4,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,     4,     4,    80,   137,   221,     7,
+       7,     7,   221,   766,   767,   768,   769,   770,    92,    93,
+      94,   220,     7,     7,     5,   220,   100,   220,   102,   220,
+       5,     5,     5,   220,   108,   109,   110,   111,   112,   113,
+     114,   115,   220,     5,     7,   220,   120,   121,   122,     5,
+       5,     5,   220,     5,     7,     5,   130,     5,     7,   220,
+     134,     7,   136,     7,     7,     7,     7,     5,     7,   143,
+       5,     5,     5,   220,     5,     7,   220,   220,   220,     7,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,     7,     7,     7,     7,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,   185,    80,
+      81,     7,     7,   220,   220,     7,   190,   191,   220,     7,
+     220,    92,    93,    94,   220,     7,     7,     4,     4,     4,
+     220,   220,     4,     4,     4,   220,     4,   108,   109,   220,
+     111,   112,   220,   114,   115,   220,   220,   220,   220,   120,
+     121,   122,   220,   220,   220,     4,     4,     4,     4,   130,
+       4,     6,     3,   134,     6,     3,     6,     3,     3,     6,
+       4,     3,   143,     6,     3,     6,     6,     3,     6,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   220,     3,     6,     6,     3,   221,     6,
+       8,     4,     4,     4,  1025,     4,   223,  1028,   221,   223,
+    1031,   221,   221,  1034,  1025,  1031,  1031,   221,  1025,   190,
+     191,  1028,     4,  1034,  1031,  1046,   221,  1034,  1049,   221,
+    1025,  1052,  1025,   221,   223,  1046,  1025,  1028,   221,  1046,
+    1031,  1034,  1049,  1034,     4,  1034,     4,  1068,     4,   220,
+       4,  1025,  1073,  1046,     4,  1046,  1077,  1046,  1025,  1025,
+    1034,  1068,     4,   221,  1025,  1086,  1073,  1034,  1034,  1090,
+    1077,     4,  1025,  1034,  1095,  1028,  1083,  1098,  1031,  1086,
+    1046,  1034,     4,  1049,   221,  1025,     4,   223,  1095,  1025,
+    1025,  1098,  1025,  1046,  1034,  1086,  1049,   221,  1034,  1034,
+    1025,  1034,   221,   221,  1025,  1025,  1046,  1025,  1025,  1034,
+    1046,  1046,  1025,  1034,  1034,  1068,  1034,  1034,  1025,  1025,
+    1073,  1034,  1034,   221,  1077,  1025,  1025,  1034,  1034,  1095,
+    1083,  1025,  1098,  1086,  1034,  1034,   221,  1025,  1025,  1025,
+    1034,  1025,  1095,  1025,  1025,  1098,  1034,  1034,  1034,  1025,
+    1034,  1025,  1034,  1034,  1025,  1025,  1025,   221,  1034,   221,
+    1034,   221,   221,  1034,  1034,  1034,  1034,     4,   223,     4,
+     221,     4,     6,   223,     3,   723,     8,   220,     8,     4,
+       8,   220,     3,  1095,     8,     4,  1098,     4,     4,     4,
+       4,   759,     5,   220,     4,     7,     4,     4,     4,     4,
+     519,  1037,   809,   708,   726,  1019,  1024,  1044,   512,  1040,
+    1061,  1073,   571,  1054,  1052,   220,   220,   531,  1276,  1036,
+     220,  1027,   220,   220,   220,   220,   220,  1095,   220,   220,
+    1098,   220,   220,   223,   221,   220,   220,   223,   221,  1025,
+     221,   220,   220,  1030,  1028,   562,    77,   568,  1033,  1031,
+    1097,  1100,  1098,  1051,  1049,  1276,  1095,  1047,   770,   535,
+    1284,  1077,  1083,  1284,   784,  1276,   581,  1068,  1299,  1276,
+    1321,   542,  1341,  1284,    -1,  1087,    -1,  1284,  1299,  1234,
+     725,    -1,   552,  1276,    -1,  1276,   585,  1276,    -1,    -1,
+    1090,  1284,  1299,  1284,    -1,  1284,    -1,    -1,    -1,    -1,
+      -1,    -1,  1276,    -1,    -1,    -1,    -1,    -1,  1299,  1276,
+    1276,    -1,    -1,    -1,    -1,  1276,    -1,    -1,  1284,    -1,
+      -1,    -1,    -1,  1276,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1284,    -1,    -1,    -1,    -1,  1276,    -1,    -1,    -1,
+    1276,  1276,    -1,  1276,  1284,    -1,  1299,    -1,  1284,  1284,
+      -1,  1276,    -1,    -1,    -1,  1276,  1276,    -1,  1276,  1276,
+      -1,    -1,    -1,  1276,  1276,    -1,    -1,    -1,    -1,  1276,
+    1276,    -1,    -1,    -1,    -1,    -1,  1276,  1276,    -1,    -1,
+      -1,    -1,  1276,    -1,    -1,    -1,    -1,    -1,  1276,  1276,
+    1276,    -1,  1276,    -1,  1276,  1276,    -1,    -1,    -1,    -1,
+    1276,    -1,  1276,    -1,    -1,  1276,  1276,  1276,  1276
   };
 
   const short
   Dhcp6Parser::yystos_[] =
   {
-       0,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-       0,     5,     7,     9,   225,   226,   227,   228,   245,   246,
-     247,   252,     7,   261,     7,   266,     7,   321,     7,   436,
-       7,   517,     7,   534,     7,   551,     7,   468,     7,   474,
-       7,   498,     7,   412,     7,   620,     7,   651,   253,   248,
-     262,   267,   322,   437,   518,   535,   552,   469,   475,   499,
-     413,   621,   652,   245,   254,   255,   225,   250,   251,    10,
-     263,   265,    11,    12,    15,    21,    22,    23,    51,    52,
+       0,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+       0,     5,     7,     9,   220,   221,   222,   223,   240,   241,
+     242,   247,     7,   256,     7,   261,     7,   316,     7,   431,
+       7,   512,     7,   529,     7,   546,     7,   463,     7,   469,
+       7,   493,     7,   407,     7,   615,     7,   634,   248,   243,
+     257,   262,   317,   432,   513,   530,   547,   464,   470,   494,
+     408,   616,   635,   240,   249,   250,   220,   245,   246,    10,
+     258,   260,    11,    12,    15,    21,    22,    23,    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,    91,    92,
       93,    94,    99,   108,   109,   115,   120,   121,   122,   123,
      124,   125,   126,   129,   136,   144,   147,   154,   162,   163,
-     167,   170,   174,   195,   196,   197,   198,   199,   200,   209,
-     225,   260,   268,   269,   270,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   292,   294,   296,   297,   298,   301,   302,
-     304,   306,   307,   308,   309,   311,   312,   314,   316,   317,
-     318,   319,   331,   333,   335,   377,   385,   391,   397,   399,
-     406,   420,   430,   450,   451,   452,   453,   458,   466,   492,
-     524,   526,   545,   573,   587,   599,   600,   608,   618,   649,
-     658,   682,    16,    17,    18,    19,    20,   260,   323,   324,
-     325,   327,   328,   329,   330,   524,   526,   100,   102,   110,
-     111,   112,   113,   114,   130,   134,   143,   260,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   286,   287,   288,   289,   292,   294,   296,   297,   298,
-     301,   302,   304,   306,   312,   314,   438,   439,   440,   442,
-     444,   446,   448,   450,   451,   452,   453,   456,   457,   492,
-     511,   524,   526,   528,   545,   570,   101,   135,   260,   446,
-     448,   492,   519,   520,   521,   523,   524,   526,   103,   104,
-     105,   106,   107,   260,   446,   448,   492,   524,   526,   536,
-     537,   538,   540,   541,   543,   544,   129,   137,   138,   139,
-     140,   141,   142,   260,   492,   524,   526,   553,   554,   555,
-     556,   558,   560,   562,   564,   566,   568,   466,    24,    81,
-      83,    84,    88,    89,    90,   260,   353,   476,   477,   478,
-     479,   480,   481,   482,   484,   486,   488,   489,   491,   524,
-     526,    82,    85,    86,    87,   260,   353,   480,   486,   500,
-     501,   502,   503,   504,   506,   507,   508,   509,   510,   524,
-     526,   145,   146,   260,   414,   415,   416,   418,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   195,   196,   260,   524,   526,   622,   623,   624,   625,
-     627,   629,   630,   632,   633,   634,   637,   639,   640,   641,
-     643,   645,   647,    13,    14,   653,   654,   655,   657,     6,
-       3,     4,     8,     3,   264,     3,     8,   271,   650,   320,
-     332,   334,   336,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   310,     4,     4,
-       4,     4,     4,   290,   293,   295,     4,     4,     4,     4,
-     431,   467,   493,     4,   313,   315,   299,   459,   525,   527,
-     454,     4,     4,     4,   386,   398,   392,   378,   574,   546,
-     407,   421,   588,     4,   400,   601,   609,   619,   303,   305,
-       4,     4,     4,   659,   683,     4,     3,     8,   326,     4,
-       4,     4,     4,     3,     8,   512,   529,   441,   443,   445,
-       4,     4,   449,   447,   571,     3,     8,   522,     4,     3,
-       8,   539,     4,   542,     4,     4,     3,     8,   569,   557,
-     559,   561,   563,   565,   567,     8,     3,     8,   483,   354,
-       4,   487,   485,   490,     4,     8,     3,   505,     4,     4,
-       4,     8,     3,   417,   419,     3,     8,     4,   626,   628,
-       4,   631,     4,     4,   635,   638,     4,     4,   642,   644,
-     646,   648,     3,     8,   656,     4,     3,     8,   245,   245,
-     225,     4,     4,     4,     4,     4,     4,     4,   226,   226,
-     226,   226,   226,   226,   226,   226,   228,   227,   227,   227,
-     226,   226,     4,   226,   226,   228,   228,   228,     4,     4,
-       4,   228,   228,   227,   228,     4,     4,     4,   226,     4,
-       4,     4,     4,     4,     4,     4,   228,   228,   228,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   226,     4,
-       4,     4,     4,     4,     4,   228,   228,   228,     4,     4,
-     269,     4,   228,   228,   226,   226,   324,     4,     4,     4,
-       4,     4,   226,   228,     4,     4,     4,   439,     4,   226,
-     520,     4,   226,     4,   226,   226,   537,     4,     4,     4,
-       4,     4,     4,     4,   555,     4,     4,   226,     4,     4,
-       4,   228,   478,     4,   228,   228,   228,   502,     4,     4,
-     415,   228,     4,     4,   226,     4,   226,   226,     4,     4,
-     228,   228,     4,     4,     4,     4,   623,     4,   226,   654,
-       4,     7,   225,     7,     7,     7,     7,     5,   225,   191,
-     192,   193,   194,   228,   291,   225,   225,     5,     5,     5,
-     225,   225,    95,    96,    97,    98,   300,     5,   247,   249,
-     225,   116,   117,   118,   119,   455,     5,     5,     5,     7,
-       5,     5,     5,     7,     7,     7,     7,     7,     7,   225,
-     225,     5,     7,     5,   256,     5,     5,   225,   225,   225,
-     256,   225,     7,   225,   225,   225,   256,   256,   256,   225,
-     225,   225,   225,   225,   225,   225,   225,   225,   225,   225,
-     249,   225,   225,   225,   188,   189,   636,   190,   291,   225,
-     225,   225,     5,   245,   268,   653,   323,    24,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    45,    46,    47,    48,    49,    50,   260,   341,
-     342,   343,   346,   348,   350,   352,   353,   355,   356,   357,
-     358,   359,   360,   361,   362,   363,   366,   367,   368,   369,
-     371,   373,   375,   341,     7,   337,   338,   339,     7,   432,
-     433,   434,     7,   470,   471,   472,     7,   494,   495,   496,
-       7,   460,   461,   462,   139,   225,   387,   388,   389,   390,
-     254,   140,   142,   389,   393,   394,   395,   396,   127,   128,
-     379,   380,   381,   383,     7,   575,   576,     7,   547,   548,
-     549,     7,   408,   409,   410,   148,   149,   150,   151,   152,
-     153,   422,   423,   424,   425,   426,   427,   428,   429,    24,
-     158,   159,   160,   161,   260,   355,   524,   526,   589,   590,
-     591,   594,   595,   597,   598,   164,   165,   166,   260,   401,
-     402,   403,   404,   405,   524,   526,   168,   169,   260,   524,
-     526,   602,   603,   604,   606,   171,   172,   173,   225,   524,
-     526,   610,   611,   612,   613,   615,   616,   622,     7,   660,
-     661,   210,   260,   684,   685,   686,   257,     7,   513,   514,
-     515,     7,   530,   531,   532,   556,   572,   337,     8,     8,
-       8,   344,   347,   349,   351,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   364,     4,     4,   370,   372,
-     374,   376,     3,     8,     8,   340,     6,     3,   435,     6,
-       3,   473,     6,     3,   497,     6,     3,   463,     6,     3,
-       3,     6,     6,     3,     6,   382,   384,     3,     8,   577,
-       3,     6,   550,     6,     3,   411,     6,     3,     4,     4,
-       4,     4,     4,     4,     3,     8,   592,   596,     4,     4,
-       4,     3,     8,     4,     4,     4,     3,     8,   605,   607,
-       3,     8,     4,   614,     4,   617,     3,     8,     8,   662,
-       3,     6,     4,     3,     8,   225,   258,   259,   516,     6,
-       3,   533,     6,     3,     8,     6,     4,     4,     4,     4,
-     226,   228,   226,   228,   226,   226,   226,   226,   226,   226,
-       4,   228,   226,     4,     4,     4,     4,   342,   341,   339,
-     438,   434,   476,   472,   500,   496,   260,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     286,   287,   288,   289,   292,   294,   296,   297,   298,   301,
-     302,   304,   306,   312,   314,   353,   430,   442,   444,   446,
-     448,   450,   451,   452,   453,   457,   464,   465,   492,   524,
-     526,   570,   462,   388,   394,     4,     4,   380,   131,   132,
-     133,   260,   272,   273,   274,   275,   276,   277,   353,   492,
-     524,   526,   578,   579,   580,   581,   582,   584,   586,   576,
-     553,   549,   414,   410,   226,   226,   226,   226,   226,   226,
-     423,     4,     4,   226,   226,   226,   590,   228,   226,   226,
-     402,     4,     4,   603,   228,     4,   226,     4,   611,   201,
-     203,   204,   260,   353,   524,   526,   663,   664,   665,   666,
-     668,   661,   228,   685,     6,     3,   519,   515,   536,   532,
-      25,    26,    27,   345,   225,   225,   225,    42,    43,    44,
-     365,   225,   225,   225,   225,     8,     8,     8,     8,     3,
-       8,   225,   225,   583,   585,     4,     8,     3,     8,     8,
-     155,   156,   157,   593,   225,   225,   225,   225,   245,   669,
-       4,   667,     3,     8,   225,     8,     8,   465,     4,     4,
-     228,   580,     4,   226,     4,   664,   225,   225,     5,   225,
-       7,   670,   671,   672,     3,     6,   202,   205,   206,   207,
-     208,   673,   674,   675,   677,   678,   679,   680,   671,   676,
-       4,     4,     4,   681,     3,     8,     4,   228,   226,   226,
-       4,   674,   225,   225
+     167,   170,   174,   190,   191,   192,   193,   194,   195,   204,
+     220,   255,   263,   264,   265,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   287,   289,   291,   292,   293,   296,   297,
+     299,   301,   302,   303,   304,   306,   307,   309,   311,   312,
+     313,   314,   326,   328,   330,   372,   380,   386,   392,   394,
+     401,   415,   425,   445,   446,   447,   448,   453,   461,   487,
+     519,   521,   540,   568,   582,   594,   595,   603,   613,   632,
+     641,   665,    16,    17,    18,    19,    20,   255,   318,   319,
+     320,   322,   323,   324,   325,   519,   521,   100,   102,   110,
+     111,   112,   113,   114,   130,   134,   143,   255,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   281,   282,   283,   284,   287,   289,   291,   292,   293,
+     296,   297,   299,   301,   307,   309,   433,   434,   435,   437,
+     439,   441,   443,   445,   446,   447,   448,   451,   452,   487,
+     506,   519,   521,   523,   540,   565,   101,   135,   255,   441,
+     443,   487,   514,   515,   516,   518,   519,   521,   103,   104,
+     105,   106,   107,   255,   441,   443,   487,   519,   521,   531,
+     532,   533,   535,   536,   538,   539,   129,   137,   138,   139,
+     140,   141,   142,   255,   487,   519,   521,   548,   549,   550,
+     551,   553,   555,   557,   559,   561,   563,   461,    24,    81,
+      83,    84,    88,    89,    90,   255,   348,   471,   472,   473,
+     474,   475,   476,   477,   479,   481,   483,   484,   486,   519,
+     521,    82,    85,    86,    87,   255,   348,   475,   481,   495,
+     496,   497,   498,   499,   501,   502,   503,   504,   505,   519,
+     521,   145,   146,   255,   409,   410,   411,   413,   175,   176,
+     177,   178,   179,   180,   181,   182,   255,   519,   521,   617,
+     618,   619,   620,   622,   623,   625,   626,   627,   630,    13,
+      14,   636,   637,   638,   640,     6,     3,     4,     8,     3,
+     259,     3,     8,   266,   633,   315,   327,   329,   331,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   305,     4,     4,     4,     4,     4,   285,
+     288,   290,     4,     4,     4,     4,   426,   462,   488,     4,
+     308,   310,   294,   454,   520,   522,   449,     4,     4,     4,
+     381,   393,   387,   373,   569,   541,   402,   416,   583,     4,
+     395,   596,   604,   614,   298,   300,     4,     4,     4,   642,
+     666,     4,     3,     8,   321,     4,     4,     4,     4,     3,
+       8,   507,   524,   436,   438,   440,     4,     4,   444,   442,
+     566,     3,     8,   517,     4,     3,     8,   534,     4,   537,
+       4,     4,     3,     8,   564,   552,   554,   556,   558,   560,
+     562,     8,     3,     8,   478,   349,     4,   482,   480,   485,
+       4,     8,     3,   500,     4,     4,     4,     8,     3,   412,
+     414,     3,     8,     4,   621,     4,   624,     4,     4,   628,
+     631,     3,     8,   639,     4,     3,     8,   240,   240,   220,
+       4,     4,     4,     4,     4,     4,     4,   221,   221,   221,
+     221,   221,   221,   221,   221,   223,   222,   222,   222,   221,
+     221,     4,   221,   221,   223,   223,   223,     4,     4,     4,
+     223,   223,   222,   223,     4,     4,     4,   221,     4,     4,
+       4,     4,     4,     4,     4,   223,   223,   223,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   221,     4,     4,
+       4,     4,     4,     4,   223,   223,   223,     4,     4,   264,
+       4,   223,   223,   221,   221,   319,     4,     4,     4,     4,
+       4,   221,   223,     4,     4,     4,   434,     4,   221,   515,
+       4,   221,     4,   221,   221,   532,     4,     4,     4,     4,
+       4,     4,     4,   550,     4,     4,   221,     4,     4,     4,
+     223,   473,     4,   223,   223,   223,   497,     4,     4,   410,
+     223,     4,   221,     4,   221,   221,     4,     4,   618,     4,
+     221,   637,     4,     7,   220,     7,     7,     7,     7,     5,
+     220,   186,   187,   188,   189,   223,   286,   220,   220,     5,
+       5,     5,   220,   220,    95,    96,    97,    98,   295,     5,
+     242,   244,   220,   116,   117,   118,   119,   450,     5,     5,
+       5,     7,     5,     5,     5,     7,     7,     7,     7,     7,
+       7,   220,   220,     5,     7,     5,   251,     5,     5,   220,
+     220,   220,   251,   220,     7,   220,   220,   220,   251,   251,
+     251,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   244,   220,   220,   183,   184,   629,   185,     5,
+     240,   263,   636,   318,    24,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    45,
+      46,    47,    48,    49,    50,   255,   336,   337,   338,   341,
+     343,   345,   347,   348,   350,   351,   352,   353,   354,   355,
+     356,   357,   358,   361,   362,   363,   364,   366,   368,   370,
+     336,     7,   332,   333,   334,     7,   427,   428,   429,     7,
+     465,   466,   467,     7,   489,   490,   491,     7,   455,   456,
+     457,   139,   220,   382,   383,   384,   385,   249,   140,   142,
+     384,   388,   389,   390,   391,   127,   128,   374,   375,   376,
+     378,     7,   570,   571,     7,   542,   543,   544,     7,   403,
+     404,   405,   148,   149,   150,   151,   152,   153,   417,   418,
+     419,   420,   421,   422,   423,   424,    24,   158,   159,   160,
+     161,   255,   350,   519,   521,   584,   585,   586,   589,   590,
+     592,   593,   164,   165,   166,   255,   396,   397,   398,   399,
+     400,   519,   521,   168,   169,   255,   519,   521,   597,   598,
+     599,   601,   171,   172,   173,   220,   519,   521,   605,   606,
+     607,   608,   610,   611,   617,     7,   643,   644,   205,   255,
+     667,   668,   669,   252,     7,   508,   509,   510,     7,   525,
+     526,   527,   551,   567,   332,     8,     8,     8,   339,   342,
+     344,   346,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,   359,     4,     4,   365,   367,   369,   371,     3,
+       8,     8,   335,     6,     3,   430,     6,     3,   468,     6,
+       3,   492,     6,     3,   458,     6,     3,     3,     6,     6,
+       3,     6,   377,   379,     3,     8,   572,     3,     6,   545,
+       6,     3,   406,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   587,   591,     4,     4,     4,     3,     8,
+       4,     4,     4,     3,     8,   600,   602,     3,     8,     4,
+     609,     4,   612,     3,     8,     8,   645,     3,     6,     4,
+       3,     8,   220,   253,   254,   511,     6,     3,   528,     6,
+       3,     8,     6,     4,     4,     4,     4,   221,   223,   221,
+     223,   221,   221,   221,   221,   221,   221,     4,   223,   221,
+       4,     4,     4,     4,   337,   336,   334,   433,   429,   471,
+     467,   495,   491,   255,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   281,   282,   283,
+     284,   287,   289,   291,   292,   293,   296,   297,   299,   301,
+     307,   309,   348,   425,   437,   439,   441,   443,   445,   446,
+     447,   448,   452,   459,   460,   487,   519,   521,   565,   457,
+     383,   389,     4,     4,   375,   131,   132,   133,   255,   267,
+     268,   269,   270,   271,   272,   348,   487,   519,   521,   573,
+     574,   575,   576,   577,   579,   581,   571,   548,   544,   409,
+     405,   221,   221,   221,   221,   221,   221,   418,     4,     4,
+     221,   221,   221,   585,   223,   221,   221,   397,     4,     4,
+     598,   223,     4,   221,     4,   606,   196,   198,   199,   255,
+     348,   519,   521,   646,   647,   648,   649,   651,   644,   223,
+     668,     6,     3,   514,   510,   531,   527,    25,    26,    27,
+     340,   220,   220,   220,    42,    43,    44,   360,   220,   220,
+     220,   220,     8,     8,     8,     8,     3,     8,   220,   220,
+     578,   580,     4,     8,     3,     8,     8,   155,   156,   157,
+     588,   220,   220,   220,   220,   240,   652,     4,   650,     3,
+       8,   220,     8,     8,   460,     4,     4,   223,   575,     4,
+     221,     4,   647,   220,   220,     5,   220,     7,   653,   654,
+     655,     3,     6,   197,   200,   201,   202,   203,   656,   657,
+     658,   660,   661,   662,   663,   654,   659,     4,     4,     4,
+     664,     3,     8,     4,   223,   221,   221,     4,   657,   220,
+     220
   };
 
   const short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   229,   231,   230,   232,   230,   233,   230,   234,   230,
-     235,   230,   236,   230,   237,   230,   238,   230,   239,   230,
-     240,   230,   241,   230,   242,   230,   243,   230,   244,   230,
-     245,   245,   245,   245,   245,   245,   245,   246,   248,   247,
-     249,   250,   250,   251,   251,   251,   253,   252,   254,   254,
-     255,   255,   255,   257,   256,   258,   258,   259,   259,   259,
-     260,   262,   261,   264,   263,   263,   265,   267,   266,   268,
-     268,   268,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-     269,   271,   270,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     290,   289,   291,   291,   291,   291,   291,   293,   292,   295,
-     294,   296,   297,   299,   298,   300,   300,   300,   300,   301,
-     303,   302,   305,   304,   306,   307,   308,   310,   309,   311,
-     313,   312,   315,   314,   316,   317,   318,   320,   319,   322,
-     321,   323,   323,   323,   324,   324,   324,   324,   324,   324,
-     324,   324,   326,   325,   327,   328,   329,   330,   332,   331,
-     334,   333,   336,   335,   337,   337,   338,   338,   338,   340,
-     339,   341,   341,   341,   342,   342,   342,   342,   342,   342,
-     342,   342,   342,   342,   342,   342,   342,   342,   342,   342,
-     342,   342,   342,   342,   342,   342,   342,   344,   343,   345,
-     345,   345,   347,   346,   349,   348,   351,   350,   352,   354,
-     353,   355,   356,   357,   358,   359,   360,   361,   362,   364,
-     363,   365,   365,   365,   366,   367,   368,   370,   369,   372,
-     371,   374,   373,   376,   375,   378,   377,   379,   379,   379,
-     380,   380,   382,   381,   384,   383,   386,   385,   387,   387,
-     387,   388,   388,   389,   390,   392,   391,   393,   393,   393,
-     394,   394,   394,   395,   396,   398,   397,   400,   399,   401,
-     401,   401,   402,   402,   402,   402,   402,   402,   403,   404,
-     405,   407,   406,   408,   408,   409,   409,   409,   411,   410,
-     413,   412,   414,   414,   414,   414,   415,   415,   417,   416,
-     419,   418,   421,   420,   422,   422,   422,   423,   423,   423,
-     423,   423,   423,   424,   425,   426,   427,   428,   429,   431,
-     430,   432,   432,   433,   433,   433,   435,   434,   437,   436,
-     438,   438,   438,   439,   439,   439,   439,   439,   439,   439,
-     439,   439,   439,   439,   439,   439,   439,   439,   439,   439,
-     439,   439,   439,   439,   439,   439,   439,   439,   439,   439,
-     439,   439,   439,   439,   439,   439,   439,   439,   439,   439,
-     439,   439,   439,   439,   439,   439,   439,   439,   439,   439,
-     441,   440,   443,   442,   445,   444,   447,   446,   449,   448,
-     450,   451,   452,   454,   453,   455,   455,   455,   455,   456,
-     457,   459,   458,   460,   460,   461,   461,   461,   463,   462,
-     464,   464,   464,   465,   465,   465,   465,   465,   465,   465,
-     465,   465,   465,   465,   465,   465,   465,   465,   465,   465,
-     465,   465,   465,   465,   465,   465,   465,   465,   465,   465,
-     465,   465,   465,   465,   465,   465,   465,   465,   465,   465,
-     465,   465,   465,   465,   465,   465,   465,   467,   466,   469,
-     468,   470,   470,   471,   471,   471,   473,   472,   475,   474,
-     476,   476,   477,   477,   477,   478,   478,   478,   478,   478,
-     478,   478,   478,   478,   478,   479,   480,   481,   483,   482,
-     485,   484,   487,   486,   488,   490,   489,   491,   493,   492,
-     494,   494,   495,   495,   495,   497,   496,   499,   498,   500,
-     500,   501,   501,   501,   502,   502,   502,   502,   502,   502,
-     502,   502,   502,   502,   503,   505,   504,   506,   507,   508,
-     509,   510,   512,   511,   513,   513,   514,   514,   514,   516,
-     515,   518,   517,   519,   519,   519,   520,   520,   520,   520,
-     520,   520,   520,   520,   522,   521,   523,   525,   524,   527,
-     526,   529,   528,   530,   530,   531,   531,   531,   533,   532,
-     535,   534,   536,   536,   536,   537,   537,   537,   537,   537,
-     537,   537,   537,   537,   537,   537,   539,   538,   540,   542,
-     541,   543,   544,   546,   545,   547,   547,   548,   548,   548,
-     550,   549,   552,   551,   553,   553,   554,   554,   554,   555,
-     555,   555,   555,   555,   555,   555,   555,   555,   555,   555,
-     557,   556,   559,   558,   561,   560,   563,   562,   565,   564,
-     567,   566,   569,   568,   571,   570,   572,   574,   573,   575,
-     575,   575,   577,   576,   578,   578,   579,   579,   579,   580,
-     580,   580,   580,   580,   580,   580,   580,   580,   580,   580,
-     580,   580,   580,   581,   583,   582,   585,   584,   586,   588,
-     587,   589,   589,   589,   590,   590,   590,   590,   590,   590,
-     590,   590,   590,   592,   591,   593,   593,   593,   594,   596,
-     595,   597,   598,   599,   601,   600,   602,   602,   602,   603,
-     603,   603,   603,   603,   605,   604,   607,   606,   609,   608,
-     610,   610,   610,   611,   611,   611,   611,   611,   611,   612,
-     614,   613,   615,   617,   616,   619,   618,   621,   620,   622,
-     622,   622,   623,   623,   623,   623,   623,   623,   623,   623,
-     623,   623,   623,   623,   623,   623,   623,   623,   623,   623,
-     624,   626,   625,   628,   627,   629,   631,   630,   632,   633,
-     635,   634,   636,   636,   638,   637,   639,   640,   642,   641,
-     644,   643,   646,   645,   648,   647,   650,   649,   652,   651,
-     653,   653,   653,   654,   654,   656,   655,   657,   659,   658,
-     660,   660,   660,   662,   661,   663,   663,   663,   664,   664,
-     664,   664,   664,   664,   664,   665,   667,   666,   669,   668,
-     670,   670,   670,   672,   671,   673,   673,   673,   674,   674,
-     674,   674,   674,   676,   675,   677,   678,   679,   681,   680,
-     683,   682,   684,   684,   684,   685,   685,   686
+       0,   224,   226,   225,   227,   225,   228,   225,   229,   225,
+     230,   225,   231,   225,   232,   225,   233,   225,   234,   225,
+     235,   225,   236,   225,   237,   225,   238,   225,   239,   225,
+     240,   240,   240,   240,   240,   240,   240,   241,   243,   242,
+     244,   245,   245,   246,   246,   246,   248,   247,   249,   249,
+     250,   250,   250,   252,   251,   253,   253,   254,   254,   254,
+     255,   257,   256,   259,   258,   258,   260,   262,   261,   263,
+     263,   263,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   266,   265,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     285,   284,   286,   286,   286,   286,   286,   288,   287,   290,
+     289,   291,   292,   294,   293,   295,   295,   295,   295,   296,
+     298,   297,   300,   299,   301,   302,   303,   305,   304,   306,
+     308,   307,   310,   309,   311,   312,   313,   315,   314,   317,
+     316,   318,   318,   318,   319,   319,   319,   319,   319,   319,
+     319,   319,   321,   320,   322,   323,   324,   325,   327,   326,
+     329,   328,   331,   330,   332,   332,   333,   333,   333,   335,
+     334,   336,   336,   336,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   339,   338,   340,
+     340,   340,   342,   341,   344,   343,   346,   345,   347,   349,
+     348,   350,   351,   352,   353,   354,   355,   356,   357,   359,
+     358,   360,   360,   360,   361,   362,   363,   365,   364,   367,
+     366,   369,   368,   371,   370,   373,   372,   374,   374,   374,
+     375,   375,   377,   376,   379,   378,   381,   380,   382,   382,
+     382,   383,   383,   384,   385,   387,   386,   388,   388,   388,
+     389,   389,   389,   390,   391,   393,   392,   395,   394,   396,
+     396,   396,   397,   397,   397,   397,   397,   397,   398,   399,
+     400,   402,   401,   403,   403,   404,   404,   404,   406,   405,
+     408,   407,   409,   409,   409,   409,   410,   410,   412,   411,
+     414,   413,   416,   415,   417,   417,   417,   418,   418,   418,
+     418,   418,   418,   419,   420,   421,   422,   423,   424,   426,
+     425,   427,   427,   428,   428,   428,   430,   429,   432,   431,
+     433,   433,   433,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     436,   435,   438,   437,   440,   439,   442,   441,   444,   443,
+     445,   446,   447,   449,   448,   450,   450,   450,   450,   451,
+     452,   454,   453,   455,   455,   456,   456,   456,   458,   457,
+     459,   459,   459,   460,   460,   460,   460,   460,   460,   460,
+     460,   460,   460,   460,   460,   460,   460,   460,   460,   460,
+     460,   460,   460,   460,   460,   460,   460,   460,   460,   460,
+     460,   460,   460,   460,   460,   460,   460,   460,   460,   460,
+     460,   460,   460,   460,   460,   460,   460,   462,   461,   464,
+     463,   465,   465,   466,   466,   466,   468,   467,   470,   469,
+     471,   471,   472,   472,   472,   473,   473,   473,   473,   473,
+     473,   473,   473,   473,   473,   474,   475,   476,   478,   477,
+     480,   479,   482,   481,   483,   485,   484,   486,   488,   487,
+     489,   489,   490,   490,   490,   492,   491,   494,   493,   495,
+     495,   496,   496,   496,   497,   497,   497,   497,   497,   497,
+     497,   497,   497,   497,   498,   500,   499,   501,   502,   503,
+     504,   505,   507,   506,   508,   508,   509,   509,   509,   511,
+     510,   513,   512,   514,   514,   514,   515,   515,   515,   515,
+     515,   515,   515,   515,   517,   516,   518,   520,   519,   522,
+     521,   524,   523,   525,   525,   526,   526,   526,   528,   527,
+     530,   529,   531,   531,   531,   532,   532,   532,   532,   532,
+     532,   532,   532,   532,   532,   532,   534,   533,   535,   537,
+     536,   538,   539,   541,   540,   542,   542,   543,   543,   543,
+     545,   544,   547,   546,   548,   548,   549,   549,   549,   550,
+     550,   550,   550,   550,   550,   550,   550,   550,   550,   550,
+     552,   551,   554,   553,   556,   555,   558,   557,   560,   559,
+     562,   561,   564,   563,   566,   565,   567,   569,   568,   570,
+     570,   570,   572,   571,   573,   573,   574,   574,   574,   575,
+     575,   575,   575,   575,   575,   575,   575,   575,   575,   575,
+     575,   575,   575,   576,   578,   577,   580,   579,   581,   583,
+     582,   584,   584,   584,   585,   585,   585,   585,   585,   585,
+     585,   585,   585,   587,   586,   588,   588,   588,   589,   591,
+     590,   592,   593,   594,   596,   595,   597,   597,   597,   598,
+     598,   598,   598,   598,   600,   599,   602,   601,   604,   603,
+     605,   605,   605,   606,   606,   606,   606,   606,   606,   607,
+     609,   608,   610,   612,   611,   614,   613,   616,   615,   617,
+     617,   617,   618,   618,   618,   618,   618,   618,   618,   618,
+     618,   618,   618,   619,   621,   620,   622,   624,   623,   625,
+     626,   628,   627,   629,   629,   631,   630,   633,   632,   635,
+     634,   636,   636,   636,   637,   637,   639,   638,   640,   642,
+     641,   643,   643,   643,   645,   644,   646,   646,   646,   647,
+     647,   647,   647,   647,   647,   647,   648,   650,   649,   652,
+     651,   653,   653,   653,   655,   654,   656,   656,   656,   657,
+     657,   657,   657,   657,   659,   658,   660,   661,   662,   664,
+     663,   666,   665,   667,   667,   667,   668,   668,   669
   };
 
   const signed char
@@ -6269,16 +6134,14 @@ namespace isc { namespace dhcp {
        1,     3,     2,     1,     1,     1,     1,     1,     1,     3,
        0,     4,     3,     0,     4,     0,     6,     0,     4,     1,
        3,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
-       0,     4,     1,     1,     0,     4,     3,     3,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
-       1,     3,     2,     1,     1,     0,     6,     3,     0,     6,
-       1,     3,     2,     0,     4,     1,     3,     2,     1,     1,
-       1,     1,     1,     1,     1,     3,     0,     4,     0,     6,
-       1,     3,     2,     0,     4,     1,     3,     2,     1,     1,
-       1,     1,     1,     0,     4,     3,     3,     3,     0,     4,
-       0,     6,     1,     3,     2,     1,     1,     3
+       1,     1,     1,     3,     0,     4,     3,     0,     4,     3,
+       3,     0,     4,     1,     1,     0,     4,     0,     6,     0,
+       4,     1,     3,     2,     1,     1,     0,     6,     3,     0,
+       6,     1,     3,     2,     0,     4,     1,     3,     2,     1,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
+       6,     1,     3,     2,     0,     4,     1,     3,     2,     1,
+       1,     1,     1,     1,     0,     4,     3,     3,     3,     0,
+       4,     0,     6,     1,     3,     2,     1,     1,     3
   };
 
 
@@ -6345,35 +6208,33 @@ namespace isc { namespace dhcp {
   "\"thread-pool-size\"", "\"packet-queue-size\"", "\"control-socket\"",
   "\"socket-type\"", "\"socket-name\"", "\"dhcp-queue-control\"",
   "\"enable-queue\"", "\"queue-type\"", "\"capacity\"", "\"dhcp-ddns\"",
-  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
-  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
-  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
-  "\"override-no-update\"", "\"override-client-update\"",
-  "\"replace-client-name\"", "\"generated-prefix\"", "\"UDP\"", "\"TCP\"",
-  "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"",
-  "\"when-not-present\"", "\"hostname-char-set\"",
-  "\"hostname-char-replacement\"", "\"early-global-reservations-lookup\"",
-  "\"ip-reservations-unique\"", "\"reservations-lookup-first\"",
-  "\"loggers\"", "\"output-options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
-  "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON",
-  "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
-  "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS",
-  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
-  "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
-  "$@11", "$@12", "$@13", "$@14", "value", "sub_json", "map2", "$@15",
-  "map_value", "map_content", "not_empty_map", "list_generic", "$@16",
-  "list_content", "not_empty_list", "list_strings", "$@17",
-  "list_strings_content", "not_empty_list_strings", "unknown_map_entry",
-  "syntax_map", "$@18", "global_object", "$@19", "global_object_comma",
-  "sub_dhcp6", "$@20", "global_params", "global_param", "data_directory",
-  "$@21", "preferred_lifetime", "min_preferred_lifetime",
-  "max_preferred_lifetime", "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", "ddns_send_updates",
+  "\"enable-updates\"", "\"server-ip\"", "\"server-port\"",
+  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
+  "\"ncr-protocol\"", "\"ncr-format\"", "\"UDP\"", "\"TCP\"", "\"JSON\"",
+  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
+  "\"hostname-char-set\"", "\"hostname-char-replacement\"",
+  "\"early-global-reservations-lookup\"", "\"ip-reservations-unique\"",
+  "\"reservations-lookup-first\"", "\"loggers\"", "\"output-options\"",
+  "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"",
+  "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"",
+  "\"lenient-option-parsing\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6",
+  "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6",
+  "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
+  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
+  "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12",
+  "$@13", "$@14", "value", "sub_json", "map2", "$@15", "map_value",
+  "map_content", "not_empty_map", "list_generic", "$@16", "list_content",
+  "not_empty_list", "list_strings", "$@17", "list_strings_content",
+  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18",
+  "global_object", "$@19", "global_object_comma", "sub_dhcp6", "$@20",
+  "global_params", "global_param", "data_directory", "$@21",
+  "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime",
+  "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", "ddns_send_updates",
   "ddns_override_no_update", "ddns_override_client_update",
   "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
   "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
@@ -6462,21 +6323,17 @@ namespace isc { namespace dhcp {
   "queue_control_params", "queue_control_param", "enable_queue",
   "queue_type", "$@117", "capacity", "arbitrary_map_entry", "$@118",
   "dhcp_ddns", "$@119", "sub_dhcp_ddns", "$@120", "dhcp_ddns_params",
-  "dhcp_ddns_param", "enable_updates", "dep_qualifying_suffix", "$@121",
-  "server_ip", "$@122", "server_port", "sender_ip", "$@123", "sender_port",
-  "max_queue_size", "ncr_protocol", "$@124", "ncr_protocol_value",
-  "ncr_format", "$@125", "dep_override_no_update",
-  "dep_override_client_update", "dep_replace_client_name", "$@126",
-  "dep_generated_prefix", "$@127", "dep_hostname_char_set", "$@128",
-  "dep_hostname_char_replacement", "$@129", "config_control", "$@130",
-  "sub_config_control", "$@131", "config_control_params",
-  "config_control_param", "config_databases", "$@132",
-  "config_fetch_wait_time", "loggers", "$@133", "loggers_entries",
-  "logger_entry", "$@134", "logger_params", "logger_param", "debuglevel",
-  "severity", "$@135", "output_options_list", "$@136",
-  "output_options_list_content", "output_entry", "$@137",
-  "output_params_list", "output_params", "output", "$@138", "flush",
-  "maxsize", "maxver", "pattern", "$@139", "compatibility", "$@140",
+  "dhcp_ddns_param", "enable_updates", "server_ip", "$@121", "server_port",
+  "sender_ip", "$@122", "sender_port", "max_queue_size", "ncr_protocol",
+  "$@123", "ncr_protocol_value", "ncr_format", "$@124", "config_control",
+  "$@125", "sub_config_control", "$@126", "config_control_params",
+  "config_control_param", "config_databases", "$@127",
+  "config_fetch_wait_time", "loggers", "$@128", "loggers_entries",
+  "logger_entry", "$@129", "logger_params", "logger_param", "debuglevel",
+  "severity", "$@130", "output_options_list", "$@131",
+  "output_options_list_content", "output_entry", "$@132",
+  "output_params_list", "output_params", "output", "$@133", "flush",
+  "maxsize", "maxver", "pattern", "$@134", "compatibility", "$@135",
   "compatibility_params", "compatibility_param", "lenient_option_parsing", YY_NULLPTR
   };
 #endif
@@ -6486,96 +6343,94 @@ namespace isc { namespace dhcp {
   const short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   323,   323,   323,   324,   324,   325,   325,   326,   326,
+       0,   318,   318,   318,   319,   319,   320,   320,   321,   321,
+     322,   322,   323,   323,   324,   324,   325,   325,   326,   326,
      327,   327,   328,   328,   329,   329,   330,   330,   331,   331,
-     332,   332,   333,   333,   334,   334,   335,   335,   336,   336,
-     344,   345,   346,   347,   348,   349,   350,   353,   358,   358,
-     369,   372,   373,   376,   381,   387,   392,   392,   399,   400,
-     403,   407,   411,   417,   417,   424,   425,   428,   432,   436,
-     446,   455,   455,   470,   470,   484,   487,   493,   493,   502,
-     503,   504,   511,   512,   513,   514,   515,   516,   517,   518,
-     519,   520,   521,   522,   523,   524,   525,   526,   527,   528,
-     529,   530,   531,   532,   533,   534,   535,   536,   537,   538,
-     539,   540,   541,   542,   543,   544,   545,   546,   547,   548,
-     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
-     559,   560,   561,   562,   563,   564,   565,   566,   567,   568,
-     569,   570,   571,   572,   573,   574,   575,   576,   577,   578,
-     579,   582,   582,   591,   597,   603,   609,   615,   621,   627,
-     633,   639,   645,   651,   657,   663,   669,   675,   681,   687,
-     693,   693,   702,   705,   708,   711,   714,   720,   720,   729,
-     729,   738,   747,   757,   757,   766,   769,   772,   775,   780,
-     786,   786,   795,   795,   804,   810,   816,   822,   822,   831,
-     837,   837,   846,   846,   855,   861,   867,   873,   873,   885,
-     885,   894,   895,   896,   901,   902,   903,   904,   905,   906,
-     907,   908,   911,   911,   922,   928,   934,   940,   946,   946,
-     959,   959,   972,   972,   983,   984,   987,   988,   989,   994,
-     994,  1004,  1005,  1006,  1011,  1012,  1013,  1014,  1015,  1016,
-    1017,  1018,  1019,  1020,  1021,  1022,  1023,  1024,  1025,  1026,
-    1027,  1028,  1029,  1030,  1031,  1032,  1033,  1036,  1036,  1044,
-    1045,  1046,  1049,  1049,  1058,  1058,  1067,  1067,  1076,  1082,
-    1082,  1091,  1097,  1103,  1109,  1115,  1121,  1127,  1134,  1140,
-    1140,  1148,  1149,  1150,  1153,  1159,  1165,  1171,  1171,  1180,
-    1180,  1189,  1189,  1198,  1198,  1207,  1207,  1218,  1219,  1220,
-    1225,  1226,  1229,  1229,  1248,  1248,  1266,  1266,  1277,  1278,
-    1279,  1284,  1285,  1288,  1293,  1298,  1298,  1309,  1310,  1311,
-    1316,  1317,  1318,  1321,  1326,  1333,  1333,  1346,  1346,  1359,
-    1360,  1361,  1366,  1367,  1368,  1369,  1370,  1371,  1374,  1380,
-    1386,  1392,  1392,  1403,  1404,  1407,  1408,  1409,  1414,  1414,
-    1424,  1424,  1434,  1435,  1436,  1439,  1442,  1443,  1446,  1446,
-    1455,  1455,  1464,  1464,  1476,  1477,  1478,  1483,  1484,  1485,
-    1486,  1487,  1488,  1491,  1497,  1503,  1509,  1515,  1521,  1530,
-    1530,  1544,  1545,  1548,  1549,  1550,  1559,  1559,  1585,  1585,
-    1596,  1597,  1598,  1604,  1605,  1606,  1607,  1608,  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,  1636,  1637,  1638,  1639,  1640,
-    1641,  1642,  1643,  1644,  1645,  1646,  1647,  1648,  1649,  1650,
-    1653,  1653,  1662,  1662,  1671,  1671,  1680,  1680,  1689,  1689,
-    1700,  1706,  1712,  1718,  1718,  1726,  1727,  1728,  1729,  1732,
-    1738,  1746,  1746,  1758,  1759,  1763,  1764,  1765,  1770,  1770,
-    1778,  1779,  1780,  1785,  1786,  1787,  1788,  1789,  1790,  1791,
-    1792,  1793,  1794,  1795,  1796,  1797,  1798,  1799,  1800,  1801,
-    1802,  1803,  1804,  1805,  1806,  1807,  1808,  1809,  1810,  1811,
-    1812,  1813,  1814,  1815,  1816,  1817,  1818,  1819,  1820,  1821,
-    1822,  1823,  1824,  1825,  1826,  1827,  1828,  1835,  1835,  1849,
-    1849,  1858,  1859,  1862,  1863,  1864,  1871,  1871,  1886,  1886,
-    1900,  1901,  1904,  1905,  1906,  1911,  1912,  1913,  1914,  1915,
-    1916,  1917,  1918,  1919,  1920,  1923,  1925,  1931,  1933,  1933,
-    1942,  1942,  1951,  1951,  1960,  1962,  1962,  1971,  1981,  1981,
-    1994,  1995,  2000,  2001,  2002,  2009,  2009,  2021,  2021,  2033,
-    2034,  2039,  2040,  2041,  2048,  2049,  2050,  2051,  2052,  2053,
-    2054,  2055,  2056,  2057,  2060,  2062,  2062,  2071,  2073,  2075,
-    2081,  2087,  2096,  2096,  2109,  2110,  2113,  2114,  2115,  2120,
-    2120,  2130,  2130,  2140,  2141,  2142,  2147,  2148,  2149,  2150,
-    2151,  2152,  2153,  2154,  2157,  2157,  2166,  2172,  2172,  2197,
-    2197,  2227,  2227,  2240,  2241,  2244,  2245,  2246,  2251,  2251,
-    2263,  2263,  2275,  2276,  2277,  2282,  2283,  2284,  2285,  2286,
-    2287,  2288,  2289,  2290,  2291,  2292,  2295,  2295,  2304,  2310,
-    2310,  2319,  2325,  2334,  2334,  2345,  2346,  2349,  2350,  2351,
-    2356,  2356,  2365,  2365,  2374,  2375,  2378,  2379,  2380,  2386,
-    2387,  2388,  2389,  2390,  2391,  2392,  2393,  2394,  2395,  2396,
-    2399,  2399,  2410,  2410,  2421,  2421,  2430,  2430,  2439,  2439,
-    2448,  2448,  2457,  2457,  2471,  2471,  2482,  2488,  2488,  2499,
-    2500,  2501,  2506,  2506,  2516,  2517,  2520,  2521,  2522,  2527,
-    2528,  2529,  2530,  2531,  2532,  2533,  2534,  2535,  2536,  2537,
-    2538,  2539,  2540,  2543,  2545,  2545,  2554,  2554,  2563,  2572,
-    2572,  2585,  2586,  2587,  2592,  2593,  2594,  2595,  2596,  2597,
-    2598,  2599,  2600,  2603,  2603,  2611,  2612,  2613,  2616,  2622,
-    2622,  2631,  2637,  2645,  2653,  2653,  2664,  2665,  2666,  2671,
-    2672,  2673,  2674,  2675,  2678,  2678,  2687,  2687,  2699,  2699,
-    2712,  2713,  2714,  2719,  2720,  2721,  2722,  2723,  2724,  2727,
-    2733,  2733,  2742,  2748,  2748,  2758,  2758,  2771,  2771,  2781,
-    2782,  2783,  2788,  2789,  2790,  2791,  2792,  2793,  2794,  2795,
-    2796,  2797,  2798,  2799,  2800,  2801,  2802,  2803,  2804,  2805,
-    2808,  2815,  2815,  2824,  2824,  2833,  2839,  2839,  2848,  2854,
-    2860,  2860,  2869,  2870,  2873,  2873,  2883,  2890,  2897,  2897,
-    2906,  2906,  2916,  2916,  2926,  2926,  2938,  2938,  2950,  2950,
-    2960,  2961,  2962,  2968,  2969,  2972,  2972,  2983,  2991,  2991,
-    3004,  3005,  3006,  3012,  3012,  3020,  3021,  3022,  3027,  3028,
-    3029,  3030,  3031,  3032,  3033,  3036,  3042,  3042,  3051,  3051,
-    3062,  3063,  3064,  3069,  3069,  3077,  3078,  3079,  3084,  3085,
-    3086,  3087,  3088,  3091,  3091,  3100,  3106,  3112,  3118,  3118,
-    3127,  3127,  3138,  3139,  3140,  3145,  3146,  3149
+     339,   340,   341,   342,   343,   344,   345,   348,   353,   353,
+     364,   367,   368,   371,   376,   382,   387,   387,   394,   395,
+     398,   402,   406,   412,   412,   419,   420,   423,   427,   431,
+     441,   450,   450,   465,   465,   479,   482,   488,   488,   497,
+     498,   499,   506,   507,   508,   509,   510,   511,   512,   513,
+     514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
+     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
+     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
+     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
+     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     574,   577,   577,   586,   592,   598,   604,   610,   616,   622,
+     628,   634,   640,   646,   652,   658,   664,   670,   676,   682,
+     688,   688,   697,   700,   703,   706,   709,   715,   715,   724,
+     724,   733,   742,   752,   752,   761,   764,   767,   770,   775,
+     781,   781,   790,   790,   799,   805,   811,   817,   817,   826,
+     832,   832,   841,   841,   850,   856,   862,   868,   868,   880,
+     880,   889,   890,   891,   896,   897,   898,   899,   900,   901,
+     902,   903,   906,   906,   917,   923,   929,   935,   941,   941,
+     954,   954,   967,   967,   978,   979,   982,   983,   984,   989,
+     989,   999,  1000,  1001,  1006,  1007,  1008,  1009,  1010,  1011,
+    1012,  1013,  1014,  1015,  1016,  1017,  1018,  1019,  1020,  1021,
+    1022,  1023,  1024,  1025,  1026,  1027,  1028,  1031,  1031,  1039,
+    1040,  1041,  1044,  1044,  1053,  1053,  1062,  1062,  1071,  1077,
+    1077,  1086,  1092,  1098,  1104,  1110,  1116,  1122,  1129,  1135,
+    1135,  1143,  1144,  1145,  1148,  1154,  1160,  1166,  1166,  1175,
+    1175,  1184,  1184,  1193,  1193,  1202,  1202,  1213,  1214,  1215,
+    1220,  1221,  1224,  1224,  1243,  1243,  1261,  1261,  1272,  1273,
+    1274,  1279,  1280,  1283,  1288,  1293,  1293,  1304,  1305,  1306,
+    1311,  1312,  1313,  1316,  1321,  1328,  1328,  1341,  1341,  1354,
+    1355,  1356,  1361,  1362,  1363,  1364,  1365,  1366,  1369,  1375,
+    1381,  1387,  1387,  1398,  1399,  1402,  1403,  1404,  1409,  1409,
+    1419,  1419,  1429,  1430,  1431,  1434,  1437,  1438,  1441,  1441,
+    1450,  1450,  1459,  1459,  1471,  1472,  1473,  1478,  1479,  1480,
+    1481,  1482,  1483,  1486,  1492,  1498,  1504,  1510,  1516,  1525,
+    1525,  1539,  1540,  1543,  1544,  1545,  1554,  1554,  1580,  1580,
+    1591,  1592,  1593,  1599,  1600,  1601,  1602,  1603,  1604,  1605,
+    1606,  1607,  1608,  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,
+    1636,  1637,  1638,  1639,  1640,  1641,  1642,  1643,  1644,  1645,
+    1648,  1648,  1657,  1657,  1666,  1666,  1675,  1675,  1684,  1684,
+    1695,  1701,  1707,  1713,  1713,  1721,  1722,  1723,  1724,  1727,
+    1733,  1741,  1741,  1753,  1754,  1758,  1759,  1760,  1765,  1765,
+    1773,  1774,  1775,  1780,  1781,  1782,  1783,  1784,  1785,  1786,
+    1787,  1788,  1789,  1790,  1791,  1792,  1793,  1794,  1795,  1796,
+    1797,  1798,  1799,  1800,  1801,  1802,  1803,  1804,  1805,  1806,
+    1807,  1808,  1809,  1810,  1811,  1812,  1813,  1814,  1815,  1816,
+    1817,  1818,  1819,  1820,  1821,  1822,  1823,  1830,  1830,  1844,
+    1844,  1853,  1854,  1857,  1858,  1859,  1866,  1866,  1881,  1881,
+    1895,  1896,  1899,  1900,  1901,  1906,  1907,  1908,  1909,  1910,
+    1911,  1912,  1913,  1914,  1915,  1918,  1920,  1926,  1928,  1928,
+    1937,  1937,  1946,  1946,  1955,  1957,  1957,  1966,  1976,  1976,
+    1989,  1990,  1995,  1996,  1997,  2004,  2004,  2016,  2016,  2028,
+    2029,  2034,  2035,  2036,  2043,  2044,  2045,  2046,  2047,  2048,
+    2049,  2050,  2051,  2052,  2055,  2057,  2057,  2066,  2068,  2070,
+    2076,  2082,  2091,  2091,  2104,  2105,  2108,  2109,  2110,  2115,
+    2115,  2125,  2125,  2135,  2136,  2137,  2142,  2143,  2144,  2145,
+    2146,  2147,  2148,  2149,  2152,  2152,  2161,  2167,  2167,  2192,
+    2192,  2222,  2222,  2235,  2236,  2239,  2240,  2241,  2246,  2246,
+    2258,  2258,  2270,  2271,  2272,  2277,  2278,  2279,  2280,  2281,
+    2282,  2283,  2284,  2285,  2286,  2287,  2290,  2290,  2299,  2305,
+    2305,  2314,  2320,  2329,  2329,  2340,  2341,  2344,  2345,  2346,
+    2351,  2351,  2360,  2360,  2369,  2370,  2373,  2374,  2375,  2381,
+    2382,  2383,  2384,  2385,  2386,  2387,  2388,  2389,  2390,  2391,
+    2394,  2394,  2405,  2405,  2416,  2416,  2425,  2425,  2434,  2434,
+    2443,  2443,  2452,  2452,  2466,  2466,  2477,  2483,  2483,  2494,
+    2495,  2496,  2501,  2501,  2511,  2512,  2515,  2516,  2517,  2522,
+    2523,  2524,  2525,  2526,  2527,  2528,  2529,  2530,  2531,  2532,
+    2533,  2534,  2535,  2538,  2540,  2540,  2549,  2549,  2558,  2567,
+    2567,  2580,  2581,  2582,  2587,  2588,  2589,  2590,  2591,  2592,
+    2593,  2594,  2595,  2598,  2598,  2606,  2607,  2608,  2611,  2617,
+    2617,  2626,  2632,  2640,  2648,  2648,  2659,  2660,  2661,  2666,
+    2667,  2668,  2669,  2670,  2673,  2673,  2682,  2682,  2694,  2694,
+    2707,  2708,  2709,  2714,  2715,  2716,  2717,  2718,  2719,  2722,
+    2728,  2728,  2737,  2743,  2743,  2753,  2753,  2766,  2766,  2776,
+    2777,  2778,  2783,  2784,  2785,  2786,  2787,  2788,  2789,  2790,
+    2791,  2792,  2793,  2796,  2802,  2802,  2811,  2817,  2817,  2826,
+    2832,  2838,  2838,  2847,  2848,  2851,  2851,  2862,  2862,  2874,
+    2874,  2884,  2885,  2886,  2892,  2893,  2896,  2896,  2907,  2915,
+    2915,  2928,  2929,  2930,  2936,  2936,  2944,  2945,  2946,  2951,
+    2952,  2953,  2954,  2955,  2956,  2957,  2960,  2966,  2966,  2975,
+    2975,  2986,  2987,  2988,  2993,  2993,  3001,  3002,  3003,  3008,
+    3009,  3010,  3011,  3012,  3015,  3015,  3024,  3030,  3036,  3042,
+    3042,  3051,  3051,  3062,  3063,  3064,  3069,  3070,  3073
   };
 
   void
@@ -6608,9 +6463,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 6612 "dhcp6_parser.cc"
+#line 6467 "dhcp6_parser.cc"
 
-#line 3155 "dhcp6_parser.yy"
+#line 3079 "dhcp6_parser.yy"
 
 
 void
index aea50f2816ae3d0b1f6ba2a9808ff643952c4e5a..caf6f1e8e627aa31d27ad5258d07473406b468b1 100644 (file)
@@ -672,59 +672,54 @@ namespace isc { namespace dhcp {
     TOKEN_CAPACITY = 428,          // "capacity"
     TOKEN_DHCP_DDNS = 429,         // "dhcp-ddns"
     TOKEN_ENABLE_UPDATES = 430,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 431, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 432,         // "server-ip"
-    TOKEN_SERVER_PORT = 433,       // "server-port"
-    TOKEN_SENDER_IP = 434,         // "sender-ip"
-    TOKEN_SENDER_PORT = 435,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 436,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 437,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 438,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 439, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 440, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 441, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 442,  // "generated-prefix"
-    TOKEN_UDP = 443,               // "UDP"
-    TOKEN_TCP = 444,               // "TCP"
-    TOKEN_JSON = 445,              // "JSON"
-    TOKEN_WHEN_PRESENT = 446,      // "when-present"
-    TOKEN_NEVER = 447,             // "never"
-    TOKEN_ALWAYS = 448,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 449,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 450, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 451, // "hostname-char-replacement"
-    TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 452, // "early-global-reservations-lookup"
-    TOKEN_IP_RESERVATIONS_UNIQUE = 453, // "ip-reservations-unique"
-    TOKEN_RESERVATIONS_LOOKUP_FIRST = 454, // "reservations-lookup-first"
-    TOKEN_LOGGERS = 455,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 456,    // "output-options"
-    TOKEN_OUTPUT = 457,            // "output"
-    TOKEN_DEBUGLEVEL = 458,        // "debuglevel"
-    TOKEN_SEVERITY = 459,          // "severity"
-    TOKEN_FLUSH = 460,             // "flush"
-    TOKEN_MAXSIZE = 461,           // "maxsize"
-    TOKEN_MAXVER = 462,            // "maxver"
-    TOKEN_PATTERN = 463,           // "pattern"
-    TOKEN_COMPATIBILITY = 464,     // "compatibility"
-    TOKEN_LENIENT_OPTION_PARSING = 465, // "lenient-option-parsing"
-    TOKEN_TOPLEVEL_JSON = 466,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP6 = 467,    // TOPLEVEL_DHCP6
-    TOKEN_SUB_DHCP6 = 468,         // SUB_DHCP6
-    TOKEN_SUB_INTERFACES6 = 469,   // SUB_INTERFACES6
-    TOKEN_SUB_SUBNET6 = 470,       // SUB_SUBNET6
-    TOKEN_SUB_POOL6 = 471,         // SUB_POOL6
-    TOKEN_SUB_PD_POOL = 472,       // SUB_PD_POOL
-    TOKEN_SUB_RESERVATION = 473,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 474,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 475,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 476,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 477, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 478,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 479, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 480,            // "constant string"
-    TOKEN_INTEGER = 481,           // "integer"
-    TOKEN_FLOAT = 482,             // "floating point"
-    TOKEN_BOOLEAN = 483            // "boolean"
+    TOKEN_SERVER_IP = 431,         // "server-ip"
+    TOKEN_SERVER_PORT = 432,       // "server-port"
+    TOKEN_SENDER_IP = 433,         // "sender-ip"
+    TOKEN_SENDER_PORT = 434,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 435,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 436,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 437,        // "ncr-format"
+    TOKEN_UDP = 438,               // "UDP"
+    TOKEN_TCP = 439,               // "TCP"
+    TOKEN_JSON = 440,              // "JSON"
+    TOKEN_WHEN_PRESENT = 441,      // "when-present"
+    TOKEN_NEVER = 442,             // "never"
+    TOKEN_ALWAYS = 443,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 444,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 445, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 446, // "hostname-char-replacement"
+    TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 447, // "early-global-reservations-lookup"
+    TOKEN_IP_RESERVATIONS_UNIQUE = 448, // "ip-reservations-unique"
+    TOKEN_RESERVATIONS_LOOKUP_FIRST = 449, // "reservations-lookup-first"
+    TOKEN_LOGGERS = 450,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 451,    // "output-options"
+    TOKEN_OUTPUT = 452,            // "output"
+    TOKEN_DEBUGLEVEL = 453,        // "debuglevel"
+    TOKEN_SEVERITY = 454,          // "severity"
+    TOKEN_FLUSH = 455,             // "flush"
+    TOKEN_MAXSIZE = 456,           // "maxsize"
+    TOKEN_MAXVER = 457,            // "maxver"
+    TOKEN_PATTERN = 458,           // "pattern"
+    TOKEN_COMPATIBILITY = 459,     // "compatibility"
+    TOKEN_LENIENT_OPTION_PARSING = 460, // "lenient-option-parsing"
+    TOKEN_TOPLEVEL_JSON = 461,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP6 = 462,    // TOPLEVEL_DHCP6
+    TOKEN_SUB_DHCP6 = 463,         // SUB_DHCP6
+    TOKEN_SUB_INTERFACES6 = 464,   // SUB_INTERFACES6
+    TOKEN_SUB_SUBNET6 = 465,       // SUB_SUBNET6
+    TOKEN_SUB_POOL6 = 466,         // SUB_POOL6
+    TOKEN_SUB_PD_POOL = 467,       // SUB_PD_POOL
+    TOKEN_SUB_RESERVATION = 468,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 469,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 470,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 471,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 472, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 473,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 474, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 475,            // "constant string"
+    TOKEN_INTEGER = 476,           // "integer"
+    TOKEN_FLOAT = 477,             // "floating point"
+    TOKEN_BOOLEAN = 478            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -741,7 +736,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 229, ///< Number of tokens.
+        YYNTOKENS = 224, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -919,517 +914,500 @@ namespace isc { namespace dhcp {
         S_CAPACITY = 173,                        // "capacity"
         S_DHCP_DDNS = 174,                       // "dhcp-ddns"
         S_ENABLE_UPDATES = 175,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 176,               // "qualifying-suffix"
-        S_SERVER_IP = 177,                       // "server-ip"
-        S_SERVER_PORT = 178,                     // "server-port"
-        S_SENDER_IP = 179,                       // "sender-ip"
-        S_SENDER_PORT = 180,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 181,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 182,                    // "ncr-protocol"
-        S_NCR_FORMAT = 183,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 184,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 185,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 186,             // "replace-client-name"
-        S_GENERATED_PREFIX = 187,                // "generated-prefix"
-        S_UDP = 188,                             // "UDP"
-        S_TCP = 189,                             // "TCP"
-        S_JSON = 190,                            // "JSON"
-        S_WHEN_PRESENT = 191,                    // "when-present"
-        S_NEVER = 192,                           // "never"
-        S_ALWAYS = 193,                          // "always"
-        S_WHEN_NOT_PRESENT = 194,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 195,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 196,       // "hostname-char-replacement"
-        S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 197, // "early-global-reservations-lookup"
-        S_IP_RESERVATIONS_UNIQUE = 198,          // "ip-reservations-unique"
-        S_RESERVATIONS_LOOKUP_FIRST = 199,       // "reservations-lookup-first"
-        S_LOGGERS = 200,                         // "loggers"
-        S_OUTPUT_OPTIONS = 201,                  // "output-options"
-        S_OUTPUT = 202,                          // "output"
-        S_DEBUGLEVEL = 203,                      // "debuglevel"
-        S_SEVERITY = 204,                        // "severity"
-        S_FLUSH = 205,                           // "flush"
-        S_MAXSIZE = 206,                         // "maxsize"
-        S_MAXVER = 207,                          // "maxver"
-        S_PATTERN = 208,                         // "pattern"
-        S_COMPATIBILITY = 209,                   // "compatibility"
-        S_LENIENT_OPTION_PARSING = 210,          // "lenient-option-parsing"
-        S_TOPLEVEL_JSON = 211,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP6 = 212,                  // TOPLEVEL_DHCP6
-        S_SUB_DHCP6 = 213,                       // SUB_DHCP6
-        S_SUB_INTERFACES6 = 214,                 // SUB_INTERFACES6
-        S_SUB_SUBNET6 = 215,                     // SUB_SUBNET6
-        S_SUB_POOL6 = 216,                       // SUB_POOL6
-        S_SUB_PD_POOL = 217,                     // SUB_PD_POOL
-        S_SUB_RESERVATION = 218,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 219,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 220,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 221,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 222,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 223,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 224,              // SUB_CONFIG_CONTROL
-        S_STRING = 225,                          // "constant string"
-        S_INTEGER = 226,                         // "integer"
-        S_FLOAT = 227,                           // "floating point"
-        S_BOOLEAN = 228,                         // "boolean"
-        S_YYACCEPT = 229,                        // $accept
-        S_start = 230,                           // start
-        S_231_1 = 231,                           // $@1
-        S_232_2 = 232,                           // $@2
-        S_233_3 = 233,                           // $@3
-        S_234_4 = 234,                           // $@4
-        S_235_5 = 235,                           // $@5
-        S_236_6 = 236,                           // $@6
-        S_237_7 = 237,                           // $@7
-        S_238_8 = 238,                           // $@8
-        S_239_9 = 239,                           // $@9
-        S_240_10 = 240,                          // $@10
-        S_241_11 = 241,                          // $@11
-        S_242_12 = 242,                          // $@12
-        S_243_13 = 243,                          // $@13
-        S_244_14 = 244,                          // $@14
-        S_value = 245,                           // value
-        S_sub_json = 246,                        // sub_json
-        S_map2 = 247,                            // map2
-        S_248_15 = 248,                          // $@15
-        S_map_value = 249,                       // map_value
-        S_map_content = 250,                     // map_content
-        S_not_empty_map = 251,                   // not_empty_map
-        S_list_generic = 252,                    // list_generic
-        S_253_16 = 253,                          // $@16
-        S_list_content = 254,                    // list_content
-        S_not_empty_list = 255,                  // not_empty_list
-        S_list_strings = 256,                    // list_strings
-        S_257_17 = 257,                          // $@17
-        S_list_strings_content = 258,            // list_strings_content
-        S_not_empty_list_strings = 259,          // not_empty_list_strings
-        S_unknown_map_entry = 260,               // unknown_map_entry
-        S_syntax_map = 261,                      // syntax_map
-        S_262_18 = 262,                          // $@18
-        S_global_object = 263,                   // global_object
-        S_264_19 = 264,                          // $@19
-        S_global_object_comma = 265,             // global_object_comma
-        S_sub_dhcp6 = 266,                       // sub_dhcp6
-        S_267_20 = 267,                          // $@20
-        S_global_params = 268,                   // global_params
-        S_global_param = 269,                    // global_param
-        S_data_directory = 270,                  // data_directory
-        S_271_21 = 271,                          // $@21
-        S_preferred_lifetime = 272,              // preferred_lifetime
-        S_min_preferred_lifetime = 273,          // min_preferred_lifetime
-        S_max_preferred_lifetime = 274,          // max_preferred_lifetime
-        S_valid_lifetime = 275,                  // valid_lifetime
-        S_min_valid_lifetime = 276,              // min_valid_lifetime
-        S_max_valid_lifetime = 277,              // max_valid_lifetime
-        S_renew_timer = 278,                     // renew_timer
-        S_rebind_timer = 279,                    // rebind_timer
-        S_calculate_tee_times = 280,             // calculate_tee_times
-        S_t1_percent = 281,                      // t1_percent
-        S_t2_percent = 282,                      // t2_percent
-        S_cache_threshold = 283,                 // cache_threshold
-        S_cache_max_age = 284,                   // cache_max_age
-        S_decline_probation_period = 285,        // decline_probation_period
-        S_ddns_send_updates = 286,               // ddns_send_updates
-        S_ddns_override_no_update = 287,         // ddns_override_no_update
-        S_ddns_override_client_update = 288,     // ddns_override_client_update
-        S_ddns_replace_client_name = 289,        // ddns_replace_client_name
-        S_290_22 = 290,                          // $@22
-        S_ddns_replace_client_name_value = 291,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 292,           // ddns_generated_prefix
-        S_293_23 = 293,                          // $@23
-        S_ddns_qualifying_suffix = 294,          // ddns_qualifying_suffix
-        S_295_24 = 295,                          // $@24
-        S_ddns_update_on_renew = 296,            // ddns_update_on_renew
-        S_ddns_use_conflict_resolution = 297,    // ddns_use_conflict_resolution
-        S_ddns_conflict_resolution_mode = 298,   // ddns_conflict_resolution_mode
-        S_299_25 = 299,                          // $@25
-        S_ddns_conflict_resolution_mode_value = 300, // ddns_conflict_resolution_mode_value
-        S_ddns_ttl_percent = 301,                // ddns_ttl_percent
-        S_hostname_char_set = 302,               // hostname_char_set
-        S_303_26 = 303,                          // $@26
-        S_hostname_char_replacement = 304,       // hostname_char_replacement
-        S_305_27 = 305,                          // $@27
-        S_store_extended_info = 306,             // store_extended_info
-        S_statistic_default_sample_count = 307,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 308,    // statistic_default_sample_age
-        S_server_tag = 309,                      // server_tag
-        S_310_28 = 310,                          // $@28
-        S_parked_packet_limit = 311,             // parked_packet_limit
-        S_allocator = 312,                       // allocator
-        S_313_29 = 313,                          // $@29
-        S_pd_allocator = 314,                    // pd_allocator
-        S_315_30 = 315,                          // $@30
-        S_early_global_reservations_lookup = 316, // early_global_reservations_lookup
-        S_ip_reservations_unique = 317,          // ip_reservations_unique
-        S_reservations_lookup_first = 318,       // reservations_lookup_first
-        S_interfaces_config = 319,               // interfaces_config
-        S_320_31 = 320,                          // $@31
-        S_sub_interfaces6 = 321,                 // sub_interfaces6
-        S_322_32 = 322,                          // $@32
-        S_interfaces_config_params = 323,        // interfaces_config_params
-        S_interfaces_config_param = 324,         // interfaces_config_param
-        S_interfaces_list = 325,                 // interfaces_list
-        S_326_33 = 326,                          // $@33
-        S_re_detect = 327,                       // re_detect
-        S_service_sockets_require_all = 328,     // service_sockets_require_all
-        S_service_sockets_retry_wait_time = 329, // service_sockets_retry_wait_time
-        S_service_sockets_max_retries = 330,     // service_sockets_max_retries
-        S_lease_database = 331,                  // lease_database
-        S_332_34 = 332,                          // $@34
-        S_hosts_database = 333,                  // hosts_database
-        S_334_35 = 334,                          // $@35
-        S_hosts_databases = 335,                 // hosts_databases
-        S_336_36 = 336,                          // $@36
-        S_database_list = 337,                   // database_list
-        S_not_empty_database_list = 338,         // not_empty_database_list
-        S_database = 339,                        // database
-        S_340_37 = 340,                          // $@37
-        S_database_map_params = 341,             // database_map_params
-        S_database_map_param = 342,              // database_map_param
-        S_database_type = 343,                   // database_type
-        S_344_38 = 344,                          // $@38
-        S_db_type = 345,                         // db_type
-        S_user = 346,                            // user
-        S_347_39 = 347,                          // $@39
-        S_password = 348,                        // password
-        S_349_40 = 349,                          // $@40
-        S_host = 350,                            // host
-        S_351_41 = 351,                          // $@41
-        S_port = 352,                            // port
-        S_name = 353,                            // name
-        S_354_42 = 354,                          // $@42
-        S_persist = 355,                         // persist
-        S_lfc_interval = 356,                    // lfc_interval
-        S_readonly = 357,                        // readonly
-        S_connect_timeout = 358,                 // connect_timeout
-        S_read_timeout = 359,                    // read_timeout
-        S_write_timeout = 360,                   // write_timeout
-        S_tcp_user_timeout = 361,                // tcp_user_timeout
-        S_reconnect_wait_time = 362,             // reconnect_wait_time
-        S_on_fail = 363,                         // on_fail
-        S_364_43 = 364,                          // $@43
-        S_on_fail_mode = 365,                    // on_fail_mode
-        S_retry_on_startup = 366,                // retry_on_startup
-        S_max_row_errors = 367,                  // max_row_errors
-        S_max_reconnect_tries = 368,             // max_reconnect_tries
-        S_trust_anchor = 369,                    // trust_anchor
-        S_370_44 = 370,                          // $@44
-        S_cert_file = 371,                       // cert_file
-        S_372_45 = 372,                          // $@45
-        S_key_file = 373,                        // key_file
-        S_374_46 = 374,                          // $@46
-        S_cipher_list = 375,                     // cipher_list
-        S_376_47 = 376,                          // $@47
-        S_sanity_checks = 377,                   // sanity_checks
-        S_378_48 = 378,                          // $@48
-        S_sanity_checks_params = 379,            // sanity_checks_params
-        S_sanity_checks_param = 380,             // sanity_checks_param
-        S_lease_checks = 381,                    // lease_checks
-        S_382_49 = 382,                          // $@49
-        S_extended_info_checks = 383,            // extended_info_checks
-        S_384_50 = 384,                          // $@50
-        S_mac_sources = 385,                     // mac_sources
-        S_386_51 = 386,                          // $@51
-        S_mac_sources_list = 387,                // mac_sources_list
-        S_mac_sources_value = 388,               // mac_sources_value
-        S_duid_id = 389,                         // duid_id
-        S_string_id = 390,                       // string_id
-        S_host_reservation_identifiers = 391,    // host_reservation_identifiers
-        S_392_52 = 392,                          // $@52
-        S_host_reservation_identifiers_list = 393, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 394,     // host_reservation_identifier
-        S_hw_address_id = 395,                   // hw_address_id
-        S_flex_id = 396,                         // flex_id
-        S_relay_supplied_options = 397,          // relay_supplied_options
-        S_398_53 = 398,                          // $@53
-        S_dhcp_multi_threading = 399,            // dhcp_multi_threading
-        S_400_54 = 400,                          // $@54
-        S_multi_threading_params = 401,          // multi_threading_params
-        S_multi_threading_param = 402,           // multi_threading_param
-        S_enable_multi_threading = 403,          // enable_multi_threading
-        S_thread_pool_size = 404,                // thread_pool_size
-        S_packet_queue_size = 405,               // packet_queue_size
-        S_hooks_libraries = 406,                 // hooks_libraries
-        S_407_55 = 407,                          // $@55
-        S_hooks_libraries_list = 408,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 409,  // not_empty_hooks_libraries_list
-        S_hooks_library = 410,                   // hooks_library
-        S_411_56 = 411,                          // $@56
-        S_sub_hooks_library = 412,               // sub_hooks_library
-        S_413_57 = 413,                          // $@57
-        S_hooks_params = 414,                    // hooks_params
-        S_hooks_param = 415,                     // hooks_param
-        S_library = 416,                         // library
-        S_417_58 = 417,                          // $@58
-        S_parameters = 418,                      // parameters
-        S_419_59 = 419,                          // $@59
-        S_expired_leases_processing = 420,       // expired_leases_processing
-        S_421_60 = 421,                          // $@60
-        S_expired_leases_params = 422,           // expired_leases_params
-        S_expired_leases_param = 423,            // expired_leases_param
-        S_reclaim_timer_wait_time = 424,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 425, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 426,             // hold_reclaimed_time
-        S_max_reclaim_leases = 427,              // max_reclaim_leases
-        S_max_reclaim_time = 428,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 429,         // unwarned_reclaim_cycles
-        S_subnet6_list = 430,                    // subnet6_list
-        S_431_61 = 431,                          // $@61
-        S_subnet6_list_content = 432,            // subnet6_list_content
-        S_not_empty_subnet6_list = 433,          // not_empty_subnet6_list
-        S_subnet6 = 434,                         // subnet6
-        S_435_62 = 435,                          // $@62
-        S_sub_subnet6 = 436,                     // sub_subnet6
-        S_437_63 = 437,                          // $@63
-        S_subnet6_params = 438,                  // subnet6_params
-        S_subnet6_param = 439,                   // subnet6_param
-        S_subnet = 440,                          // subnet
-        S_441_64 = 441,                          // $@64
-        S_interface = 442,                       // interface
-        S_443_65 = 443,                          // $@65
-        S_interface_id = 444,                    // interface_id
-        S_445_66 = 445,                          // $@66
-        S_client_class = 446,                    // client_class
-        S_447_67 = 447,                          // $@67
-        S_require_client_classes = 448,          // require_client_classes
-        S_449_68 = 449,                          // $@68
-        S_reservations_global = 450,             // reservations_global
-        S_reservations_in_subnet = 451,          // reservations_in_subnet
-        S_reservations_out_of_pool = 452,        // reservations_out_of_pool
-        S_reservation_mode = 453,                // reservation_mode
-        S_454_69 = 454,                          // $@69
-        S_hr_mode = 455,                         // hr_mode
-        S_id = 456,                              // id
-        S_rapid_commit = 457,                    // rapid_commit
-        S_shared_networks = 458,                 // shared_networks
-        S_459_70 = 459,                          // $@70
-        S_shared_networks_content = 460,         // shared_networks_content
-        S_shared_networks_list = 461,            // shared_networks_list
-        S_shared_network = 462,                  // shared_network
-        S_463_71 = 463,                          // $@71
-        S_shared_network_params = 464,           // shared_network_params
-        S_shared_network_param = 465,            // shared_network_param
-        S_option_def_list = 466,                 // option_def_list
-        S_467_72 = 467,                          // $@72
-        S_sub_option_def_list = 468,             // sub_option_def_list
-        S_469_73 = 469,                          // $@73
-        S_option_def_list_content = 470,         // option_def_list_content
-        S_not_empty_option_def_list = 471,       // not_empty_option_def_list
-        S_option_def_entry = 472,                // option_def_entry
-        S_473_74 = 473,                          // $@74
-        S_sub_option_def = 474,                  // sub_option_def
-        S_475_75 = 475,                          // $@75
-        S_option_def_params = 476,               // option_def_params
-        S_not_empty_option_def_params = 477,     // not_empty_option_def_params
-        S_option_def_param = 478,                // option_def_param
-        S_option_def_name = 479,                 // option_def_name
-        S_code = 480,                            // code
-        S_option_def_code = 481,                 // option_def_code
-        S_option_def_type = 482,                 // option_def_type
-        S_483_76 = 483,                          // $@76
-        S_option_def_record_types = 484,         // option_def_record_types
-        S_485_77 = 485,                          // $@77
-        S_space = 486,                           // space
-        S_487_78 = 487,                          // $@78
-        S_option_def_space = 488,                // option_def_space
-        S_option_def_encapsulate = 489,          // option_def_encapsulate
-        S_490_79 = 490,                          // $@79
-        S_option_def_array = 491,                // option_def_array
-        S_option_data_list = 492,                // option_data_list
-        S_493_80 = 493,                          // $@80
-        S_option_data_list_content = 494,        // option_data_list_content
-        S_not_empty_option_data_list = 495,      // not_empty_option_data_list
-        S_option_data_entry = 496,               // option_data_entry
-        S_497_81 = 497,                          // $@81
-        S_sub_option_data = 498,                 // sub_option_data
-        S_499_82 = 499,                          // $@82
-        S_option_data_params = 500,              // option_data_params
-        S_not_empty_option_data_params = 501,    // not_empty_option_data_params
-        S_option_data_param = 502,               // option_data_param
-        S_option_data_name = 503,                // option_data_name
-        S_option_data_data = 504,                // option_data_data
-        S_505_83 = 505,                          // $@83
-        S_option_data_code = 506,                // option_data_code
-        S_option_data_space = 507,               // option_data_space
-        S_option_data_csv_format = 508,          // option_data_csv_format
-        S_option_data_always_send = 509,         // option_data_always_send
-        S_option_data_never_send = 510,          // option_data_never_send
-        S_pools_list = 511,                      // pools_list
-        S_512_84 = 512,                          // $@84
-        S_pools_list_content = 513,              // pools_list_content
-        S_not_empty_pools_list = 514,            // not_empty_pools_list
-        S_pool_list_entry = 515,                 // pool_list_entry
-        S_516_85 = 516,                          // $@85
-        S_sub_pool6 = 517,                       // sub_pool6
-        S_518_86 = 518,                          // $@86
-        S_pool_params = 519,                     // pool_params
-        S_pool_param = 520,                      // pool_param
-        S_pool_entry = 521,                      // pool_entry
-        S_522_87 = 522,                          // $@87
-        S_pool_id = 523,                         // pool_id
-        S_user_context = 524,                    // user_context
-        S_525_88 = 525,                          // $@88
-        S_comment = 526,                         // comment
-        S_527_89 = 527,                          // $@89
-        S_pd_pools_list = 528,                   // pd_pools_list
-        S_529_90 = 529,                          // $@90
-        S_pd_pools_list_content = 530,           // pd_pools_list_content
-        S_not_empty_pd_pools_list = 531,         // not_empty_pd_pools_list
-        S_pd_pool_entry = 532,                   // pd_pool_entry
-        S_533_91 = 533,                          // $@91
-        S_sub_pd_pool = 534,                     // sub_pd_pool
-        S_535_92 = 535,                          // $@92
-        S_pd_pool_params = 536,                  // pd_pool_params
-        S_pd_pool_param = 537,                   // pd_pool_param
-        S_pd_prefix = 538,                       // pd_prefix
-        S_539_93 = 539,                          // $@93
-        S_pd_prefix_len = 540,                   // pd_prefix_len
-        S_excluded_prefix = 541,                 // excluded_prefix
-        S_542_94 = 542,                          // $@94
-        S_excluded_prefix_len = 543,             // excluded_prefix_len
-        S_pd_delegated_len = 544,                // pd_delegated_len
-        S_reservations = 545,                    // reservations
-        S_546_95 = 546,                          // $@95
-        S_reservations_list = 547,               // reservations_list
-        S_not_empty_reservations_list = 548,     // not_empty_reservations_list
-        S_reservation = 549,                     // reservation
-        S_550_96 = 550,                          // $@96
-        S_sub_reservation = 551,                 // sub_reservation
-        S_552_97 = 552,                          // $@97
-        S_reservation_params = 553,              // reservation_params
-        S_not_empty_reservation_params = 554,    // not_empty_reservation_params
-        S_reservation_param = 555,               // reservation_param
-        S_ip_addresses = 556,                    // ip_addresses
-        S_557_98 = 557,                          // $@98
-        S_prefixes = 558,                        // prefixes
-        S_559_99 = 559,                          // $@99
-        S_duid = 560,                            // duid
-        S_561_100 = 561,                         // $@100
-        S_hw_address = 562,                      // hw_address
-        S_563_101 = 563,                         // $@101
-        S_hostname = 564,                        // hostname
-        S_565_102 = 565,                         // $@102
-        S_flex_id_value = 566,                   // flex_id_value
-        S_567_103 = 567,                         // $@103
-        S_reservation_client_classes = 568,      // reservation_client_classes
-        S_569_104 = 569,                         // $@104
-        S_relay = 570,                           // relay
-        S_571_105 = 571,                         // $@105
-        S_relay_map = 572,                       // relay_map
-        S_client_classes = 573,                  // client_classes
-        S_574_106 = 574,                         // $@106
-        S_client_classes_list = 575,             // client_classes_list
-        S_client_class_entry = 576,              // client_class_entry
-        S_577_107 = 577,                         // $@107
-        S_client_class_params = 578,             // client_class_params
-        S_not_empty_client_class_params = 579,   // not_empty_client_class_params
-        S_client_class_param = 580,              // client_class_param
-        S_client_class_name = 581,               // client_class_name
-        S_client_class_test = 582,               // client_class_test
-        S_583_108 = 583,                         // $@108
-        S_client_class_template_test = 584,      // client_class_template_test
-        S_585_109 = 585,                         // $@109
-        S_only_if_required = 586,                // only_if_required
-        S_server_id = 587,                       // server_id
-        S_588_110 = 588,                         // $@110
-        S_server_id_params = 589,                // server_id_params
-        S_server_id_param = 590,                 // server_id_param
-        S_server_id_type = 591,                  // server_id_type
-        S_592_111 = 592,                         // $@111
-        S_duid_type = 593,                       // duid_type
-        S_htype = 594,                           // htype
-        S_identifier = 595,                      // identifier
-        S_596_112 = 596,                         // $@112
-        S_time = 597,                            // time
-        S_enterprise_id = 598,                   // enterprise_id
-        S_dhcp4o6_port = 599,                    // dhcp4o6_port
-        S_control_socket = 600,                  // control_socket
-        S_601_113 = 601,                         // $@113
-        S_control_socket_params = 602,           // control_socket_params
-        S_control_socket_param = 603,            // control_socket_param
-        S_socket_type = 604,                     // socket_type
-        S_605_114 = 605,                         // $@114
-        S_socket_name = 606,                     // socket_name
-        S_607_115 = 607,                         // $@115
-        S_dhcp_queue_control = 608,              // dhcp_queue_control
-        S_609_116 = 609,                         // $@116
-        S_queue_control_params = 610,            // queue_control_params
-        S_queue_control_param = 611,             // queue_control_param
-        S_enable_queue = 612,                    // enable_queue
-        S_queue_type = 613,                      // queue_type
-        S_614_117 = 614,                         // $@117
-        S_capacity = 615,                        // capacity
-        S_arbitrary_map_entry = 616,             // arbitrary_map_entry
-        S_617_118 = 617,                         // $@118
-        S_dhcp_ddns = 618,                       // dhcp_ddns
-        S_619_119 = 619,                         // $@119
-        S_sub_dhcp_ddns = 620,                   // sub_dhcp_ddns
-        S_621_120 = 621,                         // $@120
-        S_dhcp_ddns_params = 622,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 623,                 // dhcp_ddns_param
-        S_enable_updates = 624,                  // enable_updates
-        S_dep_qualifying_suffix = 625,           // dep_qualifying_suffix
-        S_626_121 = 626,                         // $@121
-        S_server_ip = 627,                       // server_ip
-        S_628_122 = 628,                         // $@122
-        S_server_port = 629,                     // server_port
-        S_sender_ip = 630,                       // sender_ip
-        S_631_123 = 631,                         // $@123
-        S_sender_port = 632,                     // sender_port
-        S_max_queue_size = 633,                  // max_queue_size
-        S_ncr_protocol = 634,                    // ncr_protocol
-        S_635_124 = 635,                         // $@124
-        S_ncr_protocol_value = 636,              // ncr_protocol_value
-        S_ncr_format = 637,                      // ncr_format
-        S_638_125 = 638,                         // $@125
-        S_dep_override_no_update = 639,          // dep_override_no_update
-        S_dep_override_client_update = 640,      // dep_override_client_update
-        S_dep_replace_client_name = 641,         // dep_replace_client_name
-        S_642_126 = 642,                         // $@126
-        S_dep_generated_prefix = 643,            // dep_generated_prefix
-        S_644_127 = 644,                         // $@127
-        S_dep_hostname_char_set = 645,           // dep_hostname_char_set
-        S_646_128 = 646,                         // $@128
-        S_dep_hostname_char_replacement = 647,   // dep_hostname_char_replacement
-        S_648_129 = 648,                         // $@129
-        S_config_control = 649,                  // config_control
+        S_SERVER_IP = 176,                       // "server-ip"
+        S_SERVER_PORT = 177,                     // "server-port"
+        S_SENDER_IP = 178,                       // "sender-ip"
+        S_SENDER_PORT = 179,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 180,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 181,                    // "ncr-protocol"
+        S_NCR_FORMAT = 182,                      // "ncr-format"
+        S_UDP = 183,                             // "UDP"
+        S_TCP = 184,                             // "TCP"
+        S_JSON = 185,                            // "JSON"
+        S_WHEN_PRESENT = 186,                    // "when-present"
+        S_NEVER = 187,                           // "never"
+        S_ALWAYS = 188,                          // "always"
+        S_WHEN_NOT_PRESENT = 189,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 190,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 191,       // "hostname-char-replacement"
+        S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 192, // "early-global-reservations-lookup"
+        S_IP_RESERVATIONS_UNIQUE = 193,          // "ip-reservations-unique"
+        S_RESERVATIONS_LOOKUP_FIRST = 194,       // "reservations-lookup-first"
+        S_LOGGERS = 195,                         // "loggers"
+        S_OUTPUT_OPTIONS = 196,                  // "output-options"
+        S_OUTPUT = 197,                          // "output"
+        S_DEBUGLEVEL = 198,                      // "debuglevel"
+        S_SEVERITY = 199,                        // "severity"
+        S_FLUSH = 200,                           // "flush"
+        S_MAXSIZE = 201,                         // "maxsize"
+        S_MAXVER = 202,                          // "maxver"
+        S_PATTERN = 203,                         // "pattern"
+        S_COMPATIBILITY = 204,                   // "compatibility"
+        S_LENIENT_OPTION_PARSING = 205,          // "lenient-option-parsing"
+        S_TOPLEVEL_JSON = 206,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP6 = 207,                  // TOPLEVEL_DHCP6
+        S_SUB_DHCP6 = 208,                       // SUB_DHCP6
+        S_SUB_INTERFACES6 = 209,                 // SUB_INTERFACES6
+        S_SUB_SUBNET6 = 210,                     // SUB_SUBNET6
+        S_SUB_POOL6 = 211,                       // SUB_POOL6
+        S_SUB_PD_POOL = 212,                     // SUB_PD_POOL
+        S_SUB_RESERVATION = 213,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 214,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 215,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 216,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 217,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 218,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 219,              // SUB_CONFIG_CONTROL
+        S_STRING = 220,                          // "constant string"
+        S_INTEGER = 221,                         // "integer"
+        S_FLOAT = 222,                           // "floating point"
+        S_BOOLEAN = 223,                         // "boolean"
+        S_YYACCEPT = 224,                        // $accept
+        S_start = 225,                           // start
+        S_226_1 = 226,                           // $@1
+        S_227_2 = 227,                           // $@2
+        S_228_3 = 228,                           // $@3
+        S_229_4 = 229,                           // $@4
+        S_230_5 = 230,                           // $@5
+        S_231_6 = 231,                           // $@6
+        S_232_7 = 232,                           // $@7
+        S_233_8 = 233,                           // $@8
+        S_234_9 = 234,                           // $@9
+        S_235_10 = 235,                          // $@10
+        S_236_11 = 236,                          // $@11
+        S_237_12 = 237,                          // $@12
+        S_238_13 = 238,                          // $@13
+        S_239_14 = 239,                          // $@14
+        S_value = 240,                           // value
+        S_sub_json = 241,                        // sub_json
+        S_map2 = 242,                            // map2
+        S_243_15 = 243,                          // $@15
+        S_map_value = 244,                       // map_value
+        S_map_content = 245,                     // map_content
+        S_not_empty_map = 246,                   // not_empty_map
+        S_list_generic = 247,                    // list_generic
+        S_248_16 = 248,                          // $@16
+        S_list_content = 249,                    // list_content
+        S_not_empty_list = 250,                  // not_empty_list
+        S_list_strings = 251,                    // list_strings
+        S_252_17 = 252,                          // $@17
+        S_list_strings_content = 253,            // list_strings_content
+        S_not_empty_list_strings = 254,          // not_empty_list_strings
+        S_unknown_map_entry = 255,               // unknown_map_entry
+        S_syntax_map = 256,                      // syntax_map
+        S_257_18 = 257,                          // $@18
+        S_global_object = 258,                   // global_object
+        S_259_19 = 259,                          // $@19
+        S_global_object_comma = 260,             // global_object_comma
+        S_sub_dhcp6 = 261,                       // sub_dhcp6
+        S_262_20 = 262,                          // $@20
+        S_global_params = 263,                   // global_params
+        S_global_param = 264,                    // global_param
+        S_data_directory = 265,                  // data_directory
+        S_266_21 = 266,                          // $@21
+        S_preferred_lifetime = 267,              // preferred_lifetime
+        S_min_preferred_lifetime = 268,          // min_preferred_lifetime
+        S_max_preferred_lifetime = 269,          // max_preferred_lifetime
+        S_valid_lifetime = 270,                  // valid_lifetime
+        S_min_valid_lifetime = 271,              // min_valid_lifetime
+        S_max_valid_lifetime = 272,              // max_valid_lifetime
+        S_renew_timer = 273,                     // renew_timer
+        S_rebind_timer = 274,                    // rebind_timer
+        S_calculate_tee_times = 275,             // calculate_tee_times
+        S_t1_percent = 276,                      // t1_percent
+        S_t2_percent = 277,                      // t2_percent
+        S_cache_threshold = 278,                 // cache_threshold
+        S_cache_max_age = 279,                   // cache_max_age
+        S_decline_probation_period = 280,        // decline_probation_period
+        S_ddns_send_updates = 281,               // ddns_send_updates
+        S_ddns_override_no_update = 282,         // ddns_override_no_update
+        S_ddns_override_client_update = 283,     // ddns_override_client_update
+        S_ddns_replace_client_name = 284,        // ddns_replace_client_name
+        S_285_22 = 285,                          // $@22
+        S_ddns_replace_client_name_value = 286,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 287,           // ddns_generated_prefix
+        S_288_23 = 288,                          // $@23
+        S_ddns_qualifying_suffix = 289,          // ddns_qualifying_suffix
+        S_290_24 = 290,                          // $@24
+        S_ddns_update_on_renew = 291,            // ddns_update_on_renew
+        S_ddns_use_conflict_resolution = 292,    // ddns_use_conflict_resolution
+        S_ddns_conflict_resolution_mode = 293,   // ddns_conflict_resolution_mode
+        S_294_25 = 294,                          // $@25
+        S_ddns_conflict_resolution_mode_value = 295, // ddns_conflict_resolution_mode_value
+        S_ddns_ttl_percent = 296,                // ddns_ttl_percent
+        S_hostname_char_set = 297,               // hostname_char_set
+        S_298_26 = 298,                          // $@26
+        S_hostname_char_replacement = 299,       // hostname_char_replacement
+        S_300_27 = 300,                          // $@27
+        S_store_extended_info = 301,             // store_extended_info
+        S_statistic_default_sample_count = 302,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 303,    // statistic_default_sample_age
+        S_server_tag = 304,                      // server_tag
+        S_305_28 = 305,                          // $@28
+        S_parked_packet_limit = 306,             // parked_packet_limit
+        S_allocator = 307,                       // allocator
+        S_308_29 = 308,                          // $@29
+        S_pd_allocator = 309,                    // pd_allocator
+        S_310_30 = 310,                          // $@30
+        S_early_global_reservations_lookup = 311, // early_global_reservations_lookup
+        S_ip_reservations_unique = 312,          // ip_reservations_unique
+        S_reservations_lookup_first = 313,       // reservations_lookup_first
+        S_interfaces_config = 314,               // interfaces_config
+        S_315_31 = 315,                          // $@31
+        S_sub_interfaces6 = 316,                 // sub_interfaces6
+        S_317_32 = 317,                          // $@32
+        S_interfaces_config_params = 318,        // interfaces_config_params
+        S_interfaces_config_param = 319,         // interfaces_config_param
+        S_interfaces_list = 320,                 // interfaces_list
+        S_321_33 = 321,                          // $@33
+        S_re_detect = 322,                       // re_detect
+        S_service_sockets_require_all = 323,     // service_sockets_require_all
+        S_service_sockets_retry_wait_time = 324, // service_sockets_retry_wait_time
+        S_service_sockets_max_retries = 325,     // service_sockets_max_retries
+        S_lease_database = 326,                  // lease_database
+        S_327_34 = 327,                          // $@34
+        S_hosts_database = 328,                  // hosts_database
+        S_329_35 = 329,                          // $@35
+        S_hosts_databases = 330,                 // hosts_databases
+        S_331_36 = 331,                          // $@36
+        S_database_list = 332,                   // database_list
+        S_not_empty_database_list = 333,         // not_empty_database_list
+        S_database = 334,                        // database
+        S_335_37 = 335,                          // $@37
+        S_database_map_params = 336,             // database_map_params
+        S_database_map_param = 337,              // database_map_param
+        S_database_type = 338,                   // database_type
+        S_339_38 = 339,                          // $@38
+        S_db_type = 340,                         // db_type
+        S_user = 341,                            // user
+        S_342_39 = 342,                          // $@39
+        S_password = 343,                        // password
+        S_344_40 = 344,                          // $@40
+        S_host = 345,                            // host
+        S_346_41 = 346,                          // $@41
+        S_port = 347,                            // port
+        S_name = 348,                            // name
+        S_349_42 = 349,                          // $@42
+        S_persist = 350,                         // persist
+        S_lfc_interval = 351,                    // lfc_interval
+        S_readonly = 352,                        // readonly
+        S_connect_timeout = 353,                 // connect_timeout
+        S_read_timeout = 354,                    // read_timeout
+        S_write_timeout = 355,                   // write_timeout
+        S_tcp_user_timeout = 356,                // tcp_user_timeout
+        S_reconnect_wait_time = 357,             // reconnect_wait_time
+        S_on_fail = 358,                         // on_fail
+        S_359_43 = 359,                          // $@43
+        S_on_fail_mode = 360,                    // on_fail_mode
+        S_retry_on_startup = 361,                // retry_on_startup
+        S_max_row_errors = 362,                  // max_row_errors
+        S_max_reconnect_tries = 363,             // max_reconnect_tries
+        S_trust_anchor = 364,                    // trust_anchor
+        S_365_44 = 365,                          // $@44
+        S_cert_file = 366,                       // cert_file
+        S_367_45 = 367,                          // $@45
+        S_key_file = 368,                        // key_file
+        S_369_46 = 369,                          // $@46
+        S_cipher_list = 370,                     // cipher_list
+        S_371_47 = 371,                          // $@47
+        S_sanity_checks = 372,                   // sanity_checks
+        S_373_48 = 373,                          // $@48
+        S_sanity_checks_params = 374,            // sanity_checks_params
+        S_sanity_checks_param = 375,             // sanity_checks_param
+        S_lease_checks = 376,                    // lease_checks
+        S_377_49 = 377,                          // $@49
+        S_extended_info_checks = 378,            // extended_info_checks
+        S_379_50 = 379,                          // $@50
+        S_mac_sources = 380,                     // mac_sources
+        S_381_51 = 381,                          // $@51
+        S_mac_sources_list = 382,                // mac_sources_list
+        S_mac_sources_value = 383,               // mac_sources_value
+        S_duid_id = 384,                         // duid_id
+        S_string_id = 385,                       // string_id
+        S_host_reservation_identifiers = 386,    // host_reservation_identifiers
+        S_387_52 = 387,                          // $@52
+        S_host_reservation_identifiers_list = 388, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 389,     // host_reservation_identifier
+        S_hw_address_id = 390,                   // hw_address_id
+        S_flex_id = 391,                         // flex_id
+        S_relay_supplied_options = 392,          // relay_supplied_options
+        S_393_53 = 393,                          // $@53
+        S_dhcp_multi_threading = 394,            // dhcp_multi_threading
+        S_395_54 = 395,                          // $@54
+        S_multi_threading_params = 396,          // multi_threading_params
+        S_multi_threading_param = 397,           // multi_threading_param
+        S_enable_multi_threading = 398,          // enable_multi_threading
+        S_thread_pool_size = 399,                // thread_pool_size
+        S_packet_queue_size = 400,               // packet_queue_size
+        S_hooks_libraries = 401,                 // hooks_libraries
+        S_402_55 = 402,                          // $@55
+        S_hooks_libraries_list = 403,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 404,  // not_empty_hooks_libraries_list
+        S_hooks_library = 405,                   // hooks_library
+        S_406_56 = 406,                          // $@56
+        S_sub_hooks_library = 407,               // sub_hooks_library
+        S_408_57 = 408,                          // $@57
+        S_hooks_params = 409,                    // hooks_params
+        S_hooks_param = 410,                     // hooks_param
+        S_library = 411,                         // library
+        S_412_58 = 412,                          // $@58
+        S_parameters = 413,                      // parameters
+        S_414_59 = 414,                          // $@59
+        S_expired_leases_processing = 415,       // expired_leases_processing
+        S_416_60 = 416,                          // $@60
+        S_expired_leases_params = 417,           // expired_leases_params
+        S_expired_leases_param = 418,            // expired_leases_param
+        S_reclaim_timer_wait_time = 419,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 420, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 421,             // hold_reclaimed_time
+        S_max_reclaim_leases = 422,              // max_reclaim_leases
+        S_max_reclaim_time = 423,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 424,         // unwarned_reclaim_cycles
+        S_subnet6_list = 425,                    // subnet6_list
+        S_426_61 = 426,                          // $@61
+        S_subnet6_list_content = 427,            // subnet6_list_content
+        S_not_empty_subnet6_list = 428,          // not_empty_subnet6_list
+        S_subnet6 = 429,                         // subnet6
+        S_430_62 = 430,                          // $@62
+        S_sub_subnet6 = 431,                     // sub_subnet6
+        S_432_63 = 432,                          // $@63
+        S_subnet6_params = 433,                  // subnet6_params
+        S_subnet6_param = 434,                   // subnet6_param
+        S_subnet = 435,                          // subnet
+        S_436_64 = 436,                          // $@64
+        S_interface = 437,                       // interface
+        S_438_65 = 438,                          // $@65
+        S_interface_id = 439,                    // interface_id
+        S_440_66 = 440,                          // $@66
+        S_client_class = 441,                    // client_class
+        S_442_67 = 442,                          // $@67
+        S_require_client_classes = 443,          // require_client_classes
+        S_444_68 = 444,                          // $@68
+        S_reservations_global = 445,             // reservations_global
+        S_reservations_in_subnet = 446,          // reservations_in_subnet
+        S_reservations_out_of_pool = 447,        // reservations_out_of_pool
+        S_reservation_mode = 448,                // reservation_mode
+        S_449_69 = 449,                          // $@69
+        S_hr_mode = 450,                         // hr_mode
+        S_id = 451,                              // id
+        S_rapid_commit = 452,                    // rapid_commit
+        S_shared_networks = 453,                 // shared_networks
+        S_454_70 = 454,                          // $@70
+        S_shared_networks_content = 455,         // shared_networks_content
+        S_shared_networks_list = 456,            // shared_networks_list
+        S_shared_network = 457,                  // shared_network
+        S_458_71 = 458,                          // $@71
+        S_shared_network_params = 459,           // shared_network_params
+        S_shared_network_param = 460,            // shared_network_param
+        S_option_def_list = 461,                 // option_def_list
+        S_462_72 = 462,                          // $@72
+        S_sub_option_def_list = 463,             // sub_option_def_list
+        S_464_73 = 464,                          // $@73
+        S_option_def_list_content = 465,         // option_def_list_content
+        S_not_empty_option_def_list = 466,       // not_empty_option_def_list
+        S_option_def_entry = 467,                // option_def_entry
+        S_468_74 = 468,                          // $@74
+        S_sub_option_def = 469,                  // sub_option_def
+        S_470_75 = 470,                          // $@75
+        S_option_def_params = 471,               // option_def_params
+        S_not_empty_option_def_params = 472,     // not_empty_option_def_params
+        S_option_def_param = 473,                // option_def_param
+        S_option_def_name = 474,                 // option_def_name
+        S_code = 475,                            // code
+        S_option_def_code = 476,                 // option_def_code
+        S_option_def_type = 477,                 // option_def_type
+        S_478_76 = 478,                          // $@76
+        S_option_def_record_types = 479,         // option_def_record_types
+        S_480_77 = 480,                          // $@77
+        S_space = 481,                           // space
+        S_482_78 = 482,                          // $@78
+        S_option_def_space = 483,                // option_def_space
+        S_option_def_encapsulate = 484,          // option_def_encapsulate
+        S_485_79 = 485,                          // $@79
+        S_option_def_array = 486,                // option_def_array
+        S_option_data_list = 487,                // option_data_list
+        S_488_80 = 488,                          // $@80
+        S_option_data_list_content = 489,        // option_data_list_content
+        S_not_empty_option_data_list = 490,      // not_empty_option_data_list
+        S_option_data_entry = 491,               // option_data_entry
+        S_492_81 = 492,                          // $@81
+        S_sub_option_data = 493,                 // sub_option_data
+        S_494_82 = 494,                          // $@82
+        S_option_data_params = 495,              // option_data_params
+        S_not_empty_option_data_params = 496,    // not_empty_option_data_params
+        S_option_data_param = 497,               // option_data_param
+        S_option_data_name = 498,                // option_data_name
+        S_option_data_data = 499,                // option_data_data
+        S_500_83 = 500,                          // $@83
+        S_option_data_code = 501,                // option_data_code
+        S_option_data_space = 502,               // option_data_space
+        S_option_data_csv_format = 503,          // option_data_csv_format
+        S_option_data_always_send = 504,         // option_data_always_send
+        S_option_data_never_send = 505,          // option_data_never_send
+        S_pools_list = 506,                      // pools_list
+        S_507_84 = 507,                          // $@84
+        S_pools_list_content = 508,              // pools_list_content
+        S_not_empty_pools_list = 509,            // not_empty_pools_list
+        S_pool_list_entry = 510,                 // pool_list_entry
+        S_511_85 = 511,                          // $@85
+        S_sub_pool6 = 512,                       // sub_pool6
+        S_513_86 = 513,                          // $@86
+        S_pool_params = 514,                     // pool_params
+        S_pool_param = 515,                      // pool_param
+        S_pool_entry = 516,                      // pool_entry
+        S_517_87 = 517,                          // $@87
+        S_pool_id = 518,                         // pool_id
+        S_user_context = 519,                    // user_context
+        S_520_88 = 520,                          // $@88
+        S_comment = 521,                         // comment
+        S_522_89 = 522,                          // $@89
+        S_pd_pools_list = 523,                   // pd_pools_list
+        S_524_90 = 524,                          // $@90
+        S_pd_pools_list_content = 525,           // pd_pools_list_content
+        S_not_empty_pd_pools_list = 526,         // not_empty_pd_pools_list
+        S_pd_pool_entry = 527,                   // pd_pool_entry
+        S_528_91 = 528,                          // $@91
+        S_sub_pd_pool = 529,                     // sub_pd_pool
+        S_530_92 = 530,                          // $@92
+        S_pd_pool_params = 531,                  // pd_pool_params
+        S_pd_pool_param = 532,                   // pd_pool_param
+        S_pd_prefix = 533,                       // pd_prefix
+        S_534_93 = 534,                          // $@93
+        S_pd_prefix_len = 535,                   // pd_prefix_len
+        S_excluded_prefix = 536,                 // excluded_prefix
+        S_537_94 = 537,                          // $@94
+        S_excluded_prefix_len = 538,             // excluded_prefix_len
+        S_pd_delegated_len = 539,                // pd_delegated_len
+        S_reservations = 540,                    // reservations
+        S_541_95 = 541,                          // $@95
+        S_reservations_list = 542,               // reservations_list
+        S_not_empty_reservations_list = 543,     // not_empty_reservations_list
+        S_reservation = 544,                     // reservation
+        S_545_96 = 545,                          // $@96
+        S_sub_reservation = 546,                 // sub_reservation
+        S_547_97 = 547,                          // $@97
+        S_reservation_params = 548,              // reservation_params
+        S_not_empty_reservation_params = 549,    // not_empty_reservation_params
+        S_reservation_param = 550,               // reservation_param
+        S_ip_addresses = 551,                    // ip_addresses
+        S_552_98 = 552,                          // $@98
+        S_prefixes = 553,                        // prefixes
+        S_554_99 = 554,                          // $@99
+        S_duid = 555,                            // duid
+        S_556_100 = 556,                         // $@100
+        S_hw_address = 557,                      // hw_address
+        S_558_101 = 558,                         // $@101
+        S_hostname = 559,                        // hostname
+        S_560_102 = 560,                         // $@102
+        S_flex_id_value = 561,                   // flex_id_value
+        S_562_103 = 562,                         // $@103
+        S_reservation_client_classes = 563,      // reservation_client_classes
+        S_564_104 = 564,                         // $@104
+        S_relay = 565,                           // relay
+        S_566_105 = 566,                         // $@105
+        S_relay_map = 567,                       // relay_map
+        S_client_classes = 568,                  // client_classes
+        S_569_106 = 569,                         // $@106
+        S_client_classes_list = 570,             // client_classes_list
+        S_client_class_entry = 571,              // client_class_entry
+        S_572_107 = 572,                         // $@107
+        S_client_class_params = 573,             // client_class_params
+        S_not_empty_client_class_params = 574,   // not_empty_client_class_params
+        S_client_class_param = 575,              // client_class_param
+        S_client_class_name = 576,               // client_class_name
+        S_client_class_test = 577,               // client_class_test
+        S_578_108 = 578,                         // $@108
+        S_client_class_template_test = 579,      // client_class_template_test
+        S_580_109 = 580,                         // $@109
+        S_only_if_required = 581,                // only_if_required
+        S_server_id = 582,                       // server_id
+        S_583_110 = 583,                         // $@110
+        S_server_id_params = 584,                // server_id_params
+        S_server_id_param = 585,                 // server_id_param
+        S_server_id_type = 586,                  // server_id_type
+        S_587_111 = 587,                         // $@111
+        S_duid_type = 588,                       // duid_type
+        S_htype = 589,                           // htype
+        S_identifier = 590,                      // identifier
+        S_591_112 = 591,                         // $@112
+        S_time = 592,                            // time
+        S_enterprise_id = 593,                   // enterprise_id
+        S_dhcp4o6_port = 594,                    // dhcp4o6_port
+        S_control_socket = 595,                  // control_socket
+        S_596_113 = 596,                         // $@113
+        S_control_socket_params = 597,           // control_socket_params
+        S_control_socket_param = 598,            // control_socket_param
+        S_socket_type = 599,                     // socket_type
+        S_600_114 = 600,                         // $@114
+        S_socket_name = 601,                     // socket_name
+        S_602_115 = 602,                         // $@115
+        S_dhcp_queue_control = 603,              // dhcp_queue_control
+        S_604_116 = 604,                         // $@116
+        S_queue_control_params = 605,            // queue_control_params
+        S_queue_control_param = 606,             // queue_control_param
+        S_enable_queue = 607,                    // enable_queue
+        S_queue_type = 608,                      // queue_type
+        S_609_117 = 609,                         // $@117
+        S_capacity = 610,                        // capacity
+        S_arbitrary_map_entry = 611,             // arbitrary_map_entry
+        S_612_118 = 612,                         // $@118
+        S_dhcp_ddns = 613,                       // dhcp_ddns
+        S_614_119 = 614,                         // $@119
+        S_sub_dhcp_ddns = 615,                   // sub_dhcp_ddns
+        S_616_120 = 616,                         // $@120
+        S_dhcp_ddns_params = 617,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 618,                 // dhcp_ddns_param
+        S_enable_updates = 619,                  // enable_updates
+        S_server_ip = 620,                       // server_ip
+        S_621_121 = 621,                         // $@121
+        S_server_port = 622,                     // server_port
+        S_sender_ip = 623,                       // sender_ip
+        S_624_122 = 624,                         // $@122
+        S_sender_port = 625,                     // sender_port
+        S_max_queue_size = 626,                  // max_queue_size
+        S_ncr_protocol = 627,                    // ncr_protocol
+        S_628_123 = 628,                         // $@123
+        S_ncr_protocol_value = 629,              // ncr_protocol_value
+        S_ncr_format = 630,                      // ncr_format
+        S_631_124 = 631,                         // $@124
+        S_config_control = 632,                  // config_control
+        S_633_125 = 633,                         // $@125
+        S_sub_config_control = 634,              // sub_config_control
+        S_635_126 = 635,                         // $@126
+        S_config_control_params = 636,           // config_control_params
+        S_config_control_param = 637,            // config_control_param
+        S_config_databases = 638,                // config_databases
+        S_639_127 = 639,                         // $@127
+        S_config_fetch_wait_time = 640,          // config_fetch_wait_time
+        S_loggers = 641,                         // loggers
+        S_642_128 = 642,                         // $@128
+        S_loggers_entries = 643,                 // loggers_entries
+        S_logger_entry = 644,                    // logger_entry
+        S_645_129 = 645,                         // $@129
+        S_logger_params = 646,                   // logger_params
+        S_logger_param = 647,                    // logger_param
+        S_debuglevel = 648,                      // debuglevel
+        S_severity = 649,                        // severity
         S_650_130 = 650,                         // $@130
-        S_sub_config_control = 651,              // sub_config_control
+        S_output_options_list = 651,             // output_options_list
         S_652_131 = 652,                         // $@131
-        S_config_control_params = 653,           // config_control_params
-        S_config_control_param = 654,            // config_control_param
-        S_config_databases = 655,                // config_databases
-        S_656_132 = 656,                         // $@132
-        S_config_fetch_wait_time = 657,          // config_fetch_wait_time
-        S_loggers = 658,                         // loggers
+        S_output_options_list_content = 653,     // output_options_list_content
+        S_output_entry = 654,                    // output_entry
+        S_655_132 = 655,                         // $@132
+        S_output_params_list = 656,              // output_params_list
+        S_output_params = 657,                   // output_params
+        S_output = 658,                          // output
         S_659_133 = 659,                         // $@133
-        S_loggers_entries = 660,                 // loggers_entries
-        S_logger_entry = 661,                    // logger_entry
-        S_662_134 = 662,                         // $@134
-        S_logger_params = 663,                   // logger_params
-        S_logger_param = 664,                    // logger_param
-        S_debuglevel = 665,                      // debuglevel
-        S_severity = 666,                        // severity
-        S_667_135 = 667,                         // $@135
-        S_output_options_list = 668,             // output_options_list
-        S_669_136 = 669,                         // $@136
-        S_output_options_list_content = 670,     // output_options_list_content
-        S_output_entry = 671,                    // output_entry
-        S_672_137 = 672,                         // $@137
-        S_output_params_list = 673,              // output_params_list
-        S_output_params = 674,                   // output_params
-        S_output = 675,                          // output
-        S_676_138 = 676,                         // $@138
-        S_flush = 677,                           // flush
-        S_maxsize = 678,                         // maxsize
-        S_maxver = 679,                          // maxver
-        S_pattern = 680,                         // pattern
-        S_681_139 = 681,                         // $@139
-        S_compatibility = 682,                   // compatibility
-        S_683_140 = 683,                         // $@140
-        S_compatibility_params = 684,            // compatibility_params
-        S_compatibility_param = 685,             // compatibility_param
-        S_lenient_option_parsing = 686           // lenient_option_parsing
+        S_flush = 660,                           // flush
+        S_maxsize = 661,                         // maxsize
+        S_maxver = 662,                          // maxver
+        S_pattern = 663,                         // pattern
+        S_664_134 = 664,                         // $@134
+        S_compatibility = 665,                   // compatibility
+        S_666_135 = 666,                         // $@135
+        S_compatibility_params = 667,            // compatibility_params
+        S_compatibility_param = 668,             // compatibility_param
+        S_lenient_option_parsing = 669           // lenient_option_parsing
       };
     };
 
@@ -4476,21 +4454,6 @@ switch (yykind)
         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
@@ -4596,66 +4559,6 @@ switch (yykind)
         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
@@ -5601,8 +5504,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1390,     ///< Last index in yytable_.
-      yynnts_ = 458,  ///< Number of nonterminal symbols.
+      yylast_ = 1358,     ///< Last index in yytable_.
+      yynnts_ = 446,  ///< Number of nonterminal symbols.
       yyfinal_ = 30 ///< Termination state number.
     };
 
@@ -5669,11 +5572,10 @@ switch (yykind)
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228
+     215,   216,   217,   218,   219,   220,   221,   222,   223
     };
     // Last valid token kind.
-    const int code_max = 483;
+    const int code_max = 478;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -5846,7 +5748,7 @@ switch (yykind)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5850 "dhcp6_parser.h"
+#line 5752 "dhcp6_parser.h"
 
 
 
index 0b85cc201a422d378235406baf6c70ed81884810..4fb140a70e84670df203b73b7676c6a8eb318816 100644 (file)
@@ -1,4 +1,3 @@
-// Generated 202405121319
 // A Bison parser, made by GNU Bison 3.8.2.
 
 // Locations for Bison parsers in C++
index 09c432ff64fd53fbd8081d5fff5067519bb1a997..e61d0763c6e1ec8f44ccf1018d61d73d3c5c3e12 100644 (file)
@@ -18,7 +18,7 @@ namespace isc {
 namespace db {
 
 /// @brief Define the PostgreSQL backend version.
-const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 21;
+const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 22;
 const uint32_t PGSQL_SCHEMA_VERSION_MINOR = 0;
 
 // Maximum number of parameters that can be used a statement
index cf51c58aae00dc83f51dba5516b00bbc2dfeaf71..c52bc4dcaa09b59d3d557ffa15a86bb16098a811 100644 (file)
@@ -5865,6 +5865,26 @@ CREATE INDEX lease6_by_subnet_id_address ON lease6 (subnet_id, address ASC);
 ALTER TABLE lease4 MODIFY expire timestamp NULL;
 ALTER TABLE lease6 MODIFY expire timestamp NULL;
 
+SET @disable_audit = 1;
+
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp4_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp6_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+SET @disable_audit = 0;
+
 -- Update the schema version number.
 UPDATE schema_version
     SET version = '22', minor = '0';
index 61facbd87d240d27bf03739e3f73a375abc9c218..1c5e3ec6f1685f697aa1f58469e9d400334ea65b 100644 (file)
@@ -60,6 +60,26 @@ mysql "$@" <<EOF
 ALTER TABLE lease4 MODIFY expire timestamp NULL;
 ALTER TABLE lease6 MODIFY expire timestamp NULL;
 
+SET @disable_audit = 1;
+
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp4_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp6_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+SET @disable_audit = 0;
+
 -- Update the schema version number.
 UPDATE schema_version
     SET version = '22', minor = '0';
index b8e0b819f2aa377c706e293d7215348dda5f1924..5a8ec39377a289c6aa34d844d14276c48c23983b 100644 (file)
@@ -24,4 +24,5 @@
 /upgrade_018_to_019.sh
 /upgrade_019_to_020.sh
 /upgrade_020_to_021.sh
+/upgrade_021_to_022.sh
 /wipe_data.sh
index a7049a4c96afcd58faf3d0e42ca85439c4858dfa..69338fc78819b4f78817b4679567e7ba3231aa74 100644 (file)
@@ -35,6 +35,7 @@ pgsql_SCRIPTS += upgrade_017_to_018.sh
 pgsql_SCRIPTS += upgrade_018_to_019.sh
 pgsql_SCRIPTS += upgrade_019_to_020.sh
 pgsql_SCRIPTS += upgrade_020_to_021.sh
+pgsql_SCRIPTS += upgrade_021_to_022.sh
 pgsql_SCRIPTS += wipe_data.sh
 
 DISTCLEANFILES = ${pgsql_SCRIPTS}
index c86069fda042fc18b1211111b65f1c696e928869..b0234bb186988a615658a9618be7947d89fcf065 100644 (file)
@@ -6337,6 +6337,34 @@ UPDATE schema_version
 
 -- This line concludes the schema upgrade to version 21.0.
 
+-- This line starts the schema upgrade to version 22.0.
+
+SELECT set_config('kea.disable_audit', 'true', false);
+
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp4_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp6_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+SELECT set_config('kea.disable_audit', 'false', false);
+
+-- Update the schema version number.
+UPDATE schema_version
+    SET version = '22', minor = '0';
+
+-- This line concludes the schema upgrade to version 22.0.
+
 -- Commit the script transaction.
 COMMIT;
 
diff --git a/src/share/database/scripts/pgsql/upgrade_021_to_022.sh.in b/src/share/database/scripts/pgsql/upgrade_021_to_022.sh.in
new file mode 100644 (file)
index 0000000..df7f901
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# Copyright (C) 2023-2024 Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Exit with error if commands exit with non-zero and if undefined variables are
+# used.
+set -eu
+
+# shellcheck disable=SC2034
+# SC2034: ... appears unused. Verify use (or export if used externally).
+prefix="@prefix@"
+
+# Include utilities based on location of this script. Check for sources first,
+# so that the unexpected situations with weird paths fall on the default
+# case of installed.
+script_path=$(cd "$(dirname "${0}")" && pwd)
+if test "${script_path}" = "@abs_top_builddir@/src/share/database/scripts/pgsql"; then
+    # shellcheck source=./src/bin/admin/admin-utils.sh.in
+    . "@abs_top_builddir@/src/bin/admin/admin-utils.sh"
+else
+    # shellcheck source=./src/bin/admin/admin-utils.sh.in
+    . "@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"
+fi
+
+VERSION=$(pgsql_version "$@")
+
+if [ "$VERSION" != "21.0" ]; then
+    printf 'This script upgrades 21.0 to 22.0. '
+    printf 'Reported version is %s. Skipping upgrade.\n' "${VERSION}"
+    exit 0
+fi
+
+psql "$@" >/dev/null <<EOF
+START TRANSACTION;
+
+-- This line starts the schema upgrade to version 22.0.
+
+SELECT set_config('kea.disable_audit', 'true', false);
+
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp4_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp4_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp4_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-no-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.override-client-update';
+delete from dhcp6_global_parameter where name='dhcp-ddns.replace-client-name';
+delete from dhcp6_global_parameter where name='dhcp-ddns.generated-prefix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.qualifying-suffix';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-set';
+delete from dhcp6_global_parameter where name='dhcp-ddns.hostname-char-replacement';
+
+SELECT set_config('kea.disable_audit', 'false', false);
+
+-- Update the schema version number.
+UPDATE schema_version
+    SET version = '22', minor = '0';
+
+-- This line concludes the schema upgrade to version 22.0.
+
+-- Commit the script transaction.
+COMMIT;
+
+EOF