]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Add edns-client-tag-opcode option
authorRalph Dolmans <ralph@nlnetlabs.nl>
Wed, 23 Sep 2020 10:09:48 +0000 (12:09 +0200)
committerRalph Dolmans <ralph@nlnetlabs.nl>
Wed, 23 Sep 2020 10:09:48 +0000 (12:09 +0200)
13 files changed:
doc/Changelog
doc/unbound.conf.5.in
services/outside_network.c
testcode/fake_event.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/edns.c
util/edns.h

index 06deb58f97495c64bc8b74e37cfafaa7e552da36..e316ea99f9c46ddd36f35157930f5dd6d67f78b1 100644 (file)
@@ -4,6 +4,7 @@
 
 23 September 2020: Ralph
        - Fix edns-client-tags get_option typo
+       - Add edns-client-tag-opcode option
 
 21 September 2020: Ralph
        - Fix #304: dnstap logging not recovering after dnstap process restarts
index c2b6d6eb7f0e55a643ed29dd67f5343f2c2218bd..f4586b1d14135bce8bc9663321d0a690b0c37f2c 100644 (file)
@@ -1538,6 +1538,10 @@ Include an edns-client-tag option in queries with destination address matching
 the configured IP netblock. This configuration option can be used multiple
 times. The most specific match will be used. The tag data is configured in
 decimal format, from 0 to 65535.
+.TP 5
+.B edns\-client\-tag\-opcode: \fI<opcode>
+EDNS0 option code for the edns-client-tag option, from 0 to 65535. Default is
+16, as assigned by IANA.
 .SS "Remote Control Options"
 In the
 .B remote\-control:
index 085d0e6ae31b6cdb5e8ef83605d5a2d04139ba14..41a1d83f1454b79a9822dc1f3b6d56f6da2b344a 100644 (file)
@@ -2107,7 +2107,7 @@ outnet_serviced_query(struct outside_network* outnet,
                addr, addrlen))) {
                uint16_t client_tag = htons(client_tag_addr->tag_data);
                edns_opt_list_append(&qstate->edns_opts_back_out,
-                       LDNS_EDNS_CLIENT_TAG, 2,
+                       env->edns_tags->client_tag_opcode, 2,
                        (uint8_t*)&client_tag, qstate->region);
        }
 
index 674069afce99c7d3a2505f1a7d0dd085499783b6..d8df76492540338a7135aa8043733f8879070377 100644 (file)
@@ -1232,7 +1232,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet,
                        addr, addrlen))) {
                        uint16_t client_tag = htons(client_tag_addr->tag_data);
                        edns_opt_list_append(&qstate->edns_opts_back_out,
-                               LDNS_EDNS_CLIENT_TAG, 2,
+                               env->edns_tags->client_tag_opcode, 2,
                                (uint8_t*)&client_tag, qstate->region);
                }
                edns.opt_list = qstate->edns_opts_back_out;
index 8fd3bcffed4e5385e3bfec49f358de891c3941e3..f590a36cfcbad56f145ae38ba0845ebc4d55ed9b 100644 (file)
@@ -322,6 +322,7 @@ config_create(void)
        cfg->shm_enable = 0;
        cfg->shm_key = 11777;
        cfg->edns_client_tags = NULL;
+       cfg->edns_client_tag_opcode = LDNS_EDNS_CLIENT_TAG;
        cfg->dnscrypt = 0;
        cfg->dnscrypt_port = 0;
        cfg->dnscrypt_provider = NULL;
index 3148dd016bff2280544893b6ae98d16bbc5dfb61..7750eaa0e6b04b98f19c1d2644dbcd54d32e84e5 100644 (file)
@@ -564,6 +564,8 @@ struct config_file {
 
        /** list of EDNS client tag entries, linked list */
        struct config_str2list* edns_client_tags;
+       /** EDNS opcode to use for EDNS client tags */
+       uint16_t edns_client_tag_opcode;
 
        /** DNSCrypt */
        /** true to enable dnscrypt */
index 16158e472e56057deb256ac72c511bca663ab84e..36b4a2ecaba4465f60e670af5f450be106097c1e 100644 (file)
@@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 330
-#define YY_END_OF_BUFFER 331
+#define YY_NUM_RULES 331
+#define YY_END_OF_BUFFER 332
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,363 +363,364 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[3227] =
+static const flex_int16_t yy_accept[3235] =
     {   0,
-        1,    1,  304,  304,  308,  308,  312,  312,  316,  316,
-        1,    1,  320,  320,  324,  324,  331,  328,    1,  302,
-      302,  329,    2,  329,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  304,  305,  305,  306,
-      329,  308,  309,  309,  310,  329,  315,  312,  313,  313,
-      314,  329,  316,  317,  317,  318,  329,  327,  303,    2,
-      307,  329,  327,  323,  320,  321,  321,  322,  329,  324,
-      325,  325,  326,  329,  328,    0,    1,    2,    2,    2,
-        2,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  304,    0,  308,
-        0,  315,    0,  312,  316,    0,  327,    0,    2,    2,
-      327,  323,    0,  320,  324,    0,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  327,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  121,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  129,  328,  328,  328,  328,  328,  328,  328,
-      327,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  105,
-      328,  328,  328,  328,  328,  328,    8,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  122,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  134,  328,  327,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  296,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  327,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,   63,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  233,  328,   14,   15,  328,   19,   18,  328,
-      328,  217,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  128,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  215,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,    3,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  327,  328,  328,  328,
-      328,  328,  328,  328,  290,  328,  328,  289,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  311,  328,  328,  328,  328,  328,  328,
-      328,   62,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,   66,  328,
-      264,  328,  328,  328,  328,  328,  328,  328,  328,  297,
-      298,  328,  328,  328,  328,  328,   67,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  125,  328,  328,  328,  328,  328,  328,
-      328,  328,  204,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,   21,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  153,  328,  328,  327,  311,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  103,  328,  328,
-      328,  328,  328,  328,  328,  272,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  176,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  152,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  102,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,   32,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,   33,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,   64,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  127,  327,  328,
-      328,  328,  328,  328,  120,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,   65,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  237,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  177,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,   53,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  255,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,   57,  328,   58,  328,  328,  328,  328,  328,  106,
-      328,  107,  328,  328,  328,  328,  104,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,    7,  328,  327,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  226,  328,  328,  328,  328,
-      155,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  238,  328,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,   45,  328,  328,  328,  328,  328,  328,
-      328,  328,   54,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  196,  328,  195,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,   16,   17,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-       68,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  203,  328,  328,  328,  328,  328,  328,  109,
-      328,  108,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  187,  328,  328,  328,  328,  328,  328,
-      328,  328,  135,  327,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,   87,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  216,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,   91,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,   61,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  190,  191,  328,  328,
-      328,  266,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,    6,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  270,  328,  328,  328,
-
-      328,  328,  328,  291,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,   42,  328,  328,  328,  328,   44,
-      328,  328,  328,  328,  328,  328,  328,  328,   51,  328,
-      328,  328,  328,  328,  328,  328,  327,  328,  183,  328,
-      328,  328,  130,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  208,  328,  184,  328,  328,  328,  223,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-       52,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  132,  114,  328,  115,  328,  328,  328,  113,  328,
-      328,  328,  328,  328,  328,  328,  328,  150,  328,  328,
-       50,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  254,  328,  328,  328,  328,
-      328,  328,  328,  328,  185,  328,  328,  328,  328,  328,
-      188,  328,  194,  328,  328,  328,  328,  328,  222,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  101,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  126,  328,  328,  328,  328,  328,  328,   59,
-
-      328,  328,  328,   26,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,   20,  328,  328,  328,  328,  328,  328,
-       27,   36,  328,  160,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  327,  328,  328,
-      328,  328,  328,  328,   76,   78,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  274,
-      328,  328,  328,  328,  234,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  116,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  149,  328,   46,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  285,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  154,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  214,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  294,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  171,  328,  328,  328,  328,  328,  328,
-      328,  328,  110,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,  166,  328,  178,  328,  328,  328,  328,  327,
-      328,  138,  328,  328,  328,  328,  328,   97,  328,  328,
-      328,  328,  206,  328,  328,  328,  328,  328,  328,  224,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  246,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  131,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  170,  328,  328,  328,  328,  328,  328,   79,   80,
-      328,  328,  328,  328,  328,   60,  328,  328,  328,  328,
-      328,   86,  179,  328,  197,  328,  227,  328,  328,  189,
-
-      267,  328,  328,  328,  328,  328,   72,  328,  181,  328,
-      328,  328,  328,  328,    9,  328,  328,  328,  100,  328,
-      328,  328,  328,  259,  328,  328,  328,  328,  205,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  327,  328,  328,  328,  328,  169,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      156,  328,  273,  328,  328,  328,  328,  328,  245,  328,
-
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      218,  328,  301,  328,  328,  328,  265,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  288,  328,  180,  328,  328,
-      328,  328,  328,  328,  328,   71,   73,  328,  328,  328,
-      328,  328,  328,  328,   99,  328,  328,  328,  328,  257,
-      328,  328,  328,  328,  269,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  210,   34,   28,   30,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,   35,
-
-      328,   29,   31,  328,  328,  328,  328,  328,  328,  328,
-      328,   96,  328,  328,  328,  328,  328,  328,  327,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      212,  209,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-       70,  328,  328,  133,  328,  117,  328,  328,  328,  328,
-      328,  328,  328,  328,  151,   47,  328,  328,  319,   13,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  283,
-      328,  286,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,   12,  328,  328,   22,  328,  328,  328,  263,
-
-      328,  328,  328,  328,  271,  328,  328,  328,   74,  328,
-      220,  328,  328,  328,  328,  211,  328,  328,   69,  328,
-      328,  328,  328,   23,  328,   43,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  165,  164,
-      319,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      213,  207,  328,  225,  328,  328,  275,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,   81,  328,  328,
-      328,  258,  328,  328,  328,  328,  193,  328,  328,  328,
-
-      328,  219,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  292,  293,  162,  328,  328,   75,  328,  328,  328,
-      328,  172,  328,  328,  111,  112,  328,  328,  328,  328,
-      157,  328,  159,  328,  198,  328,  328,  328,  328,  163,
-      328,  328,  228,  328,  328,  328,  328,  328,  328,  328,
-      140,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  236,  328,  328,  328,  328,  328,  328,
-      328,   24,  328,  268,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  199,  328,  328,
-      256,  328,  287,  328,  192,  328,  328,  328,  328,   55,
-
-      328,  328,  328,  328,    4,  328,  328,  328,  328,  124,
-      139,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  231,
-       37,   38,  328,  328,  328,  328,  328,  328,  328,  276,
-      328,  328,  328,  328,  328,  328,  328,  244,  328,  328,
-      328,  328,  328,  328,  328,  202,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,   84,  328,   56,
-      262,  328,  232,  328,  328,  328,  328,   11,  328,  328,
-      328,  328,  328,  328,  123,  328,  328,  328,  328,  200,
-       88,  328,   40,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  168,  328,  328,  328,  328,  328,  142,  328,  328,
-      328,  328,  235,  328,  328,  328,  328,  328,  243,  328,
-      328,  328,  328,  136,  328,  328,  118,  119,  328,  328,
-      328,   90,   94,   89,  328,  328,  328,   82,  328,  328,
-      328,  328,  328,   10,  328,  328,  328,  260,  295,  328,
-      328,  328,  328,  300,   39,  328,  328,  328,  328,  328,
-      167,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,   95,   93,  328,  328,  328,   83,  284,
-      328,  328,  328,  328,  328,  328,  328,  186,  328,  328,
-
-      328,  328,  328,  201,  328,  328,  328,  328,  328,  328,
-      328,  328,  158,   77,  328,  328,  328,  328,  328,  277,
-      328,  328,  328,  328,  328,  328,  328,  240,  328,  328,
-      239,  137,  328,   92,   48,  328,  143,  144,  147,  148,
-      145,  146,   85,  328,  261,  328,  328,  328,  328,  161,
-      328,  328,  328,  328,  328,  230,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  174,  173,   41,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  328,   98,  328,  229,  328,  253,  281,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-       49,    5,  328,  328,  221,  328,  328,  282,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  241,   25,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  242,  328,  328,  328,  141,  328,  328,  328,  328,
-      328,  328,  328,  328,  175,  328,  182,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  278,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  299,  328,  328,  249,  328,  328,
-
-      328,  328,  328,  279,  328,  328,  328,  328,  328,  328,
-      280,  328,  328,  328,  247,  328,  250,  251,  328,  328,
-      328,  328,  328,  248,  252,    0
+        1,    1,  305,  305,  309,  309,  313,  313,  317,  317,
+        1,    1,  321,  321,  325,  325,  332,  329,    1,  303,
+      303,  330,    2,  330,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  305,  306,  306,  307,
+      330,  309,  310,  310,  311,  330,  316,  313,  314,  314,
+      315,  330,  317,  318,  318,  319,  330,  328,  304,    2,
+      308,  330,  328,  324,  321,  322,  322,  323,  330,  325,
+      326,  326,  327,  330,  329,    0,    1,    2,    2,    2,
+        2,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  305,    0,  309,
+        0,  316,    0,  313,  317,    0,  328,    0,    2,    2,
+      328,  324,    0,  321,  325,    0,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  328,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  121,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  129,  329,  329,  329,  329,  329,  329,  329,
+      328,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  105,
+      329,  329,  329,  329,  329,  329,    8,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  122,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  134,  329,  328,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  296,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  328,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,   63,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  233,  329,   14,   15,  329,   19,   18,  329,
+      329,  217,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  128,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  215,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,    3,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  328,  329,  329,  329,
+      329,  329,  329,  329,  290,  329,  329,  289,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  312,  329,  329,  329,  329,  329,  329,
+      329,   62,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,   66,  329,
+      264,  329,  329,  329,  329,  329,  329,  329,  329,  297,
+      298,  329,  329,  329,  329,  329,   67,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  125,  329,  329,  329,  329,  329,  329,
+      329,  329,  204,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,   21,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  153,  329,  329,  328,  312,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  103,  329,  329,
+      329,  329,  329,  329,  329,  272,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  176,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  152,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  102,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,   32,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,   33,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,   64,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  127,  328,  329,
+      329,  329,  329,  329,  120,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,   65,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  237,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  177,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,   53,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  255,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,   57,  329,   58,  329,  329,  329,  329,  329,  106,
+      329,  107,  329,  329,  329,  329,  104,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,    7,  329,  328,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  226,  329,  329,  329,  329,
+      155,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  238,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,   45,  329,  329,  329,  329,  329,  329,
+      329,  329,   54,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  196,  329,  195,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,   16,   17,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+       68,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  203,  329,  329,  329,  329,  329,  329,  109,
+      329,  108,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  187,  329,  329,  329,  329,  329,  329,
+      329,  329,  135,  328,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,   87,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  216,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,   91,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,   61,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  190,  191,  329,  329,
+      329,  266,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,    6,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  270,  329,  329,  329,
+
+      329,  329,  329,  291,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,   42,  329,  329,  329,  329,   44,
+      329,  329,  329,  329,  329,  329,  329,  329,   51,  329,
+      329,  329,  329,  329,  329,  329,  328,  329,  183,  329,
+      329,  329,  130,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  208,  329,  184,  329,  329,  329,  223,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+       52,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  132,  114,  329,  115,  329,  329,  329,  113,  329,
+      329,  329,  329,  329,  329,  329,  329,  150,  329,  329,
+       50,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  254,  329,  329,  329,  329,
+      329,  329,  329,  329,  185,  329,  329,  329,  329,  329,
+      188,  329,  194,  329,  329,  329,  329,  329,  222,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  101,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  126,  329,  329,  329,  329,  329,  329,   59,
+
+      329,  329,  329,   26,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,   20,  329,  329,  329,  329,  329,  329,
+       27,   36,  329,  160,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  328,  329,  329,
+      329,  329,  329,  329,   76,   78,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  274,
+      329,  329,  329,  329,  234,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  116,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  149,  329,   46,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  285,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  154,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  214,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  294,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  171,  329,  329,  329,  329,  329,  329,
+      329,  329,  110,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  166,  329,  178,  329,  329,  329,  329,  328,
+      329,  138,  329,  329,  329,  329,  329,   97,  329,  329,
+      329,  329,  206,  329,  329,  329,  329,  329,  329,  224,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  246,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  131,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  170,  329,  329,  329,  329,  329,  329,   79,   80,
+      329,  329,  329,  329,  329,   60,  329,  329,  329,  329,
+      329,   86,  179,  329,  197,  329,  227,  329,  329,  189,
+
+      267,  329,  329,  329,  329,  329,   72,  329,  181,  329,
+      329,  329,  329,  329,    9,  329,  329,  329,  100,  329,
+      329,  329,  329,  259,  329,  329,  329,  329,  205,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  328,  329,  329,  329,  329,  169,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      156,  329,  273,  329,  329,  329,  329,  329,  245,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      218,  329,  329,  301,  329,  329,  329,  265,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  288,  329,  180,  329,
+      329,  329,  329,  329,  329,  329,   71,   73,  329,  329,
+      329,  329,  329,  329,  329,   99,  329,  329,  329,  329,
+      257,  329,  329,  329,  329,  269,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  210,   34,   28,
+       30,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+       35,  329,   29,   31,  329,  329,  329,  329,  329,  329,
+      329,  329,   96,  329,  329,  329,  329,  329,  329,  328,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  212,  209,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,   70,  329,  329,  329,  133,  329,  117,  329,  329,
+      329,  329,  329,  329,  329,  329,  151,   47,  329,  329,
+      320,   13,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  283,  329,  286,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,   12,  329,  329,   22,  329,  329,
+
+      329,  263,  329,  329,  329,  329,  271,  329,  329,  329,
+       74,  329,  220,  329,  329,  329,  329,  211,  329,  329,
+       69,  329,  329,  329,  329,   23,  329,   43,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      165,  164,  320,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  213,  207,  329,  225,  329,  329,  275,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+       81,  329,  329,  329,  258,  329,  329,  329,  329,  193,
+
+      329,  329,  329,  329,  219,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  292,  293,  162,  329,  329,   75,
+      329,  329,  329,  329,  172,  329,  329,  111,  112,  329,
+      329,  329,  329,  157,  329,  159,  329,  198,  329,  329,
+      329,  329,  163,  329,  329,  228,  329,  329,  329,  329,
+      329,  329,  329,  140,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  236,  329,  329,  329,
+      329,  329,  329,  329,  329,   24,  329,  268,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  199,  329,  329,  256,  329,  287,  329,  192,  329,
+
+      329,  329,  329,   55,  329,  329,  329,  329,    4,  329,
+      329,  329,  329,  124,  139,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  231,   37,   38,  329,  329,  329,  329,
+      329,  329,  329,  276,  329,  329,  329,  329,  329,  329,
+      329,  244,  329,  329,  329,  329,  329,  329,  329,  329,
+      202,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,   84,  329,   56,  262,  329,  232,  329,  329,
+      329,  329,   11,  329,  329,  329,  329,  329,  329,  123,
+      329,  329,  329,  329,  200,   88,  329,   40,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  168,  329,  329,  329,
+      329,  329,  142,  329,  329,  329,  329,  235,  329,  329,
+      329,  329,  329,  243,  329,  329,  329,  329,  136,  329,
+      329,  329,  118,  119,  329,  329,  329,   90,   94,   89,
+      329,  329,  329,   82,  329,  329,  329,  329,  329,   10,
+      329,  329,  329,  260,  295,  329,  329,  329,  329,  300,
+       39,  329,  329,  329,  329,  329,  167,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+       95,   93,  329,  329,  329,   83,  284,  329,  329,  329,
+
+      329,  329,  329,  329,  186,  329,  329,  329,  329,  329,
+      201,  329,  329,  329,  329,  329,  329,  329,  329,  158,
+       77,  329,  329,  329,  329,  329,  277,  329,  329,  329,
+      329,  329,  329,  329,  240,  329,  329,  239,  137,  302,
+      329,   92,   48,  329,  143,  144,  147,  148,  145,  146,
+       85,  329,  261,  329,  329,  329,  329,  161,  329,  329,
+      329,  329,  329,  230,  329,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  174,  173,   41,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+       98,  329,  229,  329,  253,  281,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,   49,    5,
+      329,  329,  221,  329,  329,  282,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  241,   25,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  242,
+      329,  329,  329,  141,  329,  329,  329,  329,  329,  329,
+      329,  329,  175,  329,  182,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  278,  329,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+
+      329,  329,  299,  329,  329,  249,  329,  329,  329,  329,
+      329,  279,  329,  329,  329,  329,  329,  329,  280,  329,
+      329,  329,  247,  329,  250,  251,  329,  329,  329,  329,
+      329,  248,  252,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -762,17 +763,17 @@ static const YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[3245] =
+static const flex_int16_t yy_base[3253] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112,   96,  118,  124,  136, 4264, 3883,   81, 6299,
-     6299, 6299,  129,   52,  130,   63,  131,  152,   70,  140,
+       90,  112,   96,  118,  124,  136, 4264, 3883,   81, 6320,
+     6320, 6320,  129,   52,  130,   63,  131,  152,   70,  140,
       149,  156,   57,   88,   76,  173,  175,   95,  184,  145,
-      185,  205,  194,  204,  178,  123, 3532, 6299, 6299, 6299,
-      107, 3462, 6299, 6299, 6299,  154, 3335, 2925, 6299, 6299,
-     6299,  226, 2336, 6299, 6299, 6299,  163, 2298, 6299,  238,
-     6299,  242,  148, 1838, 1641, 6299, 6299, 6299,  246, 1331,
-     6299, 6299, 6299,  250, 1145,  254,  219,    0,  258,    0,
+      185,  205,  194,  204,  178,  123, 3532, 6320, 6320, 6320,
+      107, 3462, 6320, 6320, 6320,  154, 3335, 2925, 6320, 6320,
+     6320,  226, 2336, 6320, 6320, 6320,  163, 2298, 6320,  238,
+     6320,  242,  148, 1838, 1641, 6320, 6320, 6320,  246, 1331,
+     6320, 6320, 6320,  250, 1145,  254,  219,    0,  258,    0,
         0,  165,  250,  191,  215,  243,  252,  256,   92,  260,
 
       261,  262,  264,  265,  266,  273,  270,  277,  278,  281,
@@ -802,9 +803,9 @@ static const flex_int16_t yy_base[3245] =
       739,  741,  752,  747,  748,  761,  754,  756,  757,  764,
       755,  771,  765,  786,  793,  772,  782,  768,  791,  794,
       796,  801,  797,  790,  804,  807,  808,  810,  811,  818,
-      813, 6299,  815,  817,  829,  828,  831,  834,  824,  840,
+      813, 6320,  815,  817,  829,  828,  831,  834,  824,  840,
       832,  820,  850,  846,  847,  851,  873,  848,  849,  862,
-      863,  853, 6299,  866,  857,  897,  865,  875,  887,  882,
+      863,  853, 6320,  866,  857,  897,  865,  875,  887,  882,
       858,  883,  890,  895,  891,  907,  893,  898,  903,  920,
       906,  908,  915,  921,  922,  923,  931,  932,  926,  930,
 
@@ -813,22 +814,22 @@ static const flex_int16_t yy_base[3245] =
       975,  986,  983,  985,  988,  978,  996, 1007,  998, 1002,
      1006, 1009, 1011, 1013, 1014, 1017, 1021, 1018, 1022, 1024,
      1032, 1027, 1028, 1029, 1034, 1036, 1037, 1040, 1042, 1045,
-     1044, 1048, 1049, 1047, 1054, 1060, 1057, 1066, 1058, 6299,
-     1068, 1061, 1064, 1070, 1071, 1073, 6299, 1074, 1075, 1076,
+     1044, 1048, 1049, 1047, 1054, 1060, 1057, 1066, 1058, 6320,
+     1068, 1061, 1064, 1070, 1071, 1073, 6320, 1074, 1075, 1076,
      1083, 1084, 1087, 1096, 1086, 1097, 1099, 1089, 1098, 1110,
      1106, 1109, 1117, 1107, 1114, 1115, 1118, 1116, 1122, 1123,
-     1124, 1125, 1128, 1130, 1148, 6299, 1131, 1140, 1132, 1133,
+     1124, 1125, 1128, 1130, 1148, 6320, 1131, 1140, 1132, 1133,
 
      1134, 1142, 1160, 1144, 1153, 1157, 1161, 1172, 1163, 1175,
      1171, 1180, 1181, 1183, 1184, 1186, 1187, 1188, 1190, 1189,
-     1191, 1193, 1195, 1192, 1198, 6299, 1197, 1212, 1219, 1205,
+     1191, 1193, 1195, 1192, 1198, 6320, 1197, 1212, 1219, 1205,
      1210, 1215, 1218, 1220, 1221, 1222, 1223, 1227, 1230, 1241,
      1237, 1233, 1248, 1243, 1244, 1246, 1249, 1251, 1250, 1252,
      1254, 1263, 1259, 1266, 1274, 1275, 1277, 1279, 1286, 1288,
      1281, 1283, 1289, 1285, 1284, 1291, 1293, 1300, 1294, 1297,
      1224, 1304, 1306, 1301, 1307, 1308, 1313, 1309, 1311, 1315,
      1318, 1321, 1329, 1325, 1326, 1335, 1327, 1336, 1328, 1333,
-     1339, 1348, 1342, 1350, 6299, 1357, 1258, 1352, 1354, 1359,
+     1339, 1348, 1342, 1350, 6320, 1357, 1258, 1352, 1354, 1359,
 
      1360, 1361, 1362, 1367, 1368, 1369, 1371, 1370, 1373, 1374,
      1377, 1379, 1384, 1386, 1387, 1388, 1389, 1402, 1401, 1403,
@@ -841,650 +842,652 @@ static const flex_int16_t yy_base[3245] =
      1528, 1527, 1529, 1531, 1534, 1530, 1539, 1540, 1542, 1536,
      1549, 1550, 1551, 1552, 1555, 1553, 1557, 1562, 1563, 1564,
 
-     1568, 1570, 1569, 1572, 1578, 1575, 1576, 6299, 1580, 1588,
+     1568, 1570, 1569, 1572, 1578, 1575, 1576, 6320, 1580, 1588,
      1581, 1589, 1586, 1591, 1592, 1600, 1595, 1597, 1596, 1602,
-     1605, 1628, 6299, 1606, 6299, 6299,  315, 6299, 6299, 1608,
-     1607, 6299, 1609, 1611, 1618, 1619, 1631, 1635, 1638, 1624,
+     1605, 1628, 6320, 1606, 6320, 6320,  315, 6320, 6320, 1608,
+     1607, 6320, 1609, 1611, 1618, 1619, 1631, 1635, 1638, 1624,
      1612, 1639, 1651, 1660, 1641, 1622, 1652, 1653, 1644, 1654,
      1666, 1655, 1665, 1656, 1673, 1683, 1684, 1685, 1675, 1687,
      1689, 1692, 1693, 1697, 1699, 1700, 1702, 1703, 1704, 1706,
      1705, 1708, 1711, 1714, 1715, 1717, 1710, 1718, 1669, 1727,
-     1720, 1737, 6299, 1729, 1739, 1744, 1741, 1748, 1747, 1743,
+     1720, 1737, 6320, 1729, 1739, 1744, 1741, 1748, 1747, 1743,
      1745, 1752, 1755, 1756, 1757, 1758, 1723, 1759, 1761, 1762,
 
-     1765, 1772, 1767, 6299, 1768, 1770, 1769, 1776, 1774, 1782,
+     1765, 1772, 1767, 6320, 1768, 1770, 1769, 1776, 1774, 1782,
      1784, 1780, 1787, 1788, 1790, 1801, 1791, 1796, 1798, 1799,
-     1802, 1804, 6299, 1814, 1806, 1809, 1813, 1810, 1819, 1820,
+     1802, 1804, 6320, 1814, 1806, 1809, 1813, 1810, 1819, 1820,
      1821, 1822, 1823, 1824, 1825, 1827, 1833, 1834, 1835, 1836,
      1837, 1841, 1851, 1846, 1849, 1859, 1850, 1853, 1861, 1863,
      1864, 1865, 1866, 1868, 1873, 1875, 1872, 1880, 1876, 1883,
      1895, 1878, 1879, 1890, 1892, 1891, 1893, 1905, 1900, 1901,
      1904, 1913, 1906, 1909, 1911, 1915, 1922, 1918, 1923, 1924,
-     1914, 1928, 1930, 1931, 6299, 1932, 1937, 6299, 1934, 1938,
+     1914, 1928, 1930, 1931, 6320, 1932, 1937, 6320, 1934, 1938,
      1960, 1939, 1941, 1942, 1944, 1947, 1949, 1946, 1952, 1962,
 
      1964, 1974, 1970, 1975, 1980, 1977, 1982, 1983, 1985, 1986,
      1988, 1991, 1993, 1998, 1994, 2007, 2012, 2011, 2008, 2019,
      2014, 2015, 2017, 2037, 2016, 2018, 2025, 2020, 2021, 2024,
      2033, 2026, 2027, 2030, 2031, 2048, 2050, 2044, 2052, 2053,
-     2059, 2060, 2054, 6299, 2067, 1955, 2065, 2066, 2075, 2072,
-     2070, 6299, 2073, 2076, 2078, 2086, 2081, 2083, 2087, 2088,
-     2091, 2093, 2095, 2097, 2100, 2098, 2099, 2117, 6299, 2096,
-     6299, 2101, 2103, 2110, 2114, 2118, 2119, 2120, 2121, 6299,
-     6299, 2122, 2124, 2130, 2138, 2135, 6299, 2137, 2145, 2142,
+     2059, 2060, 2054, 6320, 2067, 1955, 2065, 2066, 2075, 2072,
+     2070, 6320, 2073, 2076, 2078, 2086, 2081, 2083, 2087, 2088,
+     2091, 2093, 2095, 2097, 2100, 2098, 2099, 2117, 6320, 2096,
+     6320, 2101, 2103, 2110, 2114, 2118, 2119, 2120, 2121, 6320,
+     6320, 2122, 2124, 2130, 2138, 2135, 6320, 2137, 2145, 2142,
      2147, 2140, 2141, 2149, 2151, 2155, 2152, 2162, 2157, 2164,
 
-     2159, 2166, 2170, 6299, 2160, 2172, 2173, 2175, 2176, 2181,
-     2182, 2179, 6299, 2183, 2185, 2188, 2196, 2198, 2195, 2199,
+     2159, 2166, 2170, 6320, 2160, 2172, 2173, 2175, 2176, 2181,
+     2182, 2179, 6320, 2183, 2185, 2188, 2196, 2198, 2195, 2199,
      2200, 2205, 2202, 2207, 2208, 2209, 2210, 2219, 2221, 2211,
-     2222, 2224, 2231, 6299, 2214, 2218, 2236, 2234, 2241, 2233,
+     2222, 2224, 2231, 6320, 2214, 2218, 2236, 2234, 2241, 2233,
      2235, 2237, 2243, 2245, 2246, 2247, 2250, 2251, 2252, 2259,
      2260, 2257, 2256, 2265, 2266, 2267, 2270, 2273, 2274, 2275,
-     2276, 2277, 6299, 2278, 2280, 2283,  171, 2286, 2289, 2287,
+     2276, 2277, 6320, 2278, 2280, 2283,  171, 2286, 2289, 2287,
      2288, 2296, 2291, 2294, 2307, 2312, 2308, 2309, 2310, 2316,
-     2317, 2318, 2319, 2320, 2321, 2322, 2324, 6299, 2326, 2327,
-     2329, 2333, 2332, 2335, 2340, 6299, 2342, 2349, 2352, 2361,
+     2317, 2318, 2319, 2320, 2321, 2322, 2324, 6320, 2326, 2327,
+     2329, 2333, 2332, 2335, 2340, 6320, 2342, 2349, 2352, 2361,
 
      2344, 2353, 2362, 2358, 2363, 2364, 2366, 2368, 2370, 2369,
-     2372, 2378, 2375, 6299, 2380, 2383, 2385, 2376, 2392, 2391,
+     2372, 2378, 2375, 6320, 2380, 2383, 2385, 2376, 2392, 2391,
      2384, 2398, 2399, 2400, 2403, 2401, 2402, 2405, 2404, 2406,
      2407, 2412, 2411, 2408, 2410, 2420, 2421, 2422, 2431, 2424,
-     2432, 2433, 6299, 2440, 2435, 2437, 2438, 2439, 2452, 2442,
+     2432, 2433, 6320, 2440, 2435, 2437, 2438, 2439, 2452, 2442,
      2461, 2444, 2448, 2445, 2464, 2466, 2456, 2467, 2478, 2480,
      2468, 2477, 2488, 2487, 2490, 2483, 2470, 2493, 2496, 2497,
      2498, 2500, 2502, 2503, 2504, 2505, 2512, 2513, 2510, 2520,
-     2519, 2525, 2532, 2527, 6299, 2536, 2531, 2534, 2541, 2548,
+     2519, 2525, 2532, 2527, 6320, 2536, 2531, 2534, 2541, 2548,
      2544, 2521, 2549, 2545, 2551, 2555, 2556, 2557, 2564, 2561,
 
      2565, 2563, 2567, 2566, 2569, 2568, 2570, 2576, 2583, 2579,
-     2585, 2587, 6299, 2511, 2588, 2590, 2591, 2597, 2592, 2599,
+     2585, 2587, 6320, 2511, 2588, 2590, 2591, 2597, 2592, 2599,
      2601, 2603, 2604, 2605, 2607, 2610, 2611, 2613, 2615, 2618,
-     2617, 2616, 6299, 2621, 2622, 2623, 2629, 2631, 2632, 2639,
-     2641, 2647, 2645, 2635, 2649, 2651, 2652, 6299, 2660, 2662,
-     2659, 2663, 2661, 2666, 2667, 2669, 2671, 6299, 2672, 2673,
-     2674, 2681, 2682, 2677, 6299, 2686, 2684, 2679, 2688, 2689,
-     2690, 2694, 2692, 2696, 2701, 2702, 2706, 2709, 2710, 6299,
+     2617, 2616, 6320, 2621, 2622, 2623, 2629, 2631, 2632, 2639,
+     2641, 2647, 2645, 2635, 2649, 2651, 2652, 6320, 2660, 2662,
+     2659, 2663, 2661, 2666, 2667, 2669, 2671, 6320, 2672, 2673,
+     2674, 2681, 2682, 2677, 6320, 2686, 2684, 2679, 2688, 2689,
+     2690, 2694, 2692, 2696, 2701, 2702, 2706, 2709, 2710, 6320,
      2711, 2723, 2713, 2716, 2718, 2714, 2720, 2724, 2729, 2727,
-     2738, 2733, 6299, 2749, 2638, 2741, 2751, 2744, 2746, 2748,
+     2738, 2733, 6320, 2749, 2638, 2741, 2751, 2744, 2746, 2748,
 
-     2753, 2754, 2755, 2756, 2757, 2760, 6299, 2761, 2764, 2765,
+     2753, 2754, 2755, 2756, 2757, 2760, 6320, 2761, 2764, 2765,
      2767, 2770, 2769, 2771, 2784, 2777, 2779, 2781, 2785, 2786,
      2788, 2791, 2792, 2797, 2793, 2794, 2804, 2806, 2808, 2809,
      2812, 2816, 2814, 2819, 2820, 2815, 2822, 2825, 2833, 2838,
-     2823, 2834, 6299, 2837, 2840, 2839, 2841, 2842, 2845, 2846,
+     2823, 2834, 6320, 2837, 2840, 2839, 2841, 2842, 2845, 2846,
      2849, 2847, 2854, 2852, 2851, 2855, 2864, 2872, 2861, 2868,
      2870, 2873, 2875, 2877, 2876, 2878, 2879, 2886, 2883, 2885,
      2893, 2890, 2894, 2902, 2891, 2899, 2901, 2903, 2905, 2904,
      2906, 2907, 2912, 2914, 2917, 2924, 2927, 2929, 2928, 2930,
-     2931, 2934, 6299, 2937, 2938, 2935, 2942, 2945, 2947, 2949,
+     2931, 2934, 6320, 2937, 2938, 2935, 2942, 2945, 2947, 2949,
 
      2957, 2948, 2952, 2959, 2956, 2966, 2958, 2967, 2968, 2975,
-     2972, 6299, 2973, 6299, 2974, 2976, 2979, 2983, 2982, 6299,
-     2987, 6299, 2989, 2994, 2984, 2990, 6299, 2996, 2997, 2998,
+     2972, 6320, 2973, 6320, 2974, 2976, 2979, 2983, 2982, 6320,
+     2987, 6320, 2989, 2994, 2984, 2990, 6320, 2996, 2997, 2998,
      3003, 3001, 3005, 3008, 3009, 3010, 3011, 3013, 3015, 3019,
      3018, 3020, 3023, 3028, 3025, 3029, 3032, 3035, 3036, 3040,
-     3038, 3042, 3045, 3047, 3050, 6299, 3052, 3048, 3054, 3057,
+     3038, 3042, 3045, 3047, 3050, 6320, 3052, 3048, 3054, 3057,
      3058, 3059, 3061, 3062, 3065, 3067, 3068, 3074, 3075, 3069,
-     3079, 3085, 3082, 3084, 3097, 6299, 3092, 3094, 3095, 3096,
-     6299, 3098, 3099, 3100, 3107, 3105, 3109, 3110, 3112, 3116,
-     3111, 3118, 3113, 3128, 3126, 3132, 3121, 6299, 3135, 3136,
+     3079, 3085, 3082, 3084, 3097, 6320, 3092, 3094, 3095, 3096,
+     6320, 3098, 3099, 3100, 3107, 3105, 3109, 3110, 3112, 3116,
+     3111, 3118, 3113, 3128, 3126, 3132, 3121, 6320, 3135, 3136,
 
      3122, 3139, 3149, 3151, 3156, 3138, 3152, 3154, 3163, 3159,
      3158, 3160, 3161, 3162, 3165, 3172, 3173, 3169, 3176, 3175,
      3179, 3186, 3183, 3177, 3181, 3187, 3189, 3190, 3191, 3192,
-     3193, 3194, 3197, 6299, 3199, 3200, 3202, 3214, 3206, 3209,
-     3213, 3217, 6299, 3220, 3221, 3223, 3224, 3222, 3230, 3231,
-     3232, 3233, 3234, 3236, 3239, 3240, 6299, 3245, 6299, 3246,
+     3193, 3194, 3197, 6320, 3199, 3200, 3202, 3214, 3206, 3209,
+     3213, 3217, 6320, 3220, 3221, 3223, 3224, 3222, 3230, 3231,
+     3232, 3233, 3234, 3236, 3239, 3240, 6320, 3245, 6320, 3246,
      3254, 3253, 3259, 3235, 3261, 3263, 3268, 3262, 3264, 3269,
      3272, 3270, 3276, 3273, 3278, 3281, 3285, 3286, 3288, 3284,
-     3295, 3291, 3296, 3298, 3299, 6299, 6299, 3300, 3301, 3302,
+     3295, 3291, 3296, 3298, 3299, 6320, 6320, 3300, 3301, 3302,
      3305, 3306, 3307, 3316, 3318, 3323, 3320, 3313, 3322, 3342,
 
-     6299, 3329, 3324, 3326, 3332, 3350, 3333, 3346, 3353, 3349,
-     3358, 3355, 6299, 3356, 3357, 3365, 3360, 3363, 3368, 6299,
-     3367, 6299, 3364, 3369, 3370, 3377, 3374, 3379, 3380, 3381,
+     6320, 3329, 3324, 3326, 3332, 3350, 3333, 3346, 3353, 3349,
+     3358, 3355, 6320, 3356, 3357, 3365, 3360, 3363, 3368, 6320,
+     3367, 6320, 3364, 3369, 3370, 3377, 3374, 3379, 3380, 3381,
      3385, 3396, 3397, 3389, 3399, 3393, 3382, 3401, 3403, 3410,
-     3405, 3407, 3408, 6299, 3412, 3409, 3414, 3417, 3419, 3425,
-     3428, 3415, 6299, 3421, 3431, 3435, 3432, 3436, 3439, 3441,
+     3405, 3407, 3408, 6320, 3412, 3409, 3414, 3417, 3419, 3425,
+     3428, 3415, 6320, 3421, 3431, 3435, 3432, 3436, 3439, 3441,
      3442, 3443, 3445, 3447, 3444, 3449, 3460, 3452, 3453, 3455,
-     3466, 3467, 3473, 6299, 3474, 3468, 3481, 3483, 3476, 3478,
+     3466, 3467, 3473, 6320, 3474, 3468, 3481, 3483, 3476, 3478,
      3484, 3485, 3486, 3489, 3491, 3490, 3492, 3493, 3494, 3496,
-     3498, 3501, 3499, 3512, 3513, 3500, 3521, 3522, 3504, 6299,
+     3498, 3501, 3499, 3512, 3513, 3500, 3521, 3522, 3504, 6320,
 
      3514, 3526, 3527, 3528, 3529, 3535, 3536, 3539, 3541, 3530,
-     3545, 3552, 3534, 3542, 3557, 3554, 3565, 3561, 6299, 3566,
+     3545, 3552, 3534, 3542, 3557, 3554, 3565, 3561, 6320, 3566,
      3562, 3573, 3547, 3568, 3570, 3574, 3576, 3578, 3575, 3579,
-     3582, 3585, 3592, 3587, 3588, 3589, 3597, 3593, 6299, 3604,
+     3582, 3585, 3592, 3587, 3588, 3589, 3597, 3593, 6320, 3604,
      3602, 3605, 3610, 3611, 3618, 3614, 3595, 3617, 3620, 3622,
-     3624, 3627, 3628, 3629, 3632, 3633, 6299, 6299, 3635, 3636,
-     3637, 6299, 3640, 3639, 3651, 3642, 3643, 3644, 3655, 3654,
-     3652, 3656, 3658, 3665, 6299, 3666, 3673, 3668, 3669, 3680,
+     3624, 3627, 3628, 3629, 3632, 3633, 6320, 6320, 3635, 3636,
+     3637, 6320, 3640, 3639, 3651, 3642, 3643, 3644, 3655, 3654,
+     3652, 3656, 3658, 3665, 6320, 3666, 3673, 3668, 3669, 3680,
      3683, 3686, 3670, 3682, 3672, 3679, 3687, 3690, 3689, 3694,
-     3695, 3703, 3706, 3701, 3702, 3704, 6299, 3705, 3709, 3710,
+     3695, 3703, 3706, 3701, 3702, 3704, 6320, 3705, 3709, 3710,
 
-     3712, 3713, 3714, 6299, 3716, 3718, 3727, 3719, 3737, 3726,
+     3712, 3713, 3714, 6320, 3716, 3718, 3727, 3719, 3737, 3726,
      3723, 3741, 3738, 3742, 3743, 3744, 3745, 3746, 3753, 3748,
-     3750, 3752, 3757, 3760, 6299, 3761, 3767, 3754, 3769, 6299,
-     3772, 3781, 3779, 3782, 3777, 3784, 3785, 3792, 6299, 3787,
-     3790, 3788, 3791, 3801, 3793, 3802, 3804, 3798, 6299, 3805,
-     3806, 3807, 6299, 3808, 3813, 3819, 3821, 3822, 3829, 3824,
-     3826, 3827, 3828, 6299, 3834, 6299, 3832, 3836, 3840, 6299,
+     3750, 3752, 3757, 3760, 6320, 3761, 3767, 3754, 3769, 6320,
+     3772, 3781, 3779, 3782, 3777, 3784, 3785, 3792, 6320, 3787,
+     3790, 3788, 3791, 3801, 3793, 3802, 3804, 3798, 6320, 3805,
+     3806, 3807, 6320, 3808, 3813, 3819, 3821, 3822, 3829, 3824,
+     3826, 3827, 3828, 6320, 3834, 6320, 3832, 3836, 3840, 6320,
      3838, 3843, 3844, 3846, 3847, 3852, 3853, 3851, 3860, 3861,
      3862, 3864, 3865, 3863, 3868, 3872, 3869, 3870, 3874, 3875,
-     6299, 3876, 3878, 3885, 3890, 3897, 3886, 3893, 3880, 3899,
-
-     3900, 6299, 6299, 3903, 6299, 3906, 3907, 3908, 6299, 3910,
-     3912, 3917, 3914, 3915, 3918, 3922, 3919, 6299, 3929, 3932,
-     6299, 3930, 3940, 3935, 3937, 3938, 3943, 3939, 3941, 3945,
-     3949, 3951, 3946, 3950, 3947, 6299, 3954, 3952, 3956, 3960,
-     3967, 3968, 3970, 3969, 6299, 3976, 3977, 3973, 3980, 3983,
-     6299, 3984, 6299, 3982, 3986, 3992, 3994, 3988, 6299, 3997,
+     6320, 3876, 3878, 3885, 3890, 3897, 3886, 3893, 3880, 3899,
+
+     3900, 6320, 6320, 3903, 6320, 3906, 3907, 3908, 6320, 3910,
+     3912, 3917, 3914, 3915, 3918, 3922, 3919, 6320, 3929, 3932,
+     6320, 3930, 3940, 3935, 3937, 3938, 3943, 3939, 3941, 3945,
+     3949, 3951, 3946, 3950, 3947, 6320, 3954, 3952, 3956, 3960,
+     3967, 3968, 3970, 3969, 6320, 3976, 3977, 3973, 3980, 3983,
+     6320, 3984, 6320, 3982, 3986, 3992, 3994, 3988, 6320, 3997,
      3998, 4002, 4003, 4005, 4006, 4009, 4011, 4013, 4015, 4023,
-     4019, 4020, 4018, 6299, 4021, 4022, 4028, 4037, 4030, 4032,
+     4019, 4020, 4018, 6320, 4021, 4022, 4028, 4037, 4030, 4032,
      4047, 4034, 4042, 4025, 4046, 4049, 4051, 4055, 4057, 4050,
-     4060, 4053, 6299, 4061, 4064, 4067, 4075, 4068, 4072, 6299,
+     4060, 4053, 6320, 4061, 4064, 4067, 4075, 4068, 4072, 6320,
 
-     4078, 4076, 4080, 6299, 4079, 4082, 4086, 4094, 4083, 4087,
-     4091, 4089, 4096, 6299, 4097, 4098, 4099, 4108, 4112, 4106,
-     6299, 6299, 4114, 6299, 4116, 4100, 4121, 4124, 4104, 4118,
+     4078, 4076, 4080, 6320, 4079, 4082, 4086, 4094, 4083, 4087,
+     4091, 4089, 4096, 6320, 4097, 4098, 4099, 4108, 4112, 4106,
+     6320, 6320, 4114, 6320, 4116, 4100, 4121, 4124, 4104, 4118,
      4126, 4128, 4131, 4132, 4134, 4135, 4139, 4141, 4149, 4150,
-     4153, 4154, 4156, 4145, 6299, 6299, 4159, 4160, 4146, 4167,
-     4168, 4162, 4170, 4177, 4173, 4179, 4182, 4184, 4191, 6299,
-     4172, 4183, 4190, 4187, 6299, 4192, 4193, 4195, 4196, 4197,
+     4153, 4154, 4156, 4145, 6320, 6320, 4159, 4160, 4146, 4167,
+     4168, 4162, 4170, 4177, 4173, 4179, 4182, 4184, 4191, 6320,
+     4172, 4183, 4190, 4187, 6320, 4192, 4193, 4195, 4196, 4197,
      4201, 4199, 4200, 4204, 4205, 4213, 4206, 4208, 4216, 4214,
-     4222, 4224, 4225, 4226, 4228, 4230, 4233, 6299, 4234, 4235,
-     4237, 4238, 4239, 4243, 4245, 4246, 4247, 6299, 4249, 6299,
+     4222, 4224, 4225, 4226, 4228, 4230, 4233, 6320, 4234, 4235,
+     4237, 4238, 4239, 4243, 4245, 4246, 4247, 6320, 4249, 6320,
 
      4252, 4251, 4253, 4260, 4267, 4270, 4269, 4271, 4274, 4275,
-     4278, 4280, 4281, 4284, 4288, 4283, 4291, 4293, 6299, 4294,
+     4278, 4280, 4281, 4284, 4288, 4283, 4291, 4293, 6320, 4294,
      4286, 4300, 4301, 4303, 4305, 4307, 4309, 4310, 4312, 4314,
-     4316, 4318, 4323, 4319, 4315, 4325, 4327, 6299, 4330, 4332,
+     4316, 4318, 4323, 4319, 4315, 4325, 4327, 6320, 4330, 4332,
      4334, 4337, 4338, 4341, 4340, 4344, 4349, 4342, 4350, 4351,
-     4355, 6299, 4352, 4357, 4358, 4359, 4367, 4362, 4364, 4368,
-     4371, 6299, 4375, 4376, 4377, 4378, 4379, 4382, 4385, 4387,
-     4389, 4391, 4399, 6299, 4394, 4390, 4403, 4401, 4405, 4404,
-     4407, 4409, 6299, 4410, 4416, 4413, 4420, 4422, 4429, 4427,
+     4355, 6320, 4352, 4357, 4358, 4359, 4367, 4362, 4364, 4368,
+     4371, 6320, 4375, 4376, 4377, 4378, 4379, 4382, 4385, 4387,
+     4389, 4391, 4399, 6320, 4394, 4390, 4403, 4401, 4405, 4404,
+     4407, 4409, 6320, 4410, 4416, 4413, 4420, 4422, 4429, 4427,
      4431, 4424, 4433, 4434, 4430, 4438, 4441, 4442, 4440, 4458,
 
-     4459, 4444, 6299, 4445, 6299, 4455, 4456, 4466, 4461, 4463,
-     4467, 6299, 4469, 4472, 4474, 4471, 4475, 6299, 4478, 4476,
-     4479, 4481, 6299, 4477, 4491, 4482, 4483, 4498, 4499, 6299,
+     4459, 4444, 6320, 4445, 6320, 4455, 4456, 4466, 4461, 4463,
+     4467, 6320, 4469, 4472, 4474, 4471, 4475, 6320, 4478, 4476,
+     4479, 4481, 6320, 4477, 4491, 4482, 4483, 4498, 4499, 6320,
      4504, 4505, 4501, 4513, 4515, 4510, 4512, 4514, 4516, 4518,
-     4520, 4521, 4522, 4531, 4524, 4527, 6299, 4529, 4536, 4542,
-     4543, 4545, 4526, 4537, 4546, 4552, 4547, 6299, 4549, 4553,
-     4555, 4556, 4558, 4559, 4561, 4569, 4565, 4564, 4567, 4572,
-     4568, 6299, 4576, 4574, 4578, 4587, 4584, 4591, 6299, 6299,
-     4580, 4595, 4597, 4585, 4598, 6299, 4601, 4608, 4603, 4607,
-     4604, 6299, 6299, 4610, 6299, 4612, 6299, 4614, 4616, 6299,
-
-     6299, 4617, 4618, 4619, 4620, 4627, 6299, 4634, 6299, 4629,
-     4635, 4621, 4631, 4638, 6299, 4639, 4640, 4642, 6299, 4645,
-     4655, 4646, 4647, 6299, 4651, 4656, 4648, 4657, 6299, 4660,
-     4666, 4663, 4669, 4670, 4671, 4672, 4677, 4678, 4673, 4681,
-     4680, 4683, 4690, 4694, 4696, 4698, 4699, 4684, 4701, 4703,
-     4707, 4705, 4709, 4710, 4712, 4714, 4715, 4719, 4723, 4716,
-     4720, 4724, 4725, 4726, 4733, 4729, 4735, 4740, 4736, 4741,
-     4742, 4743, 4744, 4747, 4748, 4750, 4754, 4757, 4758, 6299,
-     4752, 4753, 4759, 4766, 4764, 4771, 4774, 4781, 4784, 4785,
-     6299, 4787, 6299, 4789, 4777, 4791, 4792, 4793, 6299, 4794,
-
-     4797, 4796, 4799, 4798, 4800, 4801, 4804, 4805, 4809, 4812,
-     6299, 4817, 6299, 4806, 4821, 4826, 6299, 4822, 4833, 4829,
-     4834, 4835, 4836, 4837, 4838, 4841, 4839, 4844, 4846, 4848,
-     4853, 4850, 4861, 4868, 4854, 4863, 4864, 4865, 4867, 4869,
-     4871, 4873, 4880, 4882, 4886, 6299, 4874, 6299, 4881, 4877,
-     4888, 4891, 4892, 4894, 4898, 6299, 6299, 4895, 4899, 4904,
-     4901, 4905, 4907, 4908, 6299, 4909, 4918, 4920, 4913, 6299,
-     4910, 4921, 4927, 4929, 6299, 4930, 4931, 4932, 4934, 4935,
-     4938, 4939, 4943, 4945, 4946, 4949, 6299, 6299, 6299, 6299,
-     4950, 4953, 4956, 4957, 4959, 4960, 4962, 4964, 4965, 6299,
-
-     4967, 6299, 6299, 4968, 4974, 4976, 4977, 4978, 4981, 4983,
-     4985, 6299, 4984, 4989, 4991, 4987, 4998, 5004, 5006, 4988,
-     5007, 5001, 5008, 5015, 5011, 5013, 5010, 5017, 5021, 5024,
-     6299, 6299, 5018, 5028, 5029, 5036, 5033, 5034, 5037, 5046,
-     5041, 5042, 5043, 5044, 5048, 5049, 5060, 5061, 5053, 5050,
-     6299, 5063, 5064, 6299, 5057, 6299, 5066, 5072, 5065, 5073,
-     5075, 5076, 5078, 5080, 6299, 6299, 5087, 5082, 6299, 6299,
-     5074, 5090, 5092, 5095, 5096, 5091, 5097, 5099, 5101, 6299,
-     5102, 6299, 5103, 5104, 5106, 5107, 5119, 5122, 5124, 5126,
-     5121, 5109, 6299, 5127, 5128, 6299, 5130, 5131, 5133, 6299,
-
-     5137, 5135, 5140, 5143, 6299, 5147, 5150, 5144, 6299, 5152,
-     6299, 5155, 5156, 5157, 5164, 6299, 5159, 5165, 6299, 5168,
-     5171, 5173, 5172, 6299, 5160, 6299, 5162, 5181, 5183, 5187,
-     5174, 5191, 5188, 5177, 5192, 5199, 5197, 5194, 6299, 6299,
-      135, 5208, 5200, 5204, 5205, 5203, 5216, 5211, 5213, 5215,
-     6299, 6299, 5221, 6299, 5212, 5219, 6299, 5218, 5227, 5228,
-     5231, 5232, 5233, 5234, 5238, 5240, 5241, 5242, 5244, 5246,
-     5256, 5263, 5247, 5260, 5267, 5269, 5271, 5273, 5261, 5275,
-     5276, 5278, 5279, 5281, 5282, 5283, 5285, 6299, 5288, 5289,
-     5284, 6299, 5294, 5290, 5300, 5301, 6299, 5308, 5309, 5310,
-
-     5311, 6299, 5295, 5315, 5312, 5317, 5235, 5328, 5321, 5323,
-     5325, 6299, 6299, 6299, 5330, 5337, 6299, 5339, 5331, 5324,
-     5333, 6299, 5341, 5340, 6299, 6299, 5342, 5344, 5343, 5354,
-     6299, 5346, 6299, 5347, 6299, 5355, 5356, 5364, 5357, 6299,
-     5369, 5371, 6299, 5377, 5379, 5381, 5373, 5370, 5383, 5384,
-     6299, 5391, 5387, 5388, 5395, 5386, 5396, 5397, 5398, 5399,
-     5406, 5401, 5410, 6299, 5407, 5414, 5415, 5412, 5405, 5416,
-     5421, 6299, 5423, 6299, 5425, 5427, 5428, 5430, 5429, 5433,
-     5434, 5443, 5435, 5436, 5437, 5447, 5449, 6299, 5451, 5456,
-     6299, 5453, 6299, 5458, 6299, 5459, 5460, 5461, 5462, 6299,
-
-     5465, 5466, 5469, 5470, 6299, 5471, 5473, 5478, 5480, 6299,
-     6299, 5481, 5488, 5485, 5483, 5494, 5496, 5484, 5499, 5491,
-     5500, 5503, 5512, 5507, 5508, 5510, 5514, 5359, 5515, 6299,
-     6299, 6299, 5517, 5511, 5525, 5522, 5524, 5534, 5532, 6299,
-     5533, 5536, 5537, 5539, 5546, 5543, 5545, 6299, 5541, 5547,
-     5548, 5549, 5552, 5555, 5554, 6299, 5557, 5567, 5559, 5568,
-     5570, 5572, 5577, 5579, 5569, 5586, 5583, 6299, 5585, 6299,
-     6299, 5581, 6299, 5587, 5589, 5590, 5591, 6299, 5594, 5596,
-     5597, 5598, 5602, 5604, 6299, 5605, 5606, 5608, 5613, 6299,
-     6299, 5615, 6299, 5620, 5616, 5622, 5629, 5625, 5624, 5631,
-
-     5628, 6299, 5634, 5635, 5638, 5639, 5640, 6299, 5641, 5642,
-     5644, 5645, 6299, 5648, 5647, 5650, 5652, 5653, 6299, 5657,
-     5656, 5675, 5672, 6299, 5659, 5670, 6299, 6299, 5681, 5685,
-     5674, 6299, 6299, 6299, 5682, 5671, 5689, 6299, 5692, 5696,
-     5700, 5704, 5695, 6299, 5706, 5703, 5708, 6299, 6299, 5707,
-     5709, 5710, 5712, 6299, 6299, 5713, 5716, 5714, 5717, 5719,
-     6299, 5724, 5728, 5730, 5733, 5736, 5725, 5739, 5741, 5749,
-     5751, 5746, 5747, 5752, 5754, 5755, 5756, 5758, 5767, 5763,
-     5765, 5777, 5774, 6299, 6299, 5781, 5783, 5778, 6299, 6299,
-     5785, 5789, 5791, 5793, 5795, 5797, 5799, 6299, 5800, 5802,
-
-     5803, 5804, 5766, 6299, 5805, 5807, 5808, 5813, 5810, 5814,
-     5817, 5819, 6299, 6299, 5811, 5825, 5660, 5820, 5827, 6299,
-     5830, 5837, 5834, 5835, 5836, 5838, 5841, 6299, 5843, 5842,
-     6299, 6299, 5839, 6299, 6299, 5844, 6299, 6299, 6299, 6299,
-     6299, 6299, 6299, 5847, 6299, 5846, 5853, 5861, 5863, 6299,
-     5858, 5864, 5768, 5865, 5866, 6299, 5867, 5868, 5869, 5875,
-     5871, 5882, 5876, 5872, 5878, 5884, 5887, 5888, 5892, 5893,
-     5894, 5897, 5898, 5899, 6299, 6299, 6299, 5895, 5906, 5908,
-     5910, 5914, 5916, 5921, 5923, 5911, 5924, 5925, 5927, 5929,
-     5931, 5933, 5941, 5936, 5937, 5938, 5939, 5946, 5952, 5940,
-
-     5942, 5954, 6299, 5947, 6299, 5957, 6299, 6299, 5964, 5965,
-     5960, 5958, 5973, 5976, 5969, 5971, 5972, 5974, 5981, 5986,
-     6299, 6299, 5978, 5982, 6299, 5987, 5988, 6299, 5989, 5990,
-     5993, 5994, 5997, 5996, 5998, 6000, 6014, 6299, 6299, 6004,
-     6008, 6006, 6017, 6018, 6027, 6019, 6028, 6029, 6030, 6022,
-     6037, 6299, 6039, 6040, 6043, 6299, 6032, 6044, 6046, 6047,
-     6048, 6055, 6050, 6051, 6299, 6056, 6299, 6059, 6061, 6060,
-     6052, 6062, 6072, 6074, 6077, 6076, 6299, 6054, 6078, 6068,
-     6083, 6090, 6088, 6092, 6086, 6095, 6096, 6098, 6103, 6097,
-     6106, 6107, 6109, 6108, 6299, 6111, 6112, 6299, 6115, 6116,
-
-     6117, 6118, 6122, 6299, 6125, 6119, 6128, 6129, 6133, 6134,
-     6299, 6140, 6143, 6144, 6299, 6145, 6299, 6299, 6148, 6135,
-     6146, 6156, 6158, 6299, 6299, 6299, 6179, 6186, 6193, 6200,
-     6207, 6214, 6221,   88, 6228, 6235, 6242, 6249, 6256, 6263,
-     6270, 6277, 6284, 6291
+     4520, 4521, 4522, 4531, 4524, 4527, 6320, 4529, 4536, 4542,
+     4543, 4550, 4526, 4537, 4547, 4546, 4552, 6320, 4553, 4554,
+     4555, 4556, 4559, 4560, 4561, 4568, 4567, 4564, 4569, 4571,
+     4572, 6320, 4577, 4578, 4579, 4587, 4583, 4590, 6320, 6320,
+     4585, 4595, 4597, 4586, 4601, 6320, 4603, 4604, 4605, 4609,
+     4606, 6320, 6320, 4611, 6320, 4613, 6320, 4614, 4616, 6320,
+
+     6320, 4618, 4619, 4620, 4621, 4630, 6320, 4634, 6320, 4641,
+     4636, 4622, 4624, 4639, 6320, 4640, 4642, 4648, 6320, 4643,
+     4655, 4650, 4651, 6320, 4657, 4658, 4653, 4660, 6320, 4662,
+     4665, 4669, 4667, 4670, 4671, 4673, 4677, 4680, 4681, 4682,
+     4683, 4684, 4696, 4698, 4700, 4702, 4692, 4688, 4705, 4707,
+     4711, 4709, 4713, 4714, 4715, 4717, 4718, 4720, 4723, 4724,
+     4726, 4729, 4727, 4728, 4740, 4730, 4732, 4742, 4744, 4733,
+     4743, 4747, 4746, 4751, 4749, 4754, 4757, 4756, 4758, 6320,
+     4762, 4764, 4767, 4769, 4768, 4774, 4776, 4778, 4784, 4787,
+     6320, 4791, 6320, 4793, 4785, 4789, 4795, 4796, 6320, 4797,
+
+     4798, 4799, 4802, 4801, 4804, 4805, 4806, 4809, 4812, 4818,
+     6320, 4829, 4808, 6320, 4813, 4825, 4832, 6320, 4833, 4837,
+     4820, 4839, 4840, 4841, 4843, 4844, 4848, 4846, 4850, 4852,
+     4845, 4853, 4855, 4867, 4874, 4858, 4860, 4869, 4872, 4870,
+     4871, 4873, 4879, 4883, 4884, 4893, 6320, 4880, 6320, 4885,
+     4887, 4889, 4895, 4897, 4896, 4898, 6320, 6320, 4900, 4904,
+     4909, 4903, 4905, 4911, 4686, 6320, 4912, 4921, 4914, 4919,
+     6320, 4922, 4924, 4926, 4929, 6320, 4930, 4931, 4934, 4936,
+     4933, 4948, 4945, 4949, 4939, 4941, 4957, 6320, 6320, 6320,
+     6320, 4959, 4943, 4962, 4951, 4954, 4963, 4966, 4969, 4970,
+
+     6320, 4974, 6320, 6320, 4971, 4977, 4978, 4979, 4980, 4981,
+     4986, 4983, 6320, 4987, 4989, 4993, 4990, 4997, 5004, 5007,
+     5001, 5009, 4999, 5010, 5018, 5011, 5019, 5015, 5021, 5023,
+     5025, 6320, 6320, 5027, 5032, 5033, 5035, 5037, 5038, 5039,
+     5047, 5044, 5045, 5046, 5049, 5051, 5052, 5060, 5062, 5058,
+     5057, 6320, 5061, 5065, 5068, 6320, 5066, 6320, 5067, 5074,
+     5075, 5076, 5081, 5082, 5083, 5085, 6320, 6320, 5086, 5092,
+     6320, 6320, 5087, 5088, 5095, 5097, 5099, 5100, 5101, 5103,
+     5104, 6320, 5105, 6320, 5107, 5111, 5113, 5110, 5125, 5128,
+     5130, 5132, 5121, 5133, 6320, 5117, 5134, 6320, 5136, 5137,
+
+     5139, 6320, 5141, 5143, 5145, 5149, 6320, 5153, 5146, 5155,
+     6320, 5157, 6320, 5158, 5159, 5162, 5169, 6320, 5165, 5166,
+     6320, 5171, 5173, 5176, 5175, 6320, 5177, 6320, 5180, 5182,
+     5183, 5187, 5189, 5191, 5192, 5193, 5194, 5202, 5198, 5199,
+     6320, 6320,  135, 5207, 5209, 5210, 5213, 5212, 5220, 5215,
+     5217, 5223, 6320, 6320, 5219, 6320, 5226, 5225, 6320, 5216,
+     5235, 5236, 5227, 5242, 5231, 5239, 5229, 5251, 5246, 5252,
+     5248, 5253, 5256, 5254, 5267, 5258, 5269, 5270, 5273, 5275,
+     5278, 5265, 5280, 5282, 5283, 5284, 5286, 5287, 5288, 5290,
+     6320, 5293, 5294, 5289, 6320, 5299, 5304, 5301, 5312, 6320,
+
+     5306, 5313, 5314, 5315, 6320, 5316, 5319, 5321, 5320, 5326,
+     5333, 5330, 5328, 5331, 6320, 6320, 6320, 5339, 5346, 6320,
+     5348, 5336, 5338, 5340, 6320, 5342, 5349, 6320, 6320, 5352,
+     5353, 5354, 5365, 6320, 5355, 6320, 5357, 6320, 5364, 5366,
+     5372, 5370, 6320, 5375, 5381, 6320, 5384, 5387, 5389, 5390,
+     5356, 5391, 5392, 6320, 5400, 5393, 5396, 5403, 5395, 5404,
+     5405, 5406, 5407, 5414, 5409, 5418, 6320, 5415, 5422, 5423,
+     5420, 5412, 5424, 5429, 5430, 6320, 5433, 6320, 5435, 5436,
+     5437, 5438, 5440, 5442, 5360, 5446, 5443, 5445, 5453, 5455,
+     5457, 6320, 5459, 5465, 6320, 5460, 6320, 5467, 6320, 5462,
+
+     5468, 5469, 5470, 6320, 5472, 5473, 5474, 5477, 6320, 5482,
+     5480, 5486, 5488, 6320, 6320, 5489, 5498, 5490, 5491, 5500,
+     5502, 5503, 5507, 5504, 5508, 5510, 5518, 5514, 5516, 5511,
+     5520, 5521, 5534, 6320, 6320, 6320, 5525, 5522, 5538, 5540,
+     5541, 5549, 5527, 6320, 5546, 5548, 5550, 5552, 5559, 5556,
+     5558, 6320, 5554, 5560, 5536, 5562, 5564, 5565, 5568, 5567,
+     6320, 5570, 5580, 5577, 5581, 5583, 5586, 5590, 5592, 5587,
+     5599, 5596, 6320, 5598, 6320, 6320, 5600, 6320, 5594, 5602,
+     5603, 5604, 6320, 5607, 5608, 5609, 5611, 5615, 5618, 6320,
+     5627, 5610, 5612, 5623, 6320, 6320, 5633, 6320, 5635, 5636,
+
+     5626, 5643, 5638, 5639, 5645, 5646, 6320, 5642, 5648, 5649,
+     5652, 5653, 6320, 5655, 5656, 5657, 5658, 6320, 5661, 5660,
+     5665, 5666, 5667, 6320, 5669, 5670, 5686, 5684, 6320, 5671,
+     5688, 5681, 6320, 6320, 5696, 5698, 5699, 6320, 6320, 6320,
+     5700, 5673, 5702, 6320, 5707, 5711, 5715, 5719, 5710, 6320,
+     5721, 5704, 5718, 6320, 6320, 5723, 5724, 5725, 5727, 6320,
+     6320, 5728, 5729, 5731, 5733, 5734, 6320, 5737, 5738, 5739,
+     5746, 5751, 5741, 5752, 5754, 5765, 5767, 5748, 5760, 5758,
+     5769, 5771, 5762, 5778, 5786, 5782, 5784, 5790, 5792, 5793,
+     6320, 6320, 5795, 5797, 5799, 6320, 6320, 5801, 5803, 5805,
+
+     5807, 5810, 5812, 5814, 6320, 5815, 5817, 5818, 5819, 5820,
+     6320, 5768, 5822, 5770, 5823, 5825, 5828, 5826, 5833, 6320,
+     6320, 5830, 5835, 5834, 5842, 5839, 6320, 5844, 5851, 5849,
+     5850, 5846, 5852, 5853, 6320, 5856, 5858, 6320, 6320, 6320,
+     5859, 6320, 6320, 5854, 6320, 6320, 6320, 6320, 6320, 6320,
+     6320, 5861, 6320, 5866, 5872, 5876, 5878, 6320, 5868, 5873,
+     5881, 5883, 5884, 6320, 5886, 5888, 5887, 5893, 5889, 5896,
+     5894, 5900, 5890, 5901, 5902, 5905, 5906, 5910, 5911, 5913,
+     5914, 5916, 6320, 6320, 6320, 5912, 5923, 5925, 5928, 5930,
+     5935, 5939, 5941, 5931, 5933, 5942, 5944, 5946, 5947, 5948,
+
+     5958, 5954, 5955, 5956, 5957, 5960, 5965, 5966, 5969, 5971,
+     6320, 5974, 6320, 5962, 6320, 6320, 5976, 5978, 5982, 5973,
+     5991, 5993, 5983, 5986, 5984, 5995, 6002, 6005, 6320, 6320,
+     5994, 5996, 6320, 5998, 6006, 6320, 6007, 6008, 6009, 6011,
+     6017, 6014, 6018, 6020, 6022, 6320, 6320, 6019, 6026, 6029,
+     6032, 6035, 6042, 6037, 6041, 6045, 6047, 6034, 6049, 6320,
+     6055, 6051, 6058, 6320, 6059, 6060, 6061, 6062, 6064, 6071,
+     6066, 6067, 6320, 6069, 6320, 6073, 6075, 6077, 6074, 6076,
+     6078, 6088, 6092, 6086, 6320, 6090, 6100, 6094, 6102, 6104,
+     6106, 6107, 6096, 6109, 6112, 6118, 6122, 6119, 6123, 6110,
+
+     6127, 6124, 6320, 6134, 6125, 6320, 6131, 6135, 6128, 6137,
+     6138, 6320, 6142, 6145, 6146, 6148, 6151, 6152, 6320, 6154,
+     6158, 6155, 6320, 6161, 6320, 6320, 6163, 6160, 6167, 6170,
+     6172, 6320, 6320, 6320, 6200, 6207, 6214, 6221, 6228, 6235,
+     6242,   88, 6249, 6256, 6263, 6270, 6277, 6284, 6291, 6298,
+     6305, 6312
     } ;
 
-static const flex_int16_t yy_def[3245] =
+static const flex_int16_t yy_def[3253] =
     {   0,
-     3226,    1, 3227, 3227, 3228, 3228, 3229, 3229, 3230, 3230,
-     3231, 3231, 3232, 3232, 3233, 3233, 3226, 3234, 3226, 3226,
-     3226, 3226, 3235, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3236, 3226, 3226, 3226,
-     3236, 3237, 3226, 3226, 3226, 3237, 3238, 3226, 3226, 3226,
-     3226, 3238, 3239, 3226, 3226, 3226, 3239, 3240, 3226, 3241,
-     3226, 3240, 3240, 3242, 3226, 3226, 3226, 3226, 3242, 3243,
-     3226, 3226, 3226, 3243, 3234, 3234, 3226, 3244, 3235, 3244,
-     3235, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3236, 3236, 3237,
-     3237, 3238, 3238, 3226, 3239, 3239, 3240, 3240, 3241, 3241,
-     3240, 3242, 3242, 3226, 3243, 3243, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3240, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3240, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3226, 3226, 3234, 3226, 3226, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3240, 3240, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3240, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3240, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3240, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3226, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3226, 3226, 3234, 3226, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3240,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3226, 3226, 3234, 3226, 3234, 3226, 3234, 3234, 3226,
-
-     3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3226, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3226, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-
-     3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3226, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234, 3234, 3226,
-
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3234,
-     3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226,
-     3240, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3226, 3234, 3226, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3226, 3226, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234,
-     3226, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3226, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226,
-     3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3226, 3226, 3234, 3234,
-     3234, 3226, 3226, 3226, 3234, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3226, 3234,
-     3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3226, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234,
-     3226, 3226, 3234, 3226, 3226, 3234, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226,
-     3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3226, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-
-     3234, 3234, 3226, 3234, 3226, 3234, 3226, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3226, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3226, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
-     3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234,
-
-     3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234,
-     3226, 3234, 3234, 3234, 3226, 3234, 3226, 3226, 3234, 3234,
-     3234, 3234, 3234, 3226, 3226,    0, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226
+     3234,    1, 3235, 3235, 3236, 3236, 3237, 3237, 3238, 3238,
+     3239, 3239, 3240, 3240, 3241, 3241, 3234, 3242, 3234, 3234,
+     3234, 3234, 3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3244, 3234, 3234, 3234,
+     3244, 3245, 3234, 3234, 3234, 3245, 3246, 3234, 3234, 3234,
+     3234, 3246, 3247, 3234, 3234, 3234, 3247, 3248, 3234, 3249,
+     3234, 3248, 3248, 3250, 3234, 3234, 3234, 3234, 3250, 3251,
+     3234, 3234, 3234, 3251, 3242, 3242, 3234, 3252, 3243, 3252,
+     3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3244, 3244, 3245,
+     3245, 3246, 3246, 3234, 3247, 3247, 3248, 3248, 3249, 3249,
+     3248, 3250, 3250, 3234, 3251, 3251, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3234, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3248, 3248, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3248, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3234, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3234, 3234, 3242, 3234, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3248,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3234, 3234, 3242, 3234, 3242, 3234, 3242, 3242, 3234,
+
+     3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3234,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3248,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242,
+     3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242,
+
+     3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234,
+
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3242,
+     3242, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242,
+
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3234, 3234, 3242, 3242, 3242, 3234, 3234, 3234,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3234,
+     3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3234, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3234,
+     3242, 3234, 3234, 3242, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+     3234, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234,
+     3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234,
+     3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242,
+     3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242,
+
+     3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242,
+     3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242,
+     3242, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242,
+     3242, 3234, 3234,    0, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234
     } ;
 
-static const flex_int16_t yy_nxt[6340] =
+static const flex_int16_t yy_nxt[6361] =
     {   0,
        18,   19,   20,   21,   22,   23,   22,   18,   18,   18,
        18,   18,   22,   24,   25,   26,   27,   28,   29,   30,
@@ -1954,7 +1957,7 @@ static const flex_int16_t yy_nxt[6340] =
      2237, 2239, 2242, 2244, 2250,   86, 2249,   86,   86,   86,
      2246,   86, 2252,   86, 2255, 2258,   86,   86,   86, 2253,
        86,   86,   86, 2251, 2256, 2259,   86, 2254,   86,   86,
-       86, 2257,   86, 3226,   86,   86,   86, 2260, 2271, 2261,
+       86, 2257,   86, 3234,   86,   86,   86, 2260, 2271, 2261,
      2270, 2266, 2272,   86, 2262, 2264, 2263, 2268, 2269, 2265,
        86, 2267,   86,   86,   86, 2273, 2274,   86,   86, 2278,
      2279,   86, 2280,   86,   86, 2275,   86,   86, 2276,   86,
@@ -1985,207 +1988,209 @@ static const flex_int16_t yy_nxt[6340] =
      2391,   86,   86, 2392,   86, 2389, 2393,   86,   86, 2395,
      2396, 2394, 2397,   86, 2399,   86,   86,   86,   86,   86,
      2401,   86, 2398,   86,   86,   86, 2405,   86, 2406,   86,
-       86, 2400,   86, 2402,   86, 2408, 2409, 2403, 2414,   86,
-       86, 2407, 2410, 2404, 2411,   86,   86, 2413,   86,   86,
-       86, 2412,   86, 2416, 2417,   86,   86, 2419,   86,   86,
-     2415,   86,   86, 2418,   86, 2423, 2426,   86,   86, 2425,
-       86,   86,   86, 2422, 2427,   86, 2420,   86, 2421,   86,
-     2430,   86, 2424,   86, 2435, 2428, 2434,   86,   86, 2429,
-
-       86, 2432, 2431, 2433,   86, 2436, 2437, 2438,   86, 2439,
-       86,   86, 2442, 2440,   86, 2444,   86,   86, 2443, 2446,
-       86,   86, 2448,   86, 2441,   86, 2447,   86, 2445,   86,
-       86,   86,   86,   86,   86, 2452, 2458, 2454, 2455, 2456,
-       86, 2450,   86, 2449,   86, 2451, 2457,   86,   86, 2459,
-     2460,   86,   86,   86, 2465,   86, 2462, 2453,   86,   86,
-       86,   86, 2467, 2470,   86, 2464, 2461, 2466,   86,   86,
-       86, 2463, 2471,   86, 2474, 2469,   86, 2468, 2475,   86,
-     2472, 2476,   86,   86,   86,   86,   86, 2480, 2473, 2479,
-       86,   86, 2478,   86,   86, 3226,   86,   86, 2483, 2484,
-
-     2477, 2486, 2487,   86, 2481, 2482, 2488,   86, 2489,   86,
-     2490,   86,   86, 2485,   86, 2492,   86, 2494,   86, 2493,
-       86, 2495,   86,   86, 2491,   86, 2500,   86,   86,   86,
-     2496, 2502,   86,   86, 2497, 2503,   86,   86,   86,   86,
-     2504, 2499,   86, 2498, 2506, 2505,   86, 2501,   86,   86,
-     2507, 2509, 2512,   86,   86,   86,   86,   86, 2513, 2508,
-       86,  168, 2510,   86, 2520,   86,   86,   86, 2511, 2516,
-       86,   86,   86, 2519, 2518, 2515, 2521,   86, 3226,   86,
-     2514, 2517, 2527, 2524,   86, 2522, 2523,   86, 2525, 2529,
-       86, 2528, 2530, 2531,   86, 2526, 2532,   86,   86, 2533,
-
-       86, 2534,   86, 2535,   86,   86,   86,   86, 2536,   86,
-       86,   86,   86,   86,   86, 2537, 2546,   86,   86,   86,
-     2544, 2539,   86, 3226, 2538,   86, 2550, 2540, 2541, 2551,
-       86, 2542, 2543, 2545,   86,   86, 2548, 2547, 2554,   86,
-     2549, 2552,   86, 2553, 2555, 2556,   86,   86,   86,   86,
-       86,   86,   86, 3226,   86, 2559, 2565,   86, 2566,   86,
-     2557,   86, 2569,   86, 2560, 2558,   86,   86, 2561, 2562,
-     2563, 2564, 2568, 2570,   86, 2571,   86,   86,   86, 2567,
-       86,   86,   86, 2575,   86, 2572,   86,   86, 2579, 2578,
-       86, 2573, 2580,   86,   86,   86, 2574, 2581, 2582,   86,
-
-     2576,   86, 2577, 2584,   86,   86, 2583,   86,   86, 2585,
-     2588,   86,   86, 2586,   86, 2592, 2593,   86,   86, 2596,
-       86,   86,   86,   86, 2587, 2597,   86, 2589, 2591, 2594,
-     2590,   86, 2600,   86,   86, 2599, 2595, 2598, 2602, 2601,
-       86, 2605,   86,   86,   86,   86, 2609,   86,   86, 2608,
-     2611,   86,   86, 2607, 2603, 2606,   86, 2612,   86,   86,
-     2604, 2616,   86,   86, 2617, 2613,   86, 2610, 2619,   86,
-       86, 2615,   86,   86, 2614,   86, 2624,   86,   86, 2626,
-       86,   86, 2622, 2620, 2623, 2621, 2627,   86, 2618,   86,
-       86,   86, 2628, 2625,   86, 2630,   86,   86,   86, 2631,
-
-       86,   86,   86, 2629,   86, 2633, 2634, 2636, 2642, 2637,
-     2639,   86, 2635, 2632,   86, 2638, 2640,   86, 2641,  168,
-       86,   86, 2646,   86,   86, 2643,   86, 2648,   86, 2647,
-       86,   86, 2644, 2651,   86, 2650, 2652,   86, 2649, 2645,
-     2654,   86,   86, 2656, 2653, 2655,   86,   86, 2657,   86,
-       86, 2658, 2659, 2661,   86,   86,   86,   86, 2662,   86,
-     2663,   86,   86,   86, 2660, 2664,   86, 2668, 2669, 2666,
-       86, 2670, 2665,   86,   86, 2671,   86,   86,   86,   86,
-     2673, 2672, 2674, 2667, 2675,   86,   86,   86,   86,   86,
-     2676,   86, 2681,   86, 2683,   86, 2677, 2679, 2680, 2678,
-
-       86, 2684, 2682,   86,   86,   86, 2685, 2688,   86,   86,
-       86, 2692,   86, 2690,   86,   86,   86,   86, 2697,   86,
-       86, 2696,   86, 2686, 2687, 2691, 2699, 2704, 2689, 2700,
-     2694, 2701,   86, 2693,   86,   86, 2695,   86, 2702,   86,
-       86,   86, 2703,   86,   86, 2698,   86, 2707,   86, 2705,
-       86, 2710, 2712,   86, 2706, 2713,   86,   86, 2708, 2714,
-       86, 2709, 2716,   86, 2717,   86, 2711, 2715,   86,   86,
-       86, 2721,   86,   86, 2719,   86, 2722,   86,   86, 2724,
-     2725,   86, 2720, 2726,   86,   86,   86,   86, 2718, 2727,
-       86, 2729, 2723, 2731,   86, 2730,   86, 2732, 2728, 2733,
-
-       86,   86, 2734, 2735,   86,   86, 2739,   86, 2737, 2740,
-       86, 2741,   86,   86, 2736, 2742,   86,   86,   86, 2738,
-     2743,   86, 2747, 2748,   86,   86,   86, 2751,   86,   86,
-     2750,   86,   86, 2753,   86, 2754, 2744, 2745, 2746, 2752,
-       86,   86, 2757, 2756,   86,   86,   86,   86,   86, 2749,
-     2760,   86, 2764,   86,   86,   86, 2755,   86, 2766,   86,
-       86, 2758, 2759, 2803, 2761, 2763, 2767, 2762, 2765,   86,
-     2771, 2768, 2774,   86,   86, 2772,   86, 2770, 2769, 2773,
-       86, 2775,   86, 2776,   86, 2777,   86, 2778,   86,   86,
-     2779,   86,   86, 2780,   86,   86,   86,   86,   86, 2784,
-
-     2788,   86,   86,   86, 2785, 2789, 2791,   86,   86, 2781,
-     2792, 2783, 2793,   86,   86, 2790, 2786, 2782, 2787, 2794,
-     2795,   86,   86,   86,   86,   86, 2799, 2800,   86, 2801,
-       86, 2796, 2797, 2798,   86, 2804,   86,   86,   86, 2802,
-     2805,   86, 2808,   86,   86, 2807,   86, 2806, 2809, 2810,
-       86, 2811,   86,   86,   86,   86,   86,   86, 2812,   86,
-       86, 2820, 2813, 2815, 2814, 2816, 2818,   86,   86,   86,
-       86, 2821,   86, 2823, 2824, 2903, 2819,   86, 2825, 2826,
-     2817, 2822,   86,   86,   86, 2828,   86, 2827, 2829, 2830,
-       86, 2831,   86, 2832,   86, 2833,   86,   86, 2837,   86,
-
-       86,   86, 2836, 2834,   86, 2838, 2839, 2840,   86,   86,
-       86,   86,   86, 2846,   86, 2835, 2844, 2841,   86,   86,
-       86, 2842, 2848,   86, 2849,   86, 2852,   86,   86,   86,
-     2845, 2843, 2850, 2851,   86, 2856,   86, 2853,   86, 2847,
-       86,   86,   86,   86, 2854, 2859,   86,   86,   86,   86,
-       86, 2857, 2860, 2858, 2855, 2863,   86, 2865, 2861, 2868,
-       86, 2864,   86, 2870,   86, 2862,   86, 2866, 2871,   86,
-     2873,   86,   86,   86,   86,   86, 2867, 2878,   86,   86,
-     2877, 2869,   86,   86,   86, 2882,   86, 2872, 2874, 2875,
-     2876,   86, 2885,   86,   86, 2887,   86,   86,   86, 2879,
-
-     2883,   86, 2881, 2888,   86, 2880, 2890,   86, 2891,   86,
-     2884, 2893,   86,   86, 2886, 2895,   86, 2892, 2889, 2898,
-       86,   86, 2896,   86,   86,   86, 2902,   86,   86, 2904,
-       86, 2894, 2907, 2900, 2908,   86, 2897,   86,   86, 2899,
-     2909, 2910, 2905, 2901, 2906,   86,   86,   86, 2913,   86,
-       86, 2912,   86, 2916,   86, 2914,   86, 2919,   86,   86,
-       86,   86,   86, 2911, 2924,   86, 2920,   86,   86, 2927,
-       86, 2915,   86, 2917, 2918, 2923, 2926, 2929, 2921, 2928,
-       86,   86,   86,   86, 2932,   86, 2922, 2925, 2931, 2933,
-       86, 2934,   86, 2936,   86, 2930,   86, 2938,   86,   86,
-
-       86, 2937,   86,   86,   86, 2943, 2944,   86, 2935,   86,
-       86,   86, 2950, 2939, 2948,   86, 2949,   86,   86,   86,
-     2947,   86, 2940, 2945, 2941, 2942,   86, 2954,   86,   86,
-     2946, 2953, 2955,   86, 2956,   86, 2958,   86,   86, 2951,
-     2952,   86,   86, 2961,   86, 2960, 2962,   86,   86, 2957,
-     2959,   86,   86,   86,   86,   86, 2965,   86,   86, 2967,
-       86,   86, 2968,   86, 2966,   86,   86, 2963, 2964,   86,
-       86, 2977,   86,   86, 2969, 2978, 2973, 2970, 2971, 2972,
-     2974, 2975, 2980,   86,   86,   86, 2976,   86,   86, 2979,
-     2981, 2986, 2982, 2984,   86,   86, 2983, 2985,   86, 3059,
-
-     2987, 2989,   86, 2988, 2990,   86, 2991, 2992,   86,   86,
-     2993, 2994, 2997,   86, 2995, 2996,   86,   86, 2998,   86,
-       86,   86,   86,   86, 3004,   86,   86,   86, 3003,   86,
-       86, 3007,   86, 3226, 2999, 3000, 3006,   86,   86, 3008,
-     3001,   86, 3002,   86, 3012, 3013,   86, 3009, 3014,   86,
-     3011, 3005,   86, 3015,   86, 3010, 3019, 3016, 3021,   86,
-       86, 3020,   86, 3017,   86,   86, 3018,   86,   86,   86,
-     3028,   86, 3025, 3026, 3029, 3023,   86, 3031,   86,   86,
-       86,   86, 3030, 3226, 3022, 3080, 3024,   86, 3027, 3032,
-       86,   86, 3033, 3034,   86, 3035,   86, 3037,   86, 3048,
-
-     3036, 3038,   86, 3039,   86, 3040,   86, 3041,   86, 3042,
-       86, 3043,   86,   86, 3045,   86,   86,   86,   86, 3050,
-       86,   86, 3044,   86,   86, 3046,   86,   86, 3054, 3047,
-       86, 3056,   86,   86, 3060, 3053, 3051, 3049,   86, 3052,
-       86, 3058, 3057,   86, 3063, 3055, 3062,   86,   86,   86,
-       86,   86,   86, 3065,   86,   86,   86,   86, 3061,   86,
-       86, 3064, 3069, 3073, 3070, 3075,   86, 3071, 3066, 3067,
-     3068,   86, 3074, 3076,   86, 3077,   86,   86,   86,   86,
-       86,   86,   86, 3072,   86,   86, 3079, 3085,   86,   86,
-     3086,   86, 3084, 3082, 3078,   86, 3088,   86, 3081, 3087,
-
-       86,   86, 3089, 3083, 3090,   86,   86,   86,   86, 3091,
-       86,   86,   86, 3092, 3095, 3098, 3094, 3100, 3096,   86,
-     3103,   86, 3101,   86,   86, 3093, 3105,   86, 3097,   86,
-     3106, 3099, 3104, 3107,   86, 3108,   86,   86,   86, 3102,
-       86, 3111,   86, 3109,   86, 3112,   86, 3113, 3116,   86,
-       86,   86,   86,   86,   86,   86, 3119, 3110, 3121,   86,
-       86, 3115, 3118, 3117, 3122,   86, 3125,   86, 3123, 3114,
-       86,   86, 3120,   86, 3124, 3126, 3128,   86,   86, 3129,
-     3132, 3130,   86, 3133,   86,   86,   86,   86, 3127,   86,
-     3131,   86, 3137, 3138,   86,   86, 3134, 3135, 3139,   86,
-
-       86,   86,   86,   86, 3136, 3143,   86,   86, 3145,   86,
-       86,   86, 3140,   86, 3142, 3141, 3150,   86, 3151,   86,
-     3147,   86, 3144, 3148, 3226, 3146, 3152,   86, 3149, 3156,
-       86,   86,   86, 3159, 3158,   86, 3157, 3153, 3155, 3154,
-       86,   86,   86,   86, 3164,   86, 3160, 3161, 3162, 3168,
-       86, 3165,   86,   86, 3163, 3167,   86,   86, 3166,   86,
-       86,   86, 3173,   86,   86,   86, 3170,   86,   86,   86,
-     3176, 3177,   86,   86,   86,   86, 3169, 3175, 3180, 3171,
-     3172,   86, 3174, 3178, 3181,   86, 3179,   86, 3184,   86,
-       86,   86, 3188, 3187, 3182, 3185,   86, 3190, 3183,   86,
-
-     3189,   86, 3186,   86, 3191,   86, 3192, 3195,   86,   86,
-       86,   86, 3193, 3197, 3196, 3198,   86, 3199, 3194,   86,
-       86,   86,   86, 3204,   86,   86, 3200, 3202,   86,   86,
-       86,   86,   86, 3206, 3207,   86, 3210, 3211,   86, 3201,
-     3203,   86,   86, 3214, 3205, 3215,   86,   86,   86, 3208,
-     3209, 3212, 3217,   86, 3216, 3218,   86,   86,   86,   86,
-     3213,   86, 3226, 3220, 3219, 3226, 3221, 3222, 3224,   86,
-     3225,   86, 3226, 3226, 3226, 3226, 3226, 3226, 3223,   47,
-       47,   47,   47,   47,   47,   47,   52,   52,   52,   52,
-       52,   52,   52,   57,   57,   57,   57,   57,   57,   57,
-
-       63,   63,   63,   63,   63,   63,   63,   68,   68,   68,
-       68,   68,   68,   68,   74,   74,   74,   74,   74,   74,
-       74,   80,   80,   80,   80,   80,   80,   80,   89,   89,
-     3226,   89,   89,   89,   89,  158,  158, 3226, 3226, 3226,
-      158,  158,  160,  160, 3226, 3226,  160, 3226,  160,  162,
-     3226, 3226, 3226, 3226, 3226,  162,  165,  165, 3226, 3226,
-     3226,  165,  165,  167, 3226, 3226, 3226, 3226, 3226,  167,
-      169,  169, 3226,  169,  169,  169,  169,  172, 3226, 3226,
-     3226, 3226, 3226,  172,  175,  175, 3226, 3226, 3226,  175,
-      175,   90,   90, 3226,   90,   90,   90,   90,   17, 3226,
-
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226
+       86, 2400,   86, 2402,   86, 2408, 2409, 2403, 2415,   86,
+       86, 2407, 2410, 2404, 2411,   86,   86, 2413, 2418,   86,
+       86, 2412, 2414,   86, 2417,   86,   86,   86,   86,   86,
+     2416, 2420,   86,   86,   86, 2427, 2424,   86, 2419, 2426,
+       86,   86,   86, 2423,   86,   86, 2428, 2421, 2422, 2431,
+       86,   86,   86, 2425, 2436, 2429,   86, 2435,   86,   86,
+
+       86, 2430, 2433,   86, 2437, 2438, 2432, 2434,   86, 2440,
+       86, 2445, 2439, 2441,   86, 2443,   86,   86,   86,   86,
+     2444, 2447,   86, 2449,   86, 2442,   86,   86, 2448,   86,
+     2446,   86,   86,   86,   86,   86, 2453,   86, 2455, 2456,
+     3234, 2451, 2457,   86, 2450, 2452, 2458,   86, 2459,   86,
+     2460, 2461,   86,   86,   86,   86,   86, 2463, 2454, 2462,
+     2466,   86, 2468,   86,   86, 2467,   86, 2465,   86, 2471,
+       86,   86, 2464,   86, 2472,   86, 2475, 2476,   86, 2470,
+       86, 2469,   86,   86,   86, 2473,   86, 2477, 2481, 2480,
+       86, 2474, 2479,   86,   86,   86,   86,   86, 2478,   86,
+
+     2485,   86, 2487, 2599, 2482,   86, 2484, 2483, 2488,   86,
+     2489,   86, 2490,   86, 2491,   86, 2486, 2492,   86, 2493,
+       86, 2495,   86, 2494,   86, 2496,   86,   86,   86, 2501,
+       86,   86, 2503,   86, 2497, 2504,   86,   86, 2498,   86,
+       86,   86,   86,   86, 2500,   86,   86, 2499, 2505, 2507,
+     2502, 2506, 2508,   86, 2513,   86,   86,   86, 2510,   86,
+       86, 2509,  168, 2511,   86, 2512, 2514,   86, 2521,   86,
+       86,   86, 2515, 2517, 2520,   86, 2516,   86, 2519, 2522,
+       86,   86,   86, 2518, 2523, 2528, 2524,   86, 3234,   86,
+     2532,   86, 2530, 2525, 2531, 2529, 2533,   86,   86, 2526,
+
+       86, 2534,   86, 2527,   86, 2535,   86, 2536,   86,   86,
+       86,   86,   86, 2538,   86,   86, 2537,   86,   86,   86,
+     2547,   86,   86, 2545, 2540,   86,   86, 2539, 3234, 2542,
+     2541,   86, 2551,   86, 2543, 2544, 2553, 2546,   86, 2548,
+     2549, 2552,   86, 2550, 2556,   86,   86, 2555, 2554, 2558,
+       86, 2559,   86,   86,   86, 2557,   86,   86,   86,   86,
+     2561,   86, 2567,   86, 2568,   86,   86, 2571,   86, 2562,
+     2560,   86, 2570,   86, 2563, 2564, 2569, 2565, 2566, 2572,
+       86, 2573,   86,   86,   86,   86,   86,   86, 2575, 2574,
+     2577, 2580,   86,   86, 2581, 2582,   86,   86,   86, 2583,
+
+       86, 2576,   86, 2578, 2579, 2584,   86, 2586,   86,   86,
+       86,   86, 2585,   86, 2588, 2590,   86,   86,   86, 2587,
+     2594, 2595,   86, 2598,   86,   86, 2602,   86, 2589, 2591,
+     2592, 2596,   86, 2593,   86,   86, 2597,   86, 2601,   86,
+     2600, 2607,   86,   86,   86, 2603,   86,   86, 2611,   86,
+     2604, 2610,   86, 2609,   86, 2608,   86, 2605,   86, 2606,
+     2613,   86,   86, 2614,   86, 2612, 2617,   86, 2616, 2618,
+       86, 2615,   86, 2619, 2621,   86,   86, 2622, 2620,   86,
+     2623, 2626,   86,   86,   86, 2624, 2628,   86, 2625, 2629,
+       86,   86,   86,   86,   86, 2630,   86, 2632, 2627,   86,
+
+       86, 2633,   86,   86, 2636, 2631,   86, 2638, 2635, 2641,
+       86, 2639,   86, 2634,   86, 2637, 2642,   86, 2640, 2643,
+      168, 2644,   86,   86,   86, 2648, 3234, 2645,   86, 2649,
+     2646,   86,   86, 2650,   86, 2653,   86, 2654,   86, 2652,
+       86, 2647, 2658, 2651, 2656,   86,   86, 2659,   86, 2657,
+       86,   86,   86, 2655, 2663, 2660, 2661,   86,   86,   86,
+       86, 2664,   86, 2665,   86,   86, 2662, 2670, 2666, 2671,
+       86,   86, 2668,   86,   86,   86, 2672, 2667,   86,   86,
+       86,   86, 2673, 2675, 2676, 2678, 2669,   86,   86,   86,
+     2674, 2677, 2679, 2686,   86,   86,   86, 2684,   86,   86,
+
+       86,   86, 2681, 2682, 2683,   86, 2680, 2685,   86, 2691,
+       86, 2687,   86,   86,   86, 2695,   86,   86,   86, 2688,
+       86, 2689, 2693,   86,   86, 2700,   86, 2690, 2699, 2694,
+       86, 2692, 2702, 2697,   86, 2703, 2696, 2704,   86, 2708,
+     2698,   86, 2706,   86, 2705,   86,   86,   86, 2701,   86,
+       86, 2707,   86, 2710,   86, 2713,   86, 2715,   86,   86,
+     2709, 2716,   86, 2718, 2711, 2717,   86, 2712,   86, 2720,
+       86,   86,   86, 2719, 2714,   86, 2724, 2722,   86,   86,
+     2727, 2725,   86, 2728,   86, 2729,   86, 2723,   86,   86,
+       86, 2721, 2730,   86, 2734,   86,   86, 2735, 2726, 2736,
+
+       86, 2731,   86, 2738,   86,   86,   86,   86, 2732, 2742,
+     2743,   86,   86, 2733, 2745,   86, 2744, 2737, 2739, 2746,
+       86, 2741,   86,   86, 2740,   86,   86, 2751,   86,   86,
+       86, 2750,   86,   86, 2753, 2754,   86, 2755,   86,   86,
+       86, 2757,   86, 2748,   86, 2747, 2749, 2756,   86,   86,
+     2760, 2759,   86, 2752, 2758,   86, 2766, 2761, 2762,   86,
+     2763,   86, 2764, 2767,   86,   86,   86,   86, 2769,   86,
+     2774,   86, 2765, 2768, 2775, 2771, 2770, 2773,   86, 2776,
+       86, 2778,   86,   86, 2779, 2772,   86, 2780,   86, 2781,
+     2777,   86, 2782,   86, 2783,   86,   86,   86, 2784,   86,
+
+       86,   86,   86,   86, 2788, 2792,   86,   86, 3234, 2789,
+     2793, 2795,   86, 2797,   86, 2785, 2787,   86, 2799,   86,
+     2794, 2790, 2786, 2791, 2796,   86,   86,   86,   86,   86,
+     2798, 2804,   86,   86,   86, 2800, 2801, 2802, 2805,   86,
+     2808,   86, 2806,   86,   86, 2809,   86, 2803, 2812,   86,
+     2811,   86,   86,   86, 2807,   86, 2810, 2813, 2814,   86,
+     2815,   86,   86, 2816, 2819,   86,   86,   86,   86,   86,
+       86, 2818, 2824,   86, 2820, 2822, 2817,   86,   86,   86,
+     2825, 2868, 2827,   86, 2828,   86, 2829, 2823,   86, 2838,
+     2821, 2826, 2830, 2831,   86, 2832, 2834,   86, 2833, 2835,
+
+       86, 2836,   86,   86,   86,   86,   86, 2841,   86,   86,
+     2840, 2842, 2837,   86, 2843, 2844,   86,   86,   86,   86,
+       86, 2850,   86, 2839, 2848,   86, 2845,   86,   86, 2846,
+     2852,   86, 2853,   86, 2856,   86,   86,   86, 2849, 2847,
+     2854, 2855,   86,   86, 2857, 2861,   86, 2851,   86,   86,
+       86,   86, 2858,   86, 2864,   86,   86, 2859,   86,   86,
+     2865, 2862, 2863, 2860, 2869, 2870,   86, 2873,   86, 2866,
+       86, 2875,   86,   86, 2867,   86, 2871, 2876,   86, 2878,
+       86,   86,   86,   86, 2883,   86,   86,   86, 2882, 2874,
+       86, 2879, 2872,   86, 2877,   86, 2887, 2880, 2881,   86,
+
+     2890,   86,   86,   86,   86, 2892, 2884, 2888, 2893, 2886,
+     2885,   86, 2895,   86, 2896,   86,   86,   86, 2889, 2898,
+       86,   86, 2891,   86,   86, 2903, 2894,   86, 2900,   86,
+     2901,   86, 2907,   86,   86,   86, 2897, 2908,   86, 2899,
+       86, 2905, 3234, 2902, 2906, 2912, 2904,   86, 2909,   86,
+     2910,   86, 2913,   86,   86, 2911, 2915, 2914, 2916,   86,
+     2918,   86,   86,   86, 2917,   86, 2921,   86, 2919,   86,
+     2924,   86,   86,   86, 2927,   86, 2929,   86,   86, 2925,
+       86,   86, 2933,   86, 2920, 2931, 2922, 2923, 2928, 2932,
+       86, 2926, 2934,   86,   86, 2935,   86, 2930, 2938,   86,
+
+       86, 2937, 2939,   86, 2940,   86, 2942,   86, 2936,   86,
+     2944,   86,   86,   86, 2943,   86,   86,   86, 2949, 2950,
+       86,   86,   86,   86,   86,   86, 2941, 2954,   86, 2946,
+     2955,   86, 2945, 2953, 2956, 2951,   86, 2947, 2948,   86,
+       86, 2959, 2952, 2957, 2958, 2960,   86, 2961,   86,   86,
+     2964,   86,   86, 2963, 2962,   86,   86, 2967,   86,   86,
+     2966,   86,   86, 2965, 2968,   86,   86, 2971,   86,   86,
+       86,   86, 2973,   86,   86, 2969, 2974, 2972,   86,   86,
+       86, 2970,   86,   86,   86, 2983,   86, 2984, 2975, 2979,
+     2976, 2977, 2978, 2986,   86, 2980, 2981,   86, 3234,   86,
+
+     2982,   86, 2987, 2985, 2988, 2995, 2989, 2990, 2991,   86,
+     2992,   86,   86,   86, 2996,   86, 2993,   86, 2994, 2997,
+       86, 2998, 2999,   86,   86, 3000, 3001, 3004,   86, 3002,
+     3003,   86,   86, 3005,   86, 3006,   86,   86,   86, 3011,
+       86,   86,   86, 3010,   86, 3007,   86,   86, 3014, 3013,
+       86,   86,   86, 3019,   86, 3015, 3008, 3009, 3020,   86,
+     3018,   86, 3016, 3021,   86,   86, 3012,   86, 3017, 3022,
+     3023,   86, 3026,   86, 3028,   86, 3024, 3027,   86, 3025,
+       86,   86,   86,   86,   86, 3234, 3029, 3032, 3030, 3033,
+     3035,   86, 3031, 3036, 3034,   86, 3038,   86, 3059,   86,
+
+     3057, 3037, 3039,   86, 3040,   86,   86, 3042,   86, 3043,
+       86, 3041,   86, 3045,   86, 3046,   86, 3047,   86, 3048,
+       86, 3044, 3049,   86, 3050,   86, 3051,   86,   86, 3053,
+       86,   86,   86,   86, 3058,   86,   86, 3052,   86,   86,
+     3054,   86, 3062,   86, 3055, 3064,   86,   86,   86, 3060,
+     3061, 3066,   86, 3056, 3063,   86, 3068,   86, 3071,   86,
+     3070, 3065,   86,   86,   86,   86,   86,   86, 3073,   86,
+     3069,   86,   86, 3067,   86, 3077, 3072, 3081, 3074,   86,
+     3078,   86, 3076, 3075, 3083,   86,   86, 3079, 3084,   86,
+     3085,   86, 3082, 3080,   86, 3087,   86,   86, 3088,   86,
+
+       86,   86,   86,   86, 3086, 3093,   86,   86, 3094,   86,
+     3096, 3090, 3092,   86,   86,   86, 3089, 3095,   86,   86,
+     3097, 3099, 3091,   86,   86,   86,   86,   86, 3103,   86,
+     3100, 3106, 3098, 3102, 3108, 3104,   86, 3111,   86, 3109,
+     3101,   86, 3113,   86,   86, 3105,   86, 3107,   86, 3114,
+     3112, 3115,   86, 3116,   86,   86, 3110,   86, 3119,   86,
+       86,   86, 3120, 3117, 3121, 3124, 3118,   86,   86,   86,
+       86,   86, 3129,   86, 3127,   86, 3123, 3130,   86,   86,
+     3126, 3125,   86, 3133,   86, 3122,   86,   86, 3136,   86,
+     3128,   86, 3137, 3135, 3131,   86,   86,   86, 3140,   86,
+
+     3141, 3132, 3134, 3138,   86, 3139,   86,   86,   86,   86,
+     3142,   86, 3143, 3145, 3146,   86, 3144, 3147,   86,   86,
+       86,   86,   86, 3151,   86, 3150, 3153,   86, 3148, 3149,
+       86,   86,   86,   86, 3160,   86, 3158, 3155, 3159,   86,
+     3152, 3154,   86, 3156, 3164,   86, 3157,   86,   86, 3166,
+       86, 3167, 3161, 3165,   86,   86, 3172, 3162,   86, 3168,
+       86, 3163,   86, 3169,   86, 3170, 3171, 3173,   86, 3174,
+     3175,   86,   86,   86,   86,   86, 3176,   86, 3181,   86,
+       86, 3178,   86, 3184,   86, 3185,   86,   86,   86,   86,
+       86,   86, 3177, 3183, 3179, 3188, 3180, 3186, 3182,   86,
+
+     3187,   86, 3192,   86, 3191,   86, 3189,   86, 3190,   86,
+     3193, 3234, 3194,   86, 3196,   86, 3198,   86, 3199,   86,
+       86, 3203,   86,   86, 3200,   86, 3197, 3201, 3202, 3195,
+     3204,   86,   86, 3205, 3206,   86,   86,   86,   86, 3207,
+       86,   86, 3209, 3208,   86, 3210, 3212,   86,   86, 3214,
+       86,   86, 3218, 3215, 3219,   86, 3211, 3213,   86,   86,
+     3216,   86, 3222, 3223,   86,   86, 3225,   86,   86, 3217,
+     3226,   86, 3224,   86,   86, 3227,   86, 3220, 3221, 3228,
+       86, 3229, 3232,   86, 3233,   86, 3234, 3234, 3234, 3234,
+     3234, 3234, 3230, 3234, 3234, 3234, 3234, 3234, 3234, 3231,
+
+       47,   47,   47,   47,   47,   47,   47,   52,   52,   52,
+       52,   52,   52,   52,   57,   57,   57,   57,   57,   57,
+       57,   63,   63,   63,   63,   63,   63,   63,   68,   68,
+       68,   68,   68,   68,   68,   74,   74,   74,   74,   74,
+       74,   74,   80,   80,   80,   80,   80,   80,   80,   89,
+       89, 3234,   89,   89,   89,   89,  158,  158, 3234, 3234,
+     3234,  158,  158,  160,  160, 3234, 3234,  160, 3234,  160,
+      162, 3234, 3234, 3234, 3234, 3234,  162,  165,  165, 3234,
+     3234, 3234,  165,  165,  167, 3234, 3234, 3234, 3234, 3234,
+      167,  169,  169, 3234,  169,  169,  169,  169,  172, 3234,
+
+     3234, 3234, 3234, 3234,  172,  175,  175, 3234, 3234, 3234,
+      175,  175,   90,   90, 3234,   90,   90,   90,   90,   17,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234
     } ;
 
-static const flex_int16_t yy_chk[6340] =
+static const flex_int16_t yy_chk[6361] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -2195,14 +2200,14 @@ static const flex_int16_t yy_chk[6340] =
         5,    3,    6,   24,    4,   24,   24,    5,   24,    6,
         7,    7,    7,    7,   24,    7,    8,    8,    8,    8,
        33,    8,    7,    9,    9,    9,   26,   26,    8,   10,
-       10,   10,   19,   29,    9,   33,   19,   29, 3234,   35,
+       10,   10,   19,   29,    9,   33,   19,   29, 3242,   35,
        10,   11,   11,   11,   11,   11,   11,   13,   13,   13,
 
        13,   34,   13,   11,   35,   99,   34,   29,   38,   13,
        51,   51,   11,   12,   12,   12,   12,   12,   12,   14,
        14,   14,   14,   99,   14,   12,   15,   15,   15,   38,
        23,   14,   23,   23,   12,   23,   46,   15,   16,   16,
-       16,   23,   23,   25,   27,   27,   25,   25, 2641,   16,
+       16,   23,   23,   25,   27,   27,   25,   25, 2643,   16,
        25,   46,   27,   30,   30,   25,   27,   56,   40,   27,
        56,   73,   31,   31,   25,   28,   67,   67,   30,   32,
        28,   31,   40,   32,   28,   73,   32,   28,   92,   28,
@@ -2687,203 +2692,205 @@ static const flex_int16_t yy_chk[6340] =
      2234, 2232, 2235, 2236, 2237, 2237, 2234, 2238, 2235, 2239,
      2239, 2240, 2236, 2241, 2242, 2243, 2243, 2245, 2244, 2253,
      2246, 2238, 2248, 2240, 2244, 2246, 2248, 2241, 2253, 2249,
-     2254, 2245, 2249, 2242, 2250, 2250, 2251, 2252, 2252, 2255,
-     2257, 2251, 2259, 2255, 2256, 2256, 2260, 2259, 2261, 2262,
-     2254, 2263, 2264, 2257, 2265, 2263, 2266, 2268, 2267, 2265,
-     2269, 2271, 2266, 2262, 2267, 2270, 2260, 2274, 2261, 2273,
-     2270, 2275, 2264, 2281, 2276, 2268, 2275, 2277, 2284, 2269,
-
-     2276, 2273, 2271, 2274, 2278, 2277, 2278, 2281, 2282, 2282,
-     2283, 2285, 2285, 2283, 2287, 2288, 2289, 2291, 2287, 2290,
-     2290, 2288, 2294, 2294, 2284, 2296, 2291, 2298, 2289, 2299,
-     2302, 2303, 2304, 2305, 2312, 2302, 2310, 2304, 2305, 2306,
-     2306, 2298, 2310, 2296, 2313, 2299, 2308, 2308, 2311, 2311,
-     2312, 2314, 2316, 2317, 2318, 2318, 2314, 2303, 2320, 2322,
-     2323, 2327, 2321, 2325, 2325, 2317, 2313, 2320, 2321, 2326,
-     2328, 2316, 2326, 2330, 2330, 2323, 2332, 2322, 2331, 2331,
-     2327, 2332, 2333, 2334, 2335, 2336, 2339, 2336, 2328, 2335,
-     2337, 2338, 2334, 2341, 2340,    0, 2342, 2348, 2339, 2340,
-
-     2333, 2342, 2343, 2343, 2337, 2338, 2344, 2344, 2345, 2345,
-     2346, 2346, 2347, 2341, 2349, 2348, 2350, 2350, 2352, 2349,
-     2351, 2351, 2353, 2354, 2347, 2355, 2356, 2356, 2357, 2360,
-     2352, 2358, 2358, 2361, 2353, 2359, 2359, 2362, 2363, 2364,
-     2360, 2355, 2366, 2354, 2362, 2361, 2365, 2357, 2367, 2369,
-     2363, 2365, 2368, 2368, 2370, 2371, 2372, 2373, 2369, 2364,
-     2374, 2375, 2366, 2376, 2376, 2381, 2382, 2377, 2367, 2372,
-     2378, 2379, 2383, 2375, 2374, 2371, 2377, 2385,    0, 2384,
-     2370, 2373, 2384, 2381, 2386, 2378, 2379, 2387, 2382, 2386,
-     2395, 2385, 2387, 2388, 2388, 2383, 2389, 2389, 2390, 2390,
-
-     2392, 2392, 2394, 2394, 2396, 2397, 2398, 2400, 2395, 2402,
-     2401, 2404, 2403, 2405, 2406, 2396, 2406, 2407, 2408, 2414,
-     2404, 2398, 2409,    0, 2397, 2410, 2410, 2400, 2401, 2412,
-     2412, 2402, 2403, 2405, 2415, 2418, 2408, 2407, 2416, 2416,
-     2409, 2414, 2420, 2415, 2418, 2419, 2419, 2421, 2422, 2423,
-     2424, 2425, 2427,    0, 2426, 2422, 2428, 2428, 2429, 2429,
-     2420, 2430, 2432, 2432, 2423, 2421, 2431, 2435, 2424, 2425,
-     2426, 2427, 2431, 2433, 2433, 2434, 2436, 2437, 2438, 2430,
-     2439, 2434, 2440, 2438, 2441, 2435, 2442, 2447, 2442, 2441,
-     2450, 2436, 2443, 2443, 2449, 2444, 2437, 2444, 2445, 2445,
-
-     2439, 2451, 2440, 2449, 2452, 2453, 2447, 2454, 2458, 2450,
-     2453, 2455, 2459, 2451, 2461, 2459, 2460, 2460, 2462, 2463,
-     2463, 2464, 2466, 2471, 2452, 2464, 2469, 2454, 2458, 2461,
-     2455, 2467, 2468, 2468, 2472, 2467, 2462, 2466, 2471, 2469,
-     2473, 2474, 2474, 2476, 2477, 2478, 2479, 2479, 2480, 2478,
-     2481, 2481, 2482, 2477, 2472, 2476, 2483, 2482, 2484, 2485,
-     2473, 2486, 2486, 2491, 2491, 2483, 2492, 2480, 2493, 2493,
-     2494, 2485, 2495, 2496, 2484, 2497, 2498, 2498, 2499, 2501,
-     2501, 2504, 2496, 2494, 2497, 2495, 2504, 2505, 2492, 2506,
-     2507, 2508, 2505, 2499, 2509, 2507, 2510, 2513, 2511, 2508,
-
-     2516, 2520, 2514, 2506, 2515, 2510, 2511, 2514, 2520, 2515,
-     2517, 2517, 2513, 2509, 2522, 2516, 2518, 2518, 2519, 2519,
-     2521, 2523, 2524, 2527, 2525, 2521, 2526, 2526, 2524, 2525,
-     2528, 2533, 2522, 2529, 2529, 2528, 2530, 2530, 2527, 2523,
-     2534, 2534, 2535, 2536, 2533, 2535, 2537, 2538, 2536, 2536,
-     2539, 2537, 2538, 2540, 2541, 2542, 2543, 2544, 2541, 2540,
-     2542, 2545, 2546, 2550, 2539, 2543, 2549, 2547, 2548, 2545,
-     2555, 2549, 2544, 2547, 2548, 2550, 2552, 2553, 2559, 2557,
-     2553, 2552, 2555, 2546, 2557, 2558, 2560, 2571, 2561, 2562,
-     2558, 2563, 2563, 2564, 2567, 2568, 2559, 2561, 2562, 2560,
-
-     2567, 2568, 2564, 2572, 2576, 2573, 2571, 2574, 2574, 2575,
-     2577, 2578, 2578, 2576, 2579, 2581, 2583, 2584, 2585, 2585,
-     2586, 2584, 2592, 2572, 2573, 2577, 2587, 2592, 2575, 2588,
-     2581, 2589, 2587, 2579, 2591, 2588, 2583, 2589, 2590, 2590,
-     2594, 2595, 2591, 2597, 2598, 2586, 2599, 2597, 2602, 2594,
-     2601, 2601, 2603, 2603, 2595, 2604, 2604, 2608, 2598, 2606,
-     2606, 2599, 2608, 2607, 2610, 2610, 2602, 2607, 2612, 2613,
-     2614, 2615, 2617, 2625, 2613, 2627, 2615, 2615, 2618, 2618,
-     2620, 2620, 2614, 2621, 2621, 2623, 2622, 2631, 2612, 2622,
-     2634, 2625, 2617, 2628, 2628, 2627, 2629, 2629, 2623, 2630,
-
-     2630, 2633, 2631, 2632, 2632, 2635, 2636, 2638, 2634, 2637,
-     2637, 2638, 2636, 2643, 2633, 2642, 2646, 2644, 2645, 2635,
-     2642, 2642, 2646, 2647, 2648, 2655, 2649, 2650, 2650, 2647,
-     2649, 2658, 2656, 2655, 2653, 2656, 2643, 2644, 2645, 2653,
-     2659, 2660, 2660, 2659, 2661, 2662, 2663, 2664, 2707, 2648,
-     2662, 2665, 2666, 2666, 2667, 2668, 2658, 2669, 2668, 2670,
-     2673, 2661, 2661, 2707, 2663, 2665, 2668, 2664, 2667, 2671,
-     2672, 2669, 2674, 2674, 2679, 2672, 2672, 2671, 2670, 2673,
-     2675, 2675, 2676, 2676, 2677, 2677, 2678, 2678, 2680, 2681,
-     2679, 2682, 2683, 2680, 2684, 2685, 2686, 2691, 2687, 2684,
-
-     2689, 2689, 2690, 2694, 2685, 2690, 2693, 2693, 2703, 2681,
-     2694, 2683, 2695, 2695, 2696, 2691, 2686, 2682, 2687, 2696,
-     2698, 2698, 2699, 2700, 2701, 2705, 2703, 2704, 2704, 2705,
-     2706, 2699, 2700, 2701, 2709, 2708, 2710, 2720, 2711, 2706,
-     2708, 2708, 2711, 2715, 2719, 2710, 2721, 2709, 2715, 2716,
-     2716, 2718, 2718, 2724, 2723, 2727, 2729, 2728, 2719, 2732,
-     2734, 2730, 2720, 2723, 2721, 2724, 2728, 2730, 2736, 2737,
-     2739, 2732, 2828, 2736, 2737, 2828, 2729, 2738, 2738, 2739,
-     2727, 2734, 2741, 2748, 2742, 2742, 2747, 2741, 2742, 2744,
-     2744, 2745, 2745, 2746, 2746, 2747, 2749, 2750, 2752, 2756,
-
-     2753, 2754, 2750, 2748, 2752, 2753, 2754, 2755, 2755, 2757,
-     2758, 2759, 2760, 2761, 2762, 2749, 2759, 2756, 2769, 2761,
-     2765, 2757, 2763, 2763, 2765, 2768, 2768, 2766, 2767, 2770,
-     2760, 2758, 2766, 2767, 2771, 2773, 2773, 2769, 2775, 2762,
-     2776, 2777, 2779, 2778, 2770, 2777, 2780, 2781, 2783, 2784,
-     2785, 2775, 2778, 2776, 2771, 2781, 2782, 2783, 2779, 2786,
-     2786, 2782, 2787, 2789, 2789, 2780, 2792, 2784, 2790, 2790,
-     2794, 2794, 2796, 2797, 2798, 2799, 2785, 2801, 2801, 2802,
-     2799, 2787, 2803, 2804, 2806, 2806, 2807, 2792, 2796, 2797,
-     2798, 2808, 2809, 2809, 2812, 2813, 2815, 2818, 2814, 2802,
-
-     2807, 2813, 2804, 2814, 2820, 2803, 2816, 2816, 2817, 2817,
-     2808, 2819, 2819, 2821, 2812, 2820, 2822, 2818, 2815, 2823,
-     2824, 2825, 2821, 2826, 2834, 2823, 2827, 2827, 2829, 2829,
-     2833, 2819, 2835, 2825, 2836, 2836, 2822, 2837, 2835, 2824,
-     2837, 2838, 2833, 2826, 2834, 2839, 2841, 2838, 2842, 2842,
-     2843, 2841, 2844, 2845, 2849, 2843, 2846, 2847, 2847, 2845,
-     2850, 2851, 2852, 2839, 2853, 2853, 2849, 2855, 2854, 2857,
-     2857, 2844, 2859, 2846, 2846, 2852, 2855, 2859, 2850, 2858,
-     2858, 2860, 2865, 2861, 2862, 2862, 2851, 2854, 2861, 2863,
-     2863, 2864, 2864, 2866, 2872, 2860, 2867, 2869, 2869, 2866,
-
-     2874, 2867, 2875, 2876, 2877, 2877, 2879, 2879, 2865, 2880,
-     2881, 2882, 2886, 2872, 2883, 2883, 2884, 2884, 2886, 2887,
-     2882, 2888, 2874, 2880, 2875, 2876, 2889, 2892, 2892, 2895,
-     2881, 2889, 2894, 2894, 2895, 2896, 2897, 2899, 2898, 2887,
-     2888, 2901, 2897, 2900, 2900, 2899, 2901, 2903, 2904, 2896,
-     2898, 2905, 2906, 2907, 2909, 2910, 2905, 2911, 2912, 2907,
-     2915, 2914, 2909, 2916, 2906, 2917, 2918, 2903, 2904, 2921,
-     2920, 2918, 2925, 3017, 2910, 2920, 2915, 2911, 2912, 2914,
-     2916, 2916, 2922, 2926, 2936, 2923, 2917, 2931, 2922, 2921,
-     2923, 2931, 2925, 2929, 2929, 2935, 2926, 2930, 2930, 3017,
-
-     2935, 2937, 2937, 2936, 2939, 2939, 2940, 2940, 2943, 2940,
-     2941, 2941, 2943, 2941, 2942, 2942, 2946, 2942, 2945, 2945,
-     2950, 2947, 2951, 2952, 2953, 2953, 2956, 2958, 2952, 2957,
-     2959, 2958, 2960,    0, 2946, 2947, 2957, 2962, 2967, 2959,
-     2950, 2963, 2951, 2964, 2964, 2965, 2965, 2960, 2966, 2966,
-     2963, 2956, 2968, 2967, 2969, 2962, 2970, 2968, 2971, 2972,
-     2973, 2970, 2970, 2969, 2971, 2974, 2969, 2975, 2976, 2977,
-     2978, 2978, 2975, 2976, 2979, 2973, 2980, 2981, 2981, 3003,
-     2979, 3053, 2980,    0, 2972, 3053, 2974, 2983, 2977, 2982,
-     2982, 2988, 2983, 2986, 2986, 2987, 2987, 2991, 2991, 3003,
-
-     2988, 2992, 2992, 2993, 2993, 2994, 2994, 2995, 2995, 2996,
-     2996, 2997, 2997, 2999, 3000, 3000, 3001, 3002, 3005, 3006,
-     3006, 3007, 2999, 3009, 3015, 3001, 3008, 3010, 3010, 3002,
-     3011, 3012, 3012, 3018, 3018, 3009, 3007, 3005, 3016, 3008,
-     3019, 3016, 3015, 3021, 3022, 3011, 3021, 3023, 3024, 3025,
-     3022, 3026, 3033, 3024, 3027, 3030, 3029, 3036, 3019, 3046,
-     3044, 3023, 3029, 3044, 3030, 3047, 3047, 3033, 3025, 3026,
-     3027, 3051, 3046, 3048, 3048, 3049, 3049, 3052, 3054, 3055,
-     3057, 3058, 3059, 3036, 3061, 3064, 3052, 3059, 3060, 3063,
-     3060, 3065, 3058, 3055, 3051, 3062, 3062, 3066, 3054, 3061,
-
-     3067, 3068, 3063, 3057, 3064, 3069, 3070, 3071, 3078, 3065,
-     3072, 3073, 3074, 3066, 3069, 3072, 3068, 3074, 3070, 3079,
-     3080, 3080, 3078, 3081, 3086, 3067, 3082, 3082, 3071, 3083,
-     3083, 3073, 3081, 3084, 3084, 3085, 3085, 3087, 3088, 3079,
-     3089, 3088, 3090, 3086, 3091, 3089, 3092, 3090, 3093, 3094,
-     3095, 3096, 3097, 3100, 3093, 3101, 3096, 3087, 3098, 3098,
-     3104, 3092, 3095, 3094, 3099, 3099, 3102, 3102, 3100, 3091,
-     3106, 3112, 3097, 3111, 3101, 3104, 3109, 3109, 3110, 3110,
-     3113, 3111, 3115, 3114, 3116, 3117, 3113, 3118, 3106, 3114,
-     3112, 3123, 3118, 3119, 3119, 3124, 3115, 3116, 3120, 3120,
-
-     3126, 3127, 3129, 3130, 3117, 3127, 3131, 3132, 3130, 3134,
-     3133, 3135, 3123, 3136, 3126, 3124, 3135, 3140, 3136, 3142,
-     3132, 3141, 3129, 3133,    0, 3131, 3137, 3137, 3134, 3143,
-     3143, 3144, 3146, 3146, 3145, 3150, 3144, 3140, 3142, 3141,
-     3145, 3147, 3148, 3149, 3151, 3157, 3147, 3148, 3149, 3157,
-     3151, 3153, 3153, 3154, 3150, 3155, 3155, 3158, 3154, 3159,
-     3160, 3161, 3162, 3163, 3164, 3171, 3159, 3178, 3162, 3166,
-     3166, 3168, 3168, 3170, 3169, 3172, 3158, 3164, 3170, 3160,
-     3161, 3180, 3163, 3169, 3171, 3173, 3169, 3174, 3174, 3176,
-     3175, 3179, 3179, 3178, 3172, 3175, 3181, 3181, 3173, 3185,
-
-     3180, 3183, 3176, 3182, 3182, 3184, 3183, 3186, 3186, 3187,
-     3190, 3188, 3184, 3188, 3187, 3189, 3189, 3190, 3185, 3191,
-     3192, 3194, 3193, 3196, 3196, 3197, 3191, 3193, 3199, 3200,
-     3201, 3202, 3206, 3199, 3200, 3203, 3203, 3205, 3205, 3192,
-     3194, 3207, 3208, 3208, 3197, 3209, 3209, 3210, 3220, 3201,
-     3202, 3206, 3212, 3212, 3210, 3213, 3213, 3214, 3216, 3221,
-     3207, 3219,    0, 3216, 3214,    0, 3219, 3220, 3222, 3222,
-     3223, 3223,    0,    0,    0,    0,    0,    0, 3221, 3227,
-     3227, 3227, 3227, 3227, 3227, 3227, 3228, 3228, 3228, 3228,
-     3228, 3228, 3228, 3229, 3229, 3229, 3229, 3229, 3229, 3229,
-
-     3230, 3230, 3230, 3230, 3230, 3230, 3230, 3231, 3231, 3231,
-     3231, 3231, 3231, 3231, 3232, 3232, 3232, 3232, 3232, 3232,
-     3232, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3235, 3235,
-        0, 3235, 3235, 3235, 3235, 3236, 3236,    0,    0,    0,
-     3236, 3236, 3237, 3237,    0,    0, 3237,    0, 3237, 3238,
-        0,    0,    0,    0,    0, 3238, 3239, 3239,    0,    0,
-        0, 3239, 3239, 3240,    0,    0,    0,    0,    0, 3240,
-     3241, 3241,    0, 3241, 3241, 3241, 3241, 3242,    0,    0,
-        0,    0,    0, 3242, 3243, 3243,    0,    0,    0, 3243,
-     3243, 3244, 3244,    0, 3244, 3244, 3244, 3244, 3226, 3226,
-
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
-     3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226
+     2254, 2245, 2249, 2242, 2250, 2250, 2251, 2252, 2256, 2256,
+     2255, 2251, 2252, 2252, 2255, 2257, 2259, 2260, 2261, 2262,
+     2254, 2259, 2263, 2264, 2265, 2266, 2263, 2268, 2257, 2265,
+     2267, 2266, 2269, 2262, 2270, 2271, 2267, 2260, 2261, 2270,
+     2273, 2274, 2275, 2264, 2276, 2268, 2277, 2275, 2281, 2284,
+
+     2276, 2269, 2273, 2278, 2277, 2278, 2271, 2274, 2282, 2282,
+     2283, 2288, 2281, 2283, 2285, 2285, 2287, 2288, 2289, 2291,
+     2287, 2290, 2290, 2294, 2294, 2284, 2296, 2298, 2291, 2299,
+     2289, 2302, 2303, 2304, 2305, 2312, 2302, 2313, 2304, 2305,
+        0, 2298, 2306, 2306, 2296, 2299, 2308, 2308, 2310, 2311,
+     2311, 2312, 2314, 2316, 2310, 2317, 2320, 2314, 2303, 2313,
+     2318, 2318, 2321, 2322, 2323, 2320, 2327, 2317, 2321, 2325,
+     2325, 2326, 2316, 2328, 2326, 2330, 2330, 2331, 2331, 2323,
+     2333, 2322, 2332, 2334, 2335, 2327, 2336, 2332, 2336, 2335,
+     2337, 2328, 2334, 2338, 2339, 2340, 2341, 2342, 2333, 2465,
+
+     2340, 2348, 2342, 2465, 2337, 2347, 2339, 2338, 2343, 2343,
+     2344, 2344, 2345, 2345, 2346, 2346, 2341, 2347, 2349, 2348,
+     2350, 2350, 2352, 2349, 2351, 2351, 2353, 2354, 2355, 2356,
+     2356, 2357, 2358, 2358, 2352, 2359, 2359, 2360, 2353, 2361,
+     2363, 2364, 2362, 2366, 2355, 2367, 2370, 2354, 2360, 2362,
+     2357, 2361, 2363, 2365, 2368, 2368, 2371, 2369, 2365, 2373,
+     2372, 2364, 2375, 2366, 2374, 2367, 2369, 2376, 2376, 2378,
+     2377, 2379, 2370, 2372, 2375, 2381, 2371, 2382, 2374, 2377,
+     2383, 2385, 2384, 2373, 2378, 2384, 2379, 2386,    0, 2387,
+     2388, 2388, 2386, 2381, 2387, 2385, 2389, 2389, 2395, 2382,
+
+     2390, 2390, 2396, 2383, 2392, 2392, 2394, 2394, 2397, 2398,
+     2400, 2401, 2402, 2396, 2404, 2403, 2395, 2405, 2406, 2407,
+     2406, 2413, 2408, 2404, 2398, 2409, 2415, 2397,    0, 2401,
+     2400, 2410, 2410, 2421, 2402, 2403, 2413, 2405, 2416, 2407,
+     2408, 2412, 2412, 2409, 2417, 2417, 2419, 2416, 2415, 2420,
+     2420, 2421, 2422, 2423, 2424, 2419, 2425, 2426, 2431, 2428,
+     2423, 2427, 2429, 2429, 2430, 2430, 2432, 2433, 2433, 2424,
+     2422, 2436, 2432, 2437, 2425, 2426, 2431, 2427, 2428, 2434,
+     2434, 2435, 2438, 2440, 2441, 2439, 2442, 2435, 2437, 2436,
+     2439, 2442, 2443, 2448, 2443, 2444, 2444, 2445, 2450, 2445,
+
+     2451, 2438, 2452, 2440, 2441, 2446, 2446, 2450, 2453, 2455,
+     2454, 2456, 2448, 2459, 2452, 2454, 2462, 2460, 2463, 2451,
+     2460, 2461, 2461, 2464, 2464, 2467, 2469, 2469, 2453, 2455,
+     2456, 2462, 2470, 2459, 2468, 2472, 2463, 2473, 2468, 2474,
+     2467, 2475, 2475, 2477, 2478, 2470, 2481, 2479, 2480, 2480,
+     2472, 2479, 2485, 2478, 2486, 2477, 2493, 2473, 2483, 2474,
+     2482, 2482, 2484, 2483, 2495, 2481, 2486, 2496, 2485, 2487,
+     2487, 2484, 2492, 2492, 2494, 2494, 2497, 2495, 2493, 2498,
+     2496, 2499, 2499, 2500, 2505, 2497, 2502, 2502, 2498, 2505,
+     2506, 2507, 2508, 2509, 2510, 2506, 2512, 2508, 2500, 2511,
+
+     2514, 2509, 2515, 2517, 2512, 2507, 2516, 2515, 2511, 2518,
+     2518, 2516, 2523, 2510, 2521, 2514, 2519, 2519, 2517, 2520,
+     2520, 2521, 2522, 2524, 2526, 2525,    0, 2522, 2528, 2526,
+     2523, 2525, 2527, 2527, 2529, 2530, 2530, 2531, 2531, 2529,
+     2534, 2524, 2537, 2528, 2535, 2535, 2536, 2537, 2537, 2536,
+     2538, 2539, 2540, 2534, 2541, 2538, 2539, 2542, 2543, 2544,
+     2541, 2542, 2545, 2543, 2546, 2547, 2540, 2548, 2544, 2549,
+     2551, 2550, 2546, 2548, 2553, 2549, 2550, 2545, 2554, 2557,
+     2559, 2555, 2551, 2554, 2555, 2559, 2547, 2560, 2561, 2562,
+     2553, 2557, 2560, 2569, 2563, 2564, 2565, 2565, 2566, 2569,
+
+     2573, 2574, 2562, 2563, 2564, 2570, 2561, 2566, 2575, 2576,
+     2576, 2570, 2577, 2578, 2579, 2580, 2580, 2581, 2583, 2573,
+     2585, 2574, 2578, 2588, 2586, 2587, 2587, 2575, 2586, 2579,
+     2596, 2577, 2589, 2583, 2593, 2590, 2581, 2591, 2589, 2596,
+     2585, 2590, 2593, 2591, 2592, 2592, 2594, 2597, 2588, 2599,
+     2600, 2594, 2601, 2599, 2603, 2603, 2604, 2605, 2605, 2609,
+     2597, 2606, 2606, 2609, 2600, 2608, 2608, 2601, 2610, 2612,
+     2612, 2614, 2615, 2610, 2604, 2616, 2617, 2615, 2619, 2620,
+     2620, 2617, 2617, 2622, 2622, 2623, 2623, 2616, 2625, 2624,
+     2627, 2614, 2624, 2629, 2630, 2630, 2631, 2631, 2619, 2632,
+
+     2632, 2625, 2633, 2634, 2634, 2635, 2636, 2637, 2627, 2638,
+     2639, 2639, 2640, 2629, 2644, 2638, 2640, 2633, 2635, 2644,
+     2644, 2637, 2645, 2646, 2636, 2648, 2647, 2649, 2650, 2660,
+     2651, 2648, 2655, 2649, 2651, 2652, 2652, 2655, 2658, 2657,
+     2663, 2658, 2667, 2646, 2665, 2645, 2647, 2657, 2661, 2662,
+     2662, 2661, 2666, 2650, 2660, 2664, 2667, 2663, 2663, 2669,
+     2664, 2671, 2665, 2668, 2668, 2670, 2672, 2674, 2670, 2673,
+     2674, 2676, 2666, 2669, 2675, 2671, 2670, 2673, 2682, 2675,
+     2675, 2677, 2677, 2678, 2678, 2672, 2679, 2679, 2680, 2680,
+     2676, 2681, 2681, 2683, 2682, 2684, 2685, 2686, 2683, 2687,
+
+     2688, 2689, 2694, 2690, 2687, 2692, 2692, 2693,    0, 2688,
+     2693, 2696, 2696, 2698, 2698, 2684, 2686, 2697, 2701, 2701,
+     2694, 2689, 2685, 2690, 2697, 2699, 2702, 2703, 2704, 2706,
+     2699, 2707, 2707, 2709, 2708, 2702, 2703, 2704, 2708, 2710,
+     2711, 2713, 2709, 2712, 2714, 2711, 2711, 2706, 2714, 2722,
+     2713, 2723, 2718, 2724, 2710, 2726, 2712, 2718, 2719, 2719,
+     2721, 2721, 2727, 2722, 2726, 2730, 2731, 2732, 2735, 2751,
+     2737, 2724, 2733, 2785, 2727, 2731, 2723, 2739, 2733, 2740,
+     2735, 2785, 2739, 2742, 2740, 2741, 2741, 2732, 2744, 2751,
+     2730, 2737, 2742, 2744, 2745, 2745, 2747, 2747, 2745, 2748,
+
+     2748, 2749, 2749, 2750, 2752, 2753, 2756, 2755, 2759, 2757,
+     2753, 2756, 2750, 2755, 2757, 2758, 2758, 2760, 2761, 2762,
+     2763, 2764, 2765, 2752, 2762, 2772, 2759, 2764, 2768, 2760,
+     2766, 2766, 2768, 2771, 2771, 2769, 2770, 2773, 2763, 2761,
+     2769, 2770, 2774, 2775, 2772, 2777, 2777, 2765, 2779, 2780,
+     2781, 2782, 2773, 2783, 2781, 2784, 2787, 2774, 2788, 2786,
+     2782, 2779, 2780, 2775, 2786, 2787, 2789, 2790, 2790, 2783,
+     2791, 2793, 2793, 2796, 2784, 2800, 2788, 2794, 2794, 2798,
+     2798, 2801, 2802, 2803, 2805, 2805, 2806, 2807, 2803, 2791,
+     2808, 2800, 2789, 2811, 2796, 2810, 2810, 2801, 2802, 2812,
+
+     2813, 2813, 2816, 2818, 2819, 2817, 2806, 2811, 2818, 2808,
+     2807, 2817, 2820, 2820, 2821, 2821, 2822, 2824, 2812, 2823,
+     2823, 2825, 2816, 2826, 2830, 2827, 2819, 2828, 2824, 2829,
+     2825, 2827, 2831, 2831, 2832, 2838, 2822, 2832, 2837, 2823,
+     2843, 2829,    0, 2826, 2830, 2839, 2828, 2833, 2833, 2855,
+     2837, 2839, 2840, 2840, 2841, 2838, 2842, 2841, 2843, 2845,
+     2846, 2846, 2842, 2847, 2845, 2848, 2849, 2853, 2847, 2850,
+     2851, 2851, 2849, 2854, 2855, 2856, 2857, 2857, 2858, 2853,
+     2860, 2859, 2862, 2862, 2848, 2859, 2850, 2850, 2856, 2860,
+     2864, 2854, 2863, 2863, 2865, 2864, 2866, 2858, 2867, 2867,
+
+     2870, 2866, 2868, 2868, 2869, 2869, 2871, 2879, 2865, 2872,
+     2874, 2874, 2871, 2877, 2872, 2880, 2881, 2882, 2882, 2884,
+     2884, 2885, 2886, 2892, 2887, 2893, 2870, 2888, 2888, 2879,
+     2889, 2889, 2877, 2887, 2891, 2885, 2894, 2880, 2881, 2901,
+     2891, 2894, 2886, 2892, 2893, 2897, 2897, 2899, 2899, 2900,
+     2902, 2903, 2904, 2901, 2900, 2908, 2902, 2905, 2905, 2906,
+     2904, 2909, 2910, 2903, 2906, 2911, 2912, 2910, 2914, 2915,
+     2916, 2917, 2912, 2920, 2919, 2908, 2914, 2911, 2921, 2922,
+     2923, 2909, 2925, 2926, 2930, 2923, 2942, 2925, 2915, 2920,
+     2916, 2917, 2919, 2927, 2932, 2921, 2921, 2928,    0, 2927,
+
+     2922, 2931, 2928, 2926, 2930, 2942, 2931, 2932, 2935, 2935,
+     2936, 2936, 2937, 2941, 2943, 2943, 2937, 2952, 2941, 2945,
+     2945, 2946, 2946, 2949, 2946, 2947, 2947, 2949, 2947, 2948,
+     2948, 2953, 2948, 2951, 2951, 2952, 2956, 2957, 2958, 2959,
+     2959, 2962, 2963, 2958, 2964, 2953, 2965, 2966, 2964, 2963,
+     2968, 2969, 2970, 2970, 2973, 2965, 2956, 2957, 2971, 2971,
+     2969, 2978, 2966, 2972, 2972, 2974, 2962, 2975, 2968, 2973,
+     2974, 2980, 2976, 2979, 2977, 2983, 2975, 2976, 2976, 2975,
+     2977, 3012, 2981, 3014, 2982,    0, 2978, 2981, 2979, 2982,
+     2984, 2984, 2980, 2985, 2983, 2986, 2987, 2987, 3014, 2985,
+
+     3012, 2986, 2988, 2988, 2989, 2989, 2990, 2993, 2993, 2994,
+     2994, 2990, 2995, 2998, 2998, 2999, 2999, 3000, 3000, 3001,
+     3001, 2995, 3002, 3002, 3003, 3003, 3004, 3004, 3006, 3007,
+     3007, 3008, 3009, 3010, 3013, 3013, 3015, 3006, 3016, 3018,
+     3008, 3017, 3017, 3022, 3009, 3019, 3019, 3024, 3023, 3015,
+     3016, 3023, 3026, 3010, 3018, 3025, 3025, 3028, 3029, 3032,
+     3028, 3022, 3030, 3031, 3029, 3033, 3034, 3044, 3031, 3036,
+     3026, 3037, 3041, 3024, 3052, 3036, 3030, 3052, 3032, 3054,
+     3037, 3059, 3034, 3033, 3055, 3055, 3060, 3041, 3056, 3056,
+     3057, 3057, 3054, 3044, 3061, 3060, 3062, 3063, 3061, 3065,
+
+     3067, 3066, 3069, 3073, 3059, 3067, 3068, 3071, 3068, 3070,
+     3070, 3063, 3066, 3072, 3074, 3075, 3062, 3069, 3076, 3077,
+     3071, 3073, 3065, 3078, 3079, 3086, 3080, 3081, 3077, 3082,
+     3074, 3080, 3072, 3076, 3082, 3078, 3087, 3088, 3088, 3086,
+     3075, 3089, 3090, 3090, 3094, 3079, 3095, 3081, 3091, 3091,
+     3089, 3092, 3092, 3093, 3093, 3096, 3087, 3097, 3096, 3098,
+     3099, 3100, 3097, 3094, 3098, 3101, 3095, 3102, 3103, 3104,
+     3105, 3101, 3106, 3106, 3104, 3114, 3100, 3107, 3107, 3108,
+     3103, 3102, 3109, 3110, 3110, 3099, 3120, 3112, 3117, 3117,
+     3105, 3118, 3118, 3114, 3108, 3119, 3123, 3125, 3121, 3124,
+
+     3122, 3109, 3112, 3119, 3121, 3120, 3122, 3131, 3126, 3132,
+     3123, 3134, 3124, 3126, 3127, 3127, 3125, 3128, 3128, 3135,
+     3137, 3138, 3139, 3135, 3140, 3134, 3138, 3142, 3131, 3132,
+     3141, 3143, 3148, 3144, 3145, 3145, 3143, 3140, 3144, 3149,
+     3137, 3139, 3150, 3141, 3151, 3151, 3142, 3158, 3152, 3153,
+     3154, 3154, 3148, 3152, 3155, 3153, 3159, 3149, 3156, 3155,
+     3157, 3150, 3159, 3156, 3162, 3157, 3158, 3161, 3161, 3162,
+     3163, 3163, 3165, 3166, 3167, 3168, 3165, 3169, 3170, 3171,
+     3172, 3167, 3174, 3174, 3170, 3176, 3176, 3179, 3177, 3180,
+     3178, 3181, 3166, 3172, 3168, 3178, 3169, 3177, 3171, 3184,
+
+     3177, 3182, 3182, 3186, 3181, 3183, 3179, 3188, 3180, 3193,
+     3183,    0, 3184, 3187, 3187, 3189, 3189, 3190, 3190, 3191,
+     3192, 3194, 3194, 3200, 3191, 3195, 3188, 3192, 3193, 3186,
+     3195, 3196, 3198, 3196, 3197, 3197, 3199, 3202, 3205, 3198,
+     3201, 3209, 3200, 3199, 3207, 3201, 3204, 3204, 3208, 3207,
+     3210, 3211, 3211, 3208, 3213, 3213, 3202, 3205, 3214, 3215,
+     3209, 3216, 3216, 3217, 3217, 3218, 3220, 3220, 3222, 3210,
+     3221, 3221, 3218, 3228, 3224, 3222, 3227, 3214, 3215, 3224,
+     3229, 3227, 3230, 3230, 3231, 3231,    0,    0,    0,    0,
+        0,    0, 3228,    0,    0,    0,    0,    0,    0, 3229,
+
+     3235, 3235, 3235, 3235, 3235, 3235, 3235, 3236, 3236, 3236,
+     3236, 3236, 3236, 3236, 3237, 3237, 3237, 3237, 3237, 3237,
+     3237, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3239, 3239,
+     3239, 3239, 3239, 3239, 3239, 3240, 3240, 3240, 3240, 3240,
+     3240, 3240, 3241, 3241, 3241, 3241, 3241, 3241, 3241, 3243,
+     3243,    0, 3243, 3243, 3243, 3243, 3244, 3244,    0,    0,
+        0, 3244, 3244, 3245, 3245,    0,    0, 3245,    0, 3245,
+     3246,    0,    0,    0,    0,    0, 3246, 3247, 3247,    0,
+        0,    0, 3247, 3247, 3248,    0,    0,    0,    0,    0,
+     3248, 3249, 3249,    0, 3249, 3249, 3249, 3249, 3250,    0,
+
+        0,    0,    0,    0, 3250, 3251, 3251,    0,    0,    0,
+     3251, 3251, 3252, 3252,    0, 3252, 3252, 3252, 3252, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234,
+     3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -3089,7 +3096,7 @@ static void config_end_include(void)
         }
 #endif
 
-#line 3091 "<stdout>"
+#line 3098 "<stdout>"
 #define YY_NO_INPUT 1
 #line 191 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
@@ -3098,9 +3105,9 @@ static void config_end_include(void)
 #ifndef YY_NO_INPUT
 #define YY_NO_INPUT 1
 #endif
-#line 3100 "<stdout>"
+#line 3107 "<stdout>"
 
-#line 3102 "<stdout>"
+#line 3109 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -3324,7 +3331,7 @@ YY_DECL
        {
 #line 211 "./util/configlexer.lex"
 
-#line 3326 "<stdout>"
+#line 3333 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -3357,13 +3364,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 >= 3227 )
+                               if ( yy_current_state >= 3235 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 6299 );
+               while ( yy_base[yy_current_state] != 6320 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -4907,40 +4914,45 @@ YY_RULE_SETUP
 { YDVAR(2, VAR_EDNS_CLIENT_TAG) }
        YY_BREAK
 case 302:
-/* rule 302 can match eol */
 YY_RULE_SETUP
 #line 527 "./util/configlexer.lex"
+{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) }
+       YY_BREAK
+case 303:
+/* rule 303 can match eol */
+YY_RULE_SETUP
+#line 528 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 303:
+case 304:
 YY_RULE_SETUP
-#line 530 "./util/configlexer.lex"
+#line 531 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 531 "./util/configlexer.lex"
+#line 532 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 304:
+case 305:
 YY_RULE_SETUP
-#line 536 "./util/configlexer.lex"
+#line 537 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 305:
-/* rule 305 can match eol */
+case 306:
+/* rule 306 can match eol */
 YY_RULE_SETUP
-#line 537 "./util/configlexer.lex"
+#line 538 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 306:
+case 307:
 YY_RULE_SETUP
-#line 539 "./util/configlexer.lex"
+#line 540 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -4953,34 +4965,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 307:
+case 308:
 YY_RULE_SETUP
-#line 551 "./util/configlexer.lex"
+#line 552 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 552 "./util/configlexer.lex"
+#line 553 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 308:
+case 309:
 YY_RULE_SETUP
-#line 557 "./util/configlexer.lex"
+#line 558 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 309:
-/* rule 309 can match eol */
+case 310:
+/* rule 310 can match eol */
 YY_RULE_SETUP
-#line 558 "./util/configlexer.lex"
+#line 559 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 310:
+case 311:
 YY_RULE_SETUP
-#line 560 "./util/configlexer.lex"
+#line 561 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -4993,38 +5005,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 311:
+case 312:
 YY_RULE_SETUP
-#line 572 "./util/configlexer.lex"
+#line 573 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 574 "./util/configlexer.lex"
+#line 575 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 312:
-YY_RULE_SETUP
-#line 578 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 313:
-/* rule 313 can match eol */
 YY_RULE_SETUP
 #line 579 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 314:
+/* rule 314 can match eol */
 YY_RULE_SETUP
 #line 580 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 315:
 YY_RULE_SETUP
 #line 581 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 316:
+YY_RULE_SETUP
+#line 582 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 0);
@@ -5032,27 +5044,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 586 "./util/configlexer.lex"
+#line 587 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 316:
+case 317:
 YY_RULE_SETUP
-#line 590 "./util/configlexer.lex"
+#line 591 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 317:
-/* rule 317 can match eol */
+case 318:
+/* rule 318 can match eol */
 YY_RULE_SETUP
-#line 591 "./util/configlexer.lex"
+#line 592 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 318:
+case 319:
 YY_RULE_SETUP
-#line 593 "./util/configlexer.lex"
+#line 594 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -5062,7 +5074,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 599 "./util/configlexer.lex"
+#line 600 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -5077,39 +5089,39 @@ case YY_STATE_EOF(val):
 }
        YY_BREAK
 /* include-toplevel: directive */
-case 319:
+case 320:
 YY_RULE_SETUP
-#line 613 "./util/configlexer.lex"
+#line 614 "./util/configlexer.lex"
 {
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel):
-#line 616 "./util/configlexer.lex"
+#line 617 "./util/configlexer.lex"
 {
        yyerror("EOF inside include_toplevel directive");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 320:
-YY_RULE_SETUP
-#line 620 "./util/configlexer.lex"
-{ LEXOUT(("ITSP ")); /* ignore */ }
-       YY_BREAK
 case 321:
-/* rule 321 can match eol */
 YY_RULE_SETUP
 #line 621 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ LEXOUT(("ITSP ")); /* ignore */ }
        YY_BREAK
 case 322:
+/* rule 322 can match eol */
 YY_RULE_SETUP
 #line 622 "./util/configlexer.lex"
-{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 case 323:
 YY_RULE_SETUP
 #line 623 "./util/configlexer.lex"
+{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
+       YY_BREAK
+case 324:
+YY_RULE_SETUP
+#line 624 "./util/configlexer.lex"
 {
        LEXOUT(("ITunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 1);
@@ -5118,29 +5130,29 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel_quoted):
-#line 629 "./util/configlexer.lex"
+#line 630 "./util/configlexer.lex"
 {
        yyerror("EOF inside quoted string");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 324:
+case 325:
 YY_RULE_SETUP
-#line 633 "./util/configlexer.lex"
+#line 634 "./util/configlexer.lex"
 { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 325:
-/* rule 325 can match eol */
+case 326:
+/* rule 326 can match eol */
 YY_RULE_SETUP
-#line 634 "./util/configlexer.lex"
+#line 635 "./util/configlexer.lex"
 {
        yyerror("newline before \" in include name");
        cfg_parser->line++; BEGIN(inc_prev);
 }
        YY_BREAK
-case 326:
+case 327:
 YY_RULE_SETUP
-#line 638 "./util/configlexer.lex"
+#line 639 "./util/configlexer.lex"
 {
        LEXOUT(("ITQE "));
        yytext[yyleng - 1] = '\0';
@@ -5149,33 +5161,33 @@ YY_RULE_SETUP
        return (VAR_FORCE_TOPLEVEL);
 }
        YY_BREAK
-case 327:
+case 328:
 YY_RULE_SETUP
-#line 646 "./util/configlexer.lex"
+#line 647 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 328:
+case 329:
 YY_RULE_SETUP
-#line 650 "./util/configlexer.lex"
+#line 651 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 329:
+case 330:
 YY_RULE_SETUP
-#line 654 "./util/configlexer.lex"
+#line 655 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 330:
+case 331:
 YY_RULE_SETUP
-#line 658 "./util/configlexer.lex"
+#line 659 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 5177 "<stdout>"
+#line 5189 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -5470,7 +5482,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 >= 3227 )
+                       if ( yy_current_state >= 3235 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5498,11 +5510,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 >= 3227 )
+               if ( yy_current_state >= 3235 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 3226);
+       yy_is_jam = (yy_current_state == 3234);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6141,6 +6153,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 658 "./util/configlexer.lex"
+#line 659 "./util/configlexer.lex"
 
 
index a9b73d989ce81bbf9a2c7deebb5e92018606948e..0b997a306eb03000665e6c410231d822ae6844a9 100644 (file)
@@ -524,6 +524,7 @@ name-v6{COLON}                      { YDVAR(1, VAR_IPSET_NAME_V6) }
 udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
 tcp-connection-limit{COLON}    { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
 edns-client-tag{COLON}         { YDVAR(2, VAR_EDNS_CLIENT_TAG) }
+edns-client-tag-opcode{COLON}  { YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) }
 <INITIAL,val>{NEWLINE}         { LEXOUT(("NL\n")); cfg_parser->line++; }
 
        /* Quoted strings. Strip leading and ending quotes */
index 7e7c3fc3ff7d8340ac2c5530af9a7c6297a7f25e..ba5054eb459d143cf69a46d182ba320d25f9441b 100644 (file)
@@ -438,7 +438,8 @@ extern int yydebug;
     VAR_RPZ_LOG_NAME = 550,
     VAR_DYNLIB = 551,
     VAR_DYNLIB_FILE = 552,
-    VAR_EDNS_CLIENT_TAG = 553
+    VAR_EDNS_CLIENT_TAG = 553,
+    VAR_EDNS_CLIENT_TAG_OPCODE = 554
   };
 #endif
 /* Tokens.  */
@@ -738,6 +739,7 @@ extern int yydebug;
 #define VAR_DYNLIB 551
 #define VAR_DYNLIB_FILE 552
 #define VAR_EDNS_CLIENT_TAG 553
+#define VAR_EDNS_CLIENT_TAG_OPCODE 554
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -747,7 +749,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 751 "util/configparser.c"
+#line 753 "util/configparser.c"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -1066,19 +1068,19 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   634
+#define YYLAST   635
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  299
+#define YYNTOKENS  300
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  324
+#define YYNNTS  325
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  624
+#define YYNRULES  626
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  927
+#define YYNSTATES  930
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   553
+#define YYMAXUTOK   554
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1145,7 +1147,7 @@ static const yytype_int16 yytranslate[] =
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298
+     295,   296,   297,   298,   299
 };
 
 #if YYDEBUG
@@ -1174,47 +1176,47 @@ static const yytype_int16 yyrline[] =
      280,   280,   281,   281,   281,   282,   282,   283,   284,   284,
      285,   285,   286,   286,   287,   287,   288,   288,   288,   289,
      289,   289,   290,   290,   290,   291,   291,   292,   292,   293,
-     293,   294,   294,   296,   308,   309,   310,   310,   310,   310,
-     310,   311,   311,   313,   325,   326,   327,   327,   327,   327,
-     328,   328,   330,   344,   345,   346,   346,   346,   346,   347,
-     347,   347,   349,   366,   367,   368,   368,   368,   368,   369,
-     369,   369,   370,   373,   392,   409,   417,   427,   435,   452,
-     453,   454,   454,   454,   454,   454,   455,   455,   455,   456,
-     456,   458,   467,   476,   487,   496,   505,   514,   525,   534,
-     546,   560,   575,   586,   603,   620,   637,   654,   669,   684,
-     697,   712,   721,   730,   739,   748,   757,   766,   775,   784,
-     793,   802,   811,   820,   829,   838,   851,   860,   873,   882,
-     891,   900,   907,   914,   923,   930,   939,   947,   954,   961,
-     969,   978,   985,  1001,  1009,  1017,  1025,  1033,  1042,  1051,
-    1065,  1074,  1083,  1092,  1101,  1110,  1119,  1126,  1133,  1159,
-    1167,  1174,  1181,  1188,  1195,  1203,  1211,  1219,  1226,  1237,
-    1248,  1255,  1264,  1273,  1282,  1289,  1296,  1304,  1312,  1322,
-    1332,  1342,  1356,  1364,  1377,  1388,  1396,  1409,  1418,  1427,
-    1436,  1446,  1456,  1464,  1477,  1486,  1494,  1503,  1511,  1524,
-    1533,  1540,  1550,  1560,  1570,  1580,  1590,  1600,  1610,  1620,
-    1627,  1634,  1641,  1650,  1659,  1668,  1677,  1684,  1694,  1714,
-    1721,  1739,  1752,  1765,  1774,  1783,  1792,  1801,  1811,  1821,
-    1832,  1841,  1850,  1859,  1868,  1877,  1886,  1899,  1912,  1921,
-    1928,  1937,  1946,  1955,  1964,  1972,  1985,  1993,  2034,  2041,
-    2056,  2066,  2076,  2083,  2090,  2097,  2106,  2114,  2128,  2149,
-    2170,  2182,  2194,  2206,  2215,  2236,  2246,  2255,  2263,  2271,
-    2284,  2297,  2312,  2327,  2336,  2345,  2351,  2360,  2369,  2379,
-    2389,  2402,  2415,  2427,  2441,  2453,  2467,  2482,  2492,  2499,
-    2506,  2515,  2524,  2534,  2544,  2554,  2561,  2568,  2577,  2586,
-    2596,  2606,  2613,  2620,  2627,  2635,  2645,  2655,  2665,  2675,
-    2714,  2724,  2732,  2740,  2755,  2764,  2769,  2770,  2771,  2771,
-    2771,  2772,  2772,  2772,  2773,  2773,  2775,  2785,  2794,  2801,
-    2808,  2815,  2822,  2829,  2836,  2841,  2842,  2843,  2843,  2843,
-    2844,  2844,  2844,  2845,  2846,  2846,  2847,  2847,  2848,  2848,
-    2849,  2850,  2851,  2852,  2853,  2854,  2856,  2865,  2875,  2882,
-    2889,  2898,  2905,  2912,  2919,  2926,  2935,  2944,  2951,  2958,
-    2968,  2978,  2988,  2998,  3008,  3018,  3023,  3024,  3025,  3027,
-    3033,  3038,  3039,  3040,  3042,  3048,  3058,  3065,  3074,  3082,
-    3087,  3088,  3090,  3090,  3090,  3091,  3091,  3092,  3093,  3094,
-    3095,  3096,  3098,  3108,  3117,  3124,  3133,  3140,  3149,  3157,
-    3170,  3178,  3191,  3196,  3197,  3198,  3198,  3199,  3199,  3199,
-    3200,  3202,  3214,  3226,  3238,  3253,  3266,  3279,  3290,  3295,
-    3296,  3297,  3297,  3299,  3314
+     293,   294,   294,   295,   297,   309,   310,   311,   311,   311,
+     311,   311,   312,   312,   314,   326,   327,   328,   328,   328,
+     328,   329,   329,   331,   345,   346,   347,   347,   347,   347,
+     348,   348,   348,   350,   367,   368,   369,   369,   369,   369,
+     370,   370,   370,   371,   374,   393,   410,   418,   428,   436,
+     453,   454,   455,   455,   455,   455,   455,   456,   456,   456,
+     457,   457,   459,   468,   477,   488,   497,   506,   515,   526,
+     535,   547,   561,   576,   587,   604,   621,   638,   655,   670,
+     685,   698,   713,   722,   731,   740,   749,   758,   767,   776,
+     785,   794,   803,   812,   821,   830,   839,   852,   861,   874,
+     883,   892,   901,   908,   915,   924,   931,   940,   948,   955,
+     962,   970,   979,   986,  1002,  1010,  1018,  1026,  1034,  1043,
+    1052,  1066,  1075,  1084,  1093,  1102,  1111,  1120,  1127,  1134,
+    1160,  1168,  1175,  1182,  1189,  1196,  1204,  1212,  1220,  1227,
+    1238,  1249,  1256,  1265,  1274,  1283,  1290,  1297,  1305,  1313,
+    1323,  1333,  1343,  1357,  1365,  1378,  1389,  1397,  1410,  1419,
+    1428,  1437,  1447,  1457,  1465,  1478,  1487,  1495,  1504,  1512,
+    1525,  1534,  1541,  1551,  1561,  1571,  1581,  1591,  1601,  1611,
+    1621,  1628,  1635,  1642,  1651,  1660,  1669,  1678,  1685,  1695,
+    1715,  1722,  1740,  1753,  1766,  1775,  1784,  1793,  1802,  1812,
+    1822,  1833,  1842,  1851,  1860,  1869,  1878,  1887,  1900,  1913,
+    1922,  1929,  1938,  1947,  1956,  1965,  1973,  1986,  1994,  2035,
+    2042,  2057,  2067,  2077,  2084,  2091,  2098,  2107,  2115,  2129,
+    2150,  2171,  2183,  2195,  2207,  2216,  2237,  2247,  2256,  2264,
+    2272,  2285,  2298,  2313,  2328,  2337,  2346,  2352,  2361,  2370,
+    2380,  2390,  2403,  2416,  2428,  2442,  2454,  2468,  2483,  2494,
+    2504,  2511,  2518,  2527,  2536,  2546,  2556,  2566,  2573,  2580,
+    2589,  2598,  2608,  2618,  2625,  2632,  2639,  2647,  2657,  2667,
+    2677,  2687,  2726,  2736,  2744,  2752,  2767,  2776,  2781,  2782,
+    2783,  2783,  2783,  2784,  2784,  2784,  2785,  2785,  2787,  2797,
+    2806,  2813,  2820,  2827,  2834,  2841,  2848,  2853,  2854,  2855,
+    2855,  2855,  2856,  2856,  2856,  2857,  2858,  2858,  2859,  2859,
+    2860,  2860,  2861,  2862,  2863,  2864,  2865,  2866,  2868,  2877,
+    2887,  2894,  2901,  2910,  2917,  2924,  2931,  2938,  2947,  2956,
+    2963,  2970,  2980,  2990,  3000,  3010,  3020,  3030,  3035,  3036,
+    3037,  3039,  3045,  3050,  3051,  3052,  3054,  3060,  3070,  3077,
+    3086,  3094,  3099,  3100,  3102,  3102,  3102,  3103,  3103,  3104,
+    3105,  3106,  3107,  3108,  3110,  3120,  3129,  3136,  3145,  3152,
+    3161,  3169,  3182,  3190,  3203,  3208,  3209,  3210,  3210,  3211,
+    3211,  3211,  3212,  3214,  3226,  3238,  3250,  3265,  3278,  3291,
+    3302,  3307,  3308,  3309,  3309,  3311,  3326
 };
 #endif
 
@@ -1333,17 +1335,18 @@ static const char *const yytname[] =
   "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS",
   "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE",
   "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME",
-  "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", "$accept",
-  "toplevelvars", "toplevelvar", "force_toplevel", "serverstart",
-  "contents_server", "content_server", "stubstart", "contents_stub",
-  "content_stub", "forwardstart", "contents_forward", "content_forward",
-  "viewstart", "contents_view", "content_view", "authstart",
-  "contents_auth", "content_auth", "rpz_tag", "rpz_action_override",
-  "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart",
-  "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity",
-  "server_statistics_interval", "server_statistics_cumulative",
-  "server_extended_statistics", "server_shm_enable", "server_shm_key",
-  "server_port", "server_send_client_subnet", "server_client_subnet_zone",
+  "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG",
+  "VAR_EDNS_CLIENT_TAG_OPCODE", "$accept", "toplevelvars", "toplevelvar",
+  "force_toplevel", "serverstart", "contents_server", "content_server",
+  "stubstart", "contents_stub", "content_stub", "forwardstart",
+  "contents_forward", "content_forward", "viewstart", "contents_view",
+  "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag",
+  "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name",
+  "rpzstart", "contents_rpz", "content_rpz", "server_num_threads",
+  "server_verbosity", "server_statistics_interval",
+  "server_statistics_cumulative", "server_extended_statistics",
+  "server_shm_enable", "server_shm_key", "server_port",
+  "server_send_client_subnet", "server_client_subnet_zone",
   "server_client_subnet_always_forward", "server_client_subnet_opcode",
   "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
   "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
@@ -1425,12 +1428,12 @@ static const char *const yytname[] =
   "server_qname_minimisation_strict", "server_ipsecmod_enabled",
   "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
   "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
-  "server_ipsecmod_strict", "server_edns_client_tag", "stub_name",
-  "stub_host", "stub_addr", "stub_first", "stub_no_cache",
-  "stub_ssl_upstream", "stub_prime", "forward_name", "forward_host",
-  "forward_addr", "forward_first", "forward_no_cache",
-  "forward_ssl_upstream", "auth_name", "auth_zonefile", "auth_master",
-  "auth_url", "auth_allow_notify", "auth_for_downstream",
+  "server_ipsecmod_strict", "server_edns_client_tag",
+  "server_edns_client_tag_opcode", "stub_name", "stub_host", "stub_addr",
+  "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime",
+  "forward_name", "forward_host", "forward_addr", "forward_first",
+  "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile",
+  "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream",
   "auth_for_upstream", "auth_fallback_enabled", "view_name",
   "view_local_zone", "view_response_ip", "view_response_ip_data",
   "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
@@ -1500,7 +1503,7 @@ static const yytype_int16 yytoknum[] =
      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
+     545,   546,   547,   548,   549,   550,   551,   552,   553,   554
 };
 # endif
 
@@ -1542,7 +1545,7 @@ static const yytype_int16 yypact[] =
      251,   253,   254,   255,   256,   257,   258,   259,   260,   261,
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   277,   278,   279,   281,   282,   283,
-     285,   319,   320,   321,   322,   326,  -288,  -288,  -288,  -288,
+     285,   319,   320,   321,   322,   326,   327,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
@@ -1562,55 +1565,55 @@ static const yytype_int16 yypact[] =
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   327,   328,
-     370,   371,   372,   373,   374,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,   375,   376,   377,   378,   382,   386,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,   387,   412,   413,   414,
-     422,   433,   434,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,   435,   436,   437,   438,   439,   440,   441,   442,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   443,   444,
-     445,   446,   447,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,   448,   449,   450,   451,   452,   492,
-     494,   510,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,   511,   512,   513,   514,   515,   516,   517,   518,   519,
-     520,   527,   528,   529,   530,   531,   532,   533,   535,   536,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+     328,   370,   371,   372,   373,   374,   375,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,   376,   377,   378,   382,   386,
+     387,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   412,   413,
+     414,   422,   433,   434,   435,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,   436,   437,   438,   439,   440,   441,   442,
+     443,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+     444,   445,   446,   447,   448,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,   449,   450,   451,   452,
+     492,   494,   510,   511,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,   512,   513,   514,   515,   516,   517,   518,
+     519,   520,   527,   528,   529,   530,   531,   532,   533,   535,
+     536,   537,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-     537,  -288,  -288,   538,  -288,  -288,   539,   540,   541,   544,
-     547,   550,   551,   560,   561,   562,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,   564,   565,   566,
-     567,   568,   569,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-     570,   571,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,   538,  -288,  -288,   539,  -288,  -288,   540,   541,
+     544,   547,   550,   551,   560,   561,   562,   564,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   565,
+     566,   567,   568,   569,   570,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,   571,   574,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,   573,   574,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,   575,   576,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   575,   576,
-     577,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,   578,   579,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,   580,   581,   582,   583,   584,   585,  -288,  -288,
+     577,   578,   579,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,   580,   581,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,   582,   583,   584,   585,   586,   587,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,   586,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,   587,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-     588,  -288,  -288,   589,   590,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,   588,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,   589,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,   590,  -288,  -288,   591,   592,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,   591,   592,   593,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,  -288
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,   593,   594,
+     595,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1618,10 +1621,10 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_int16 yydefact[] =
 {
-       2,     0,     1,    18,    19,   223,   233,   505,   565,   524,
-     242,   579,   602,   252,   618,   268,   570,     3,    17,    21,
-     225,   235,   244,   254,   270,   507,   526,   567,   572,   581,
-     604,   620,     4,     5,     6,    10,    14,    15,     8,     9,
+       2,     0,     1,    18,    19,   224,   234,   507,   567,   526,
+     243,   581,   604,   253,   620,   269,   572,     3,    17,    21,
+     226,   236,   245,   255,   271,   509,   528,   569,   574,   583,
+     606,   622,     4,     5,     6,    10,    14,    15,     8,     9,
        7,    16,    11,    12,    13,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1642,75 +1645,75 @@ static const yytype_int16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    20,    22,    23,    86,
-      89,    98,   192,   193,    24,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,    37,    77,    25,    90,    91,
-      48,    70,    85,    26,    27,    30,    31,    28,    29,    32,
-      33,    34,    35,    36,   121,   204,   122,   124,   125,   126,
-     206,   211,   207,   218,   219,   220,   221,   127,   128,   129,
-     130,   131,   132,   188,    87,    76,   102,   119,   120,   216,
-     213,   123,    38,    39,    40,    41,    42,    78,    92,    93,
-     108,    64,    74,    65,   196,   197,   103,    58,    59,   195,
-      60,    61,   112,   116,   136,   145,   171,   148,   217,   113,
-      71,    43,    44,    45,   100,   137,   138,   139,    46,    47,
-      49,    50,    52,    53,    51,   143,    54,    55,    56,    62,
-      81,   117,    95,   144,    88,   167,    96,    97,   114,   115,
-     214,   101,    57,    79,    82,    63,    66,   104,   105,    80,
-     168,   106,    67,    68,    69,   205,   118,   181,   182,   183,
-     184,   185,   186,   194,   107,    75,   109,   110,   111,   169,
-      72,    73,    94,    83,    84,    99,   133,   134,   215,   135,
-     140,   141,   142,   172,   173,   175,   177,   178,   176,   179,
-     189,   146,   147,   151,   152,   149,   150,   153,   154,   156,
-     155,   208,   210,   209,   170,   180,   198,   200,   199,   201,
-     202,   203,   222,   174,   187,   190,   191,   212,     0,     0,
-       0,     0,     0,     0,     0,   224,   226,   227,   228,   230,
-     231,   232,   229,     0,     0,     0,     0,     0,     0,   234,
-     236,   237,   238,   239,   240,   241,     0,     0,     0,     0,
-       0,     0,     0,   243,   245,   246,   249,   250,   247,   251,
-     248,     0,     0,     0,     0,     0,     0,     0,     0,   253,
-     255,   256,   257,   258,   262,   259,   260,   261,     0,     0,
-       0,     0,     0,   273,   277,   278,   279,   280,   269,   271,
-     272,   274,   275,   276,     0,     0,     0,     0,     0,     0,
-       0,     0,   506,   508,   510,   509,   515,   511,   512,   513,
-     514,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    20,    22,    23,
+      86,    89,    98,   192,   193,    24,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,    37,    77,    25,    90,
+      91,    48,    70,    85,    26,    27,    30,    31,    28,    29,
+      32,    33,    34,    35,    36,   121,   204,   122,   124,   125,
+     126,   206,   211,   207,   218,   219,   220,   221,   127,   128,
+     129,   130,   131,   132,   188,    87,    76,   102,   119,   120,
+     216,   213,   123,    38,    39,    40,    41,    42,    78,    92,
+      93,   108,    64,    74,    65,   196,   197,   103,    58,    59,
+     195,    60,    61,   112,   116,   136,   145,   171,   148,   217,
+     113,    71,    43,    44,    45,   100,   137,   138,   139,    46,
+      47,    49,    50,    52,    53,    51,   143,    54,    55,    56,
+      62,    81,   117,    95,   144,    88,   167,    96,    97,   114,
+     115,   214,   101,    57,    79,    82,    63,    66,   104,   105,
+      80,   168,   106,    67,    68,    69,   205,   118,   181,   182,
+     183,   184,   185,   186,   194,   107,    75,   109,   110,   111,
+     169,    72,    73,    94,    83,    84,    99,   133,   134,   215,
+     135,   140,   141,   142,   172,   173,   175,   177,   178,   176,
+     179,   189,   146,   147,   151,   152,   149,   150,   153,   154,
+     156,   155,   208,   210,   209,   170,   180,   198,   200,   199,
+     201,   202,   203,   222,   223,   174,   187,   190,   191,   212,
+       0,     0,     0,     0,     0,     0,     0,   225,   227,   228,
+     229,   231,   232,   233,   230,     0,     0,     0,     0,     0,
+       0,   235,   237,   238,   239,   240,   241,   242,     0,     0,
+       0,     0,     0,     0,     0,   244,   246,   247,   250,   251,
+     248,   252,   249,     0,     0,     0,     0,     0,     0,     0,
+       0,   254,   256,   257,   258,   259,   263,   260,   261,   262,
+       0,     0,     0,     0,     0,   274,   278,   279,   280,   281,
+     270,   272,   273,   275,   276,   277,     0,     0,     0,     0,
+       0,     0,     0,     0,   508,   510,   512,   511,   517,   513,
+     514,   515,   516,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     525,   527,   529,   528,   530,   531,   532,   533,   534,   535,
+       0,     0,   527,   529,   531,   530,   532,   533,   534,   535,
      536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
-       0,   566,   568,     0,   571,   573,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   580,   582,   583,   584,
-     586,   587,   585,   588,   589,   590,   591,     0,     0,     0,
-       0,     0,     0,   603,   605,   606,   607,   608,   609,   610,
-       0,     0,   619,   621,   622,   282,   281,   288,   301,   299,
-     311,   307,   308,   312,   309,   310,   313,   314,   315,   316,
-     317,   346,   347,   348,   349,   350,   375,   376,   377,   382,
-     383,   304,   384,   385,   388,   386,   387,   390,   391,   392,
-     406,   361,   362,   364,   365,   393,   409,   355,   357,   410,
-     416,   417,   418,   305,   374,   434,   435,   356,   429,   339,
-     300,   351,   407,   413,   394,     0,     0,   438,   306,   283,
-     338,   398,   284,   302,   303,   352,   353,   436,   396,   400,
-     401,   285,   439,   378,   405,   340,   360,   411,   412,   415,
-     428,   354,   432,   430,   431,   366,   373,   402,   403,   367,
-     368,   395,   420,   341,   342,   345,   318,   320,   321,   322,
-     323,   324,   331,   332,   333,   334,   335,   336,   440,   441,
-     443,   379,   380,   381,   389,   444,   445,   446,     0,     0,
-       0,   397,   369,   371,   575,   455,   459,   457,   456,   460,
-     458,     0,     0,   463,   464,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   399,   414,   433,   468,   469,
-     370,   447,     0,     0,     0,     0,     0,     0,   421,   422,
-     423,   424,   425,   426,   427,   576,   363,   358,   419,   337,
-     286,   287,   359,   470,   472,   471,   473,   474,   475,   319,
-     326,   465,   467,   466,   325,     0,   344,   404,   442,   343,
-     372,   327,   328,   330,   329,     0,   477,   478,   479,   483,
-     482,   480,   481,   484,   485,   486,   487,   489,   488,   498,
-       0,   502,   503,     0,     0,   504,   490,   496,   491,   492,
-     493,   495,   497,   494,   263,   264,   265,   266,   267,   516,
-     518,   517,   520,   521,   522,   523,   519,   546,   548,   549,
-     550,   551,   552,   553,   554,   555,   556,   547,   557,   558,
-     559,   560,   561,   562,   563,   564,   569,   574,   592,   593,
-     594,   597,   595,   596,   598,   599,   600,   601,   611,   612,
-     613,   614,   615,   616,   623,   624,   408,   437,   454,   577,
-     578,   461,   462,   448,   449,     0,     0,     0,   453,   617,
-     476,   499,   500,   501,   452,   450,   451
+     546,   547,     0,   568,   570,     0,   573,   575,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   582,   584,
+     585,   586,   588,   589,   587,   590,   591,   592,   593,     0,
+       0,     0,     0,     0,     0,   605,   607,   608,   609,   610,
+     611,   612,     0,     0,   621,   623,   624,   283,   282,   289,
+     302,   300,   312,   308,   309,   313,   310,   311,   314,   315,
+     316,   317,   318,   347,   348,   349,   350,   351,   376,   377,
+     378,   383,   384,   305,   385,   386,   389,   387,   388,   391,
+     392,   393,   407,   362,   363,   365,   366,   394,   410,   356,
+     358,   411,   417,   418,   419,   306,   375,   435,   436,   357,
+     430,   340,   301,   352,   408,   414,   395,     0,     0,   439,
+     307,   284,   339,   399,   285,   303,   304,   353,   354,   437,
+     397,   401,   402,   286,   440,   379,   406,   341,   361,   412,
+     413,   416,   429,   355,   433,   431,   432,   367,   374,   403,
+     404,   368,   369,   396,   421,   342,   343,   346,   319,   321,
+     322,   323,   324,   325,   332,   333,   334,   335,   336,   337,
+     441,   442,   444,   380,   381,   382,   390,   445,   446,   447,
+       0,     0,     0,   398,   370,   372,   577,   456,   460,   458,
+     457,   461,   459,     0,     0,   464,   465,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   400,   415,   434,
+     469,   470,   371,   448,     0,     0,     0,     0,     0,     0,
+     422,   423,   424,   425,   426,   427,   428,   578,   364,   359,
+     420,   338,   287,   288,   360,   471,   473,   472,   474,   475,
+     476,   320,   327,   466,   468,   467,   326,     0,   345,   405,
+     443,   344,   373,   328,   329,   331,   330,     0,   478,   479,
+     480,   481,   485,   484,   482,   483,   486,   487,   488,   489,
+     491,   490,   500,     0,   504,   505,     0,     0,   506,   492,
+     498,   493,   494,   495,   497,   499,   496,   264,   265,   266,
+     267,   268,   518,   520,   519,   522,   523,   524,   525,   521,
+     548,   550,   551,   552,   553,   554,   555,   556,   557,   558,
+     549,   559,   560,   561,   562,   563,   564,   565,   566,   571,
+     576,   594,   595,   596,   599,   597,   598,   600,   601,   602,
+     603,   613,   614,   615,   616,   617,   618,   625,   626,   409,
+     438,   455,   579,   580,   462,   463,   449,   450,     0,     0,
+       0,   454,   619,   477,   501,   502,   503,   453,   451,   452
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1739,8 +1742,8 @@ static const yytype_int16 yypgoto[] =
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288,  -288,  -288,   572,   594,   595,   596,
-     597,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
+    -288,  -288,  -288,  -288,  -288,  -288,  -288,   572,   573,   596,
+     597,   598,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
@@ -1748,45 +1751,45 @@ static const yytype_int16 yypgoto[] =
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
     -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,  -288,
-    -288,  -288,  -288,  -288
+    -288,  -288,  -288,  -288,  -288
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    17,    18,    19,    32,   246,    20,    33,   455,
-      21,    34,   469,    22,    35,   483,    23,    36,   499,   513,
-     514,   515,   516,   517,    24,    37,   518,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
-     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
-     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
-     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
-     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
-     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
-     440,   441,   442,   456,   457,   458,   459,   460,   461,   462,
-     470,   471,   472,   473,   474,   475,   500,   501,   502,   503,
-     504,   505,   506,   507,   484,   485,   486,   487,   488,   489,
-     490,    25,    38,   532,   533,   534,   535,   536,   537,   538,
-     539,   540,    26,    39,   560,   561,   562,   563,   564,   565,
-     566,   567,   568,   569,   570,   571,   572,   573,   574,   575,
-     576,   577,   578,   579,    27,    40,   581,   582,    28,    41,
-     584,   585,   443,   444,   445,   446,    29,    42,   596,   597,
-     598,   599,   600,   601,   602,   603,   604,   605,   606,    30,
-      43,   613,   614,   615,   616,   617,   618,   619,   447,    31,
-      44,   622,   623,   624
+      -1,     1,    17,    18,    19,    32,   247,    20,    33,   457,
+      21,    34,   471,    22,    35,   485,    23,    36,   501,   515,
+     516,   517,   518,   519,    24,    37,   520,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
+     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
+     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
+     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
+     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
+     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
+     411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
+     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
+     431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
+     441,   442,   443,   444,   458,   459,   460,   461,   462,   463,
+     464,   472,   473,   474,   475,   476,   477,   502,   503,   504,
+     505,   506,   507,   508,   509,   486,   487,   488,   489,   490,
+     491,   492,    25,    38,   534,   535,   536,   537,   538,   539,
+     540,   541,   542,    26,    39,   562,   563,   564,   565,   566,
+     567,   568,   569,   570,   571,   572,   573,   574,   575,   576,
+     577,   578,   579,   580,   581,    27,    40,   583,   584,    28,
+      41,   586,   587,   445,   446,   447,   448,    29,    42,   598,
+     599,   600,   601,   602,   603,   604,   605,   606,   607,   608,
+      30,    43,   615,   616,   617,   618,   619,   620,   621,   449,
+      31,    44,   624,   625,   626
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1794,70 +1797,70 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-       2,   491,   476,   448,   580,   449,   450,   463,   620,   621,
-     583,     3,     4,   625,   626,   464,   465,   607,   608,   609,
-     610,   611,   612,   627,   491,   586,   587,   588,   589,   590,
-     591,   592,   593,   594,   595,   628,   629,   630,   477,   478,
-     631,   632,   633,   634,   635,   636,     5,   637,   638,   639,
-     640,   641,     6,   642,   643,   644,   645,   646,   647,   648,
-     649,   650,   651,   479,   652,   653,   451,   541,   542,   543,
-     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-     554,   555,   556,   557,   558,   559,   524,   525,   526,   527,
-     528,   529,   530,   531,   654,   655,     7,   452,   656,   657,
-     466,   658,   467,   659,   660,   661,   453,   662,   663,   664,
-     665,   666,     8,   667,   668,   669,   670,   671,   672,   673,
-     674,   675,   676,   677,   678,   679,   680,   681,   682,   683,
-     684,   685,   686,   687,   688,   689,   690,   480,   481,   691,
-     692,   693,   694,   695,   696,   697,   698,   699,   700,   701,
-     702,   703,   704,   705,   706,   707,   708,   709,   710,     9,
-     711,   712,   713,   714,   715,   716,   717,   718,   719,   720,
-     721,   722,   723,   724,   725,   726,   727,   482,   728,   729,
-     730,   731,   732,   733,   734,   735,   736,   737,   738,   739,
-     740,   741,   742,   743,   744,   745,   746,   747,   748,   749,
-     750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
-     760,   761,   762,   763,   764,   765,   766,   767,    10,   493,
-     494,   495,   768,   769,   770,   771,   772,   773,   774,   498,
-     775,   776,   777,   778,   779,   454,    11,   780,   468,   781,
-     492,   782,   493,   494,   495,   496,   497,   508,   509,   510,
-     511,   512,   498,    12,   783,   784,   785,   786,   787,   788,
-     789,   790,    13,   791,   792,   793,   794,   795,   796,   797,
-     798,   799,   800,   801,   802,   803,   804,   805,   806,   807,
-     808,   809,   810,   811,   812,   813,    14,   814,   815,   816,
-      15,   817,   818,   819,     0,   820,    16,    45,    46,    47,
+       2,   493,   478,   450,   582,   451,   452,   465,   622,   623,
+     585,     3,     4,   627,   628,   466,   467,   609,   610,   611,
+     612,   613,   614,   629,   493,   588,   589,   590,   591,   592,
+     593,   594,   595,   596,   597,   630,   631,   632,   479,   480,
+     633,   634,   635,   636,   637,   638,     5,   639,   640,   641,
+     642,   643,     6,   644,   645,   646,   647,   648,   649,   650,
+     651,   652,   653,   481,   654,   655,   453,   543,   544,   545,
+     546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
+     556,   557,   558,   559,   560,   561,   526,   527,   528,   529,
+     530,   531,   532,   533,   656,   657,     7,   454,   658,   659,
+     468,   660,   469,   661,   662,   663,   455,   664,   665,   666,
+     667,   668,     8,   669,   670,   671,   672,   673,   674,   675,
+     676,   677,   678,   679,   680,   681,   682,   683,   684,   685,
+     686,   687,   688,   689,   690,   691,   692,   482,   483,   693,
+     694,   695,   696,   697,   698,   699,   700,   701,   702,   703,
+     704,   705,   706,   707,   708,   709,   710,   711,   712,     9,
+     713,   714,   715,   716,   717,   718,   719,   720,   721,   722,
+     723,   724,   725,   726,   727,   728,   729,   484,   730,   731,
+     732,   733,   734,   735,   736,   737,   738,   739,   740,   741,
+     742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
+     752,   753,   754,   755,   756,   757,   758,   759,   760,   761,
+     762,   763,   764,   765,   766,   767,   768,   769,    10,   495,
+     496,   497,   770,   771,   772,   773,   774,   775,   776,   500,
+     777,   778,   779,   780,   781,   456,    11,   782,   470,   783,
+     494,   784,   495,   496,   497,   498,   499,   510,   511,   512,
+     513,   514,   500,    12,   785,   786,   787,   788,   789,   790,
+     791,   792,    13,   793,   794,   795,   796,   797,   798,   799,
+     800,   801,   802,   803,   804,   805,   806,   807,   808,   809,
+     810,   811,   812,   813,   814,   815,    14,   816,   817,   818,
+      15,   819,   820,   821,     0,   822,    16,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,   821,
-     822,   823,   824,    77,    78,    79,   825,   826,   827,    80,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,   823,
+     824,   825,   826,    77,    78,    79,   827,   828,   829,    80,
       81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     828,   829,   830,   831,   832,   833,   834,   835,   836,   121,
-     122,   123,   837,   124,   125,   126,   838,   839,   127,   128,
+     830,   831,   832,   833,   834,   835,   836,   837,   838,   121,
+     122,   123,   839,   124,   125,   126,   840,   841,   127,   128,
      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   840,   841,   842,   151,   152,   153,   154,   155,
-     156,   157,   843,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   844,   845,   846,   847,   848,   849,   850,
-     851,   852,   853,   854,   855,   856,   857,   858,   859,   860,
-     861,   862,   863,   168,   169,   170,   171,   172,   173,   174,
+     149,   150,   842,   843,   844,   151,   152,   153,   154,   155,
+     156,   157,   845,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   846,   847,   848,   849,   850,   851,   852,
+     853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
+     863,   864,   865,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   864,   207,   865,   208,   209,   210,   211,   212,
+     205,   206,   866,   207,   867,   208,   209,   210,   211,   212,
      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     866,   867,   868,   869,   870,   871,   872,   873,   874,   875,
-     876,   223,   224,   225,   226,   227,   228,   877,   878,   879,
-     880,   881,   882,   883,   229,   884,   885,   886,   887,   888,
-     889,   890,   230,   231,   891,   232,   233,   892,   234,   235,
-     893,   894,   236,   237,   238,   239,   240,   241,   242,   243,
-     895,   896,   897,   244,   898,   899,   900,   901,   902,   903,
-     904,   905,   245,   906,   907,   908,   909,   910,   911,   912,
-     913,   914,   915,   916,   917,   918,   919,   920,   921,   922,
-     923,   924,   925,   926,     0,     0,     0,     0,     0,   519,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     868,   869,   870,   871,   872,   873,   874,   875,   876,   877,
+     878,   223,   224,   225,   226,   227,   228,   879,   880,   881,
+     882,   883,   884,   885,   229,   886,   887,   888,   889,   890,
+     891,   892,   230,   231,   893,   232,   233,   894,   234,   235,
+     895,   896,   236,   237,   238,   239,   240,   241,   242,   243,
+     897,   898,   899,   244,   900,   901,   902,   903,   904,   905,
+     906,   907,   245,   246,   908,   909,   910,   911,   912,   913,
+     914,   915,   916,   917,   918,   919,   920,   921,   922,   923,
+     924,   925,   926,   927,   928,   929,     0,     0,     0,   521,
+     522,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   520,   521,   522,   523
+       0,     0,     0,   523,   524,   525
 };
 
 static const yytype_int16 yycheck[] =
@@ -1920,23 +1923,23 @@ static const yytype_int16 yycheck[] =
       10,    10,   268,   269,    10,   271,   272,    10,   274,   275,
       10,    10,   278,   279,   280,   281,   282,   283,   284,   285,
       10,    10,    10,   289,    10,    10,    10,    10,    10,    10,
-      10,    10,   298,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,   298,   299,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    -1,    -1,    -1,    -1,    -1,    37,
+      10,    10,    10,    10,    10,    10,    -1,    -1,    -1,    37,
+      37,    -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,    37,    37,    37,    37
+      -1,    -1,    -1,    37,    37,    37
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_int16 yystos[] =
 {
-       0,   300,     0,    11,    12,    46,    52,    96,   112,   159,
-     218,   236,   253,   262,   286,   290,   296,   301,   302,   303,
-     306,   309,   312,   315,   323,   550,   561,   583,   587,   595,
-     608,   618,   304,   307,   310,   313,   316,   324,   551,   562,
-     584,   588,   596,   609,   619,    13,    14,    15,    16,    17,
+       0,   301,     0,    11,    12,    46,    52,    96,   112,   159,
+     218,   236,   253,   262,   286,   290,   296,   302,   303,   304,
+     307,   310,   313,   316,   324,   552,   563,   585,   589,   597,
+     610,   620,   305,   308,   311,   314,   317,   325,   553,   564,
+     586,   590,   598,   611,   621,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    49,    50,    51,
@@ -1956,7 +1959,7 @@ static const yytype_int16 yystos[] =
      223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
      233,   234,   235,   247,   248,   249,   250,   251,   252,   260,
      268,   269,   271,   272,   274,   275,   278,   279,   280,   281,
-     282,   283,   284,   285,   289,   298,   305,   326,   327,   328,
+     282,   283,   284,   285,   289,   298,   299,   306,   327,   328,
      329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
      339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
      349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
@@ -1976,25 +1979,25 @@ static const yytype_int16 yystos[] =
      489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
      499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
      509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
-     519,   520,   521,   591,   592,   593,   594,   617,    45,    47,
-      48,   108,   139,   148,   277,   308,   522,   523,   524,   525,
-     526,   527,   528,    45,    53,    54,   138,   140,   276,   311,
-     529,   530,   531,   532,   533,   534,    45,    81,    82,   106,
-     180,   181,   220,   314,   543,   544,   545,   546,   547,   548,
-     549,    45,   261,   263,   264,   265,   266,   267,   273,   317,
-     535,   536,   537,   538,   539,   540,   541,   542,   291,   292,
-     293,   294,   295,   318,   319,   320,   321,   322,   325,   535,
-     536,   537,   538,   539,    97,    98,    99,   100,   101,   102,
-     103,   104,   552,   553,   554,   555,   556,   557,   558,   559,
-     560,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
+     519,   520,   521,   522,   523,   593,   594,   595,   596,   619,
+      45,    47,    48,   108,   139,   148,   277,   309,   524,   525,
+     526,   527,   528,   529,   530,    45,    53,    54,   138,   140,
+     276,   312,   531,   532,   533,   534,   535,   536,    45,    81,
+      82,   106,   180,   181,   220,   315,   545,   546,   547,   548,
+     549,   550,   551,    45,   261,   263,   264,   265,   266,   267,
+     273,   318,   537,   538,   539,   540,   541,   542,   543,   544,
+     291,   292,   293,   294,   295,   319,   320,   321,   322,   323,
+     326,   537,   538,   539,   540,   541,    97,    98,    99,   100,
+     101,   102,   103,   104,   554,   555,   556,   557,   558,   559,
+     560,   561,   562,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   565,   566,   567,   568,   569,   570,   571,   572,
      573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
-     113,   585,   586,   297,   589,   590,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   597,   598,   599,   600,
-     601,   602,   603,   604,   605,   606,   607,   254,   255,   256,
-     257,   258,   259,   610,   611,   612,   613,   614,   615,   616,
-     287,   288,   620,   621,   622,    10,    10,    10,    10,    10,
+     583,   584,   113,   587,   588,   297,   591,   592,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   599,   600,
+     601,   602,   603,   604,   605,   606,   607,   608,   609,   254,
+     255,   256,   257,   258,   259,   612,   613,   614,   615,   616,
+     617,   618,   287,   288,   622,   623,   624,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -2024,41 +2027,41 @@ static const yytype_int16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int16 yyr1[] =
 {
-       0,   299,   300,   300,   301,   301,   301,   301,   301,   301,
-     301,   301,   301,   301,   301,   301,   301,   301,   302,   303,
-     304,   304,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
-     305,   305,   305,   306,   307,   307,   308,   308,   308,   308,
-     308,   308,   308,   309,   310,   310,   311,   311,   311,   311,
-     311,   311,   312,   313,   313,   314,   314,   314,   314,   314,
-     314,   314,   315,   316,   316,   317,   317,   317,   317,   317,
-     317,   317,   317,   318,   319,   320,   321,   322,   323,   324,
-     324,   325,   325,   325,   325,   325,   325,   325,   325,   325,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+       0,   300,   301,   301,   302,   302,   302,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   302,   302,   303,   304,
+     305,   305,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
+     306,   306,   306,   306,   307,   308,   308,   309,   309,   309,
+     309,   309,   309,   309,   310,   311,   311,   312,   312,   312,
+     312,   312,   312,   313,   314,   314,   315,   315,   315,   315,
+     315,   315,   315,   316,   317,   317,   318,   318,   318,   318,
+     318,   318,   318,   318,   319,   320,   321,   322,   323,   324,
+     325,   325,   326,   326,   326,   326,   326,   326,   326,   326,
+     326,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
@@ -2080,19 +2083,19 @@ static const yytype_int16 yyr1[] =
      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,   551,   552,   552,
-     552,   552,   552,   552,   552,   552,   553,   554,   555,   556,
-     557,   558,   559,   560,   561,   562,   562,   563,   563,   563,
-     563,   563,   563,   563,   563,   563,   563,   563,   563,   563,
-     563,   563,   563,   563,   563,   563,   564,   565,   566,   567,
+     545,   546,   547,   548,   549,   550,   551,   552,   553,   553,
+     554,   554,   554,   554,   554,   554,   554,   554,   555,   556,
+     557,   558,   559,   560,   561,   562,   563,   564,   564,   565,
+     565,   565,   565,   565,   565,   565,   565,   565,   565,   565,
+     565,   565,   565,   565,   565,   565,   565,   565,   566,   567,
      568,   569,   570,   571,   572,   573,   574,   575,   576,   577,
-     578,   579,   580,   581,   582,   583,   584,   584,   585,   586,
-     587,   588,   588,   589,   590,   591,   592,   593,   594,   595,
-     596,   596,   597,   597,   597,   597,   597,   597,   597,   597,
-     597,   597,   598,   599,   600,   601,   602,   603,   604,   605,
-     606,   607,   608,   609,   609,   610,   610,   610,   610,   610,
-     610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
-     619,   620,   620,   621,   622
+     578,   579,   580,   581,   582,   583,   584,   585,   586,   586,
+     587,   588,   589,   590,   590,   591,   592,   593,   594,   595,
+     596,   597,   598,   598,   599,   599,   599,   599,   599,   599,
+     599,   599,   599,   599,   600,   601,   602,   603,   604,   605,
+     606,   607,   608,   609,   610,   611,   611,   612,   612,   612,
+     612,   612,   612,   613,   614,   615,   616,   617,   618,   619,
+     620,   621,   621,   622,   622,   623,   624
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -2120,13 +2123,13 @@ static const yytype_int8 yyr2[] =
        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,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
        1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
        1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -2138,29 +2141,29 @@ static const yytype_int8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+       3,     4,     4,     4,     3,     3,     2,     2,     2,     2,
+       2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     3,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     3,
-       4,     4,     4,     3,     3,     2,     2,     2,     2,     2,
-       2,     3,     3,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       3,     3,     2,     2,     2,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     3,     3,     3,     2,     2,     2,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     2,
-       1,     2,     0,     1,     2,     2,     2,     3,     3,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     3,     1,     2,
-       0,     1,     1,     2,     2
+       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
+       1,     2,     1,     2,     0,     1,     2,     2,     2,     3,
+       3,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     3,
+       1,     2,     0,     1,     1,     2,     2
 };
 
 
@@ -2860,7 +2863,7 @@ yyreduce:
         {
                OUTYY(("\nP(force-toplevel)\n"));
        }
-#line 2864 "util/configparser.c"
+#line 2867 "util/configparser.c"
     break;
 
   case 19:
@@ -2868,11 +2871,11 @@ yyreduce:
         { 
                OUTYY(("\nP(server:)\n"));
        }
-#line 2872 "util/configparser.c"
+#line 2875 "util/configparser.c"
     break;
 
-  case 223:
-#line 297 "./util/configparser.y"
+  case 224:
+#line 298 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2883,11 +2886,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2887 "util/configparser.c"
+#line 2890 "util/configparser.c"
     break;
 
-  case 233:
-#line 314 "./util/configparser.y"
+  case 234:
+#line 315 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2898,11 +2901,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2902 "util/configparser.c"
+#line 2905 "util/configparser.c"
     break;
 
-  case 242:
-#line 331 "./util/configparser.y"
+  case 243:
+#line 332 "./util/configparser.y"
         {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2915,11 +2918,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2919 "util/configparser.c"
+#line 2922 "util/configparser.c"
     break;
 
-  case 252:
-#line 350 "./util/configparser.y"
+  case 253:
+#line 351 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n")); 
@@ -2935,11 +2938,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2939 "util/configparser.c"
+#line 2942 "util/configparser.c"
     break;
 
-  case 263:
-#line 374 "./util/configparser.y"
+  case 264:
+#line 375 "./util/configparser.y"
         {
                uint8_t* bitlist;
                size_t len = 0;
@@ -2956,11 +2959,11 @@ yyreduce:
 
                }
        }
-#line 2960 "util/configparser.c"
+#line 2963 "util/configparser.c"
     break;
 
-  case 264:
-#line 393 "./util/configparser.y"
+  case 265:
+#line 394 "./util/configparser.y"
         {
                OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
@@ -2975,21 +2978,21 @@ yyreduce:
                        cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
                }
        }
-#line 2979 "util/configparser.c"
+#line 2982 "util/configparser.c"
     break;
 
-  case 265:
-#line 410 "./util/configparser.y"
+  case 266:
+#line 411 "./util/configparser.y"
         {
                OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_cname);
                cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
        }
-#line 2989 "util/configparser.c"
+#line 2992 "util/configparser.c"
     break;
 
-  case 266:
-#line 418 "./util/configparser.y"
+  case 267:
+#line 419 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2997,21 +3000,21 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3001 "util/configparser.c"
+#line 3004 "util/configparser.c"
     break;
 
-  case 267:
-#line 428 "./util/configparser.y"
+  case 268:
+#line 429 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_log_name);
                cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
        }
-#line 3011 "util/configparser.c"
+#line 3014 "util/configparser.c"
     break;
 
-  case 268:
-#line 436 "./util/configparser.y"
+  case 269:
+#line 437 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
@@ -3027,11 +3030,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 3031 "util/configparser.c"
+#line 3034 "util/configparser.c"
     break;
 
-  case 281:
-#line 459 "./util/configparser.y"
+  case 282:
+#line 460 "./util/configparser.y"
         { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3039,11 +3042,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3043 "util/configparser.c"
+#line 3046 "util/configparser.c"
     break;
 
-  case 282:
-#line 468 "./util/configparser.y"
+  case 283:
+#line 469 "./util/configparser.y"
         { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3051,11 +3054,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3055 "util/configparser.c"
+#line 3058 "util/configparser.c"
     break;
 
-  case 283:
-#line 477 "./util/configparser.y"
+  case 284:
+#line 478 "./util/configparser.y"
         { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3065,11 +3068,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3069 "util/configparser.c"
+#line 3072 "util/configparser.c"
     break;
 
-  case 284:
-#line 488 "./util/configparser.y"
+  case 285:
+#line 489 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3077,11 +3080,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3081 "util/configparser.c"
+#line 3084 "util/configparser.c"
     break;
 
-  case 285:
-#line 497 "./util/configparser.y"
+  case 286:
+#line 498 "./util/configparser.y"
         {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3089,11 +3092,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3093 "util/configparser.c"
+#line 3096 "util/configparser.c"
     break;
 
-  case 286:
-#line 506 "./util/configparser.y"
+  case 287:
+#line 507 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3101,11 +3104,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3105 "util/configparser.c"
+#line 3108 "util/configparser.c"
     break;
 
-  case 287:
-#line 515 "./util/configparser.y"
+  case 288:
+#line 516 "./util/configparser.y"
         { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3115,11 +3118,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3119 "util/configparser.c"
+#line 3122 "util/configparser.c"
     break;
 
-  case 288:
-#line 526 "./util/configparser.y"
+  case 289:
+#line 527 "./util/configparser.y"
         {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3127,11 +3130,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3131 "util/configparser.c"
+#line 3134 "util/configparser.c"
     break;
 
-  case 289:
-#line 535 "./util/configparser.y"
+  case 290:
+#line 536 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -3142,11 +3145,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3146 "util/configparser.c"
+#line 3149 "util/configparser.c"
     break;
 
-  case 290:
-#line 547 "./util/configparser.y"
+  case 291:
+#line 548 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
@@ -3158,11 +3161,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3162 "util/configparser.c"
+#line 3165 "util/configparser.c"
     break;
 
-  case 291:
-#line 561 "./util/configparser.y"
+  case 292:
+#line 562 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -3176,11 +3179,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3180 "util/configparser.c"
+#line 3183 "util/configparser.c"
     break;
 
-  case 292:
-#line 576 "./util/configparser.y"
+  case 293:
+#line 577 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -3190,11 +3193,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3194 "util/configparser.c"
+#line 3197 "util/configparser.c"
     break;
 
-  case 293:
-#line 587 "./util/configparser.y"
+  case 294:
+#line 588 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3210,11 +3213,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3214 "util/configparser.c"
+#line 3217 "util/configparser.c"
     break;
 
-  case 294:
-#line 604 "./util/configparser.y"
+  case 295:
+#line 605 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3230,11 +3233,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3234 "util/configparser.c"
+#line 3237 "util/configparser.c"
     break;
 
-  case 295:
-#line 621 "./util/configparser.y"
+  case 296:
+#line 622 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3250,11 +3253,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3254 "util/configparser.c"
+#line 3257 "util/configparser.c"
     break;
 
-  case 296:
-#line 638 "./util/configparser.y"
+  case 297:
+#line 639 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3270,11 +3273,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3274 "util/configparser.c"
+#line 3277 "util/configparser.c"
     break;
 
-  case 297:
-#line 655 "./util/configparser.y"
+  case 298:
+#line 656 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3288,11 +3291,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3292 "util/configparser.c"
+#line 3295 "util/configparser.c"
     break;
 
-  case 298:
-#line 670 "./util/configparser.y"
+  case 299:
+#line 671 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3306,11 +3309,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3310 "util/configparser.c"
+#line 3313 "util/configparser.c"
     break;
 
-  case 299:
-#line 685 "./util/configparser.y"
+  case 300:
+#line 686 "./util/configparser.y"
         {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -3322,11 +3325,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 3326 "util/configparser.c"
+#line 3329 "util/configparser.c"
     break;
 
-  case 300:
-#line 698 "./util/configparser.y"
+  case 301:
+#line 699 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -3340,11 +3343,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 3344 "util/configparser.c"
+#line 3347 "util/configparser.c"
     break;
 
-  case 301:
-#line 713 "./util/configparser.y"
+  case 302:
+#line 714 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3352,11 +3355,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3356 "util/configparser.c"
+#line 3359 "util/configparser.c"
     break;
 
-  case 302:
-#line 722 "./util/configparser.y"
+  case 303:
+#line 723 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -3364,11 +3367,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3368 "util/configparser.c"
+#line 3371 "util/configparser.c"
     break;
 
-  case 303:
-#line 731 "./util/configparser.y"
+  case 304:
+#line 732 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -3376,11 +3379,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3380 "util/configparser.c"
+#line 3383 "util/configparser.c"
     break;
 
-  case 304:
-#line 740 "./util/configparser.y"
+  case 305:
+#line 741 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3388,11 +3391,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3392 "util/configparser.c"
+#line 3395 "util/configparser.c"
     break;
 
-  case 305:
-#line 749 "./util/configparser.y"
+  case 306:
+#line 750 "./util/configparser.y"
         {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3400,11 +3403,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3404 "util/configparser.c"
+#line 3407 "util/configparser.c"
     break;
 
-  case 306:
-#line 758 "./util/configparser.y"
+  case 307:
+#line 759 "./util/configparser.y"
         {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3412,11 +3415,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3416 "util/configparser.c"
+#line 3419 "util/configparser.c"
     break;
 
-  case 307:
-#line 767 "./util/configparser.y"
+  case 308:
+#line 768 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3424,11 +3427,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3428 "util/configparser.c"
+#line 3431 "util/configparser.c"
     break;
 
-  case 308:
-#line 776 "./util/configparser.y"
+  case 309:
+#line 777 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3436,11 +3439,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3440 "util/configparser.c"
+#line 3443 "util/configparser.c"
     break;
 
-  case 309:
-#line 785 "./util/configparser.y"
+  case 310:
+#line 786 "./util/configparser.y"
         {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3448,11 +3451,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3452 "util/configparser.c"
+#line 3455 "util/configparser.c"
     break;
 
-  case 310:
-#line 794 "./util/configparser.y"
+  case 311:
+#line 795 "./util/configparser.y"
         {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3460,11 +3463,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3464 "util/configparser.c"
+#line 3467 "util/configparser.c"
     break;
 
-  case 311:
-#line 803 "./util/configparser.y"
+  case 312:
+#line 804 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3472,11 +3475,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3476 "util/configparser.c"
+#line 3479 "util/configparser.c"
     break;
 
-  case 312:
-#line 812 "./util/configparser.y"
+  case 313:
+#line 813 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3484,11 +3487,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3488 "util/configparser.c"
+#line 3491 "util/configparser.c"
     break;
 
-  case 313:
-#line 821 "./util/configparser.y"
+  case 314:
+#line 822 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3496,11 +3499,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 3500 "util/configparser.c"
+#line 3503 "util/configparser.c"
     break;
 
-  case 314:
-#line 830 "./util/configparser.y"
+  case 315:
+#line 831 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3508,11 +3511,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3512 "util/configparser.c"
+#line 3515 "util/configparser.c"
     break;
 
-  case 315:
-#line 839 "./util/configparser.y"
+  case 316:
+#line 840 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3524,11 +3527,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3528 "util/configparser.c"
+#line 3531 "util/configparser.c"
     break;
 
-  case 316:
-#line 852 "./util/configparser.y"
+  case 317:
+#line 853 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3536,11 +3539,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3540 "util/configparser.c"
+#line 3543 "util/configparser.c"
     break;
 
-  case 317:
-#line 861 "./util/configparser.y"
+  case 318:
+#line 862 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3552,11 +3555,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3556 "util/configparser.c"
+#line 3559 "util/configparser.c"
     break;
 
-  case 318:
-#line 874 "./util/configparser.y"
+  case 319:
+#line 875 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3564,11 +3567,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3568 "util/configparser.c"
+#line 3571 "util/configparser.c"
     break;
 
-  case 319:
-#line 883 "./util/configparser.y"
+  case 320:
+#line 884 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3576,11 +3579,11 @@ yyreduce:
                else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3580 "util/configparser.c"
+#line 3583 "util/configparser.c"
     break;
 
-  case 320:
-#line 892 "./util/configparser.y"
+  case 321:
+#line 893 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3588,31 +3591,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3592 "util/configparser.c"
+#line 3595 "util/configparser.c"
     break;
 
-  case 321:
-#line 901 "./util/configparser.y"
+  case 322:
+#line 902 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 3602 "util/configparser.c"
+#line 3605 "util/configparser.c"
     break;
 
-  case 322:
-#line 908 "./util/configparser.y"
+  case 323:
+#line 909 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 3612 "util/configparser.c"
+#line 3615 "util/configparser.c"
     break;
 
-  case 323:
-#line 915 "./util/configparser.y"
+  case 324:
+#line 916 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3620,21 +3623,21 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3624 "util/configparser.c"
+#line 3627 "util/configparser.c"
     break;
 
-  case 324:
-#line 924 "./util/configparser.y"
+  case 325:
+#line 925 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
                cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
        }
-#line 3634 "util/configparser.c"
+#line 3637 "util/configparser.c"
     break;
 
-  case 325:
-#line 931 "./util/configparser.y"
+  case 326:
+#line 932 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3642,53 +3645,53 @@ yyreduce:
                else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3646 "util/configparser.c"
+#line 3649 "util/configparser.c"
     break;
 
-  case 326:
-#line 940 "./util/configparser.y"
+  case 327:
+#line 941 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3657 "util/configparser.c"
+#line 3660 "util/configparser.c"
     break;
 
-  case 327:
-#line 948 "./util/configparser.y"
+  case 328:
+#line 949 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphers);
                cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
        }
-#line 3667 "util/configparser.c"
+#line 3670 "util/configparser.c"
     break;
 
-  case 328:
-#line 955 "./util/configparser.y"
+  case 329:
+#line 956 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
                cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
        }
-#line 3677 "util/configparser.c"
+#line 3680 "util/configparser.c"
     break;
 
-  case 329:
-#line 962 "./util/configparser.y"
+  case 330:
+#line 963 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3688 "util/configparser.c"
+#line 3691 "util/configparser.c"
     break;
 
-  case 330:
-#line 970 "./util/configparser.y"
+  case 331:
+#line 971 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3696,22 +3699,22 @@ yyreduce:
                else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3700 "util/configparser.c"
+#line 3703 "util/configparser.c"
     break;
 
-  case 331:
-#line 979 "./util/configparser.y"
+  case 332:
+#line 980 "./util/configparser.y"
         {
                OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
                        yyerror("port number expected");
                else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
        }
-#line 3711 "util/configparser.c"
+#line 3714 "util/configparser.c"
     break;
 
-  case 332:
-#line 986 "./util/configparser.y"
+  case 333:
+#line 987 "./util/configparser.y"
         {
                OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_endpoint);
@@ -3727,11 +3730,11 @@ yyreduce:
                        cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
                }
        }
-#line 3731 "util/configparser.c"
+#line 3734 "util/configparser.c"
     break;
 
-  case 333:
-#line 1002 "./util/configparser.y"
+  case 334:
+#line 1003 "./util/configparser.y"
         {
                OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3739,11 +3742,11 @@ yyreduce:
                else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3743 "util/configparser.c"
+#line 3746 "util/configparser.c"
     break;
 
-  case 334:
-#line 1010 "./util/configparser.y"
+  case 335:
+#line 1011 "./util/configparser.y"
         {
                OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3751,11 +3754,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3755 "util/configparser.c"
+#line 3758 "util/configparser.c"
     break;
 
-  case 335:
-#line 1018 "./util/configparser.y"
+  case 336:
+#line 1019 "./util/configparser.y"
         {
                OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3763,11 +3766,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3767 "util/configparser.c"
+#line 3770 "util/configparser.c"
     break;
 
-  case 336:
-#line 1026 "./util/configparser.y"
+  case 337:
+#line 1027 "./util/configparser.y"
         {
                OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3775,11 +3778,11 @@ yyreduce:
                else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3779 "util/configparser.c"
+#line 3782 "util/configparser.c"
     break;
 
-  case 337:
-#line 1034 "./util/configparser.y"
+  case 338:
+#line 1035 "./util/configparser.y"
         {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3787,11 +3790,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3791 "util/configparser.c"
+#line 3794 "util/configparser.c"
     break;
 
-  case 338:
-#line 1043 "./util/configparser.y"
+  case 339:
+#line 1044 "./util/configparser.y"
         {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3799,11 +3802,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3803 "util/configparser.c"
+#line 3806 "util/configparser.c"
     break;
 
-  case 339:
-#line 1052 "./util/configparser.y"
+  case 340:
+#line 1053 "./util/configparser.y"
         {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3816,11 +3819,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3820 "util/configparser.c"
+#line 3823 "util/configparser.c"
     break;
 
-  case 340:
-#line 1066 "./util/configparser.y"
+  case 341:
+#line 1067 "./util/configparser.y"
         {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3828,11 +3831,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3832 "util/configparser.c"
+#line 3835 "util/configparser.c"
     break;
 
-  case 341:
-#line 1075 "./util/configparser.y"
+  case 342:
+#line 1076 "./util/configparser.y"
         {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3840,11 +3843,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3844 "util/configparser.c"
+#line 3847 "util/configparser.c"
     break;
 
-  case 342:
-#line 1084 "./util/configparser.y"
+  case 343:
+#line 1085 "./util/configparser.y"
   {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3852,11 +3855,11 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3856 "util/configparser.c"
+#line 3859 "util/configparser.c"
     break;
 
-  case 343:
-#line 1093 "./util/configparser.y"
+  case 344:
+#line 1094 "./util/configparser.y"
   {
        OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3864,11 +3867,11 @@ yyreduce:
        else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3868 "util/configparser.c"
+#line 3871 "util/configparser.c"
     break;
 
-  case 344:
-#line 1102 "./util/configparser.y"
+  case 345:
+#line 1103 "./util/configparser.y"
         {
                OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3876,11 +3879,11 @@ yyreduce:
                else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3880 "util/configparser.c"
+#line 3883 "util/configparser.c"
     break;
 
-  case 345:
-#line 1111 "./util/configparser.y"
+  case 346:
+#line 1112 "./util/configparser.y"
   {
        OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3888,31 +3891,31 @@ yyreduce:
        else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3892 "util/configparser.c"
+#line 3895 "util/configparser.c"
     break;
 
-  case 346:
-#line 1120 "./util/configparser.y"
+  case 347:
+#line 1121 "./util/configparser.y"
         {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 3902 "util/configparser.c"
+#line 3905 "util/configparser.c"
     break;
 
-  case 347:
-#line 1127 "./util/configparser.y"
+  case 348:
+#line 1128 "./util/configparser.y"
         {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 3912 "util/configparser.c"
+#line 3915 "util/configparser.c"
     break;
 
-  case 348:
-#line 1134 "./util/configparser.y"
+  case 349:
+#line 1135 "./util/configparser.y"
         {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -3937,105 +3940,105 @@ yyreduce:
                        }
                }
        }
-#line 3941 "util/configparser.c"
+#line 3944 "util/configparser.c"
     break;
 
-  case 349:
-#line 1160 "./util/configparser.y"
+  case 350:
+#line 1161 "./util/configparser.y"
         {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3952 "util/configparser.c"
+#line 3955 "util/configparser.c"
     break;
 
-  case 350:
-#line 1168 "./util/configparser.y"
+  case 351:
+#line 1169 "./util/configparser.y"
         {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 3962 "util/configparser.c"
+#line 3965 "util/configparser.c"
     break;
 
-  case 351:
-#line 1175 "./util/configparser.y"
+  case 352:
+#line 1176 "./util/configparser.y"
         {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3972 "util/configparser.c"
+#line 3975 "util/configparser.c"
     break;
 
-  case 352:
-#line 1182 "./util/configparser.y"
+  case 353:
+#line 1183 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3982 "util/configparser.c"
+#line 3985 "util/configparser.c"
     break;
 
-  case 353:
-#line 1189 "./util/configparser.y"
+  case 354:
+#line 1190 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3992 "util/configparser.c"
+#line 3995 "util/configparser.c"
     break;
 
-  case 354:
-#line 1196 "./util/configparser.y"
+  case 355:
+#line 1197 "./util/configparser.y"
         {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4003 "util/configparser.c"
+#line 4006 "util/configparser.c"
     break;
 
-  case 355:
-#line 1204 "./util/configparser.y"
+  case 356:
+#line 1205 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4014 "util/configparser.c"
+#line 4017 "util/configparser.c"
     break;
 
-  case 356:
-#line 1212 "./util/configparser.y"
+  case 357:
+#line 1213 "./util/configparser.y"
         {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4025 "util/configparser.c"
+#line 4028 "util/configparser.c"
     break;
 
-  case 357:
-#line 1220 "./util/configparser.y"
+  case 358:
+#line 1221 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4035 "util/configparser.c"
+#line 4038 "util/configparser.c"
     break;
 
-  case 358:
-#line 1227 "./util/configparser.y"
+  case 359:
+#line 1228 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4045,11 +4048,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4049 "util/configparser.c"
+#line 4052 "util/configparser.c"
     break;
 
-  case 359:
-#line 1238 "./util/configparser.y"
+  case 360:
+#line 1239 "./util/configparser.y"
         {
                OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4059,21 +4062,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4063 "util/configparser.c"
+#line 4066 "util/configparser.c"
     break;
 
-  case 360:
-#line 1249 "./util/configparser.y"
+  case 361:
+#line 1250 "./util/configparser.y"
         {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4073 "util/configparser.c"
+#line 4076 "util/configparser.c"
     break;
 
-  case 361:
-#line 1256 "./util/configparser.y"
+  case 362:
+#line 1257 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4081,11 +4084,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4085 "util/configparser.c"
+#line 4088 "util/configparser.c"
     break;
 
-  case 362:
-#line 1265 "./util/configparser.y"
+  case 363:
+#line 1266 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4093,11 +4096,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4097 "util/configparser.c"
+#line 4100 "util/configparser.c"
     break;
 
-  case 363:
-#line 1274 "./util/configparser.y"
+  case 364:
+#line 1275 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4105,53 +4108,53 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4109 "util/configparser.c"
+#line 4112 "util/configparser.c"
     break;
 
-  case 364:
-#line 1283 "./util/configparser.y"
+  case 365:
+#line 1284 "./util/configparser.y"
         {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 4119 "util/configparser.c"
+#line 4122 "util/configparser.c"
     break;
 
-  case 365:
-#line 1290 "./util/configparser.y"
+  case 366:
+#line 1291 "./util/configparser.y"
         {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 4129 "util/configparser.c"
+#line 4132 "util/configparser.c"
     break;
 
-  case 366:
-#line 1297 "./util/configparser.y"
+  case 367:
+#line 1298 "./util/configparser.y"
         {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4140 "util/configparser.c"
+#line 4143 "util/configparser.c"
     break;
 
-  case 367:
-#line 1305 "./util/configparser.y"
+  case 368:
+#line 1306 "./util/configparser.y"
         {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4151 "util/configparser.c"
+#line 4154 "util/configparser.c"
     break;
 
-  case 368:
-#line 1313 "./util/configparser.y"
+  case 369:
+#line 1314 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4160,11 +4163,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4164 "util/configparser.c"
+#line 4167 "util/configparser.c"
     break;
 
-  case 369:
-#line 1323 "./util/configparser.y"
+  case 370:
+#line 1324 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4173,11 +4176,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4177 "util/configparser.c"
+#line 4180 "util/configparser.c"
     break;
 
-  case 370:
-#line 1333 "./util/configparser.y"
+  case 371:
+#line 1334 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4186,11 +4189,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4190 "util/configparser.c"
+#line 4193 "util/configparser.c"
     break;
 
-  case 371:
-#line 1343 "./util/configparser.y"
+  case 372:
+#line 1344 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4203,22 +4206,22 @@ yyreduce:
                        cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4207 "util/configparser.c"
+#line 4210 "util/configparser.c"
     break;
 
-  case 372:
-#line 1357 "./util/configparser.y"
+  case 373:
+#line 1358 "./util/configparser.y"
         {
                OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4218 "util/configparser.c"
+#line 4221 "util/configparser.c"
     break;
 
-  case 373:
-#line 1365 "./util/configparser.y"
+  case 374:
+#line 1366 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4230,11 +4233,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4234 "util/configparser.c"
+#line 4237 "util/configparser.c"
     break;
 
-  case 374:
-#line 1378 "./util/configparser.y"
+  case 375:
+#line 1379 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4244,22 +4247,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4248 "util/configparser.c"
+#line 4251 "util/configparser.c"
     break;
 
-  case 375:
-#line 1389 "./util/configparser.y"
+  case 376:
+#line 1390 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4259 "util/configparser.c"
+#line 4262 "util/configparser.c"
     break;
 
-  case 376:
-#line 1397 "./util/configparser.y"
+  case 377:
+#line 1398 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4271,11 +4274,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4275 "util/configparser.c"
+#line 4278 "util/configparser.c"
     break;
 
-  case 377:
-#line 1410 "./util/configparser.y"
+  case 378:
+#line 1411 "./util/configparser.y"
         {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4283,11 +4286,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4287 "util/configparser.c"
+#line 4290 "util/configparser.c"
     break;
 
-  case 378:
-#line 1419 "./util/configparser.y"
+  case 379:
+#line 1420 "./util/configparser.y"
         {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4295,11 +4298,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4299 "util/configparser.c"
+#line 4302 "util/configparser.c"
     break;
 
-  case 379:
-#line 1428 "./util/configparser.y"
+  case 380:
+#line 1429 "./util/configparser.y"
         {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4307,11 +4310,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4311 "util/configparser.c"
+#line 4314 "util/configparser.c"
     break;
 
-  case 380:
-#line 1437 "./util/configparser.y"
+  case 381:
+#line 1438 "./util/configparser.y"
         {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4320,11 +4323,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4324 "util/configparser.c"
+#line 4327 "util/configparser.c"
     break;
 
-  case 381:
-#line 1447 "./util/configparser.y"
+  case 382:
+#line 1448 "./util/configparser.y"
         {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4333,22 +4336,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4337 "util/configparser.c"
+#line 4340 "util/configparser.c"
     break;
 
-  case 382:
-#line 1457 "./util/configparser.y"
+  case 383:
+#line 1458 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4348 "util/configparser.c"
+#line 4351 "util/configparser.c"
     break;
 
-  case 383:
-#line 1465 "./util/configparser.y"
+  case 384:
+#line 1466 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4360,11 +4363,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4364 "util/configparser.c"
+#line 4367 "util/configparser.c"
     break;
 
-  case 384:
-#line 1478 "./util/configparser.y"
+  case 385:
+#line 1479 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4372,22 +4375,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4376 "util/configparser.c"
+#line 4379 "util/configparser.c"
     break;
 
-  case 385:
-#line 1487 "./util/configparser.y"
+  case 386:
+#line 1488 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4387 "util/configparser.c"
+#line 4390 "util/configparser.c"
     break;
 
-  case 386:
-#line 1495 "./util/configparser.y"
+  case 387:
+#line 1496 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4395,22 +4398,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4399 "util/configparser.c"
+#line 4402 "util/configparser.c"
     break;
 
-  case 387:
-#line 1504 "./util/configparser.y"
+  case 388:
+#line 1505 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4410 "util/configparser.c"
+#line 4413 "util/configparser.c"
     break;
 
-  case 388:
-#line 1512 "./util/configparser.y"
+  case 389:
+#line 1513 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4422,11 +4425,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4426 "util/configparser.c"
+#line 4429 "util/configparser.c"
     break;
 
-  case 389:
-#line 1525 "./util/configparser.y"
+  case 390:
+#line 1526 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4434,21 +4437,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4438 "util/configparser.c"
+#line 4441 "util/configparser.c"
     break;
 
-  case 390:
-#line 1534 "./util/configparser.y"
+  case 391:
+#line 1535 "./util/configparser.y"
         {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 4448 "util/configparser.c"
+#line 4451 "util/configparser.c"
     break;
 
-  case 391:
-#line 1541 "./util/configparser.y"
+  case 392:
+#line 1542 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4457,11 +4460,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4461 "util/configparser.c"
+#line 4464 "util/configparser.c"
     break;
 
-  case 392:
-#line 1551 "./util/configparser.y"
+  case 393:
+#line 1552 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4470,11 +4473,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4474 "util/configparser.c"
+#line 4477 "util/configparser.c"
     break;
 
-  case 393:
-#line 1561 "./util/configparser.y"
+  case 394:
+#line 1562 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4483,11 +4486,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4487 "util/configparser.c"
+#line 4490 "util/configparser.c"
     break;
 
-  case 394:
-#line 1571 "./util/configparser.y"
+  case 395:
+#line 1572 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4496,11 +4499,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4500 "util/configparser.c"
+#line 4503 "util/configparser.c"
     break;
 
-  case 395:
-#line 1581 "./util/configparser.y"
+  case 396:
+#line 1582 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4509,11 +4512,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4513 "util/configparser.c"
+#line 4516 "util/configparser.c"
     break;
 
-  case 396:
-#line 1591 "./util/configparser.y"
+  case 397:
+#line 1592 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4522,11 +4525,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4526 "util/configparser.c"
+#line 4529 "util/configparser.c"
     break;
 
-  case 397:
-#line 1601 "./util/configparser.y"
+  case 398:
+#line 1602 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4535,11 +4538,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4539 "util/configparser.c"
+#line 4542 "util/configparser.c"
     break;
 
-  case 398:
-#line 1611 "./util/configparser.y"
+  case 399:
+#line 1612 "./util/configparser.y"
         {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4548,41 +4551,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4552 "util/configparser.c"
+#line 4555 "util/configparser.c"
     break;
 
-  case 399:
-#line 1621 "./util/configparser.y"
+  case 400:
+#line 1622 "./util/configparser.y"
         {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4562 "util/configparser.c"
+#line 4565 "util/configparser.c"
     break;
 
-  case 400:
-#line 1628 "./util/configparser.y"
+  case 401:
+#line 1629 "./util/configparser.y"
         {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4572 "util/configparser.c"
+#line 4575 "util/configparser.c"
     break;
 
-  case 401:
-#line 1635 "./util/configparser.y"
+  case 402:
+#line 1636 "./util/configparser.y"
         {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4582 "util/configparser.c"
+#line 4585 "util/configparser.c"
     break;
 
-  case 402:
-#line 1642 "./util/configparser.y"
+  case 403:
+#line 1643 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4590,11 +4593,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4594 "util/configparser.c"
+#line 4597 "util/configparser.c"
     break;
 
-  case 403:
-#line 1651 "./util/configparser.y"
+  case 404:
+#line 1652 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4602,11 +4605,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4606 "util/configparser.c"
+#line 4609 "util/configparser.c"
     break;
 
-  case 404:
-#line 1660 "./util/configparser.y"
+  case 405:
+#line 1661 "./util/configparser.y"
         {
                OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4614,11 +4617,11 @@ yyreduce:
                else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4618 "util/configparser.c"
+#line 4621 "util/configparser.c"
     break;
 
-  case 405:
-#line 1669 "./util/configparser.y"
+  case 406:
+#line 1670 "./util/configparser.y"
         {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4626,21 +4629,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4630 "util/configparser.c"
+#line 4633 "util/configparser.c"
     break;
 
-  case 406:
-#line 1678 "./util/configparser.y"
+  case 407:
+#line 1679 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4640 "util/configparser.c"
+#line 4643 "util/configparser.c"
     break;
 
-  case 407:
-#line 1685 "./util/configparser.y"
+  case 408:
+#line 1686 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4649,11 +4652,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4653 "util/configparser.c"
+#line 4656 "util/configparser.c"
     break;
 
-  case 408:
-#line 1695 "./util/configparser.y"
+  case 409:
+#line 1696 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -4672,21 +4675,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4676 "util/configparser.c"
+#line 4679 "util/configparser.c"
     break;
 
-  case 409:
-#line 1715 "./util/configparser.y"
+  case 410:
+#line 1716 "./util/configparser.y"
         {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 4686 "util/configparser.c"
+#line 4689 "util/configparser.c"
     break;
 
-  case 410:
-#line 1722 "./util/configparser.y"
+  case 411:
+#line 1723 "./util/configparser.y"
         {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4703,11 +4706,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4707 "util/configparser.c"
+#line 4710 "util/configparser.c"
     break;
 
-  case 411:
-#line 1740 "./util/configparser.y"
+  case 412:
+#line 1741 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4719,11 +4722,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4723 "util/configparser.c"
+#line 4726 "util/configparser.c"
     break;
 
-  case 412:
-#line 1753 "./util/configparser.y"
+  case 413:
+#line 1754 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4735,11 +4738,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4739 "util/configparser.c"
+#line 4742 "util/configparser.c"
     break;
 
-  case 413:
-#line 1766 "./util/configparser.y"
+  case 414:
+#line 1767 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4747,11 +4750,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4751 "util/configparser.c"
+#line 4754 "util/configparser.c"
     break;
 
-  case 414:
-#line 1775 "./util/configparser.y"
+  case 415:
+#line 1776 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4759,11 +4762,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4763 "util/configparser.c"
+#line 4766 "util/configparser.c"
     break;
 
-  case 415:
-#line 1784 "./util/configparser.y"
+  case 416:
+#line 1785 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4771,11 +4774,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4775 "util/configparser.c"
+#line 4778 "util/configparser.c"
     break;
 
-  case 416:
-#line 1793 "./util/configparser.y"
+  case 417:
+#line 1794 "./util/configparser.y"
         {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4783,11 +4786,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4787 "util/configparser.c"
+#line 4790 "util/configparser.c"
     break;
 
-  case 417:
-#line 1802 "./util/configparser.y"
+  case 418:
+#line 1803 "./util/configparser.y"
         {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4796,11 +4799,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4800 "util/configparser.c"
+#line 4803 "util/configparser.c"
     break;
 
-  case 418:
-#line 1812 "./util/configparser.y"
+  case 419:
+#line 1813 "./util/configparser.y"
         {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4809,11 +4812,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4813 "util/configparser.c"
+#line 4816 "util/configparser.c"
     break;
 
-  case 419:
-#line 1822 "./util/configparser.y"
+  case 420:
+#line 1823 "./util/configparser.y"
         {
                OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4823,11 +4826,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4827 "util/configparser.c"
+#line 4830 "util/configparser.c"
     break;
 
-  case 420:
-#line 1833 "./util/configparser.y"
+  case 421:
+#line 1834 "./util/configparser.y"
         {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4835,11 +4838,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4839 "util/configparser.c"
+#line 4842 "util/configparser.c"
     break;
 
-  case 421:
-#line 1842 "./util/configparser.y"
+  case 422:
+#line 1843 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4847,11 +4850,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4851 "util/configparser.c"
+#line 4854 "util/configparser.c"
     break;
 
-  case 422:
-#line 1851 "./util/configparser.y"
+  case 423:
+#line 1852 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4859,11 +4862,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4863 "util/configparser.c"
+#line 4866 "util/configparser.c"
     break;
 
-  case 423:
-#line 1860 "./util/configparser.y"
+  case 424:
+#line 1861 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4871,11 +4874,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4875 "util/configparser.c"
+#line 4878 "util/configparser.c"
     break;
 
-  case 424:
-#line 1869 "./util/configparser.y"
+  case 425:
+#line 1870 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4883,11 +4886,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4887 "util/configparser.c"
+#line 4890 "util/configparser.c"
     break;
 
-  case 425:
-#line 1878 "./util/configparser.y"
+  case 426:
+#line 1879 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4895,11 +4898,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4899 "util/configparser.c"
+#line 4902 "util/configparser.c"
     break;
 
-  case 426:
-#line 1887 "./util/configparser.y"
+  case 427:
+#line 1888 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4911,11 +4914,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4915 "util/configparser.c"
+#line 4918 "util/configparser.c"
     break;
 
-  case 427:
-#line 1900 "./util/configparser.y"
+  case 428:
+#line 1901 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4927,11 +4930,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4931 "util/configparser.c"
+#line 4934 "util/configparser.c"
     break;
 
-  case 428:
-#line 1913 "./util/configparser.y"
+  case 429:
+#line 1914 "./util/configparser.y"
         {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4939,21 +4942,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4943 "util/configparser.c"
+#line 4946 "util/configparser.c"
     break;
 
-  case 429:
-#line 1922 "./util/configparser.y"
+  case 430:
+#line 1923 "./util/configparser.y"
         {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 4953 "util/configparser.c"
+#line 4956 "util/configparser.c"
     break;
 
-  case 430:
-#line 1929 "./util/configparser.y"
+  case 431:
+#line 1930 "./util/configparser.y"
         {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4961,11 +4964,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4965 "util/configparser.c"
+#line 4968 "util/configparser.c"
     break;
 
-  case 431:
-#line 1938 "./util/configparser.y"
+  case 432:
+#line 1939 "./util/configparser.y"
         {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4973,11 +4976,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4977 "util/configparser.c"
+#line 4980 "util/configparser.c"
     break;
 
-  case 432:
-#line 1947 "./util/configparser.y"
+  case 433:
+#line 1948 "./util/configparser.y"
         {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4985,11 +4988,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4989 "util/configparser.c"
+#line 4992 "util/configparser.c"
     break;
 
-  case 433:
-#line 1956 "./util/configparser.y"
+  case 434:
+#line 1957 "./util/configparser.y"
         {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4998,22 +5001,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5002 "util/configparser.c"
+#line 5005 "util/configparser.c"
     break;
 
-  case 434:
-#line 1965 "./util/configparser.y"
+  case 435:
+#line 1966 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5013 "util/configparser.c"
+#line 5016 "util/configparser.c"
     break;
 
-  case 435:
-#line 1973 "./util/configparser.y"
+  case 436:
+#line 1974 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5025,22 +5028,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5029 "util/configparser.c"
+#line 5032 "util/configparser.c"
     break;
 
-  case 436:
-#line 1986 "./util/configparser.y"
+  case 437:
+#line 1987 "./util/configparser.y"
         {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5040 "util/configparser.c"
+#line 5043 "util/configparser.c"
     break;
 
-  case 437:
-#line 1994 "./util/configparser.y"
+  case 438:
+#line 1995 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5080,21 +5083,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5084 "util/configparser.c"
+#line 5087 "util/configparser.c"
     break;
 
-  case 438:
-#line 2035 "./util/configparser.y"
+  case 439:
+#line 2036 "./util/configparser.y"
         {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 5094 "util/configparser.c"
+#line 5097 "util/configparser.c"
     break;
 
-  case 439:
-#line 2042 "./util/configparser.y"
+  case 440:
+#line 2043 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5108,11 +5111,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5112 "util/configparser.c"
+#line 5115 "util/configparser.c"
     break;
 
-  case 440:
-#line 2057 "./util/configparser.y"
+  case 441:
+#line 2058 "./util/configparser.y"
         {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5121,11 +5124,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5125 "util/configparser.c"
+#line 5128 "util/configparser.c"
     break;
 
-  case 441:
-#line 2067 "./util/configparser.y"
+  case 442:
+#line 2068 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5134,41 +5137,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5138 "util/configparser.c"
+#line 5141 "util/configparser.c"
     break;
 
-  case 442:
-#line 2077 "./util/configparser.y"
+  case 443:
+#line 2078 "./util/configparser.y"
         {
                OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5148 "util/configparser.c"
+#line 5151 "util/configparser.c"
     break;
 
-  case 443:
-#line 2084 "./util/configparser.y"
+  case 444:
+#line 2085 "./util/configparser.y"
         {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5158 "util/configparser.c"
+#line 5161 "util/configparser.c"
     break;
 
-  case 444:
-#line 2091 "./util/configparser.y"
+  case 445:
+#line 2092 "./util/configparser.y"
         {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 5168 "util/configparser.c"
+#line 5171 "util/configparser.c"
     break;
 
-  case 445:
-#line 2098 "./util/configparser.y"
+  case 446:
+#line 2099 "./util/configparser.y"
         {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5176,22 +5179,22 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5180 "util/configparser.c"
+#line 5183 "util/configparser.c"
     break;
 
-  case 446:
-#line 2107 "./util/configparser.y"
+  case 447:
+#line 2108 "./util/configparser.y"
         {
                OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
                        (yyvsp[0].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 5191 "util/configparser.c"
+#line 5194 "util/configparser.c"
     break;
 
-  case 447:
-#line 2115 "./util/configparser.y"
+  case 448:
+#line 2116 "./util/configparser.y"
         {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -5204,11 +5207,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5208 "util/configparser.c"
+#line 5211 "util/configparser.c"
     break;
 
-  case 448:
-#line 2129 "./util/configparser.y"
+  case 449:
+#line 2130 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5228,11 +5231,11 @@ yyreduce:
                        }
                }
        }
-#line 5232 "util/configparser.c"
+#line 5235 "util/configparser.c"
     break;
 
-  case 449:
-#line 2150 "./util/configparser.y"
+  case 450:
+#line 2151 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5252,11 +5255,11 @@ yyreduce:
                        }
                }
        }
-#line 5256 "util/configparser.c"
+#line 5259 "util/configparser.c"
     break;
 
-  case 450:
-#line 2171 "./util/configparser.y"
+  case 451:
+#line 2172 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -5267,11 +5270,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5271 "util/configparser.c"
+#line 5274 "util/configparser.c"
     break;
 
-  case 451:
-#line 2183 "./util/configparser.y"
+  case 452:
+#line 2184 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -5282,11 +5285,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5286 "util/configparser.c"
+#line 5289 "util/configparser.c"
     break;
 
-  case 452:
-#line 2195 "./util/configparser.y"
+  case 453:
+#line 2196 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -5297,11 +5300,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5301 "util/configparser.c"
+#line 5304 "util/configparser.c"
     break;
 
-  case 453:
-#line 2207 "./util/configparser.y"
+  case 454:
+#line 2208 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -5309,11 +5312,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 5313 "util/configparser.c"
+#line 5316 "util/configparser.c"
     break;
 
-  case 454:
-#line 2216 "./util/configparser.y"
+  case 455:
+#line 2217 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5333,11 +5336,11 @@ yyreduce:
                        }
                }
        }
-#line 5337 "util/configparser.c"
+#line 5340 "util/configparser.c"
     break;
 
-  case 455:
-#line 2237 "./util/configparser.y"
+  case 456:
+#line 2238 "./util/configparser.y"
         { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5345,11 +5348,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5349 "util/configparser.c"
+#line 5352 "util/configparser.c"
     break;
 
-  case 456:
-#line 2247 "./util/configparser.y"
+  case 457:
+#line 2248 "./util/configparser.y"
         { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5357,33 +5360,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5361 "util/configparser.c"
+#line 5364 "util/configparser.c"
     break;
 
-  case 457:
-#line 2256 "./util/configparser.y"
+  case 458:
+#line 2257 "./util/configparser.y"
   {
        OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 5372 "util/configparser.c"
+#line 5375 "util/configparser.c"
     break;
 
-  case 458:
-#line 2264 "./util/configparser.y"
+  case 459:
+#line 2265 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5383 "util/configparser.c"
+#line 5386 "util/configparser.c"
     break;
 
-  case 459:
-#line 2272 "./util/configparser.y"
+  case 460:
+#line 2273 "./util/configparser.y"
   {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -5395,11 +5398,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 5399 "util/configparser.c"
+#line 5402 "util/configparser.c"
     break;
 
-  case 460:
-#line 2285 "./util/configparser.y"
+  case 461:
+#line 2286 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5411,11 +5414,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5415 "util/configparser.c"
+#line 5418 "util/configparser.c"
     break;
 
-  case 461:
-#line 2298 "./util/configparser.y"
+  case 462:
+#line 2299 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5429,11 +5432,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 5433 "util/configparser.c"
+#line 5436 "util/configparser.c"
     break;
 
-  case 462:
-#line 2313 "./util/configparser.y"
+  case 463:
+#line 2314 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5447,11 +5450,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 5451 "util/configparser.c"
+#line 5454 "util/configparser.c"
     break;
 
-  case 463:
-#line 2328 "./util/configparser.y"
+  case 464:
+#line 2329 "./util/configparser.y"
   { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5459,11 +5462,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 5463 "util/configparser.c"
+#line 5466 "util/configparser.c"
     break;
 
-  case 464:
-#line 2337 "./util/configparser.y"
+  case 465:
+#line 2338 "./util/configparser.y"
         { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5471,20 +5474,20 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5475 "util/configparser.c"
+#line 5478 "util/configparser.c"
     break;
 
-  case 465:
-#line 2346 "./util/configparser.y"
+  case 466:
+#line 2347 "./util/configparser.y"
         { 
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
                free((yyvsp[0].str));
        }
-#line 5484 "util/configparser.c"
+#line 5487 "util/configparser.c"
     break;
 
-  case 466:
-#line 2352 "./util/configparser.y"
+  case 467:
+#line 2353 "./util/configparser.y"
         { 
                OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) <= 0)
@@ -5492,11 +5495,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5496 "util/configparser.c"
+#line 5499 "util/configparser.c"
     break;
 
-  case 467:
-#line 2361 "./util/configparser.y"
+  case 468:
+#line 2362 "./util/configparser.y"
         { 
                OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5504,11 +5507,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5508 "util/configparser.c"
+#line 5511 "util/configparser.c"
     break;
 
-  case 468:
-#line 2370 "./util/configparser.y"
+  case 469:
+#line 2371 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5517,11 +5520,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5521 "util/configparser.c"
+#line 5524 "util/configparser.c"
     break;
 
-  case 469:
-#line 2380 "./util/configparser.y"
+  case 470:
+#line 2381 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5530,11 +5533,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5534 "util/configparser.c"
+#line 5537 "util/configparser.c"
     break;
 
-  case 470:
-#line 2390 "./util/configparser.y"
+  case 471:
+#line 2391 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -5546,11 +5549,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5550 "util/configparser.c"
+#line 5553 "util/configparser.c"
     break;
 
-  case 471:
-#line 2403 "./util/configparser.y"
+  case 472:
+#line 2404 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -5562,11 +5565,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5566 "util/configparser.c"
+#line 5569 "util/configparser.c"
     break;
 
-  case 472:
-#line 2416 "./util/configparser.y"
+  case 473:
+#line 2417 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -5577,11 +5580,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5581 "util/configparser.c"
+#line 5584 "util/configparser.c"
     break;
 
-  case 473:
-#line 2428 "./util/configparser.y"
+  case 474:
+#line 2429 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -5594,11 +5597,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5598 "util/configparser.c"
+#line 5601 "util/configparser.c"
     break;
 
-  case 474:
-#line 2442 "./util/configparser.y"
+  case 475:
+#line 2443 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -5609,11 +5612,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5613 "util/configparser.c"
+#line 5616 "util/configparser.c"
     break;
 
-  case 475:
-#line 2454 "./util/configparser.y"
+  case 476:
+#line 2455 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -5626,11 +5629,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5630 "util/configparser.c"
+#line 5633 "util/configparser.c"
     break;
 
-  case 476:
-#line 2468 "./util/configparser.y"
+  case 477:
+#line 2469 "./util/configparser.y"
         {
                int tag_data;
                OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
@@ -5644,11 +5647,25 @@ yyreduce:
                        fatal_exit("out of memory adding "
                                "edns-client-tag");
        }
-#line 5648 "util/configparser.c"
+#line 5651 "util/configparser.c"
     break;
 
-  case 477:
-#line 2483 "./util/configparser.y"
+  case 478:
+#line 2484 "./util/configparser.y"
+        {
+               OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str)));
+               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+                       yyerror("option code expected");
+               else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
+                       yyerror("option code must be in interval [0, 65535]");
+               else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str));
+
+       }
+#line 5665 "util/configparser.c"
+    break;
+
+  case 479:
+#line 2495 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -5657,31 +5674,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 5661 "util/configparser.c"
+#line 5678 "util/configparser.c"
     break;
 
-  case 478:
-#line 2493 "./util/configparser.y"
+  case 480:
+#line 2505 "./util/configparser.y"
         {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5671 "util/configparser.c"
+#line 5688 "util/configparser.c"
     break;
 
-  case 479:
-#line 2500 "./util/configparser.y"
+  case 481:
+#line 2512 "./util/configparser.y"
         {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5681 "util/configparser.c"
+#line 5698 "util/configparser.c"
     break;
 
-  case 480:
-#line 2507 "./util/configparser.y"
+  case 482:
+#line 2519 "./util/configparser.y"
         {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5689,11 +5706,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5693 "util/configparser.c"
+#line 5710 "util/configparser.c"
     break;
 
-  case 481:
-#line 2516 "./util/configparser.y"
+  case 483:
+#line 2528 "./util/configparser.y"
         {
                OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5701,11 +5718,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5705 "util/configparser.c"
+#line 5722 "util/configparser.c"
     break;
 
-  case 482:
-#line 2525 "./util/configparser.y"
+  case 484:
+#line 2537 "./util/configparser.y"
         {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5714,11 +5731,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5718 "util/configparser.c"
+#line 5735 "util/configparser.c"
     break;
 
-  case 483:
-#line 2535 "./util/configparser.y"
+  case 485:
+#line 2547 "./util/configparser.y"
         {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5727,11 +5744,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5731 "util/configparser.c"
+#line 5748 "util/configparser.c"
     break;
 
-  case 484:
-#line 2545 "./util/configparser.y"
+  case 486:
+#line 2557 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -5740,31 +5757,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 5744 "util/configparser.c"
+#line 5761 "util/configparser.c"
     break;
 
-  case 485:
-#line 2555 "./util/configparser.y"
+  case 487:
+#line 2567 "./util/configparser.y"
         {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5754 "util/configparser.c"
+#line 5771 "util/configparser.c"
     break;
 
-  case 486:
-#line 2562 "./util/configparser.y"
+  case 488:
+#line 2574 "./util/configparser.y"
         {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5764 "util/configparser.c"
+#line 5781 "util/configparser.c"
     break;
 
-  case 487:
-#line 2569 "./util/configparser.y"
+  case 489:
+#line 2581 "./util/configparser.y"
         {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5772,11 +5789,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5776 "util/configparser.c"
+#line 5793 "util/configparser.c"
     break;
 
-  case 488:
-#line 2578 "./util/configparser.y"
+  case 490:
+#line 2590 "./util/configparser.y"
         {
                OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5784,11 +5801,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5788 "util/configparser.c"
+#line 5805 "util/configparser.c"
     break;
 
-  case 489:
-#line 2587 "./util/configparser.y"
+  case 491:
+#line 2599 "./util/configparser.y"
         {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5797,11 +5814,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5801 "util/configparser.c"
+#line 5818 "util/configparser.c"
     break;
 
-  case 490:
-#line 2597 "./util/configparser.y"
+  case 492:
+#line 2609 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->auths->name)
@@ -5810,52 +5827,52 @@ yyreduce:
                free(cfg_parser->cfg->auths->name);
                cfg_parser->cfg->auths->name = (yyvsp[0].str);
        }
-#line 5814 "util/configparser.c"
+#line 5831 "util/configparser.c"
     break;
 
-  case 491:
-#line 2607 "./util/configparser.y"
+  case 493:
+#line 2619 "./util/configparser.y"
         {
                OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->zonefile);
                cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
        }
-#line 5824 "util/configparser.c"
+#line 5841 "util/configparser.c"
     break;
 
-  case 492:
-#line 2614 "./util/configparser.y"
+  case 494:
+#line 2626 "./util/configparser.y"
         {
                OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5834 "util/configparser.c"
+#line 5851 "util/configparser.c"
     break;
 
-  case 493:
-#line 2621 "./util/configparser.y"
+  case 495:
+#line 2633 "./util/configparser.y"
         {
                OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5844 "util/configparser.c"
+#line 5861 "util/configparser.c"
     break;
 
-  case 494:
-#line 2628 "./util/configparser.y"
+  case 496:
+#line 2640 "./util/configparser.y"
         {
                OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5855 "util/configparser.c"
+#line 5872 "util/configparser.c"
     break;
 
-  case 495:
-#line 2636 "./util/configparser.y"
+  case 497:
+#line 2648 "./util/configparser.y"
         {
                OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5864,11 +5881,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5868 "util/configparser.c"
+#line 5885 "util/configparser.c"
     break;
 
-  case 496:
-#line 2646 "./util/configparser.y"
+  case 498:
+#line 2658 "./util/configparser.y"
         {
                OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5877,11 +5894,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5881 "util/configparser.c"
+#line 5898 "util/configparser.c"
     break;
 
-  case 497:
-#line 2656 "./util/configparser.y"
+  case 499:
+#line 2668 "./util/configparser.y"
         {
                OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5890,11 +5907,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5894 "util/configparser.c"
+#line 5911 "util/configparser.c"
     break;
 
-  case 498:
-#line 2666 "./util/configparser.y"
+  case 500:
+#line 2678 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -5903,11 +5920,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 5907 "util/configparser.c"
+#line 5924 "util/configparser.c"
     break;
 
-  case 499:
-#line 2676 "./util/configparser.y"
+  case 501:
+#line 2688 "./util/configparser.y"
         {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5945,11 +5962,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5949 "util/configparser.c"
+#line 5966 "util/configparser.c"
     break;
 
-  case 500:
-#line 2715 "./util/configparser.y"
+  case 502:
+#line 2727 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -5958,33 +5975,33 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 5962 "util/configparser.c"
+#line 5979 "util/configparser.c"
     break;
 
-  case 501:
-#line 2725 "./util/configparser.y"
+  case 503:
+#line 2737 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 5973 "util/configparser.c"
+#line 5990 "util/configparser.c"
     break;
 
-  case 502:
-#line 2733 "./util/configparser.y"
+  case 504:
+#line 2745 "./util/configparser.y"
         {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 5984 "util/configparser.c"
+#line 6001 "util/configparser.c"
     break;
 
-  case 503:
-#line 2741 "./util/configparser.y"
+  case 505:
+#line 2753 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5998,11 +6015,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 6002 "util/configparser.c"
+#line 6019 "util/configparser.c"
     break;
 
-  case 504:
-#line 2756 "./util/configparser.y"
+  case 506:
+#line 2768 "./util/configparser.y"
         {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6010,19 +6027,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6014 "util/configparser.c"
+#line 6031 "util/configparser.c"
     break;
 
-  case 505:
-#line 2765 "./util/configparser.y"
+  case 507:
+#line 2777 "./util/configparser.y"
         { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 6022 "util/configparser.c"
+#line 6039 "util/configparser.c"
     break;
 
-  case 516:
-#line 2776 "./util/configparser.y"
+  case 518:
+#line 2788 "./util/configparser.y"
         {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6031,11 +6048,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6035 "util/configparser.c"
+#line 6052 "util/configparser.c"
     break;
 
-  case 517:
-#line 2786 "./util/configparser.y"
+  case 519:
+#line 2798 "./util/configparser.y"
         {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6043,79 +6060,79 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6047 "util/configparser.c"
+#line 6064 "util/configparser.c"
     break;
 
-  case 518:
-#line 2795 "./util/configparser.y"
+  case 520:
+#line 2807 "./util/configparser.y"
         {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6057 "util/configparser.c"
+#line 6074 "util/configparser.c"
     break;
 
-  case 519:
-#line 2802 "./util/configparser.y"
+  case 521:
+#line 2814 "./util/configparser.y"
         {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6067 "util/configparser.c"
+#line 6084 "util/configparser.c"
     break;
 
-  case 520:
-#line 2809 "./util/configparser.y"
+  case 522:
+#line 2821 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 6077 "util/configparser.c"
+#line 6094 "util/configparser.c"
     break;
 
-  case 521:
-#line 2816 "./util/configparser.y"
+  case 523:
+#line 2828 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 6087 "util/configparser.c"
+#line 6104 "util/configparser.c"
     break;
 
-  case 522:
-#line 2823 "./util/configparser.y"
+  case 524:
+#line 2835 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 6097 "util/configparser.c"
+#line 6114 "util/configparser.c"
     break;
 
-  case 523:
-#line 2830 "./util/configparser.y"
+  case 525:
+#line 2842 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 6107 "util/configparser.c"
+#line 6124 "util/configparser.c"
     break;
 
-  case 524:
-#line 2837 "./util/configparser.y"
+  case 526:
+#line 2849 "./util/configparser.y"
         {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 6115 "util/configparser.c"
+#line 6132 "util/configparser.c"
     break;
 
-  case 546:
-#line 2857 "./util/configparser.y"
+  case 548:
+#line 2869 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6123,11 +6140,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6127 "util/configparser.c"
+#line 6144 "util/configparser.c"
     break;
 
-  case 547:
-#line 2866 "./util/configparser.y"
+  case 549:
+#line 2878 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6136,31 +6153,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6140 "util/configparser.c"
+#line 6157 "util/configparser.c"
     break;
 
-  case 548:
-#line 2876 "./util/configparser.y"
+  case 550:
+#line 2888 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 6150 "util/configparser.c"
+#line 6167 "util/configparser.c"
     break;
 
-  case 549:
-#line 2883 "./util/configparser.y"
+  case 551:
+#line 2895 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_ip);
                cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
        }
-#line 6160 "util/configparser.c"
+#line 6177 "util/configparser.c"
     break;
 
-  case 550:
-#line 2890 "./util/configparser.y"
+  case 552:
+#line 2902 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6168,51 +6185,51 @@ yyreduce:
                else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6172 "util/configparser.c"
+#line 6189 "util/configparser.c"
     break;
 
-  case 551:
-#line 2899 "./util/configparser.y"
+  case 553:
+#line 2911 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_server_name);
                cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
        }
-#line 6182 "util/configparser.c"
+#line 6199 "util/configparser.c"
     break;
 
-  case 552:
-#line 2906 "./util/configparser.y"
+  case 554:
+#line 2918 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
                cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
        }
-#line 6192 "util/configparser.c"
+#line 6209 "util/configparser.c"
     break;
 
-  case 553:
-#line 2913 "./util/configparser.y"
+  case 555:
+#line 2925 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
                cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
        }
-#line 6202 "util/configparser.c"
+#line 6219 "util/configparser.c"
     break;
 
-  case 554:
-#line 2920 "./util/configparser.y"
+  case 556:
+#line 2932 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
                cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
        }
-#line 6212 "util/configparser.c"
+#line 6229 "util/configparser.c"
     break;
 
-  case 555:
-#line 2927 "./util/configparser.y"
+  case 557:
+#line 2939 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6220,11 +6237,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6224 "util/configparser.c"
+#line 6241 "util/configparser.c"
     break;
 
-  case 556:
-#line 2936 "./util/configparser.y"
+  case 558:
+#line 2948 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6232,31 +6249,31 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6236 "util/configparser.c"
+#line 6253 "util/configparser.c"
     break;
 
-  case 557:
-#line 2945 "./util/configparser.y"
+  case 559:
+#line 2957 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 6246 "util/configparser.c"
+#line 6263 "util/configparser.c"
     break;
 
-  case 558:
-#line 2952 "./util/configparser.y"
+  case 560:
+#line 2964 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 6256 "util/configparser.c"
+#line 6273 "util/configparser.c"
     break;
 
-  case 559:
-#line 2959 "./util/configparser.y"
+  case 561:
+#line 2971 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6265,11 +6282,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6269 "util/configparser.c"
+#line 6286 "util/configparser.c"
     break;
 
-  case 560:
-#line 2969 "./util/configparser.y"
+  case 562:
+#line 2981 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6278,11 +6295,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6282 "util/configparser.c"
+#line 6299 "util/configparser.c"
     break;
 
-  case 561:
-#line 2979 "./util/configparser.y"
+  case 563:
+#line 2991 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6291,11 +6308,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6295 "util/configparser.c"
+#line 6312 "util/configparser.c"
     break;
 
-  case 562:
-#line 2989 "./util/configparser.y"
+  case 564:
+#line 3001 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6304,11 +6321,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6308 "util/configparser.c"
+#line 6325 "util/configparser.c"
     break;
 
-  case 563:
-#line 2999 "./util/configparser.y"
+  case 565:
+#line 3011 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6317,11 +6334,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6321 "util/configparser.c"
+#line 6338 "util/configparser.c"
     break;
 
-  case 564:
-#line 3009 "./util/configparser.y"
+  case 566:
+#line 3021 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6330,47 +6347,47 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6334 "util/configparser.c"
+#line 6351 "util/configparser.c"
     break;
 
-  case 565:
-#line 3019 "./util/configparser.y"
+  case 567:
+#line 3031 "./util/configparser.y"
         { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 6342 "util/configparser.c"
+#line 6359 "util/configparser.c"
     break;
 
-  case 569:
-#line 3028 "./util/configparser.y"
+  case 571:
+#line 3040 "./util/configparser.y"
         {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6352 "util/configparser.c"
+#line 6369 "util/configparser.c"
     break;
 
-  case 570:
-#line 3034 "./util/configparser.y"
+  case 572:
+#line 3046 "./util/configparser.y"
         { 
                OUTYY(("\nP(dynlib:)\n")); 
        }
-#line 6360 "util/configparser.c"
+#line 6377 "util/configparser.c"
     break;
 
-  case 574:
-#line 3043 "./util/configparser.y"
+  case 576:
+#line 3055 "./util/configparser.y"
         {
                OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6370 "util/configparser.c"
+#line 6387 "util/configparser.c"
     break;
 
-  case 575:
-#line 3049 "./util/configparser.y"
+  case 577:
+#line 3061 "./util/configparser.y"
         {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6379,21 +6396,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6383 "util/configparser.c"
+#line 6400 "util/configparser.c"
     break;
 
-  case 576:
-#line 3059 "./util/configparser.y"
+  case 578:
+#line 3071 "./util/configparser.y"
         {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 6393 "util/configparser.c"
+#line 6410 "util/configparser.c"
     break;
 
-  case 577:
-#line 3066 "./util/configparser.y"
+  case 579:
+#line 3078 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6401,30 +6418,30 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 6405 "util/configparser.c"
+#line 6422 "util/configparser.c"
     break;
 
-  case 578:
-#line 3075 "./util/configparser.y"
+  case 580:
+#line 3087 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6416 "util/configparser.c"
+#line 6433 "util/configparser.c"
     break;
 
-  case 579:
-#line 3083 "./util/configparser.y"
+  case 581:
+#line 3095 "./util/configparser.y"
         {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 6424 "util/configparser.c"
+#line 6441 "util/configparser.c"
     break;
 
-  case 592:
-#line 3099 "./util/configparser.y"
+  case 594:
+#line 3111 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6432,11 +6449,11 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6436 "util/configparser.c"
+#line 6453 "util/configparser.c"
     break;
 
-  case 593:
-#line 3109 "./util/configparser.y"
+  case 595:
+#line 3121 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6444,21 +6461,21 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6448 "util/configparser.c"
+#line 6465 "util/configparser.c"
     break;
 
-  case 594:
-#line 3118 "./util/configparser.y"
+  case 596:
+#line 3130 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
                cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
        }
-#line 6458 "util/configparser.c"
+#line 6475 "util/configparser.c"
     break;
 
-  case 595:
-#line 3125 "./util/configparser.y"
+  case 597:
+#line 3137 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
@@ -6466,21 +6483,21 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 6470 "util/configparser.c"
+#line 6487 "util/configparser.c"
     break;
 
-  case 596:
-#line 3134 "./util/configparser.y"
+  case 598:
+#line 3146 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 6480 "util/configparser.c"
+#line 6497 "util/configparser.c"
     break;
 
-  case 597:
-#line 3141 "./util/configparser.y"
+  case 599:
+#line 3153 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
@@ -6488,22 +6505,22 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 6492 "util/configparser.c"
+#line 6509 "util/configparser.c"
     break;
 
-  case 598:
-#line 3150 "./util/configparser.y"
+  case 600:
+#line 3162 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6503 "util/configparser.c"
+#line 6520 "util/configparser.c"
     break;
 
-  case 599:
-#line 3158 "./util/configparser.y"
+  case 601:
+#line 3170 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -6515,22 +6532,22 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6519 "util/configparser.c"
+#line 6536 "util/configparser.c"
     break;
 
-  case 600:
-#line 3171 "./util/configparser.y"
+  case 602:
+#line 3183 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6530 "util/configparser.c"
+#line 6547 "util/configparser.c"
     break;
 
-  case 601:
-#line 3179 "./util/configparser.y"
+  case 603:
+#line 3191 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -6542,19 +6559,19 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6546 "util/configparser.c"
+#line 6563 "util/configparser.c"
     break;
 
-  case 602:
-#line 3192 "./util/configparser.y"
+  case 604:
+#line 3204 "./util/configparser.y"
         {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 6554 "util/configparser.c"
+#line 6571 "util/configparser.c"
     break;
 
-  case 611:
-#line 3203 "./util/configparser.y"
+  case 613:
+#line 3215 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
@@ -6565,11 +6582,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6569 "util/configparser.c"
+#line 6586 "util/configparser.c"
     break;
 
-  case 612:
-#line 3215 "./util/configparser.y"
+  case 614:
+#line 3227 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
@@ -6580,11 +6597,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6584 "util/configparser.c"
+#line 6601 "util/configparser.c"
     break;
 
-  case 613:
-#line 3227 "./util/configparser.y"
+  case 615:
+#line 3239 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
@@ -6595,11 +6612,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6599 "util/configparser.c"
+#line 6616 "util/configparser.c"
     break;
 
-  case 614:
-#line 3239 "./util/configparser.y"
+  case 616:
+#line 3251 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
@@ -6613,11 +6630,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6617 "util/configparser.c"
+#line 6634 "util/configparser.c"
     break;
 
-  case 615:
-#line 3254 "./util/configparser.y"
+  case 617:
+#line 3266 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
@@ -6629,11 +6646,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6633 "util/configparser.c"
+#line 6650 "util/configparser.c"
     break;
 
-  case 616:
-#line 3267 "./util/configparser.y"
+  case 618:
+#line 3279 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
@@ -6645,11 +6662,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6649 "util/configparser.c"
+#line 6666 "util/configparser.c"
     break;
 
-  case 617:
-#line 3280 "./util/configparser.y"
+  case 619:
+#line 3292 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if (atoi((yyvsp[0].str)) < 0)
@@ -6659,19 +6676,19 @@ yyreduce:
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6663 "util/configparser.c"
+#line 6680 "util/configparser.c"
     break;
 
-  case 618:
-#line 3291 "./util/configparser.y"
+  case 620:
+#line 3303 "./util/configparser.y"
                 {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6671 "util/configparser.c"
+#line 6688 "util/configparser.c"
     break;
 
-  case 623:
-#line 3300 "./util/configparser.y"
+  case 625:
+#line 3312 "./util/configparser.y"
                 {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
@@ -6685,11 +6702,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6689 "util/configparser.c"
+#line 6706 "util/configparser.c"
     break;
 
-  case 624:
-#line 3315 "./util/configparser.y"
+  case 626:
+#line 3327 "./util/configparser.y"
         {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
@@ -6703,11 +6720,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6707 "util/configparser.c"
+#line 6724 "util/configparser.c"
     break;
 
 
-#line 6711 "util/configparser.c"
+#line 6728 "util/configparser.c"
 
       default: break;
     }
@@ -6939,7 +6956,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 3329 "./util/configparser.y"
+#line 3341 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index eb576e91d701f09fbc67fc690ed685da98394336..3a5ea579d03f74a05508f2256004a83d17465967 100644 (file)
@@ -344,7 +344,8 @@ extern int yydebug;
     VAR_RPZ_LOG_NAME = 550,
     VAR_DYNLIB = 551,
     VAR_DYNLIB_FILE = 552,
-    VAR_EDNS_CLIENT_TAG = 553
+    VAR_EDNS_CLIENT_TAG = 553,
+    VAR_EDNS_CLIENT_TAG_OPCODE = 554
   };
 #endif
 /* Tokens.  */
@@ -644,6 +645,7 @@ extern int yydebug;
 #define VAR_DYNLIB 551
 #define VAR_DYNLIB_FILE 552
 #define VAR_EDNS_CLIENT_TAG 553
+#define VAR_EDNS_CLIENT_TAG_OPCODE 554
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -653,7 +655,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 657 "util/configparser.h"
+#line 659 "util/configparser.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
index 4419bbc7bb167f71455231dbcd5a4e52e32f88f4..43a886f2403ad43dd4e8dcc3a4de737399f383e2 100644 (file)
@@ -178,7 +178,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6
 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE
 %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME
-%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG
+%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG VAR_EDNS_CLIENT_TAG_OPCODE
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -291,7 +291,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_unknown_server_time_limit | server_log_tag_queryreply |
        server_stream_wait_size | server_tls_ciphers |
        server_tls_ciphersuites | server_tls_session_ticket_keys |
-       server_tls_use_sni | server_edns_client_tag
+       server_tls_use_sni | server_edns_client_tag |
+       server_edns_client_tag_opcode
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -2479,6 +2480,17 @@ server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG
                                "edns-client-tag");
        }
        ;
+server_edns_client_tag_opcode: VAR_EDNS_CLIENT_TAG_OPCODE STRING_ARG
+       {
+               OUTYY(("P(edns_client_tag_opcode:%s)\n", $2));
+               if(atoi($2) == 0 && strcmp($2, "0") != 0)
+                       yyerror("option code expected");
+               else if(atoi($2) > 65535 || atoi($2) < 0)
+                       yyerror("option code must be in interval [0, 65535]");
+               else cfg_parser->cfg->edns_client_tag_opcode = atoi($2);
+
+       }
+       ;
 stub_name: VAR_NAME STRING_ARG
        {
                OUTYY(("P(name:%s)\n", $2));
index db33212c0597676d852dda6f0174ea016f2d732d..c83a4a545fe35147a47fe2c0f29a3222d3bc978b 100644 (file)
@@ -112,6 +112,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags,
                        return 0;
                }
        }
+       edns_tags->client_tag_opcode = config->edns_client_tag_opcode;
 
        addr_tree_init_parents(&edns_tags->client_tags);
        return 1;
index c92b1ba5e810e2095c4a1ed3bf2ace99557361eb..cf9f8707e80889b1cb3f53139093cda53a28e43b 100644 (file)
@@ -56,6 +56,8 @@ struct edns_tags {
        /** Tree of EDNS client tags to use in upstream queries, per address
         * prefix. Contains nodes of type edns_tag_addr. */
        rbtree_type client_tags;
+       /** EDNS opcode to use for client tags */
+       uint16_t client_tag_opcode;
        /** region to allocate tree nodes in */
        struct regional* region;
 };