]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Added domain name based ECS whitelist.
authorRalph Dolmans <ralph@nlnetlabs.nl>
Thu, 8 Jun 2017 14:44:55 +0000 (14:44 +0000)
committerRalph Dolmans <ralph@nlnetlabs.nl>
Thu, 8 Jun 2017 14:44:55 +0000 (14:44 +0000)
git-svn-id: file:///svn/unbound/trunk@4217 be551aaa-1e26-0410-a405-d3ace91eadb9

13 files changed:
doc/Changelog
doc/unbound.conf.5.in
edns-subnet/subnet-whitelist.c
edns-subnet/subnet-whitelist.h
edns-subnet/subnetmod.c
edns-subnet/subnetmod.h
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index b3182e541af7887478681be9970b28f1911b1e30..7bfecdf637ba607099237518b02564110b567e20 100644 (file)
@@ -1,3 +1,6 @@
+8 June 2017: Ralph
+       - Added domain name based ECS whitelist.
+
 8 June 2017: Wouter
        - Detect chacha for dnscrypt at configure time.
        - dnscrypt unit tests with chacha.
index ed8cb11b3e04aa963f7c0f7ef377296aa5a175ff..f88116a67df75cb61b548efa0490d88f04a5c71f 100644 (file)
@@ -1515,7 +1515,12 @@ entries will be purged from cache.
 Send client source address to this authority. Append /num to indicate a
 classless delegation netblock, for example like 10.2.3.4/24 or 2001::11/64. Can
 be given multiple times. Authorities not listed will not receive edns-subnet
-information.
+information, unless domain in query is specified in \fBclient\-subnet\-zone\fR.
+.TP
+.B client\-subnet\-zone: \fI<domain>\fR
+Send client source address in queries for this domain and its subdomains. Can be
+given multiple times. Zones not listed will not receive edns-subnet information,
+unless hosted by authority specified in \fBsend\-client\-subnet\fR.
 .TP
 .B client\-subnet\-always\-forward: \fI<yes or no>\fR
 Specify whether the ECS whitelist check (configured using
index 1cfdb4be3c5a22a709f00a4ffcf01b04d4b9df7b..1ea7fb1b2591344090d48bbc1cba3da3e5f8cdf0 100644 (file)
 #include "util/config_file.h"
 #include "util/net_help.h"
 #include "util/storage/dnstree.h"
+#include "sldns/str2wire.h"
+#include "util/data/dname.h"
 
-struct ednssubnet_upstream
-upstream_create(void)
+struct ecs_whitelist
+ecs_whitelist_create(void)
 {
-       struct ednssubnet_upstream* upstream = 
-               (struct ednssubnet_upstream*)calloc(1,
-               sizeof(struct ednssubnet_upstream));
-       if(!upstream)
+       struct ecs_whitelist* whitelist = 
+               (struct ecs_whitelist*)calloc(1,
+               sizeof(struct ecs_whitelist));
+       if(!whitelist)
                return NULL;
-       upstream->region = regional_create();
-       if(!upstream->region) {
-               upstream_delete(upstream);
+       whitelist->region = regional_create();
+       if(!whitelist->region) {
+               ecs_whitelist_delete(whitelist);
                return NULL;
        }
-       return upstream;
+       return whitelist;
 }
 
 void 
-upstream_delete(struct ednssubnet_upstream* upstream)
+ecs_whitelist_delete(struct ecs_whitelist* whitelist)
 {
-       if(!upstream
+       if(!whitelist
                return;
-       regional_destroy(upstream->region);
-       free(upstream);
+       regional_destroy(whitelist->region);
+       free(whitelist);
 }
 
-/** insert new address into upstream structure */
+/** insert new address into whitelist structure */
 static int
-upstream_insert(struct ednssubnet_upstream* upstream
+upstream_insert(struct ecs_whitelist* whitelist
        struct sockaddr_storage* addr, socklen_t addrlen, int net)
 {
        struct addr_tree_node* node = (struct addr_tree_node*)regional_alloc(
-               upstream->region, sizeof(*node));
+               whitelist->region, sizeof(*node));
        if(!node)
                return 0;
-       if(!addr_tree_insert(&upstream->tree, node, addr, addrlen, net)) {
+       if(!addr_tree_insert(&whitelist->upstream, node, addr, addrlen, net)) {
                verbose(VERB_QUERY,
                        "duplicate send-client-subnet address ignored.");
        }
@@ -94,7 +96,7 @@ upstream_insert(struct ednssubnet_upstream* upstream,
 
 /** apply edns-subnet string */
 static int
-upstream_str_cfg(struct ednssubnet_upstream* upstream, const char* str)
+upstream_str_cfg(struct ecs_whitelist* whitelist, const char* str)
 {
        struct sockaddr_storage addr;
        int net;
@@ -104,7 +106,7 @@ upstream_str_cfg(struct ednssubnet_upstream* upstream, const char* str)
                log_err("cannot parse send-client-subnet netblock: %s", str);
                return 0;
        }
-       if(!upstream_insert(upstream, &addr, addrlen, net)) {
+       if(!upstream_insert(whitelist, &addr, addrlen, net)) {
                log_err("out of memory");
                return 0;
        }
@@ -113,41 +115,93 @@ upstream_str_cfg(struct ednssubnet_upstream* upstream, const char* str)
 
 /** read client_subnet config */
 static int 
-read_upstream(struct ednssubnet_upstream* upstream, struct config_file* cfg)
+read_upstream(struct ecs_whitelist* whitelist, struct config_file* cfg)
 {
        struct config_strlist* p;
        for(p = cfg->client_subnet; p; p = p->next) {
                log_assert(p->str);
-               if(!upstream_str_cfg(upstream, p->str))
+               if(!upstream_str_cfg(whitelist, p->str))
                        return 0;
        }
        return 1;
 }
 
+/** read client_subnet_zone config */
+static int 
+read_names(struct ecs_whitelist* whitelist, struct config_file* cfg)
+{
+       /* parse names, report errors, insert into tree */
+       struct config_strlist* p;
+       struct name_tree_node* n;
+       uint8_t* nm, *nmr;
+       size_t nm_len;
+       int nm_labs;
+
+       for(p = cfg->client_subnet_zone; p; p = p->next) {
+               log_assert(p->str);
+               nm = sldns_str2wire_dname(p->str, &nm_len);
+               if(!nm) {
+                       log_err("cannot parse client-subnet-zone: %s", p->str);
+                       return 0;
+               }
+               nm_labs = dname_count_size_labels(nm, &nm_len);
+               nmr = (uint8_t*)regional_alloc_init(whitelist->region, nm,
+                       nm_len);
+               free(nm);
+               if(!nmr) {
+                       log_err("out of memory");
+                       return 0;
+               }
+               n = (struct name_tree_node*)regional_alloc(whitelist->region,
+                       sizeof(*n));
+               if(!n) {
+                       log_err("out of memory");
+                       return 0;
+               }
+               if(!name_tree_insert(&whitelist->dname, n, nmr, nm_len, nm_labs,
+                       LDNS_RR_CLASS_IN)) {
+                       verbose(VERB_QUERY, "ignoring duplicate "
+                               "client-subnet-zone: %s", p->str);
+               }
+       }
+       return 1;
+}
+
 int 
-upstream_apply_cfg(struct ednssubnet_upstream* upstream,
+ecs_whitelist_apply_cfg(struct ecs_whitelist* whitelist,
        struct config_file* cfg)
 {
-       regional_free_all(upstream->region);
-       addr_tree_init(&upstream->tree);
-       if(!read_upstream(upstream, cfg))
+       regional_free_all(whitelist->region);
+       addr_tree_init(&whitelist->upstream);
+       name_tree_init(&whitelist->dname);
+       if(!read_upstream(whitelist, cfg))
+               return 0;
+       if(!read_names(whitelist, cfg))
                return 0;
-       addr_tree_init_parents(&upstream->tree);
+       addr_tree_init_parents(&whitelist->upstream);
+       name_tree_init_parents(&whitelist->dname);
        return 1;
 }
 
 int 
-upstream_is_whitelisted(struct ednssubnet_upstream* upstream,
-       struct sockaddr_storage* addr, socklen_t addrlen)
+ecs_is_whitelisted(struct ecs_whitelist* whitelist,
+       struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* qname,
+       size_t qname_len, uint16_t qclass)
 {
-       return addr_tree_lookup(&upstream->tree, addr, addrlen) != NULL;
+       int labs;
+       if(addr_tree_lookup(&whitelist->upstream, addr, addrlen))
+               return 1;
+       /* Not in upstream whitelist, check dname whitelist. */
+       labs = dname_count_labels(qname);
+       return name_tree_lookup(&whitelist->dname, qname, qname_len, labs,
+               qclass) != NULL;
 }
 
 size_t 
-upstream_get_mem(struct ednssubnet_upstream* upstream)
+ecs_whitelist_get_mem(struct ecs_whitelist* whitelist)
 {
-       if(!upstream) return 0;
-       return sizeof(*upstream) + regional_get_mem(upstream->region);
+       if(!whitelist) return 0;
+       return sizeof(*whitelist) + regional_get_mem(whitelist->region);
 }
 
 #endif /* CLIENT_SUBNET */
index c08b40d86aba45fe05a4cad80769b5a5bb03a828..8cd03abab3937dce4fd69683a058a6309deadd8a 100644 (file)
@@ -36,8 +36,8 @@
 /**
  * \file
  *
- * Keep track of the white listed servers for subnet option. Based
- * on acl_list.c|h
+ * Keep track of the white listed servers and domain names for subnet option.
+ * Based on acl_list.c|h
  */
 
 #ifndef EDNSSUBNET_WHITELIST_H
@@ -48,9 +48,9 @@ struct config_file;
 struct regional;
 
 /**
- * ednssubnet_upstream structure
+ * ecs_whitelist structure
  */
-struct ednssubnet_upstream {
+struct ecs_whitelist {
        /** regional for allocation */
        struct regional* region;
        /** 
@@ -58,45 +58,54 @@ struct ednssubnet_upstream {
         * contents of type addr_tree_node. Each node is an address span 
         * Unbound will append subnet option for.
         */
-       rbtree_type tree;
+       rbtree_type upstream;
+       /**
+        * Tree of domain names for which Unbound will append an ECS option.
+        * rbtree of struct name_tree_node.
+        */
+       rbtree_type dname;
 };
 
 /**
- * Create ednssubnet_upstream structure 
+ * Create ecs_whitelist structure 
  * @return new structure or NULL on error.
  */
-struct ednssubnet_upstream* upstream_create(void);
+struct ecs_whitelist* ecs_whitelist_create(void);
 
 /**
- * Delete ednssubnet_upstream structure.
- * @param upstream: to delete.
+ * Delete ecs_whitelist structure.
+ * @param whitelist: to delete.
  */
-void upstream_delete(struct ednssubnet_upstream* upstream);
+void ecs_whitelist_delete(struct ecs_whitelist* whitelist);
 
 /**
- * Process ednssubnet_upstream config.
- * @param upstream: where to store.
+ * Process ecs_whitelist config.
+ * @param whitelist: where to store.
  * @param cfg: config options.
  * @return 0 on error.
  */
-int upstream_apply_cfg(struct ednssubnet_upstream* upstream,
+int ecs_whitelist_apply_cfg(struct ecs_whitelist* whitelist,
        struct config_file* cfg);
 
 /**
- * See if an address is whitelisted.
- * @param upstream: structure for address storage.
+ * See if an address or domain is whitelisted.
+ * @param whitelist: structure for address storage.
  * @param addr: address to check
  * @param addrlen: length of addr.
+ * @param qname: dname in query
+ * @param qname_len: length of dname
+ * @param qclass: class in query
  * @return: true if the address is whitelisted for subnet option. 
  */
-int upstream_is_whitelisted(struct ednssubnet_upstream* upstream,
-       struct sockaddr_storage* addr, socklen_t addrlen);
+int ecs_is_whitelisted(struct ecs_whitelist* whitelist,
+       struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* qname,
+       size_t qname_len, uint16_t qclass);
 
 /**
- * Get memory used by ednssubnet_upstream structure.
- * @param upstream: structure for address storage.
+ * Get memory used by ecs_whitelist structure.
+ * @param whitelist: structure for address storage.
  * @return bytes in use.
  */
-size_t upstream_get_mem(struct ednssubnet_upstream* upstream);
+size_t ecs_whitelist_get_mem(struct ecs_whitelist* whitelist);
 
 #endif /* EDNSSUBNET_WHITELIST_H */
index 4008004e4a3200052972d42b032b93054981f6fe..fbf58777f21fbecec7a8d7bfc64bd38e16ccef2b 100644 (file)
@@ -135,7 +135,7 @@ ecs_opt_list_append(struct ecs_data* ecs, struct edns_option** list,
        }
 }
 
-int ecs_whitelist_check(struct query_info* ATTR_UNUSED(qinfo),
+int ecs_whitelist_check(struct query_info* qinfo,
        uint16_t ATTR_UNUSED(flags), struct module_qstate* qstate,
        struct sockaddr_storage* addr, socklen_t addrlen,
        uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen),
@@ -154,8 +154,9 @@ int ecs_whitelist_check(struct query_info* ATTR_UNUSED(qinfo),
 
        if(sq->ecs_server_out.subnet_validdata && ((sq->subnet_downstream &&
                qstate->env->cfg->client_subnet_always_forward) ||
-               upstream_is_whitelisted(sn_env->edns_subnet_upstreams, 
-               addr, addrlen))) {
+               ecs_is_whitelisted(sn_env->whitelist, 
+               addr, addrlen, qinfo->qname, qinfo->qname_len,
+               qinfo->qclass))) {
                /* Address on whitelist or client query contains ECS option, we
                 * want to sent out ECS. Only add option if it is not already
                 * set. */
@@ -199,9 +200,9 @@ subnetmod_init(struct module_env *env, int id)
                return 0;
        }
        /* whitelist for edns subnet capable servers */
-       sn_env->edns_subnet_upstreams = upstream_create();
-       if(!sn_env->edns_subnet_upstreams ||
-               !upstream_apply_cfg(sn_env->edns_subnet_upstreams, env->cfg)) {
+       sn_env->whitelist = ecs_whitelist_create();
+       if(!sn_env->whitelist ||
+               !ecs_whitelist_apply_cfg(sn_env->whitelist, env->cfg)) {
                log_err("subnet: could not create ECS whitelist");
                slabhash_delete(sn_env->subnet_msg_cache);
                free(sn_env);
@@ -217,7 +218,7 @@ subnetmod_init(struct module_env *env, int id)
                env->cfg->client_subnet_always_forward /* bypass cache */,
                0 /* no aggregation */, env)) {
                log_err("subnet: could not register opcode");
-               upstream_delete(sn_env->edns_subnet_upstreams);
+               ecs_whitelist_delete(sn_env->whitelist);
                slabhash_delete(sn_env->subnet_msg_cache);
                free(sn_env);
                env->modinfo[id] = NULL;
@@ -243,7 +244,7 @@ subnetmod_deinit(struct module_env *env, int id)
        lock_rw_destroy(&sn_env->biglock);
        inplace_cb_delete(env, inplace_cb_edns_back_parsed, id);
        inplace_cb_delete(env, inplace_cb_query, id);
-       upstream_delete(sn_env->edns_subnet_upstreams);
+       ecs_whitelist_delete(sn_env->whitelist);
        slabhash_delete(sn_env->subnet_msg_cache);
        alloc_clear(&sn_env->alloc);
        free(sn_env);
@@ -781,7 +782,7 @@ subnetmod_get_mem(struct module_env *env, int id)
        if (!sn_env) return 0;
        return sizeof(*sn_env) + 
                slabhash_get_mem(sn_env->subnet_msg_cache) +
-               upstream_get_mem(sn_env->edns_subnet_upstreams);
+               ecs_whitelist_get_mem(sn_env->whitelist);
 }
 
 /**
index f2baa466ae61af4bceacdd04c3d8f8764a47aa4c..29bf64b4f55d0c761f7ea698822f401acbab600d 100644 (file)
@@ -57,7 +57,7 @@ struct subnet_env {
         * data: struct subnet_msg_cache_data* */
        struct slabhash* subnet_msg_cache;
        /** access control, which upstream servers we send client address */
-       struct ednssubnet_upstream* edns_subnet_upstreams;
+       struct ecs_whitelist* whitelist;
        /** allocation service */
        struct alloc_cache alloc;
        lock_rw_type biglock;
index 8fd6181c5c9e77dfb2a46be53adbd3c778dac598..808a36776d1283d85c96d2930c221d7140710a93 100644 (file)
@@ -178,6 +178,7 @@ config_create(void)
        cfg->forwards = NULL;
 #ifdef CLIENT_SUBNET
        cfg->client_subnet = NULL;
+       cfg->client_subnet_zone = NULL;
        cfg->client_subnet_opcode = LDNS_EDNS_CLIENT_SUBNET;
        cfg->client_subnet_always_forward = 0;
        cfg->max_client_subnet_ipv4 = 24;
@@ -889,6 +890,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_YNO(opt, "rrset-roundrobin", rrset_roundrobin)
 #ifdef CLIENT_SUBNET
        else O_LST(opt, "send-client-subnet", client_subnet)
+       else O_LST(opt, "client-subnet-zone", client_subnet_zone)
        else O_DEC(opt, "max-client-subnet-ipv4", max_client_subnet_ipv4)
        else O_DEC(opt, "max-client-subnet-ipv6", max_client_subnet_ipv6)
        else O_YNO(opt, "client-subnet-always-forward:",
@@ -1213,6 +1215,7 @@ config_delete(struct config_file* cfg)
        config_delstrlist(cfg->root_hints);
 #ifdef CLIENT_SUBNET
        config_delstrlist(cfg->client_subnet);
+       config_delstrlist(cfg->client_subnet_zone);
 #endif
        free(cfg->identity);
        free(cfg->version);
index d97cfde312e2a5156e7bd8db60a302ee989ef842..bb7a292050b4ce278852bd13d247cb7f3cc0ec58 100644 (file)
@@ -176,6 +176,8 @@ struct config_file {
        /** list of servers we send edns-client-subnet option to and 
         * accept option from, linked list */
        struct config_strlist* client_subnet;
+       /** list of zones we send edns-client-subnet option for */
+       struct config_strlist* client_subnet_zone;
        /** opcode assigned by IANA for edns0-client-subnet option */
        uint16_t client_subnet_opcode;
        /** Do not check whitelist if incoming query contains an ECS record */
index cd22aa24de952308f804b449c0870b2bbf99c877..7fcff0bfe71c2f7e0e367d02d38fd0e5d5110755 100644 (file)
@@ -10,7 +10,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -89,25 +89,13 @@ typedef unsigned int flex_uint32_t;
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
@@ -168,7 +156,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 typedef size_t yy_size_t;
 #endif
 
-extern yy_size_t yyleng;
+extern int yyleng;
 
 extern FILE *yyin, *yyout;
 
@@ -184,7 +172,7 @@ extern FILE *yyin, *yyout;
        do \
                { \
                /* Undo effects of setting up yytext. */ \
-        yy_size_t yyless_macro_arg = (n); \
+        int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
@@ -207,12 +195,12 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       yy_size_t yy_buf_size;
+       int yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       yy_size_t yy_n_chars;
+       int yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -235,7 +223,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -263,7 +251,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -282,11 +270,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
-yy_size_t yyleng;
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
@@ -311,7 +299,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
 
 void *yyalloc (yy_size_t  );
 void *yyrealloc (void *,yy_size_t  );
@@ -345,7 +333,7 @@ void yyfree (void *  );
 
 typedef unsigned char YY_CHAR;
 
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
@@ -362,10 +350,7 @@ extern char *yytext;
 static yy_state_type yy_get_previous_state (void );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 static int yy_get_next_buffer (void );
-#if defined(__GNUC__) && __GNUC__ >= 3
-__attribute__((__noreturn__))
-#endif
-static void yy_fatal_error (yyconst char msg[]  );
+static void yynoreturn yy_fatal_error (yyconst char* msg  );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
@@ -373,13 +358,13 @@ static void yy_fatal_error (yyconst char msg[]  );
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
        (yytext_ptr) -= (yy_more_len); \
-       yyleng = (size_t) (yy_cp - (yytext_ptr)); \
+       yyleng = (int) (yy_cp - (yytext_ptr)); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 228
-#define YY_END_OF_BUFFER 229
+#define YY_NUM_RULES 229
+#define YY_END_OF_BUFFER 230
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,254 +372,254 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[2233] =
+static yyconst flex_int16_t yy_accept[2238] =
     {   0,
-        1,    1,  210,  210,  214,  214,  218,  218,  222,  222,
-        1,    1,  229,  226,    1,  208,  208,  227,    2,  227,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      210,  211,  211,  212,  227,  214,  215,  215,  216,  227,
-      221,  218,  219,  219,  220,  227,  222,  223,  223,  224,
-      227,  225,  209,    2,  213,  227,  225,  226,    0,    1,
-        2,    2,    2,    2,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      210,    0,  214,    0,  221,    0,  218,  222,    0,  225,
-        0,    2,    2,  225,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  225,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  225,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,   77,
-      226,  226,  226,  226,  226,  226,    8,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,   88,  225,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  225,  226,  226,  226,  226,  226,   37,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  169,  226,   14,   15,  226,   18,   17,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  155,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-        3,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  225,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  217,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-       40,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,   41,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  144,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,   20,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  102,  226,  217,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  196,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  119,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  101,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,   75,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-       25,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,   38,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,   39,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  120,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,   28,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  184,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-       32,  226,   33,  226,  226,  226,   78,  226,   79,  226,
-      226,   76,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,    7,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  162,  226,  226,  226,  226,  104,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,   29,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  136,  226,  135,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,   16,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,   42,  226,  226,  226,
-      226,  226,  226,  143,  226,  226,  226,  226,   81,   80,
-      226,  226,  226,  226,  226,  226,  226,  226,  130,  226,
-      226,  226,  226,  226,  226,  226,  226,   89,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,   60,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,   64,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,   36,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  133,  134,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,    6,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  194,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,   26,  226,  226,  226,  226,
-      226,  226,  226,  226,  126,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  148,  226,  127,  226,  226,
-      160,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,   27,  226,  226,  226,  226,
-       84,  226,   85,  226,   83,  226,  226,  226,  226,  226,
-      226,  226,  226,   99,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  183,  226,  226,  226,  226,
-      226,  226,  226,  226,  128,  226,  226,  226,  226,  226,
-
-      131,  226,  226,  159,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,   74,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,   34,  226,  226,   22,
-      226,  226,  226,  226,   19,  226,  109,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,   49,   51,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  198,  226,  226,  170,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,   86,  226,  226,  226,  226,  226,  226,  226,   98,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  204,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  103,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  154,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  118,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  114,  226,  121,  226,  226,  226,  226,  226,
-       92,  226,  226,   70,  226,  226,  226,  146,  226,  226,
-      226,  226,  226,  161,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  175,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  117,  226,
-      226,  226,  226,  226,   52,   53,  226,  226,  226,  226,
-      226,   35,  226,  226,  226,  226,  226,   59,  122,  226,
-      137,  226,  163,  132,  226,  226,  226,   45,  226,  124,
-      226,  226,  226,  226,  226,    9,  226,  226,  226,   73,
-      226,  226,  226,  226,  188,  226,  145,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  105,  197,  226,  226,  174,  226,
-      226,  226,  226,  226,  226,  226,  226,  156,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  207,  226,  123,  226,  226,  226,   44,   46,  226,
-      226,  226,  226,  226,  226,  226,   72,  226,  226,  226,
-      226,  186,  226,  193,  226,  226,  226,  226,  226,  150,
-       23,   24,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,   69,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  152,  149,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  226,  226,  226,   43,
-      226,  226,  226,  226,  226,  226,  226,  226,  100,   13,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  202,
-      226,  205,  226,  226,  226,  226,  226,  226,   12,  226,
-      226,   21,  226,  226,  226,  192,  226,  195,   47,  226,
-      158,  226,  151,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  113,  112,  226,  226,
-      226,  226,  226,  226,  153,  147,  226,  226,  199,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,   54,
-
-      226,  226,  226,  187,  226,  226,  226,  226,  226,  157,
-      226,  226,  226,  226,  226,  226,  226,  226,   48,  226,
-      226,  226,   82,  226,  106,  226,  108,  138,  226,  226,
-      226,  111,  226,  226,  164,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  171,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  139,  226,  226,  185,  226,  206,  226,
-      226,  226,   30,  226,  226,  226,  226,    4,  226,  226,
-       93,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  167,  226,  226,  226,  226,  226,  226,  200,  226,
-
-      226,  226,  226,  226,  173,  226,  226,  142,  226,  226,
-      226,  226,  226,  226,  226,  226,   57,  226,   31,  191,
-      226,  168,  226,  226,   11,  226,  226,  226,  226,  226,
-      226,  140,   61,  226,  226,  226,  226,  116,  226,  226,
-      226,  226,  226,   95,  226,  226,  226,  226,  226,  226,
-      226,  172,   90,  226,   87,  226,  226,  226,   63,   67,
-       62,  226,   55,  226,  226,  226,   10,  226,  226,  226,
-      189,  226,  226,  226,  115,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-       68,   66,  226,   56,  203,  226,  226,  226,  129,  226,
-
-      226,  141,  226,  226,  226,  226,  226,  107,   50,  226,
-      226,  201,  226,  226,  226,  226,  226,  226,   91,   65,
-       96,   97,   58,  226,  190,  110,  226,  226,  226,  166,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      226,   71,  226,  165,  226,  182,  226,  226,  226,  226,
-      226,  226,    5,  226,  226,  226,  226,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-       94,  226,  226,  226,  226,  226,  226,  125,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-
-      226,  226,  226,  226,  226,  226,  178,  226,  226,  226,
-      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
-      176,  226,  179,  180,  226,  226,  226,  226,  226,  177,
-      181,    0
+        1,    1,  211,  211,  215,  215,  219,  219,  223,  223,
+        1,    1,  230,  227,    1,  209,  209,  228,    2,  228,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      211,  212,  212,  213,  228,  215,  216,  216,  217,  228,
+      222,  219,  220,  220,  221,  228,  223,  224,  224,  225,
+      228,  226,  210,    2,  214,  228,  226,  227,    0,    1,
+        2,    2,    2,    2,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      211,    0,  215,    0,  222,    0,  219,  223,    0,  226,
+        0,    2,    2,  226,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  226,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  226,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,   77,
+      227,  227,  227,  227,  227,  227,    8,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,   88,  226,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  226,  227,  227,  227,  227,  227,   37,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  170,  227,   14,   15,  227,   18,   17,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  156,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+        3,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  226,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  218,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+       40,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,   41,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  145,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,   20,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  103,  227,  218,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  197,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  120,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  102,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,   75,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+       25,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,   38,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   39,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  121,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,   28,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  185,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+       32,  227,   33,  227,  227,  227,   78,  227,   79,  227,
+      227,   76,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,    7,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  163,  227,  227,  227,  227,  105,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,   29,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  137,  227,  136,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   16,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,   42,  227,  227,  227,
+      227,  227,  227,  144,  227,  227,  227,  227,   81,   80,
+      227,  227,  227,  227,  227,  227,  227,  227,  131,  227,
+      227,  227,  227,  227,  227,  227,  227,   89,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,   60,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,   64,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,   36,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  134,  135,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,    6,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  195,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   26,  227,  227,  227,  227,
+      227,  227,  227,  227,  127,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  149,  227,  128,  227,  227,
+      161,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   27,  227,  227,  227,  227,
+       84,  227,   85,  227,   83,  227,  227,  227,  227,  227,
+      227,  227,  227,  100,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  184,  227,  227,  227,  227,
+      227,  227,  227,  227,  129,  227,  227,  227,  227,  227,
+
+      132,  227,  227,  160,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,   74,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,   34,  227,  227,   22,
+      227,  227,  227,  227,   19,  227,  110,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,   49,   51,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  199,  227,  227,  171,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,   86,  227,  227,  227,  227,  227,  227,  227,   99,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  205,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  104,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  155,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  119,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  115,  227,  122,  227,  227,  227,  227,  227,
+       92,  227,  227,   70,  227,  227,  227,  227,  147,  227,
+      227,  227,  227,  227,  162,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  176,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  118,
+      227,  227,  227,  227,  227,   52,   53,  227,  227,  227,
+      227,  227,   35,  227,  227,  227,  227,  227,   59,  123,
+      227,  138,  227,  164,  133,  227,  227,  227,   45,  227,
+      125,  227,  227,  227,  227,  227,    9,  227,  227,  227,
+       73,  227,  227,  227,  227,  189,  227,  146,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  106,  198,  227,  227,
+      175,  227,  227,  227,  227,  227,  227,  227,  227,  157,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  208,  227,  124,  227,  227,  227,   44,
+       46,  227,  227,  227,  227,  227,  227,  227,   72,  227,
+      227,  227,  227,  187,  227,  194,  227,  227,  227,  227,
+      227,  151,   23,   24,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,   69,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  153,
+
+      150,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,   43,  227,  227,  227,  227,  227,  227,  227,
+      227,  101,   13,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  203,  227,  206,  227,  227,  227,  227,  227,
+      227,   12,  227,  227,   21,  227,  227,  227,  193,  227,
+      196,   47,  227,  159,  227,  152,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  114,
+      113,  227,  227,  227,  227,  227,  227,  227,  154,  148,
+      227,  227,  200,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,   54,  227,  227,  227,  188,  227,  227,
+      227,  227,  227,  158,  227,  227,  227,  227,  227,  227,
+      227,  227,   48,  227,  227,  227,   82,  227,  107,  227,
+      109,  139,  227,  227,  227,  112,  227,  227,  165,  227,
+      227,  227,  227,  227,   94,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  172,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  140,  227,
+      227,  186,  227,  207,  227,  227,  227,   30,  227,  227,
+      227,  227,    4,  227,  227,   93,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  168,  227,  227,  227,
+
+      227,  227,  227,  201,  227,  227,  227,  227,  227,  174,
+      227,  227,  143,  227,  227,  227,  227,  227,  227,  227,
+      227,   57,  227,   31,  192,  227,  169,  227,  227,   11,
+      227,  227,  227,  227,  227,  227,  141,   61,  227,  227,
+      227,  227,  117,  227,  227,  227,  227,  227,   96,  227,
+      227,  227,  227,  227,  227,  227,  173,   90,  227,   87,
+      227,  227,  227,   63,   67,   62,  227,   55,  227,  227,
+      227,   10,  227,  227,  227,  190,  227,  227,  227,  116,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   68,   66,  227,   56,  204,
+
+      227,  227,  227,  130,  227,  227,  142,  227,  227,  227,
+      227,  227,  108,   50,  227,  227,  202,  227,  227,  227,
+      227,  227,  227,   91,   65,   97,   98,   58,  227,  191,
+      111,  227,  227,  227,  167,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  227,   71,  227,  166,  227,
+      183,  227,  227,  227,  227,  227,  227,    5,  227,  227,
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,   95,  227,  227,  227,  227,
+      227,  227,  126,  227,  227,  227,  227,  227,  227,  227,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  179,  227,  227,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  227,  177,  227,  180,  181,  227,
+      227,  227,  227,  227,  178,  182,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -677,15 +662,15 @@ static yyconst YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[2247] =
+static yyconst flex_uint16_t yy_base[2252] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112, 2503, 2455,   81, 4382, 4382, 4382,   96,   52,
+       90,  112, 2503, 2455,   81, 4392, 4392, 4392,   96,   52,
        72,  107,  111,   70,   91,  109,  124,   98,  127,  114,
       133,  136,   64,  144,  146,  150,  156,  177,  167,  182,
-     1910, 4382, 4382, 4382,  182, 1672, 4382, 4382, 4382,  173,
-     1553, 1246, 4382, 4382, 4382,  206,  957, 4382, 4382, 4382,
-      194,  879, 4382,  210, 4382,  214,  174,  843,  218,  147,
+     1910, 4392, 4392, 4392,  182, 1672, 4392, 4392, 4392,  173,
+     1553, 1246, 4392, 4392, 4392,  206,  957, 4392, 4392, 4392,
+      194,  879, 4392,  210, 4392,  214,  174,  843,  218,  147,
         0,  225,    0,    0,  189,  143,   97,  219,  212,  145,
       179,  214,  221,  223,  227,  234,  229,  170,  231,  232,
       233,  237,  244,  238,  253,  260,  236,  257,  258,  263,
@@ -717,13 +702,13 @@ static yyconst flex_uint16_t yy_base[2247] =
       737,  749,  735,  741,  744,  739,  752,  759,  761,  748,
       756,  762,  764,  767,  774,  768,  775,  776,  779,  783,
       781,  788,  789,  791,  793,  792,  794,  802,  799,  800,
-      801,  807,  810,  811,  809,  814,  812,  818,  819, 4382,
-      824,  826,  827,  828,  829,  830, 4382,  832,  831,  834,
+      801,  807,  810,  811,  809,  814,  812,  818,  819, 4392,
+      824,  826,  827,  828,  829,  830, 4392,  832,  831,  834,
       844,  836,  841,  840,  853,  862,  855,  863,  859,  860,
       864,  866,  867,  868,  869,  872,  870,  890,  875,  878,
       876,  899,  877,  882,  884,  894,  900,  903,  905,  907,
 
-      908,  910,  915,  912,  911,  913,  923, 4382,  931,  939,
+      908,  910,  915,  912,  911,  913,  923, 4392,  931,  939,
       914,  924,  925,  936,  941,  943,  934,  951,  947,  949,
       948,  950,  953,  954,  958,  966,  962,  968,  972,  982,
       978,  980,  987,  964,  983,  984,  961,  986,  995,  992,
@@ -736,450 +721,452 @@ static yyconst flex_uint16_t yy_base[2247] =
 
      1113, 1115, 1121, 1122, 1119, 1124, 1129, 1133, 1135, 1139,
      1125, 1132, 1140, 1142, 1145, 1147, 1152, 1155, 1148, 1156,
-     1158, 1159, 1161, 1164, 1162, 1168, 1171, 1174, 1176, 4382,
+     1158, 1159, 1161, 1164, 1162, 1168, 1171, 1174, 1176, 4392,
      1177, 1184, 1179, 1182, 1181, 1180, 1194, 1187, 1189, 1190,
-     1191, 1197, 4382, 1203, 4382, 4382, 1200, 4382, 4382, 1201,
+     1191, 1197, 4392, 1203, 4392, 4392, 1200, 4392, 4392, 1201,
      1208, 1220, 1204, 1212, 1227, 1228, 1226, 1222, 1223, 1225,
      1233, 1238, 1242, 1244, 1239, 1251, 1248, 1255, 1256, 1257,
      1260, 1262, 1263, 1264, 1266, 1265, 1268, 1271, 1274, 1275,
      1270, 1278, 1277, 1287, 1295, 1296, 1291, 1297, 1298, 1299,
-     1300, 1304, 1301, 1302, 1280, 1305, 1311, 1316, 1312, 4382,
+     1300, 1304, 1301, 1302, 1280, 1305, 1311, 1316, 1312, 4392,
 
      1313, 1315, 1317, 1323, 1325, 1326, 1329, 1332, 1330, 1334,
-     4382, 1333, 1343, 1336, 1346, 1338, 1340, 1347, 1348, 1349,
+     4392, 1333, 1343, 1336, 1346, 1338, 1340, 1347, 1348, 1349,
      1352, 1353, 1355, 1361, 1350, 1363, 1366, 1365, 1367, 1375,
      1379, 1382, 1380, 1378, 1381, 1383, 1385, 1390, 1392, 1395,
      1394, 1396, 1405, 1400, 1403, 1404, 1408, 1410, 1411, 1413,
      1414, 1416, 1417, 1418, 1440, 1423, 1427, 1419, 1421, 1429,
      1426, 1442, 1436, 1454, 1444, 1455, 1452, 1457, 1460, 1463,
      1464, 1466, 1468, 1475, 1471, 1478, 1481, 1476, 1479, 1483,
-     1486, 1490, 1494, 1493, 1492, 1495, 1496, 1503, 1504, 4382,
+     1486, 1490, 1494, 1493, 1492, 1495, 1496, 1503, 1504, 4392,
      1511, 1509, 1510, 1513, 1522, 1518, 1517, 1519, 1521, 1524,
 
      1531, 1532, 1520, 1533, 1527, 1534, 1535, 1537, 1542, 1549,
-     4382, 1544, 1545, 1550, 1552, 1554, 1556, 1557, 1560, 1565,
-     1576, 1571, 4382, 1563, 1578, 1581, 1580, 1573, 1574, 1575,
-     1592, 1588, 1593, 1589, 1595, 1591, 1597, 1598, 1599, 4382,
+     4392, 1544, 1545, 1550, 1552, 1554, 1556, 1557, 1560, 1565,
+     1576, 1571, 4392, 1563, 1578, 1581, 1580, 1573, 1574, 1575,
+     1592, 1588, 1593, 1589, 1595, 1591, 1597, 1598, 1599, 4392,
      1606, 1601, 1609, 1605, 1613, 1614, 1616, 1618, 1620, 1621,
-     1624, 1629, 1625, 1626, 4382, 1627, 1635, 1633, 1628, 1648,
+     1624, 1629, 1625, 1626, 4392, 1627, 1635, 1633, 1628, 1648,
      1649, 1646, 1647, 1651, 1634, 1654, 1655, 1660, 1657, 1662,
-     1658, 1659, 4382, 1663,  130, 1664, 1665, 1666, 1676, 1679,
+     1658, 1659, 4392, 1663,  130, 1664, 1665, 1666, 1676, 1679,
      1669, 1681, 1685, 1687, 1688, 1689, 1691, 1692, 1428, 1693,
-     1695, 1697, 1698, 1699, 1703, 1700, 1705, 4382, 1715, 1713,
+     1695, 1697, 1698, 1699, 1703, 1700, 1705, 4392, 1715, 1713,
 
-     1719, 1722, 1704, 1723, 1725, 1727, 1728, 1730, 1729, 4382,
+     1719, 1722, 1704, 1723, 1725, 1727, 1728, 1730, 1729, 4392,
      1738, 1739, 1731, 1742, 1733, 1744, 1746, 1749, 1745, 1750,
-     1751, 1754, 1755, 1756, 1758, 1763, 4382, 1768, 1765, 1766,
+     1751, 1754, 1755, 1756, 1758, 1763, 4392, 1768, 1765, 1766,
      1767, 1775, 1773, 1783, 1781, 1784, 1786, 1788, 1801, 1790,
      1793, 1797, 1794, 1807, 1796, 1808, 1811, 1817, 1815, 1819,
      1821, 1822, 1823, 1831, 1833, 1829, 1838, 1830, 1851, 1845,
-     1847, 4382, 1849, 1840, 1854, 1856, 1863, 1859, 1860, 1861,
+     1847, 4392, 1849, 1840, 1854, 1856, 1863, 1859, 1860, 1861,
      1866, 1864, 1867, 1868, 1870, 1871, 1832, 1876, 1879, 1883,
-     4382, 1884, 1885, 1886, 1892, 1889, 1898, 1895, 1893, 1902,
-     1899, 1903, 1904, 1906, 1915, 1907, 1917, 1913, 1918, 4382,
+     4392, 1884, 1885, 1886, 1892, 1889, 1898, 1895, 1893, 1902,
+     1899, 1903, 1904, 1906, 1915, 1907, 1917, 1913, 1918, 4392,
 
      1927, 1928, 1924, 1932, 1930, 1933, 1934, 1936, 1937, 1938,
      1940, 1947, 1942, 1944, 1792, 1946, 1943, 1948, 1950, 1951,
-     1953, 1954, 1966, 1955, 1967, 4382, 1968, 1975, 1973, 1977,
+     1953, 1954, 1966, 1955, 1967, 4392, 1968, 1975, 1973, 1977,
      1979, 1980, 1981, 1988, 1983, 2000, 1992, 1991, 1984, 1989,
-     1999, 2001, 2004, 2005, 4382, 2007, 2008, 2009, 2012, 2013,
+     1999, 2001, 2004, 2005, 4392, 2007, 2008, 2009, 2012, 2013,
      2014, 2016, 2018, 2030, 2032, 2033, 2023, 2010, 2020, 2034,
-     2036, 2040, 2043, 2050, 2051, 2046, 2052, 4382, 2055, 2056,
+     2036, 2040, 2043, 2050, 2051, 2046, 2052, 4392, 2055, 2056,
      2057, 2058, 2059, 2062, 2063, 2064, 2067, 2071, 2069, 2068,
      2072, 2081, 2084, 2085, 2088, 2089, 2090, 2092, 2093, 2094,
      2095, 2102, 2097, 2098, 2099, 2103, 2100, 2104, 2106, 2110,
 
-     2112, 2120, 2124, 2126, 2129, 2127, 2128, 2130, 2136, 4382,
+     2112, 2120, 2124, 2126, 2129, 2127, 2128, 2130, 2136, 4392,
      2134, 2135, 2145, 2141, 2148, 2139, 2147, 2149, 2156, 2158,
-     4382, 2153, 4382, 2161, 2162, 2170, 4382, 2168, 4382, 2173,
-     2160, 4382, 2174, 2178, 2175, 2180, 2181, 2182, 2183, 2185,
-     2188, 2186, 2193, 2189, 2191, 2196, 2197, 2199, 4382, 2208,
+     4392, 2153, 4392, 2161, 2162, 2170, 4392, 2168, 4392, 2173,
+     2160, 4392, 2174, 2178, 2175, 2180, 2181, 2182, 2183, 2185,
+     2188, 2186, 2193, 2189, 2191, 2196, 2197, 2199, 4392, 2208,
      2201, 2203, 2209, 2213, 2212, 2214, 2215, 2220, 2221, 2226,
-     2222, 2229, 2230, 2237, 4382, 2233, 2236, 2238, 2239, 4382,
+     2222, 2229, 2230, 2237, 4392, 2233, 2236, 2238, 2239, 4392,
      2240, 2242, 2248, 2244, 2246, 2251, 2253, 2252, 2260, 2273,
      2269, 2259, 2270, 2255, 2276, 2277, 2281, 2283, 2284, 2285,
      2292, 2288, 2295, 2287, 2291, 2298, 2294, 2290, 2300, 2302,
 
-     2304, 2307, 2311, 2306, 2315, 2312, 2313, 2314, 2316, 4382,
+     2304, 2307, 2311, 2306, 2315, 2312, 2313, 2314, 2316, 4392,
      2325, 2326, 2329, 2330, 2327, 2335, 2317, 2336, 2338, 2340,
-     2343, 2339, 2344, 4382, 2352, 4382, 2345, 2357, 2359, 2361,
+     2343, 2339, 2344, 4392, 2352, 4392, 2345, 2357, 2359, 2361,
      2362, 2363, 2353, 2365, 2366, 2371, 2373, 2384, 2376, 2377,
-     2379, 2386, 2387, 2389, 2388, 4382, 2390, 2391, 2393, 2395,
-     2398, 2403, 2412, 2410, 2396, 2424, 4382, 2426, 2399, 2431,
-     2416, 2434, 2429, 4382, 2430, 2438, 2433, 2436, 4382, 4382,
-     2437, 2440, 2441, 2442, 2443, 2453, 2449, 2451, 4382, 2458,
-     2444, 2402, 2461, 2463, 2467, 2470, 2452, 4382, 2459, 2477,
+     2379, 2386, 2387, 2389, 2388, 4392, 2390, 2391, 2393, 2395,
+     2398, 2403, 2412, 2410, 2396, 2424, 4392, 2426, 2399, 2431,
+     2416, 2434, 2429, 4392, 2430, 2438, 2433, 2436, 4392, 4392,
+     2437, 2440, 2441, 2442, 2443, 2453, 2449, 2451, 4392, 2458,
+     2444, 2402, 2461, 2463, 2467, 2470, 2452, 4392, 2459, 2477,
      2471, 2473, 2478, 2481, 2482, 2483, 2492, 2484, 2487, 2488,
 
-     2498, 2499, 2507, 4382, 2495, 2504, 2509, 2510, 2256, 2491,
+     2498, 2499, 2507, 4392, 2495, 2504, 2509, 2510, 2256, 2491,
      2512, 2514, 2515, 2516, 2517, 2518, 2519, 2521, 2526, 2523,
      2528, 2537, 2535, 2536, 2539, 2541, 2542, 2545, 2547, 2549,
-     2550, 2557, 2558, 4382, 2566, 2552, 2569, 2553, 2564, 2572,
-     2573, 2581, 2576, 2565, 2577, 2586, 2579, 4382, 2593, 2582,
+     2550, 2557, 2558, 4392, 2566, 2552, 2569, 2553, 2564, 2572,
+     2573, 2581, 2576, 2565, 2577, 2586, 2579, 4392, 2593, 2582,
      2598, 2583, 2591, 2607, 2602, 2584, 2603, 2609, 2605, 2612,
-     2610, 2614, 2615, 2618, 4382, 4382, 2619, 2620, 2622, 2623,
-     2625, 2626, 2627, 2633, 2629, 2640, 4382, 2637, 2645, 2643,
+     2610, 2614, 2615, 2618, 4392, 4392, 2619, 2620, 2622, 2623,
+     2625, 2626, 2627, 2633, 2629, 2640, 4392, 2637, 2645, 2643,
      2644, 2652, 2654, 2650, 2657, 2658, 2659, 2647, 2660, 2661,
-     2665, 2668, 2669, 2671, 2673, 4382, 2676, 2674, 2678, 2680,
+     2665, 2668, 2669, 2671, 2673, 4392, 2676, 2674, 2678, 2680,
 
      2675, 2682, 2688, 2685, 2699, 2690, 2692, 2700, 2708, 2704,
-     2713, 2715, 2705, 2710, 2723, 4382, 2714, 2721, 2716, 2718,
-     2730, 2719, 2733, 2732, 4382, 2734, 2735, 2739, 2746, 2729,
-     2748, 2747, 2750, 2751, 2752, 4382, 2754, 4382, 2760, 2756,
-     4382, 2758, 2762, 2765, 2766, 2767, 2777, 2769, 2771, 2773,
-     2778, 2779, 2781, 2788, 2784, 4382, 2792, 2785, 2787, 2790,
-     4382, 2795, 4382, 2800, 4382, 2802, 2801, 2811, 2806, 2807,
-     2810, 2814, 2818, 4382, 2820, 2809, 2821, 2819, 2824, 2825,
-     2830, 2831, 2832, 2833, 2834, 4382, 2835, 2838, 2847, 2836,
-     2839, 2841, 2851, 2849, 4382, 2852, 2860, 2861, 2863, 2864,
-
-     4382, 2865, 2870, 4382, 2866, 2876, 2867, 2873, 2881, 2877,
-     2884, 2885, 2886, 2894, 2887, 2891, 2890, 4382, 2895, 2896,
+     2713, 2715, 2705, 2710, 2723, 4392, 2714, 2721, 2716, 2718,
+     2730, 2719, 2733, 2732, 4392, 2734, 2735, 2739, 2746, 2729,
+     2748, 2747, 2750, 2751, 2752, 4392, 2754, 4392, 2760, 2756,
+     4392, 2758, 2762, 2765, 2766, 2767, 2777, 2769, 2771, 2773,
+     2778, 2779, 2781, 2788, 2784, 4392, 2792, 2785, 2787, 2790,
+     4392, 2795, 4392, 2800, 4392, 2802, 2801, 2811, 2806, 2807,
+     2810, 2814, 2818, 4392, 2820, 2809, 2821, 2819, 2824, 2825,
+     2830, 2831, 2832, 2833, 2834, 4392, 2835, 2838, 2847, 2836,
+     2839, 2841, 2851, 2849, 4392, 2852, 2860, 2861, 2863, 2864,
+
+     4392, 2865, 2870, 4392, 2866, 2876, 2867, 2873, 2881, 2877,
+     2884, 2885, 2886, 2894, 2887, 2891, 2890, 4392, 2895, 2896,
      2900, 2901, 2897, 2905, 2913, 2911, 2915, 2908, 2918, 2921,
-     2923, 2924, 2909, 2928, 2929, 2931, 4382, 2934, 2936, 4382,
-     2933, 2937, 2940, 2944, 4382, 2942, 4382, 2945, 2947, 2949,
+     2923, 2924, 2909, 2928, 2929, 2931, 4392, 2934, 2936, 4392,
+     2933, 2937, 2940, 2944, 4392, 2942, 4392, 2945, 2947, 2949,
      2950, 2953, 2954, 2956, 2964, 2965, 2966, 2967, 2976, 2973,
-     2968, 4382, 4382, 2978, 2984, 2982, 2987, 2989, 2992, 2979,
-     3000, 2993, 2996, 3001, 4382, 3003, 3002, 4382, 3005, 3008,
-     3009, 3010, 3011, 3015, 3012, 3018, 3019, 3014, 3021, 3020,
-     3024, 4382, 3031, 3034, 3027, 3035, 3037, 3036, 3038, 4382,
-
-     3040, 3042, 3044, 3039, 3049, 3053, 3060, 3065, 3068, 3056,
-     3062, 3069, 3072, 3074, 3077, 4382, 3078, 3076, 3079, 3080,
-     3086, 3088, 3089, 3091, 3093, 3095, 3098, 3100, 3101, 4382,
-     3102, 3104, 3105, 3110, 3112, 3113, 3115, 3116, 3122, 3106,
-     3123, 3126, 3128, 4382, 3129, 3131, 3133, 3135, 3137, 3134,
-     3141, 3142, 3143, 3144, 3146, 3151, 3155, 4382, 3152, 3156,
-     3158, 3159, 3163, 3166, 3168, 3165, 3167, 3169, 3177, 3174,
-     3181, 3185, 4382, 3179, 4382, 3182, 3192, 3196, 3194, 3187,
-     4382, 3197, 3201, 4382, 3202, 3200, 3205, 4382, 3208, 3213,
-     3204, 3215, 3220, 4382, 3222, 3223, 3231, 3230, 3226, 3232,
-
-     3234, 3235, 3236, 3237, 4382, 3239, 3241, 3248, 3245, 3242,
-     3251, 3252, 3253, 3254, 3256, 3264, 3259, 3260, 4382, 3263,
-     3267, 3275, 3198, 3268, 4382, 4382, 3273, 3276, 3280, 3281,
-     3284, 4382, 3282, 3294, 3289, 3291, 3293, 4382, 4382, 3296,
-     4382, 3292, 4382, 4382, 3298, 3299, 3306, 4382, 3309, 4382,
-     3317, 3312, 3300, 3297, 3315, 4382, 3314, 3318, 3322, 4382,
-     3323, 3331, 3324, 3326, 4382, 3328, 4382, 3334, 3337, 3338,
-     3344, 3339, 3340, 3345, 3348, 3352, 3356, 3349, 3357, 3358,
-     3360, 3362, 3363, 3364, 3366, 3365, 3368, 3369, 3373, 3377,
-     3379, 3380, 3381, 3382, 3384, 3387, 3386, 3388, 3391, 3396,
-
-     3398, 3390, 3407, 3409, 4382, 4382, 3400, 3402, 4382, 3412,
-     3415, 3414, 3417, 3416, 3419, 3420, 3421, 4382, 3424, 3426,
-     3427, 3434, 3428, 3429, 3430, 3440, 3431, 3452, 3454, 3455,
-     3442, 3444, 3446, 3457, 3458, 3461, 3463, 3464, 3470, 3471,
-     3475, 4382, 3467, 4382, 3476, 3472, 3477, 4382, 4382, 3479,
-     3480, 3488, 3482, 3484, 3490, 3491, 4382, 3493, 3494, 3501,
-     3503, 4382, 3505, 4382, 3507, 3509, 3511, 3512, 3514, 4382,
-     4382, 4382, 3518, 3515, 3520, 3521, 3522, 3524, 3526, 3523,
-     3532, 4382, 3529, 3534, 3536, 3535, 3546, 3548, 3549, 3552,
-     3559, 3555, 3561, 3543, 3564, 3566, 4382, 4382, 3554, 3574,
-
-     3570, 3577, 3572, 3578, 3579, 3569, 3581, 3580, 3582, 4382,
-     3587, 3586, 3592, 3593, 3595, 3596, 3597, 3599, 4382, 4382,
-     3600, 3601, 3603, 3612, 3607, 3609, 3602, 3614, 3615, 4382,
-     3616, 4382, 3620, 3623, 3630, 3629, 3625, 3632, 4382, 3635,
-     3636, 4382, 3638, 3639, 3641, 4382, 3645, 4382, 4382, 3648,
-     4382, 3643, 4382, 3650, 3651, 3655, 3657, 3659, 3661, 3665,
-     3667, 3668, 3669, 3677, 3673, 3674, 4382, 4382, 3681, 3676,
-     3679, 3688, 3684, 3687, 4382, 4382, 3689, 3690, 4382, 3692,
-     3695, 3696, 3697, 3698, 3700, 3703, 3704, 3708, 3705, 3706,
-     3710, 3719, 3721, 3722, 3725, 3525, 3726, 3728, 3729, 4382,
-
-     3731, 3733, 3732, 4382, 3739, 3734, 3743, 3746, 3744, 4382,
-     3740, 3755, 3752, 3757, 3747, 3765, 3760, 3761, 4382, 3768,
-     3763, 3769, 4382, 3771, 4382, 3774, 4382, 4382, 3775, 3776,
-     3778, 4382, 3779, 3788, 4382, 3783, 3785, 3790, 3793, 3795,
-     3797, 3798, 3802, 3799, 3804, 3805, 3813, 3806, 3815, 4382,
-     3808, 3811, 3817, 3819, 3818, 3821, 3824, 3825, 3828, 3829,
-     3833, 3838, 3835, 4382, 3842, 3846, 4382, 3839, 4382, 3848,
-     3849, 3850, 4382, 3852, 3843, 3853, 3856, 4382, 3857, 3864,
-     4382, 3861, 3867, 3869, 3862, 3870, 3872, 3873, 3880, 3874,
-     3881, 4382, 3885, 3886, 3894, 3891, 3892, 3887, 4382, 3896,
-
-     3898, 3908, 3903, 3900, 4382, 3910, 3904, 4382, 3912, 3913,
-     3914, 3919, 3916, 3926, 3930, 3922, 4382, 3932, 4382, 4382,
-     3933, 4382, 3934, 3935, 4382, 3938, 3939, 3940, 3941, 3943,
-     3944, 4382, 4382, 3945, 3946, 3948, 3957, 4382, 3951, 3955,
-     3958, 3961, 3964, 4382, 3966, 3965, 3968, 3967, 3972, 3976,
-     3977, 4382, 4382, 3978, 4382, 3980, 3988, 3991, 4382, 4382,
-     4382, 3993, 4382, 4000, 4004, 4003, 4382, 4006, 3994, 3996,
-     4382, 4009, 4011, 3969, 4382, 4013, 4014, 4015, 4020, 4022,
-     4017, 4024, 4026, 4027, 4028, 4030, 4033, 4034, 4035, 4037,
-     4382, 4382, 4041, 4382, 4382, 4045, 4047, 4049, 4382, 4050,
-
-     4056, 4382, 4058, 4053, 4060, 4062, 4064, 4382, 4382, 4066,
-     4067, 4382, 4074, 4069, 4071, 4072, 4075, 4073, 4382, 4382,
-     4382, 4382, 4382, 4078, 4382, 4382, 4082, 4079, 4080, 4382,
-     4085, 4087, 4088, 4090, 4092, 4095, 4096, 4097, 4100, 4103,
-     4104, 4106, 4114, 4117, 4118, 4119, 4107, 4122, 4131, 4126,
-     4128, 4382, 4129, 4382, 4130, 4382, 4133, 4141, 4142, 4139,
-     4134, 4138, 4382, 4145, 4146, 4143, 4151, 4154, 4149, 4155,
-     4156, 4158, 4166, 4169, 4171, 4173, 4174, 4163, 4181, 4184,
-     4382, 4180, 4172, 4185, 4192, 4188, 4189, 4382, 4190, 4193,
-     4194, 4196, 4197, 4200, 4199, 4210, 4214, 4201, 4216, 4203,
-
-     4220, 4217, 4221, 4208, 4225, 4226, 4382, 4229, 4231, 4232,
-     4233, 4237, 4235, 4239, 4240, 4243, 4246, 4248, 4250, 4255,
-     4382, 4256, 4382, 4382, 4259, 4244, 4257, 4266, 4268, 4382,
-     4382, 4382, 4290, 4297, 4304, 4311, 4318,  101, 4325, 4332,
-     4339, 4346, 4353, 4360, 4367, 4374
+     2968, 4392, 4392, 2978, 2984, 2982, 2987, 2989, 2992, 2979,
+     3000, 2993, 2996, 3001, 4392, 3003, 3002, 4392, 3005, 3008,
+     3009, 3011, 3012, 3015, 3018, 3020, 3021, 3014, 3023, 3016,
+     3024, 4392, 3027, 3031, 3035, 3036, 3037, 3038, 3039, 4392,
+
+     3041, 3045, 3048, 3040, 3047, 3049, 3063, 3066, 3068, 3057,
+     3069, 3070, 3074, 3076, 3073, 4392, 3079, 3077, 3080, 3081,
+     3088, 3090, 3085, 3092, 3094, 3096, 3099, 3101, 3102, 4392,
+     3103, 3106, 3107, 3110, 3111, 3113, 3114, 3122, 3125, 3116,
+     3118, 3120, 3128, 4392, 3130, 3131, 3132, 3136, 3142, 3134,
+     3144, 3137, 3145, 3146, 3148, 3151, 3156, 4392, 3155, 3159,
+     3161, 3162, 3163, 3165, 3166, 3168, 3169, 3173, 3176, 3174,
+     3187, 3189, 4392, 3177, 4392, 3190, 3179, 3198, 3194, 3191,
+     4392, 3200, 3196, 4392, 3202, 3201, 3204, 3206, 4392, 3207,
+     3216, 3208, 3212, 3223, 4392, 3226, 3227, 3235, 3231, 3220,
+
+     3236, 3233, 3238, 3239, 3240, 4392, 3242, 3244, 3249, 3250,
+     3243, 3251, 3253, 3256, 3254, 3257, 3265, 3264, 3261, 4392,
+     3266, 3268, 3275, 3272, 3276, 4392, 4392, 3277, 3283, 3285,
+     3281, 3286, 4392, 3289, 3296, 3292, 3295, 3297, 4392, 4392,
+     3299, 4392, 3300, 4392, 4392, 3303, 3305, 3302, 4392, 3312,
+     4392, 3315, 3313, 3316, 3317, 3319, 4392, 3321, 3322, 3326,
+     4392, 3320, 3333, 3323, 3328, 4392, 3331, 4392, 3335, 3338,
+     3342, 3344, 3345, 3348, 3349, 3351, 3353, 3356, 3357, 3358,
+     3360, 3363, 3365, 3364, 3366, 3367, 3368, 3374, 3370, 3380,
+     3381, 3382, 3383, 3384, 3385, 3387, 3390, 3389, 3391, 3394,
+
+     3399, 3400, 3404, 3393, 3403, 3415, 4392, 4392, 3410, 3412,
+     4392, 3417, 3418, 3419, 3420, 3421, 3422, 3425, 3426, 4392,
+     3432, 3424, 3429, 3438, 3434, 3435, 3439, 3444, 3446, 3451,
+     3455, 3458, 3448, 3456, 3459, 3462, 3461, 3463, 3464, 3468,
+     3473, 3474, 3480, 4392, 3475, 4392, 3477, 3482, 3484, 4392,
+     4392, 3485, 3487, 3489, 3491, 3492, 3496, 3493, 4392, 3498,
+     3500, 3508, 3499, 4392, 3515, 4392, 3517, 3501, 3519, 3521,
+     3523, 4392, 4392, 4392, 3524, 3509, 3527, 3528, 3529, 3530,
+     3533, 3532, 3535, 4392, 3539, 3536, 3542, 3545, 3549, 3553,
+     3550, 3556, 3564, 3562, 3565, 3555, 3563, 3572, 3574, 4392,
+
+     4392, 3546, 3581, 3577, 3584, 3579, 3585, 3586, 3576, 3588,
+     3587, 3589, 4392, 3594, 3593, 3599, 3600, 3602, 3603, 3604,
+     3606, 4392, 4392, 3607, 3608, 3610, 3619, 3614, 3616, 3609,
+     3621, 3622, 4392, 3623, 4392, 3627, 3630, 3637, 3636, 3632,
+     3639, 4392, 3642, 3643, 4392, 3645, 3646, 3648, 4392, 3652,
+     4392, 4392, 3655, 4392, 3650, 4392, 3657, 3658, 3662, 3664,
+     3666, 3668, 3672, 3674, 3675, 3676, 3684, 3680, 3681, 4392,
+     4392, 3688, 3683, 3686, 3695, 3691, 3694, 3697, 4392, 4392,
+     3699, 3700, 4392, 3701, 3702, 3705, 3707, 3708, 3709, 3712,
+     3713, 3714, 3715, 3717, 3729, 3735, 3721, 3733, 3724, 3727,
+
+     3731, 3739, 3741, 4392, 3743, 3745, 3746, 4392, 3750, 3747,
+     3752, 3755, 3756, 4392, 3757, 3763, 3766, 3758, 3768, 3777,
+     3769, 3772, 4392, 3774, 3778, 3779, 4392, 3780, 4392, 3784,
+     4392, 4392, 3785, 3788, 3786, 4392, 3792, 3798, 4392, 3794,
+     3800, 3801, 3803, 3806, 4392, 3810, 3807, 3814, 3808, 3815,
+     3816, 3823, 3818, 3825, 4392, 3819, 3826, 3828, 3831, 3832,
+     3830, 3833, 3835, 3837, 3842, 3840, 3851, 3846, 4392, 3853,
+     3856, 4392, 3848, 4392, 3858, 3859, 3862, 4392, 3861, 3863,
+     3864, 3870, 4392, 3871, 3868, 4392, 3873, 3877, 3879, 3881,
+     3874, 3880, 3884, 3886, 3888, 3896, 4392, 3894, 3898, 3905,
+
+     3901, 3907, 3902, 4392, 3903, 3909, 3917, 3912, 3914, 4392,
+     3916, 3919, 4392, 3922, 3926, 3923, 3927, 3925, 3934, 3936,
+     3939, 4392, 3941, 4392, 4392, 3942, 4392, 3943, 3945, 4392,
+     3948, 3949, 3950, 3951, 3953, 3954, 4392, 4392, 3955, 3956,
+     3958, 3962, 4392, 3966, 3968, 3971, 3972, 3973, 4392, 3974,
+     3975, 3978, 3977, 3980, 3981, 3985, 4392, 4392, 3983, 4392,
+     3992, 4000, 4001, 4392, 4392, 4392, 4007, 4392, 4009, 4013,
+     4012, 4392, 4015, 4004, 4017, 4392, 4019, 3987, 4020, 4392,
+     4021, 4023, 4024, 4027, 4029, 4030, 4033, 4037, 4034, 4040,
+     4041, 4042, 4043, 4044, 4050, 4392, 4392, 4052, 4392, 4392,
+
+     4054, 4057, 4061, 4392, 4058, 4065, 4392, 4069, 4066, 4070,
+     4072, 4074, 4392, 4392, 4075, 4076, 4392, 4083, 4080, 4081,
+     4082, 4084, 4088, 4392, 4392, 4392, 4392, 4392, 4089, 4392,
+     4392, 4091, 4085, 4096, 4392, 4090, 4097, 4098, 4099, 4103,
+     4100, 4106, 4107, 4109, 4115, 4117, 4120, 4123, 4128, 4125,
+     4132, 4133, 4134, 4141, 4136, 4139, 4392, 4140, 4392, 4142,
+     4392, 4143, 4151, 4152, 4147, 4144, 4148, 4392, 4154, 4159,
+     4153, 4156, 4164, 4165, 4166, 4170, 4173, 4179, 4180, 4182,
+     4183, 4185, 4174, 4195, 4197, 4392, 4191, 4186, 4194, 4206,
+     4199, 4201, 4392, 4202, 4203, 4204, 4208, 4209, 4211, 4212,
+
+     4219, 4224, 4227, 4226, 4215, 4229, 4230, 4235, 4217, 4238,
+     4239, 4392, 4240, 4241, 4244, 4247, 4248, 4250, 4251, 4252,
+     4255, 4257, 4260, 4262, 4265, 4392, 4268, 4392, 4392, 4271,
+     4256, 4267, 4278, 4280, 4392, 4392, 4392, 4300, 4307, 4314,
+     4321, 4328,  101, 4335, 4342, 4349, 4356, 4363, 4370, 4377,
+     4384
     } ;
 
-static yyconst flex_int16_t yy_def[2247] =
+static yyconst flex_int16_t yy_def[2252] =
     {   0,
-     2232,    1, 2233, 2233, 2234, 2234, 2235, 2235, 2236, 2236,
-     2237, 2237, 2232, 2238, 2232, 2232, 2232, 2232, 2239, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2240, 2232, 2232, 2232, 2240, 2241, 2232, 2232, 2232, 2241,
-     2242, 2232, 2232, 2232, 2232, 2242, 2243, 2232, 2232, 2232,
-     2243, 2244, 2232, 2245, 2232, 2244, 2244, 2238, 2238, 2232,
-     2246, 2239, 2246, 2239, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2240, 2240, 2241, 2241, 2242, 2242, 2232, 2243, 2243, 2244,
-     2244, 2245, 2245, 2244, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2244, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2244, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2244, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2244, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2232, 2238, 2232, 2232, 2238, 2232, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2244, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2232, 2238, 2244, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2232, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2232, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-
-     2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238,
-     2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2232, 2238, 2238, 2238, 2232, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
-     2232, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-     2238, 2232, 2238, 2238, 2238, 2232, 2238, 2232, 2232, 2238,
-     2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2232, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-     2238, 2238, 2232, 2238, 2232, 2238, 2232, 2232, 2238, 2238,
-     2238, 2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2232, 2238,
-     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
-
-     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2232, 2232,
-     2238, 2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2232, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2232, 2238, 2232, 2238, 2238, 2238, 2232, 2232,
-     2232, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2232, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232, 2238,
-
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238,
-     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232,
-     2232, 2232, 2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2232, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238,
-     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
-     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
-     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-     2232, 2238, 2232, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
-     2232,    0, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232, 2232, 2232, 2232, 2232
+     2237,    1, 2238, 2238, 2239, 2239, 2240, 2240, 2241, 2241,
+     2242, 2242, 2237, 2243, 2237, 2237, 2237, 2237, 2244, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2245, 2237, 2237, 2237, 2245, 2246, 2237, 2237, 2237, 2246,
+     2247, 2237, 2237, 2237, 2237, 2247, 2248, 2237, 2237, 2237,
+     2248, 2249, 2237, 2250, 2237, 2249, 2249, 2243, 2243, 2237,
+     2251, 2244, 2251, 2244, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2245, 2245, 2246, 2246, 2247, 2247, 2237, 2248, 2248, 2249,
+     2249, 2250, 2250, 2249, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2249, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2249, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2249, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2249, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2237, 2237, 2243, 2237, 2237, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2249, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2249, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2237, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2237, 2243,
+     2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2237, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+
+     2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237, 2237,
+     2243, 2237, 2243, 2237, 2237, 2243, 2243, 2243, 2237, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2237,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2237, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243,
+     2237, 2237, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2237, 2243,
+     2237, 2237, 2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2237, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2243, 2237, 2237, 2243, 2237, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2237,
+     2243, 2243, 2243, 2237, 2237, 2237, 2243, 2237, 2243, 2243,
+     2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2237,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2237, 2237,
+
+     2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2237, 2237, 2243, 2243, 2237, 2243, 2243, 2243,
+     2243, 2243, 2243, 2237, 2237, 2237, 2237, 2237, 2243, 2237,
+     2237, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243,
+     2237, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243,
+     2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+
+     2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+     2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2237, 2243,
+     2243, 2243, 2243, 2243, 2237, 2237,    0, 2237, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237
     } ;
 
-static yyconst flex_uint16_t yy_nxt[4423] =
+static yyconst flex_uint16_t yy_nxt[4433] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   14,   18,   20,   21,   14,   22,   23,   24,   25,
@@ -1456,7 +1443,7 @@ static yyconst flex_uint16_t yy_nxt[4423] =
        69, 1320, 1315,   69,   69, 1321,   69, 1324, 1323, 1325,
        69,   69, 1322, 1327,   69,   69,   69,   69, 1326, 1332,
 
-       69,   69, 2232, 1328,   69,   69, 1329, 1335,   69, 1333,
+       69,   69, 2237, 1328,   69,   69, 1329, 1335,   69, 1333,
      1336,   69,   69, 1339, 1330, 1337, 1331,   69, 1334, 1338,
        69, 1341,   69,   69, 1344,   69, 1340,   69,   69,   69,
        69,   69,   69, 1347,   69, 1342,   69, 1351, 1348,   69,
@@ -1483,7 +1470,7 @@ static yyconst flex_uint16_t yy_nxt[4423] =
      1446,   69, 1448,   69, 1441, 1447,   69,   69,   69,   69,
      1451,   69,   69, 1443,   69, 1450,   69, 1456, 1453, 1452,
      1458, 1454,   69,   69, 1449,   69,   69,   69,   69, 1461,
-     1460, 1462,   69, 2232, 1457, 1465, 1455, 1459, 1463,   69,
+     1460, 1462,   69, 2237, 1457, 1465, 1455, 1459, 1463,   69,
        69,   69, 1464,   69,   69,   69, 1466,   69, 1467,   69,
      1468,   69, 1470,   69, 1469,   69, 1471, 1475,   69,   69,
        69, 1472,   69, 1473,   69, 1477,   69, 1474, 1476, 1478,
@@ -1508,169 +1495,170 @@ static yyconst flex_uint16_t yy_nxt[4423] =
        69, 1559, 1561,   69, 1562,   69, 1560,   69,   69, 1563,
        69, 1567,   69,   69, 1569, 1573,   69,   69, 1575,   69,
      1564, 1565, 1572, 1566, 1568, 1570, 1574,   69,   69,   69,
-       69,   69, 1577, 1580, 1578, 2232,   69, 1571, 1581,   69,
-     1584,   69,   69, 1579, 1582,   69, 1576,   69, 1585, 1588,
-
-       69, 1583,   69, 1589, 1587,   69,   69, 1592, 1594,   69,
-     1591, 1593, 1586,   69,   69,   69,   69, 1590,   69, 1595,
-     1596,   69,   69,   69,   69,   69, 1599,   69,   69, 1602,
-     1605,   69,   69,   69,   69, 1597, 1606,   69, 1601, 1608,
-       69, 1604, 1607, 1598,   69, 1600, 1603,   69,   69,   69,
-       69,   69,   69,   69, 1619,   69, 1610,   69, 2232, 1609,
-     1620, 1616,   69, 1611, 1613, 1621,   69, 1614, 1618,   69,
-     1612, 1615, 1617,   69, 1624,   69, 1622, 1625,   69, 1623,
-     1626,   69,   69, 1629, 1627,   69, 1632,   69, 1628,   69,
-       69,   69,   69,   69, 1630, 1633, 1634, 1631, 1638,   69,
-
-     1639,   69,   69, 1641,   69, 1637,   69, 1643,   69, 1635,
-     1644,   69, 1636,   69,   69,   69, 1648,   69,   69,   69,
-     1647, 1640, 1650,   69, 1642,   69,   69, 1645,   69,   69,
-     1654, 1653, 1652, 1646, 1656,   69,   69, 1649, 1657,   69,
-     1660,   69,   69, 1651,   69, 1655,   69,   69,   69, 1665,
-       69, 1658, 1664, 1667,   69,   69,   69,   69, 1659,   69,
-     1671, 1663, 1661, 1669,   69,   69, 1666, 1662,   69,   69,
-     1673,   69,   69, 1672, 1675, 1668,   69, 1674,   69,   69,
-       69,   69,   69, 1670, 1679, 1677, 1680,   69, 1686, 1682,
-       69, 1683,   69, 1681,   69,   69, 1676, 1678,   69, 1684,
-
-       69, 1685, 1687, 1691, 1689,   69, 1690,   69, 1692,   69,
-       69,   69, 1688,   69,   69,   69, 1693,   69,   69, 1732,
-     1694,   69, 1695, 1697, 1701, 1696,   69, 1698,   69, 1699,
-     1700, 1702, 1705,   69, 1706,   69,   69, 1703, 1708,   69,
-     1704, 1707, 1709,   69,   69,   69, 1711,   69,   69,   69,
-       69, 1715,   69, 1710,   69,   69, 1716, 1717,   69, 1712,
-     1718,   69, 1713, 1719,   69,   69,   69,   69, 1714,   69,
-     1723, 1726,   69,   69, 1725, 1720,   69,   69, 1727, 1722,
-       69,   69, 1731, 1733, 1721, 1730,   69, 1724,   69,   69,
-     1735, 1728, 1729,   69,   69,   69, 1736,   69, 1738, 1739,
-
-     1734, 1740,   69, 1742,   69,   69,   69,   69, 1744,   69,
-       69,   69,   69,   69, 1741, 1743, 1746, 1747, 1748,   69,
-     1737, 1749,   69, 1745, 1750,   69, 1751,   69,   69, 1752,
-       69,   69, 1753, 1754, 1757,   69,   69,   69, 1759,   69,
-     1762,   69, 2232, 1756,   69, 1758, 1755,   69, 1763, 1764,
-       69,   69,   69,   69, 1761, 1760, 1765,   69,   69, 1766,
-     1770,   69,   69, 1769, 1771,   69, 1767, 1768, 1772,   69,
-       69,   69, 1775,   69, 1773,   69,   69,   69,   69,   69,
-     1782,   69,   69, 1778, 1780, 1776,   69, 1777, 1774, 1779,
-       69, 1783,   69,   69,   69,   69, 1789,   69, 1781,   69,
-
-       69,   69, 1797,   69,   69, 1786, 1790, 1794, 1788,   69,
-     1785,   69, 1784,   69, 1795,   69, 1796, 1787, 1791, 1798,
-       69, 1792,   69, 1799, 1793,   69, 1801,   69,   69,   69,
-       69, 1800,   69,   69,   69, 1809, 1810,   69, 1806,   69,
-       69,   69,   69,   69,   69, 1802, 1803,   69, 1811, 1804,
-     1805, 1808, 1807,   69, 1813,   69, 1814,   69, 1812,   69,
-     1815, 1816, 1821, 1818, 1819,   69, 1820,   69,   69, 1817,
-       69,   69, 1823, 1822,   69, 1825,   69,   69, 1824, 1829,
-       69, 1828, 1830,   69,   69,   69, 1831, 1832,   69,   69,
-       69, 1826,   69,   69, 1827,   69, 1838,   69, 1834, 1833,
-
-     1839,   69, 1842,   69,   69, 1835,   69,   69, 1843, 1836,
-     1840, 1845, 1837, 1846,   69, 1841,   69, 1848,   69, 1849,
-       69, 1844,   69, 1851,   69,   69, 1853,   69,   69, 1847,
-     1852,   69, 1854,   69,   69,   69,   69,   69,   69,   69,
-     1858, 1850,   69, 1857, 1860,   69, 1856,   69,   69,   69,
-     1855, 1859, 1864, 1862, 1865, 1861,   69, 1863, 1867,   69,
-     1868,   69,   69, 1866, 1960,   69, 1871,   69,   69, 1869,
-     1870, 1874,   69, 1872,   69, 1873, 1875,   69, 1876,   69,
-     1877, 1878,   69,   69, 1881,   69, 1879,   69, 1880, 1882,
-       69,   69,   69,   69,   69,   69, 1883, 1885, 1887,   69,
-
-       69, 1884, 1886, 1889, 1890,   69,   69, 1888,   69,   69,
-       69, 1895,   69,   69,   69,   69,   69, 1893, 1894, 1892,
-       69, 1896,   69, 1891, 1900,   69, 1904,   69,   69,   69,
-     1903, 1902, 1897,   69, 1898, 1899,   69, 1909,   69, 1901,
-     1908, 1910,   69,   69, 1906,   69, 1911, 1905,   69,   69,
-     1912,   69,   69, 1907,   69, 1915,   69, 1913,   69, 1918,
-     1919,   69, 1914,   69,   69, 1922, 1916, 1923,   69, 1917,
-       69, 1925,   69, 1924,   69, 1926, 1920, 1927,   69, 1928,
-       69,   69,   69, 1921, 1931, 1932,   69,   69, 1934,   69,
-       69, 1933,   69, 1935,   69, 1938, 1930,   69, 1937, 1929,
-
-       69,   69,   69,   69, 1940,   69, 1942, 1941,   69,   69,
-       69,   69, 1936,   69, 1946, 1950,   69,   69,   69,   69,
-     1954,   69, 1939,   69, 1955, 1944, 1945, 1949, 1947, 1952,
-     1943, 1948,   69, 1956,   69,   69, 1951, 1953,   69,   69,
-     1958,   69,   69, 1964,   69,   69,   69,   69, 1961, 1965,
-     1957, 1967,   69,   69, 1968, 1969,   69,   69, 1959,   69,
-       69, 1962, 1963, 1966, 1970,   69, 1971, 1973,   69, 1974,
-       69, 1972, 1977,   69,   69, 1976,   69, 1978,   69, 1975,
-     1981,   69,   69, 1980,   69, 1982, 1979,   69,   69,   69,
-     1987,   69,   69, 1986, 1983, 1992,   69, 1989,   69, 1985,
-
-     1988,   69, 1990,   69, 1997, 1991,   69, 1993,   69, 1984,
-       69,   69,   69, 1996, 1999,   69, 1998,   69,   69,   69,
-     2003,   69, 2001, 1994,   69, 1995,   69, 2005,   69, 2008,
-       69,   69,   69, 2000,   69, 2010, 2002,   69,   69, 2007,
-     2006,   69,   69, 2011, 2004, 2009,   69, 2015,   69, 2014,
-     2017,   69,   69, 2012, 2019,   69,   69, 2013, 2020,   69,
-     2022,   69,   69,   69, 2025,   69,   69, 2018, 2024,   69,
-       69, 2029, 2016, 2021,   69,   69, 2026,   69, 2023, 2032,
-       69, 2033,   69,   69, 2034,   69,   69,   69, 2028, 2027,
-     2039, 2030, 2038,   69,   69, 2040, 2031, 2036,   69,   69,
-
-       69, 2043, 2035, 2044,   69,   69, 2037,   69, 2045,   69,
-     2041,   69, 2052,   69, 2047, 2049,   69,   69, 2046, 2042,
-     2232,   69, 2053,   69, 2055,   69,   69,   69, 2059,   69,
-     2048, 2056,   69, 2050, 2051,   69, 2054, 2058, 2060,   69,
-     2062, 2057, 2061,   69, 2063,   69,   69,   69,   69, 2066,
-     2067,   69,   69,   69,   69, 2071,   69,   69,   69,   69,
-     2075,   69, 2072, 2070,   69, 2064, 2068, 2074,   69, 2065,
-       69,   69, 2073, 2069,   69, 2076, 2079,   69,   69,   69,
-       69,   69,   69, 2081, 2077,   69, 2080, 2082, 2078,   69,
-       69,   69, 2091,   69, 2232, 2089, 2085, 2104, 2083, 2084,
-
-     2092,   69, 2086, 2087,   69, 2094,   69,   69, 2093,   69,
-     2088, 2090, 2095,   69, 2096, 2097,   69,   69, 2099,   69,
-     2098, 2102,   69, 2101,   69, 2100,   69,   69,   69, 2107,
-       69, 2103, 2108,   69, 2109,   69, 2106,   69, 2112,   69,
-       69,   69, 2111,   69, 2105, 2110,   69,   69,   69, 2119,
-       69, 2116, 2117, 2120,   69, 2232, 2114, 2121,   69, 2122,
-       69, 2123,   69,   69, 2115, 2113,   69, 2118, 2125,   69,
-     2126,   69, 2124,   69, 2128,   69, 2130,   69, 2127,   69,
-       69, 2133,   69, 2132,   69,   69,   69,   69,   69, 2135,
-     2129,   69,   69,   69, 2139,   69, 2134, 2131,   69, 2140,
-
-       69,   69, 2138,   69, 2136,   69, 2137, 2142,   69,   69,
-       69, 2144, 2141,   69, 2145, 2152,   69,   69, 2154,   69,
-       69, 2143, 2146, 2147, 2148, 2150, 2153,   69, 2155, 2156,
-       69,   69,   69, 2151, 2149,   69, 2157, 2158, 2161,   69,
-     2163,   69,   69,   69,   69, 2159,   69,   69, 2167, 2168,
-     2160,   69,   69, 2162,   69,   69,   69, 2164,   69,   69,
-     2170, 2165,   69, 2173,   69, 2166, 2169,   69,   69,   69,
-     2171,   69, 2172, 2178, 2179, 2174,   69, 2175, 2181,   69,
-     2176, 2177,   69, 2182,   69,   69,   69,   69, 2187, 2183,
-     2180, 2184, 2185,   69,   69, 2186, 2188,   69,   69, 2192,
-
-     2189,   69,   69,   69, 2190,   69,   69,   69, 2195,   69,
-       69, 2199,   69,   69,   69, 2194,   69, 2191, 2200, 2204,
-     2193,   69, 2198,   69, 2202, 2196, 2197,   69, 2203,   69,
-       69, 2201, 2207,   69,   69, 2206, 2205, 2208,   69,   69,
-     2210, 2209,   69, 2211,   69,   69,   69, 2213,   69, 2214,
-       69, 2217,   69,   69, 2220, 2221,   69,   69, 2212,   69,
-     2223,   69, 2224,   69, 2215, 2216, 2222, 2218,   69,   69,
-       69, 2219,   69, 2232, 2226, 2225, 2228, 2227, 2230,   69,
-     2231,   69, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2229,
-       41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
+       69,   69, 1577, 1580, 1578, 2237,   69, 1571, 1581,   69,
+     1584,   69,   69, 1579, 1582,   69, 1576,   69, 1585, 1589,
+
+       69, 1583,   69, 1590, 1588,   69,   69, 1593, 1595,   69,
+     1592, 1594, 1586,   69,   69,   69,   69, 1591,   69, 1596,
+     1597,   69,   69, 1587,   69,   69, 1600,   69,   69,   69,
+     1603,   69, 1606,   69,   69, 1598,   69,   69, 1607, 1602,
+       69, 1609, 1608, 1599,   69, 1601, 1604, 1605,   69,   69,
+       69,   69,   69,   69,   69, 1610, 1611, 1620,   69, 1612,
+       69,   69,   69, 1617, 1621, 2237, 1622, 1613, 1615, 1619,
+       69, 1616, 1614, 1618, 1623, 1624,   69, 1625, 1626,   69,
+     1627,   69,   69,   69, 1630, 1628,   69,   69, 1633,   69,
+       69, 1634,   69,   69,   69, 1629, 1631, 1635,   69, 1632,
+
+     1639,   69, 1640,   69, 1642,   69, 1638,   69, 1644,   69,
+     1636, 1645,   69, 1637,   69,   69,   69, 1641, 1649,   69,
+       69, 1648, 1651,   69,   69, 1643,   69,   69, 1646,   69,
+     1654,   69, 1653,   69, 1647,   69, 1655, 1657,   69, 1650,
+     1661,   69, 1652,   69,   69,   69, 1659,   69, 1658,   69,
+       69, 1656, 1660, 1665, 1666,   69, 1668,   69,   69,   69,
+     1664,   69, 1672, 1662,   69, 1670, 1667, 1663,   69,   69,
+     1669, 1674,   69, 1673,   69,   69,   69, 1676,   69,   69,
+     1675,   69,   69, 1680, 1681, 1671,   69,   69, 1678,   69,
+       69, 1683,   69, 1691, 1687, 1684, 1682, 1679, 1685, 1677,
+
+       69, 1686,   69,   69,   69, 1692, 1688,   69, 1693,   69,
+     1689,   69, 1690,   69,   69,   69, 1694,   69, 1698,   69,
+       69,   69, 2237, 1703, 1695,   69, 1696, 1699, 1697,   69,
+     1700, 1702, 1701,   69, 1704, 1707,   69, 1706, 1708,   69,
+       69, 1705, 1710, 1711,   69, 1709,   69, 1712,   69,   69,
+     1713,   69,   69,   69, 1717,   69,   69,   69, 1714, 1718,
+     1719, 1720,   69,   69,   69, 1715,   69,   69, 1721,   69,
+       69, 1716, 1728, 1725,   69, 1727, 1722,   69,   69,   69,
+     1724,   69, 1733, 1729, 1723,   69, 1732, 1726,   69,   69,
+       69, 1735, 1730, 1734,   69, 1731,   69, 1737,   69,   69,
+
+     1740, 1738,   69, 1742, 1736,   69, 1741, 1744,   69,   69,
+       69, 1746,   69,   69, 1750,   69,   69, 1743,   69, 1745,
+     1739, 1748, 1752, 1749, 1751,   69,   69, 1753,   69,   69,
+       69, 1747,   69,   69,   69,   69,   69, 1756, 1759,   69,
+     1761,   69, 1760, 1764,   69, 1754,   69, 1758,   69, 1765,
+     1766,   69, 1755, 1757, 1762,   69, 1763,   69,   69, 1768,
+     1767,   69,   69, 1772,   69, 1773,   69, 1771, 1774,   69,
+       69,   69, 1769,   69, 1777, 1770,   69,   69,   69,   69,
+       69,   69, 1775,   69, 1780, 1782, 1784,   69, 1778, 1776,
+     1779, 1781, 1785,   69,   69,   69,   69,   69,   69, 1791,
+
+       69, 1783,   69,   69,   69, 1800,   69,   69, 1788, 1792,
+     1796, 1790,   69,   69, 1787, 1801,   69,   69, 1798, 1786,
+     1789, 1793, 1799,   69, 1794,   69, 1797, 1795,   69, 1802,
+       69,   69,   69,   69,   69,   69, 1804,   69,   69,   69,
+     1812, 1803,   69, 1809, 1813,   69, 1814,   69,   69, 1806,
+     1805,   69,   69, 1808, 1807, 1810, 1811,   69, 1816,   69,
+     1815,   69, 1817, 1822,   69, 1824, 1818, 1823,   69,   69,
+     1819,   69,   69, 1820,   69,   69,   69,   69, 1821, 1825,
+     1828,   69, 1831, 1832, 1826, 1833,   69,   69,   69, 1834,
+       69, 1827, 1835,   69, 1829,   69, 1830,   69,   69, 1837,
+
+       69, 1842,   69, 1841,   69,   69,   69, 1836, 1845,   69,
+     1846,   69,   69,   69,   69, 1838, 1839, 1848, 1840, 1843,
+     1849,   69,   69, 1844, 2237, 1850, 1847, 1851,   69, 1852,
+       69, 1854,   69, 1853,   69, 1856,   69,   69, 1857, 1855,
+       69,   69,   69,   69, 1858,   69,   69, 1861,   69,   69,
+     1860, 1863,   69, 1859, 1867,   69, 1865, 1862,   69,   69,
+     1868, 1870,   69,   69, 1864, 1871,   69, 1866,   69,   69,
+     1872, 1874, 1881, 1869, 1873,   69,   69,   69,   69, 1876,
+     1875, 1878, 2237, 1877, 1879,   69, 1880,   69, 1882,   69,
+       69, 1885,   69, 1883,   69, 1884, 1886,   69,   69,   69,
+
+       69,   69,   69, 1887, 1889, 1891,   69,   69, 1888, 1890,
+     1893, 1894,   69,   69, 1892,   69,   69,   69, 1899,   69,
+       69,   69,   69,   69, 1897, 1898, 1896,   69, 1900,   69,
+     1895, 1904,   69, 1908,   69,   69,   69, 1907, 1906, 1901,
+       69, 1902, 1903,   69, 1913,   69, 1905, 1912, 1914,   69,
+       69, 1910,   69, 1915, 1909,   69,   69, 1916,   69,   69,
+     1911,   69, 1919,   69, 1917,   69, 1922, 1923,   69, 1918,
+       69,   69, 1926, 1920, 1927,   69, 1921,   69, 1929,   69,
+     1928,   69, 1930, 1924, 1931,   69, 1932,   69,   69,   69,
+     1925, 1935, 1936,   69,   69, 1938,   69,   69, 1937,   69,
+
+     1939,   69, 1942, 1934,   69, 1941, 1933,   69,   69, 1945,
+       69, 1944,   69,   69,   69,   69, 1947, 1946,   69, 1940,
+       69,   69,   69, 1951, 1955,   69,   69,   69,   69, 1943,
+       69, 1959, 1949, 1950,   69, 1957, 1954,   69, 1952, 1948,
+       69, 1953,   69, 1960,   69, 1956,   69, 1958,   69, 1961,
+     1962, 1963,   69, 1966,   69, 1969,   69, 1964,   69,   69,
+       69, 1970, 1972,   69, 1974,   69, 1965, 1973,   69,   69,
+       69,   69, 1967, 1975, 1968, 1978,   69, 1971, 1976,   69,
+     1980,   69,   69, 1979, 1982,   69, 1986,   69, 1977, 1983,
+       69,   69,   69,   69, 1985, 1984, 1981,   69,   69,   69,
+
+     1987,   69, 1992, 1991, 1988,   69, 1997,   69, 1993, 1990,
+     1994,   69, 1995,   69,   69, 1996,   69, 2002, 1989,   69,
+       69,   69, 1998,   69, 2001, 2003, 2004,   69,   69,   69,
+     2008,   69,   69, 2006, 1999, 2000,   69, 2010,   69,   69,
+     2013,   69, 2005,   69,   69,   69,   69, 2007,   69, 2015,
+       69, 2011, 2016,   69, 2012,   69, 2009, 2014, 2019,   69,
+     2020,   69, 2017, 2022,   69, 2024,   69, 2018, 2025,   69,
+     2027,   69,   69, 2030,   69,   69,   69,   69, 2023, 2021,
+     2029,   69, 2026,   69,   69, 2034,   69,   69, 2028, 2037,
+       69, 2038,   69,   69,   69, 2035, 2031,   69, 2043,   69,
+
+     2032,   69, 2033, 2039, 2044, 2041, 2040,   69, 2036,   69,
+     2045,   69, 2048, 2049,   69,   69,   69, 2042,   69, 2046,
+       69, 2052,   69, 2050, 2054,   69, 2057,   69, 2058,   69,
+       69, 2047,   69, 2051, 2060,   69,   69, 2064,   69,   69,
+       69, 2053, 2055, 2056, 2061, 2063, 2065,   69, 2066,   69,
+     2062, 2059,   69, 2068,   69,   69,   69, 2067,   69, 2071,
+     2072,   69,   69,   69,   69, 2076,   69,   69,   69,   69,
+     2080,   69, 2077, 2075, 2069,   69, 2073, 2079, 2070,   69,
+     2081,   69, 2078, 2074,   69,   69,   69,   69,   69, 2084,
+       69,   69, 2086,   69,   69, 2087,   69, 2085,   69, 2082,
+
+       69, 2083, 2237, 2094, 2096,   69, 2090, 2108, 2088, 2089,
+     2091, 2092, 2097,   69,   69, 2093, 2095,   69, 2098, 2099,
+       69, 2100,   69, 2101, 2102,   69,   69, 2104,   69, 2103,
+       69, 2107,   69,   69,   69, 2105,   69,   69, 2112, 2113,
+       69, 2114,   69,   69, 2106, 2111,   69,   69, 2109, 2117,
+       69, 2116, 2110,   69,   69,   69,   69,   69, 2115, 2237,
+     2121, 2122, 2124,   69, 2125,   69, 2126,   69, 2119, 2127,
+       69,   69, 2118, 2128,   69, 2120, 2123, 2130,   69,   69,
+     2129, 2131,   69,   69, 2133,   69, 2135,   69,   69,   69,
+     2138, 2132, 2137,   69,   69,   69,   69,   69,   69, 2140,
+
+     2134,   69,   69,   69,   69, 2144, 2136, 2139, 2145,   69,
+       69,   69,   69,   69, 2141, 2142,   69, 2143, 2146,   69,
+       69, 2149,   69, 2147, 2150, 2237, 2148, 2157,   69, 2153,
+       69, 2151, 2159,   69, 2152, 2155,   69, 2160,   69, 2158,
+     2161,   69, 2156, 2162, 2154,   69,   69,   69, 2166,   69,
+     2163, 2168,   69,   69,   69,   69,   69,   69, 2172, 2173,
+       69,   69, 2165, 2167,   69,   69,   69,   69, 2169,   69,
+     2175, 2164,   69, 2170, 2174, 2171, 2178,   69,   69,   69,
+     2176, 2177, 2180,   69, 2183, 2179,   69,   69, 2184, 2237,
+     2181, 2186,   69,   69, 2187,   69,   69, 2182,   69,   69,
+
+     2188, 2189, 2192, 2190,   69, 2185, 2191,   69,   69, 2193,
+       69, 2194,   69, 2197,   69,   69,   69,   69, 2195,   69,
+     2200,   69,   69, 2204,   69,   69, 2196, 2199,   69, 2205,
+       69, 2198,   69, 2207, 2203, 2201, 2202,   69, 2208,   69,
+       69, 2212,   69,   69, 2206, 2209, 2210, 2211,   69, 2215,
+     2213,   69,   69,   69,   69, 2214, 2216,   69, 2218, 2219,
+       69,   69, 2222,   69,   69,   69, 2225, 2226,   69,   69,
+       69, 2217, 2228,   69, 2229,   69, 2220, 2227,   69, 2221,
+       69,   69, 2223, 2224,   69, 2230, 2231, 2237, 2233, 2232,
+     2235,   69, 2236,   69, 2237, 2237, 2237, 2237, 2237, 2234,
 
+       41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
        46,   46,   46,   46,   51,   51,   51,   51,   51,   51,
        51,   57,   57,   57,   57,   57,   57,   57,   62,   62,
-       62,   62,   62,   62,   62,   72,   72, 2232,   72,   72,
-       72,   72,  131,  131, 2232, 2232, 2232,  131,  131,  133,
-      133, 2232, 2232,  133, 2232,  133,  135, 2232, 2232, 2232,
-     2232, 2232,  135,  138,  138, 2232, 2232, 2232,  138,  138,
-      140, 2232, 2232, 2232, 2232, 2232,  140,  142,  142, 2232,
-      142,  142,  142,  142,   73,   73, 2232,   73,   73,   73,
-       73,   13, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232
+       62,   62,   62,   62,   62,   72,   72, 2237,   72,   72,
+       72,   72,  131,  131, 2237, 2237, 2237,  131,  131,  133,
+      133, 2237, 2237,  133, 2237,  133,  135, 2237, 2237, 2237,
+     2237, 2237,  135,  138,  138, 2237, 2237, 2237,  138,  138,
+      140, 2237, 2237, 2237, 2237, 2237,  140,  142,  142, 2237,
+      142,  142,  142,  142,   73,   73, 2237,   73,   73,   73,
+       73,   13, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237
     } ;
 
-static yyconst flex_int16_t yy_chk[4423] =
+static yyconst flex_int16_t yy_chk[4433] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1683,7 +1671,7 @@ static yyconst flex_int16_t yy_chk[4423] =
        10,   10,   15,   24,    9,   21,   15,   24,   21,   21,
        10,   11,   11,   11,   11,   11,   11,   19,   33,   19,
 
-       19, 2238,   19,   11,   25,   25,   21,   24,   19,   19,
+       19, 2243,   19,   11,   25,   25,   21,   24,   19,   19,
        77,   28,   11,   12,   12,   12,   12,   12,   12,   25,
        22,   22,   26,   26,   23,   12,   28,   30,   22,   23,
        77,   26,   22,   23,   12,   22,   23,   27,   23,   23,
@@ -2004,161 +1992,162 @@ static yyconst flex_int16_t yy_chk[4423] =
 
      1467, 1461, 1468, 1468, 1466, 1469, 1472, 1471, 1473, 1473,
      1470, 1472, 1465, 1471, 1474, 1477, 1476, 1469, 1479, 1474,
-     1476, 1480, 1481, 1482, 1483, 1485, 1480, 1488, 1484, 1483,
-     1486, 1486, 1487, 1490, 1489, 1477, 1487, 1491, 1482, 1489,
-     1495, 1485, 1488, 1479, 1493, 1481, 1484, 1494, 1496, 1498,
-     1497, 1499, 1504, 1501, 1502, 1502, 1491, 1503,    0, 1490,
-     1503, 1498, 1505, 1493, 1495, 1504, 1506, 1496, 1501, 1510,
-     1494, 1497, 1499, 1507, 1507, 1511, 1505, 1508, 1508, 1506,
-     1509, 1509, 1512, 1512, 1510, 1513, 1514, 1514, 1511, 1518,
-     1515, 1517, 1519, 1520, 1513, 1515, 1517, 1513, 1521, 1521,
-
-     1522, 1522, 1523, 1524, 1524, 1520, 1525, 1526, 1526, 1518,
-     1527, 1527, 1519, 1528, 1529, 1531, 1532, 1532, 1533, 1540,
-     1531, 1523, 1534, 1534, 1525, 1535, 1536, 1528, 1537, 1538,
-     1538, 1537, 1536, 1529, 1539, 1539, 1541, 1533, 1540, 1542,
-     1543, 1543, 1545, 1535, 1546, 1538, 1547, 1550, 1548, 1549,
-     1549, 1541, 1548, 1551, 1551, 1552, 1553, 1554, 1542, 1555,
-     1555, 1547, 1545, 1553, 1556, 1559, 1550, 1546, 1557, 1560,
-     1557, 1561, 1562, 1556, 1560, 1552, 1563, 1559, 1566, 1564,
-     1567, 1565, 1568, 1554, 1564, 1562, 1565, 1570, 1571, 1567,
-     1569, 1568, 1574, 1566, 1571, 1576, 1561, 1563, 1572, 1569,
-
-     1580, 1570, 1572, 1578, 1576, 1577, 1577, 1579, 1579, 1578,
-     1582, 1623, 1574, 1586, 1583, 1585, 1579, 1591, 1587, 1623,
-     1580, 1589, 1580, 1583, 1589, 1582, 1590, 1585, 1592, 1586,
-     1587, 1590, 1593, 1593, 1595, 1595, 1596, 1591, 1597, 1599,
-     1592, 1596, 1598, 1598, 1597, 1600, 1600, 1601, 1602, 1603,
-     1604, 1604, 1606, 1599, 1607, 1610, 1606, 1607, 1609, 1601,
-     1608, 1608, 1602, 1609, 1611, 1612, 1613, 1614, 1603, 1615,
-     1613, 1616, 1617, 1618, 1615, 1610, 1620, 1616, 1617, 1612,
-     1621, 1624, 1622, 1624, 1611, 1621, 1627, 1614, 1622, 1628,
-     1628, 1618, 1620, 1629, 1630, 1633, 1629, 1631, 1631, 1633,
-
-     1627, 1634, 1635, 1636, 1636, 1642, 1637, 1634, 1640, 1640,
-     1654, 1645, 1646, 1653, 1635, 1637, 1645, 1646, 1647, 1647,
-     1630, 1649, 1649, 1642, 1651, 1652, 1652, 1657, 1655, 1653,
-     1651, 1658, 1654, 1655, 1659, 1659, 1661, 1663, 1662, 1664,
-     1666, 1666,    0, 1658, 1662, 1661, 1657, 1668, 1668, 1669,
-     1669, 1670, 1672, 1673, 1664, 1663, 1670, 1671, 1674, 1671,
-     1675, 1675, 1678, 1674, 1676, 1676, 1672, 1673, 1677, 1677,
-     1679, 1680, 1680, 1681, 1678, 1682, 1683, 1684, 1686, 1685,
-     1687, 1687, 1688, 1683, 1685, 1681, 1689, 1682, 1679, 1684,
-     1690, 1688, 1691, 1692, 1693, 1694, 1694, 1695, 1686, 1697,
-
-     1696, 1698, 1702, 1702, 1699, 1691, 1695, 1699, 1693, 1700,
-     1690, 1701, 1689, 1707, 1700, 1708, 1701, 1692, 1696, 1703,
-     1703, 1697, 1704, 1704, 1698, 1710, 1708, 1712, 1711, 1714,
-     1713, 1707, 1715, 1716, 1717, 1717, 1719, 1719, 1714, 1720,
-     1721, 1723, 1724, 1725, 1727, 1710, 1711, 1722, 1720, 1712,
-     1713, 1716, 1715, 1726, 1722, 1731, 1723, 1732, 1721, 1733,
-     1724, 1725, 1730, 1727, 1728, 1728, 1729, 1729, 1730, 1726,
-     1734, 1735, 1732, 1731, 1736, 1734, 1737, 1738, 1733, 1738,
-     1743, 1737, 1739, 1739, 1740, 1746, 1740, 1741, 1741, 1745,
-     1747, 1735, 1750, 1751, 1736, 1753, 1751, 1754, 1745, 1743,
-
-     1752, 1752, 1755, 1755, 1756, 1746, 1758, 1759, 1756, 1747,
-     1753, 1759, 1750, 1760, 1760, 1754, 1761, 1763, 1763, 1765,
-     1765, 1758, 1766, 1767, 1767, 1768, 1769, 1769, 1774, 1761,
-     1768, 1773, 1773, 1775, 1776, 1777, 1780, 1778, 1896, 1779,
-     1777, 1766, 1783, 1776, 1779, 1781, 1775, 1784, 1786, 1785,
-     1774, 1778, 1784, 1781, 1785, 1780, 1794, 1783, 1787, 1787,
-     1788, 1788, 1789, 1786, 1896, 1790, 1791, 1799, 1792, 1789,
-     1790, 1794, 1791, 1792, 1793, 1793, 1795, 1795, 1796, 1796,
-     1799, 1800, 1806, 1801, 1802, 1803, 1800, 1800, 1801, 1803,
-     1802, 1804, 1805, 1808, 1807, 1809, 1804, 1806, 1808, 1812,
-
-     1811, 1805, 1807, 1811, 1812, 1813, 1814, 1809, 1815, 1816,
-     1817, 1817, 1818, 1821, 1822, 1827, 1823, 1815, 1816, 1814,
-     1825, 1818, 1826, 1813, 1824, 1824, 1828, 1828, 1829, 1831,
-     1827, 1826, 1821, 1833, 1822, 1823, 1834, 1835, 1837, 1825,
-     1834, 1836, 1836, 1835, 1831, 1838, 1837, 1829, 1840, 1841,
-     1838, 1843, 1844, 1833, 1845, 1843, 1852, 1840, 1847, 1847,
-     1850, 1850, 1841, 1854, 1855, 1855, 1844, 1856, 1856, 1845,
-     1857, 1858, 1858, 1857, 1859, 1859, 1852, 1860, 1860, 1861,
-     1861, 1862, 1863, 1854, 1864, 1865, 1865, 1866, 1869, 1870,
-     1864, 1866, 1871, 1869, 1869, 1872, 1863, 1873, 1871, 1862,
-
-     1874, 1872, 1877, 1878, 1874, 1880, 1878, 1877, 1881, 1882,
-     1883, 1884, 1870, 1885, 1882, 1886, 1886, 1887, 1889, 1890,
-     1890, 1888, 1873, 1891, 1891, 1881, 1881, 1885, 1883, 1888,
-     1880, 1884, 1892, 1892, 1893, 1894, 1887, 1889, 1895, 1897,
-     1894, 1898, 1899, 1901, 1901, 1903, 1902, 1906, 1897, 1902,
-     1893, 1905, 1905, 1911, 1906, 1907, 1907, 1909, 1895, 1908,
-     1915, 1898, 1899, 1903, 1908, 1913, 1909, 1912, 1912, 1913,
-     1914, 1911, 1916, 1917, 1918, 1915, 1921, 1916, 1916, 1914,
-     1920, 1920, 1922, 1918, 1924, 1921, 1917, 1926, 1929, 1930,
-     1930, 1931, 1933, 1929, 1922, 1936, 1936, 1933, 1937, 1926,
-
-     1931, 1934, 1934, 1938, 1941, 1934, 1939, 1937, 1940, 1924,
-     1941, 1942, 1944, 1940, 1943, 1943, 1942, 1945, 1946, 1948,
-     1947, 1951, 1945, 1938, 1952, 1939, 1947, 1949, 1949, 1953,
-     1953, 1955, 1954, 1944, 1956, 1955, 1946, 1957, 1958, 1952,
-     1951, 1959, 1960, 1956, 1948, 1954, 1961, 1960, 1963, 1959,
-     1962, 1962, 1968, 1957, 1965, 1965, 1975, 1958, 1966, 1966,
-     1970, 1970, 1971, 1972, 1974, 1974, 1976, 1963, 1972, 1977,
-     1979, 1979, 1961, 1968, 1982, 1985, 1975, 1980, 1971, 1983,
-     1983, 1984, 1984, 1986, 1985, 1987, 1988, 1990, 1977, 1976,
-     1990, 1980, 1989, 1989, 1991, 1991, 1982, 1987, 1993, 1994,
-
-     1998, 1995, 1986, 1996, 1996, 1997, 1988, 1995, 1997, 2000,
-     1993, 2001, 2004, 2004, 2000, 2002, 2003, 2007, 1998, 1994,
-        0, 2002, 2006, 2006, 2009, 2009, 2010, 2011, 2013, 2013,
-     2001, 2010, 2012, 2003, 2003, 2016, 2007, 2012, 2014, 2014,
-     2016, 2011, 2015, 2015, 2018, 2018, 2021, 2023, 2024, 2024,
-     2026, 2026, 2027, 2028, 2029, 2030, 2030, 2031, 2034, 2035,
-     2036, 2036, 2031, 2029, 2039, 2021, 2027, 2035, 2040, 2023,
-     2037, 2041, 2034, 2028, 2042, 2037, 2041, 2043, 2046, 2045,
-     2048, 2047, 2074, 2043, 2039, 2049, 2042, 2045, 2040, 2050,
-     2051, 2054, 2056, 2056,    0, 2051, 2048, 2074, 2046, 2047,
-
-     2057, 2057, 2049, 2049, 2058, 2062, 2062, 2069, 2058, 2070,
-     2050, 2054, 2064, 2064, 2065, 2065, 2066, 2065, 2068, 2068,
-     2066, 2072, 2072, 2070, 2073, 2069, 2076, 2077, 2078, 2078,
-     2081, 2073, 2079, 2079, 2080, 2080, 2077, 2082, 2083, 2083,
-     2084, 2085, 2082, 2086, 2076, 2081, 2087, 2088, 2089, 2090,
-     2090, 2087, 2088, 2093, 2093,    0, 2085, 2096, 2096, 2097,
-     2097, 2098, 2098, 2100, 2086, 2084, 2104, 2089, 2101, 2101,
-     2103, 2103, 2100, 2105, 2105, 2106, 2107, 2107, 2104, 2110,
-     2111, 2113, 2114, 2111, 2115, 2116, 2118, 2113, 2117, 2115,
-     2106, 2124, 2128, 2129, 2124, 2127, 2114, 2110, 2131, 2127,
-
-     2132, 2133, 2118, 2134, 2116, 2135, 2117, 2129, 2136, 2137,
-     2138, 2132, 2128, 2139, 2133, 2140, 2140, 2141, 2142, 2142,
-     2147, 2131, 2134, 2135, 2136, 2138, 2141, 2143, 2143, 2144,
-     2144, 2145, 2146, 2139, 2137, 2148, 2145, 2146, 2149, 2150,
-     2151, 2151, 2153, 2155, 2149, 2147, 2157, 2161, 2158, 2159,
-     2148, 2162, 2160, 2150, 2158, 2159, 2166, 2153, 2164, 2165,
-     2161, 2155, 2169, 2165, 2167, 2157, 2160, 2168, 2170, 2171,
-     2162, 2172, 2164, 2170, 2171, 2166, 2178, 2167, 2173, 2173,
-     2168, 2169, 2174, 2174, 2175, 2183, 2176, 2177, 2179, 2175,
-     2172, 2176, 2177, 2182, 2179, 2178, 2180, 2180, 2184, 2185,
-
-     2182, 2186, 2187, 2189, 2183, 2185, 2190, 2191, 2189, 2192,
-     2193, 2193, 2195, 2194, 2198, 2187, 2200, 2184, 2194, 2198,
-     2186, 2204, 2192, 2196, 2196, 2190, 2191, 2197, 2197, 2199,
-     2202, 2195, 2201, 2201, 2203, 2200, 2199, 2202, 2205, 2206,
-     2204, 2203, 2208, 2205, 2209, 2210, 2211, 2208, 2213, 2209,
-     2212, 2212, 2214, 2215, 2215, 2216, 2216, 2226, 2206, 2217,
-     2218, 2218, 2219, 2219, 2210, 2211, 2217, 2213, 2220, 2222,
-     2227, 2214, 2225,    0, 2222, 2220, 2226, 2225, 2228, 2228,
-     2229, 2229,    0,    0,    0,    0,    0,    0,    0, 2227,
-     2233, 2233, 2233, 2233, 2233, 2233, 2233, 2234, 2234, 2234,
-
-     2234, 2234, 2234, 2234, 2235, 2235, 2235, 2235, 2235, 2235,
-     2235, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2237, 2237,
-     2237, 2237, 2237, 2237, 2237, 2239, 2239,    0, 2239, 2239,
-     2239, 2239, 2240, 2240,    0,    0,    0, 2240, 2240, 2241,
-     2241,    0,    0, 2241,    0, 2241, 2242,    0,    0,    0,
-        0,    0, 2242, 2243, 2243,    0,    0,    0, 2243, 2243,
-     2244,    0,    0,    0,    0,    0, 2244, 2245, 2245,    0,
-     2245, 2245, 2245, 2245, 2246, 2246,    0, 2246, 2246, 2246,
-     2246, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
-     2232, 2232
+     1476, 1480, 1481, 1465, 1482, 1483, 1480, 1488, 1484, 1490,
+     1483, 1485, 1486, 1486, 1487, 1477, 1489, 1491, 1487, 1482,
+     1493, 1489, 1488, 1479, 1494, 1481, 1484, 1485, 1495, 1496,
+     1497, 1498, 1499, 1504, 1501, 1490, 1491, 1502, 1502, 1493,
+     1505, 1503, 1506, 1498, 1503,    0, 1504, 1494, 1496, 1501,
+     1510, 1497, 1495, 1499, 1505, 1506, 1507, 1507, 1508, 1508,
+     1509, 1509, 1511, 1512, 1512, 1510, 1515, 1513, 1514, 1514,
+     1518, 1515, 1517, 1519, 1520, 1511, 1513, 1517, 1523, 1513,
+
+     1521, 1521, 1522, 1522, 1524, 1524, 1520, 1525, 1526, 1526,
+     1518, 1527, 1527, 1519, 1528, 1529, 1531, 1523, 1532, 1532,
+     1533, 1531, 1534, 1534, 1535, 1525, 1536, 1537, 1528, 1540,
+     1537, 1541, 1536, 1542, 1529, 1538, 1538, 1539, 1539, 1533,
+     1543, 1543, 1535, 1545, 1546, 1547, 1541, 1550, 1540, 1548,
+     1552, 1538, 1542, 1548, 1549, 1549, 1551, 1551, 1553, 1554,
+     1547, 1555, 1555, 1545, 1556, 1553, 1550, 1546, 1559, 1557,
+     1552, 1557, 1560, 1556, 1561, 1562, 1563, 1560, 1564, 1565,
+     1559, 1566, 1567, 1564, 1565, 1554, 1568, 1570, 1562, 1569,
+     1574, 1567, 1577, 1577, 1571, 1568, 1566, 1563, 1569, 1561,
+
+     1571, 1570, 1572, 1576, 1580, 1578, 1572, 1579, 1579, 1583,
+     1574, 1578, 1576, 1582, 1586, 1585, 1579, 1587, 1583, 1588,
+     1590, 1592,    0, 1590, 1580, 1593, 1580, 1585, 1582, 1591,
+     1586, 1588, 1587, 1600, 1591, 1594, 1594, 1593, 1596, 1596,
+     1597, 1592, 1598, 1599, 1599, 1597, 1602, 1600, 1598, 1601,
+     1601, 1603, 1604, 1605, 1605, 1607, 1611, 1608, 1602, 1607,
+     1608, 1609, 1609, 1610, 1612, 1603, 1613, 1615, 1610, 1614,
+     1616, 1604, 1617, 1614, 1619, 1616, 1611, 1618, 1617, 1621,
+     1613, 1622, 1623, 1618, 1612, 1624, 1622, 1615, 1623, 1625,
+     1628, 1625, 1619, 1624, 1631, 1621, 1629, 1629, 1630, 1632,
+
+     1632, 1630, 1634, 1635, 1628, 1636, 1634, 1637, 1637, 1635,
+     1638, 1641, 1641, 1643, 1648, 1648, 1646, 1636, 1647, 1638,
+     1631, 1646, 1652, 1647, 1650, 1650, 1653, 1653, 1652, 1654,
+     1655, 1643, 1656, 1662, 1658, 1659, 1664, 1656, 1660, 1660,
+     1663, 1665, 1662, 1667, 1667, 1654, 1663, 1659, 1669, 1669,
+     1670, 1670, 1655, 1658, 1664, 1671, 1665, 1672, 1673, 1672,
+     1671, 1674, 1675, 1676, 1676, 1677, 1677, 1675, 1678, 1678,
+     1679, 1680, 1673, 1681, 1681, 1674, 1682, 1684, 1683, 1685,
+     1686, 1687, 1679, 1689, 1684, 1686, 1688, 1688, 1682, 1680,
+     1683, 1685, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1695,
+
+     1696, 1687, 1698, 1697, 1699, 1704, 1704, 1700, 1692, 1696,
+     1700, 1694, 1701, 1702, 1691, 1705, 1705, 1703, 1702, 1690,
+     1693, 1697, 1703, 1709, 1698, 1710, 1701, 1699, 1706, 1706,
+     1712, 1713, 1714, 1715, 1716, 1717, 1710, 1722, 1718, 1719,
+     1719, 1709, 1723, 1716, 1721, 1721, 1722, 1725, 1726, 1713,
+     1712, 1724, 1727, 1715, 1714, 1717, 1718, 1728, 1724, 1729,
+     1723, 1733, 1725, 1730, 1730, 1732, 1726, 1731, 1731, 1734,
+     1727, 1732, 1735, 1728, 1737, 1736, 1738, 1739, 1729, 1733,
+     1736, 1740, 1739, 1740, 1734, 1741, 1741, 1742, 1745, 1742,
+     1747, 1735, 1743, 1743, 1737, 1748, 1738, 1749, 1752, 1747,
+
+     1753, 1754, 1754, 1753, 1755, 1756, 1758, 1745, 1757, 1757,
+     1758, 1760, 1763, 1761, 1768, 1748, 1749, 1761, 1752, 1755,
+     1762, 1762, 1776, 1756,    0, 1763, 1760, 1765, 1765, 1767,
+     1767, 1769, 1769, 1768, 1770, 1771, 1771, 1775, 1775, 1770,
+     1777, 1778, 1779, 1780, 1776, 1782, 1781, 1779, 1783, 1786,
+     1778, 1781, 1785, 1777, 1786, 1787, 1783, 1780, 1788, 1802,
+     1787, 1789, 1789, 1791, 1782, 1790, 1790, 1785, 1796, 1792,
+     1791, 1793, 1802, 1788, 1792, 1794, 1797, 1793, 1795, 1795,
+     1794, 1797,    0, 1796, 1798, 1798, 1799, 1799, 1803, 1809,
+     1804, 1805, 1806, 1803, 1803, 1804, 1806, 1805, 1807, 1808,
+
+     1811, 1810, 1812, 1807, 1809, 1811, 1815, 1814, 1808, 1810,
+     1814, 1815, 1816, 1817, 1812, 1818, 1819, 1820, 1820, 1821,
+     1824, 1825, 1830, 1826, 1818, 1819, 1817, 1828, 1821, 1829,
+     1816, 1827, 1827, 1831, 1831, 1832, 1834, 1830, 1829, 1824,
+     1836, 1825, 1826, 1837, 1838, 1840, 1828, 1837, 1839, 1839,
+     1838, 1834, 1841, 1840, 1832, 1843, 1844, 1841, 1846, 1847,
+     1836, 1848, 1846, 1855, 1843, 1850, 1850, 1853, 1853, 1844,
+     1857, 1858, 1858, 1847, 1859, 1859, 1848, 1860, 1861, 1861,
+     1860, 1862, 1862, 1855, 1863, 1863, 1864, 1864, 1865, 1866,
+     1857, 1867, 1868, 1868, 1869, 1872, 1873, 1867, 1869, 1874,
+
+     1872, 1872, 1875, 1866, 1876, 1874, 1865, 1877, 1875, 1878,
+     1878, 1877, 1881, 1882, 1884, 1885, 1882, 1881, 1886, 1873,
+     1887, 1888, 1889, 1886, 1890, 1890, 1891, 1892, 1893, 1876,
+     1894, 1894, 1885, 1885, 1897, 1892, 1889, 1899, 1887, 1884,
+     1900, 1888, 1895, 1895, 1901, 1891, 1898, 1893, 1896, 1896,
+     1897, 1898, 1902, 1901, 1903, 1905, 1905, 1899, 1906, 1907,
+     1910, 1906, 1909, 1909, 1911, 1911, 1900, 1910, 1912, 1913,
+     1915, 1918, 1902, 1912, 1903, 1916, 1916, 1907, 1913, 1917,
+     1918, 1919, 1921, 1917, 1920, 1922, 1924, 1924, 1915, 1920,
+     1920, 1925, 1926, 1928, 1922, 1921, 1919, 1930, 1933, 1935,
+
+     1925, 1934, 1934, 1933, 1926, 1937, 1940, 1940, 1935, 1930,
+     1937, 1938, 1938, 1941, 1942, 1938, 1943, 1946, 1928, 1944,
+     1947, 1949, 1941, 1946, 1944, 1947, 1948, 1948, 1950, 1951,
+     1952, 1953, 1956, 1950, 1942, 1943, 1952, 1954, 1954, 1957,
+     1958, 1958, 1949, 1961, 1959, 1960, 1962, 1951, 1963, 1960,
+     1964, 1956, 1961, 1966, 1957, 1965, 1953, 1959, 1964, 1968,
+     1965, 1973, 1962, 1967, 1967, 1970, 1970, 1963, 1971, 1971,
+     1975, 1975, 1976, 1979, 1979, 1977, 1980, 1981, 1968, 1966,
+     1977, 1985, 1973, 1982, 1984, 1984, 1987, 1991, 1976, 1988,
+     1988, 1989, 1989, 1992, 1990, 1985, 1980, 1993, 1994, 1994,
+
+     1981, 1995, 1982, 1990, 1995, 1992, 1991, 1998, 1987, 1996,
+     1996, 1999, 2000, 2001, 2001, 2003, 2005, 1993, 2000, 1998,
+     2002, 2005, 2006, 2002, 2007, 2008, 2009, 2009, 2011, 2011,
+     2007, 1999, 2012, 2003, 2014, 2014, 2016, 2018, 2018, 2015,
+     2017, 2006, 2008, 2008, 2015, 2017, 2019, 2019, 2020, 2020,
+     2016, 2012, 2021, 2023, 2023, 2026, 2028, 2021, 2029, 2029,
+     2031, 2031, 2032, 2033, 2034, 2035, 2035, 2036, 2039, 2040,
+     2041, 2041, 2036, 2034, 2026, 2042, 2032, 2040, 2028, 2044,
+     2042, 2045, 2039, 2033, 2046, 2047, 2048, 2050, 2051, 2046,
+     2053, 2052, 2048, 2054, 2055, 2050, 2059, 2047, 2056, 2044,
+
+     2078, 2045,    0, 2056, 2061, 2061, 2053, 2078, 2051, 2052,
+     2054, 2054, 2062, 2062, 2063, 2055, 2059, 2074, 2063, 2067,
+     2067, 2069, 2069, 2070, 2070, 2071, 2070, 2073, 2073, 2071,
+     2075, 2077, 2077, 2079, 2081, 2074, 2082, 2083, 2083, 2084,
+     2084, 2085, 2085, 2086, 2075, 2082, 2087, 2089, 2079, 2088,
+     2088, 2087, 2081, 2090, 2091, 2092, 2093, 2094, 2086,    0,
+     2092, 2093, 2095, 2095, 2098, 2098, 2101, 2101, 2090, 2102,
+     2102, 2105, 2089, 2103, 2103, 2091, 2094, 2106, 2106, 2109,
+     2105, 2108, 2108, 2110, 2110, 2111, 2112, 2112, 2115, 2116,
+     2118, 2109, 2116, 2119, 2120, 2121, 2118, 2122, 2133, 2120,
+
+     2111, 2123, 2129, 2136, 2132, 2129, 2115, 2119, 2132, 2134,
+     2137, 2138, 2139, 2141, 2121, 2122, 2140, 2123, 2133, 2142,
+     2143, 2137, 2144, 2134, 2138,    0, 2136, 2145, 2145, 2141,
+     2146, 2139, 2147, 2147, 2140, 2143, 2148, 2148, 2150, 2146,
+     2149, 2149, 2144, 2150, 2142, 2151, 2152, 2153, 2154, 2155,
+     2151, 2156, 2156, 2158, 2154, 2160, 2162, 2166, 2163, 2164,
+     2165, 2167, 2153, 2155, 2163, 2164, 2171, 2169, 2158, 2172,
+     2166, 2152, 2170, 2160, 2165, 2162, 2170, 2173, 2174, 2175,
+     2167, 2169, 2172, 2176, 2175, 2171, 2177, 2183, 2176,    0,
+     2173, 2178, 2178, 2179, 2179, 2180, 2181, 2174, 2182, 2188,
+
+     2180, 2181, 2184, 2182, 2187, 2177, 2183, 2189, 2184, 2185,
+     2185, 2187, 2191, 2190, 2192, 2194, 2195, 2196, 2188, 2190,
+     2194, 2197, 2198, 2198, 2199, 2200, 2189, 2192, 2205, 2199,
+     2209, 2191, 2201, 2201, 2197, 2195, 2196, 2202, 2202, 2204,
+     2203, 2206, 2206, 2207, 2200, 2203, 2204, 2205, 2208, 2209,
+     2207, 2210, 2211, 2213, 2214, 2208, 2210, 2215, 2213, 2214,
+     2216, 2217, 2217, 2218, 2219, 2220, 2220, 2221, 2221, 2231,
+     2222, 2211, 2223, 2223, 2224, 2224, 2215, 2222, 2225, 2216,
+     2232, 2227, 2218, 2219, 2230, 2225, 2227,    0, 2231, 2230,
+     2233, 2233, 2234, 2234,    0,    0,    0,    0,    0, 2232,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2239, 2239, 2239,
+     2239, 2239, 2239, 2239, 2240, 2240, 2240, 2240, 2240, 2240,
+     2240, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2242, 2242,
+     2242, 2242, 2242, 2242, 2242, 2244, 2244,    0, 2244, 2244,
+     2244, 2244, 2245, 2245,    0,    0,    0, 2245, 2245, 2246,
+     2246,    0,    0, 2246,    0, 2246, 2247,    0,    0,    0,
+        0,    0, 2247, 2248, 2248,    0,    0,    0, 2248, 2248,
+     2249,    0,    0,    0,    0,    0, 2249, 2250, 2250,    0,
+     2250, 2250, 2250, 2250, 2251, 2251,    0, 2251, 2251, 2251,
+     2251, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
+     2237, 2237
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2369,7 +2358,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2371 "<stdout>"
+#line 2360 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2413,7 +2402,7 @@ FILE *yyget_out (void );
 
 void yyset_out  (FILE * _out_str  );
 
-yy_size_t yyget_leng (void );
+                       int yyget_leng (void );
 
 char *yyget_text (void );
 
@@ -2470,7 +2459,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -2494,7 +2483,7 @@ static int input (void );
        else \
                { \
                errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+               while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -2592,7 +2581,7 @@ YY_DECL
        {
 #line 207 "./util/configlexer.lex"
 
-#line 2594 "<stdout>"
+#line 2583 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2625,13 +2614,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 >= 2233 )
+                               if ( yy_current_state >= 2238 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 4382 );
+               while ( yy_base[yy_current_state] != 4392 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3126,615 +3115,620 @@ YY_RULE_SETUP
 case 94:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_DSA) }
+{ YDVAR(1, VAR_SERVE_EXPIRED) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_SHA1) }
+{ YDVAR(1, VAR_FAKE_DSA) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_FAKE_SHA1) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 336 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 341 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 342 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_IDENTITY) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 343 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_LOG_IDENTITY) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 344 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 345 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_REPLIES) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 346 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 347 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 348 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 353 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_ENABLE) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_KEY) }
+{ YDVAR(1, VAR_SHM_ENABLE) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_SHM_KEY) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 357 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 358 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 359 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 360 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 361 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 362 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 363 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 364 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 365 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 366 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 367 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 368 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 369 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 370 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 371 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 372 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 373 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 374 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
        YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 375 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
        YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 376 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
        YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 377 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
        YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 378 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
        YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 379 "./util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
        YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 380 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 381 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 171:
 YY_RULE_SETUP
 #line 382 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 383 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 384 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 385 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 386 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 176:
 YY_RULE_SETUP
 #line 387 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 389 "./util/configlexer.lex"
+#line 388 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 391 "./util/configlexer.lex"
+#line 390 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 393 "./util/configlexer.lex"
+#line 392 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 395 "./util/configlexer.lex"
+#line 394 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 397 "./util/configlexer.lex"
+#line 396 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 399 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 398 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 183:
 YY_RULE_SETUP
 #line 400 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 401 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_IP_RATELIMIT) }
        YY_BREAK
 case 185:
 YY_RULE_SETUP
 #line 402 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 186:
 YY_RULE_SETUP
 #line 403 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
        YY_BREAK
 case 187:
 YY_RULE_SETUP
 #line 404 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 188:
 YY_RULE_SETUP
 #line 405 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
        YY_BREAK
 case 189:
 YY_RULE_SETUP
 #line 406 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 190:
 YY_RULE_SETUP
 #line 407 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 191:
 YY_RULE_SETUP
 #line 408 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 192:
 YY_RULE_SETUP
 #line 409 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
        YY_BREAK
 case 193:
 YY_RULE_SETUP
 #line 410 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
        YY_BREAK
 case 194:
 YY_RULE_SETUP
 #line 411 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
        YY_BREAK
 case 195:
 YY_RULE_SETUP
 #line 412 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
        YY_BREAK
 case 196:
 YY_RULE_SETUP
 #line 413 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
        YY_BREAK
 case 197:
 YY_RULE_SETUP
 #line 414 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(0, VAR_DNSCRYPT) }
        YY_BREAK
 case 198:
 YY_RULE_SETUP
 #line 415 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
        YY_BREAK
 case 199:
 YY_RULE_SETUP
 #line 416 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
        YY_BREAK
 case 200:
 YY_RULE_SETUP
 #line 417 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
        YY_BREAK
 case 201:
 YY_RULE_SETUP
 #line 418 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
        YY_BREAK
 case 202:
 YY_RULE_SETUP
 #line 419 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
        YY_BREAK
 case 203:
 YY_RULE_SETUP
 #line 420 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
 case 204:
 YY_RULE_SETUP
 #line 421 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
        YY_BREAK
 case 205:
 YY_RULE_SETUP
 #line 422 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
        YY_BREAK
 case 206:
 YY_RULE_SETUP
 #line 423 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
        YY_BREAK
 case 207:
 YY_RULE_SETUP
 #line 424 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 208:
-/* rule 208 can match eol */
 YY_RULE_SETUP
 #line 425 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+       YY_BREAK
+case 209:
+/* rule 209 can match eol */
+YY_RULE_SETUP
+#line 426 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 209:
+case 210:
 YY_RULE_SETUP
-#line 428 "./util/configlexer.lex"
+#line 429 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 429 "./util/configlexer.lex"
+#line 430 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 210:
+case 211:
 YY_RULE_SETUP
-#line 434 "./util/configlexer.lex"
+#line 435 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 211:
-/* rule 211 can match eol */
+case 212:
+/* rule 212 can match eol */
 YY_RULE_SETUP
-#line 435 "./util/configlexer.lex"
+#line 436 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 212:
+case 213:
 YY_RULE_SETUP
-#line 437 "./util/configlexer.lex"
+#line 438 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3747,34 +3741,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 213:
+case 214:
 YY_RULE_SETUP
-#line 449 "./util/configlexer.lex"
+#line 450 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 450 "./util/configlexer.lex"
+#line 451 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 214:
+case 215:
 YY_RULE_SETUP
-#line 455 "./util/configlexer.lex"
+#line 456 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 215:
-/* rule 215 can match eol */
+case 216:
+/* rule 216 can match eol */
 YY_RULE_SETUP
-#line 456 "./util/configlexer.lex"
+#line 457 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 216:
+case 217:
 YY_RULE_SETUP
-#line 458 "./util/configlexer.lex"
+#line 459 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3787,38 +3781,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 217:
+case 218:
 YY_RULE_SETUP
-#line 470 "./util/configlexer.lex"
+#line 471 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 472 "./util/configlexer.lex"
+#line 473 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 218:
-YY_RULE_SETUP
-#line 476 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 219:
-/* rule 219 can match eol */
 YY_RULE_SETUP
 #line 477 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 220:
+/* rule 220 can match eol */
 YY_RULE_SETUP
 #line 478 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 221:
 YY_RULE_SETUP
 #line 479 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 222:
+YY_RULE_SETUP
+#line 480 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3826,27 +3820,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 484 "./util/configlexer.lex"
+#line 485 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 222:
+case 223:
 YY_RULE_SETUP
-#line 488 "./util/configlexer.lex"
+#line 489 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 223:
-/* rule 223 can match eol */
+case 224:
+/* rule 224 can match eol */
 YY_RULE_SETUP
-#line 489 "./util/configlexer.lex"
+#line 490 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 224:
+case 225:
 YY_RULE_SETUP
-#line 491 "./util/configlexer.lex"
+#line 492 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3856,7 +3850,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 497 "./util/configlexer.lex"
+#line 498 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3868,33 +3862,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 225:
+case 226:
 YY_RULE_SETUP
-#line 508 "./util/configlexer.lex"
+#line 509 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 226:
+case 227:
 YY_RULE_SETUP
-#line 512 "./util/configlexer.lex"
+#line 513 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 227:
+case 228:
 YY_RULE_SETUP
-#line 516 "./util/configlexer.lex"
+#line 517 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 228:
+case 229:
 YY_RULE_SETUP
-#line 520 "./util/configlexer.lex"
+#line 521 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3896 "<stdout>"
+#line 3890 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -4093,7 +4087,7 @@ static int yy_get_next_buffer (void)
 
                        if ( b->yy_is_our_buffer )
                                {
-                               yy_size_t new_size = b->yy_buf_size * 2;
+                               int new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -4106,7 +4100,7 @@ static int yy_get_next_buffer (void)
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
+                               b->yy_ch_buf = NULL;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -4148,9 +4142,9 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+       if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
-               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
@@ -4185,10 +4179,10 @@ 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 >= 2233 )
+                       if ( yy_current_state >= 2238 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                }
 
        return yy_current_state;
@@ -4213,11 +4207,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 >= 2233 )
+               if ( yy_current_state >= 2238 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 2232);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+       yy_is_jam = (yy_current_state == 2237);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4250,7 +4244,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -4274,7 +4268,7 @@ static int yy_get_next_buffer (void)
                                case EOB_ACT_END_OF_FILE:
                                        {
                                        if ( yywrap( ) )
-                                               return EOF;
+                                               return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -4522,7 +4516,7 @@ void yypop_buffer_state (void)
  */
 static void yyensure_buffer_stack (void)
 {
-       yy_size_t num_to_alloc;
+       int num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -4536,9 +4530,9 @@ static void yyensure_buffer_stack (void)
                                                                );
                if ( ! (yy_buffer_stack) )
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-                                                                 
+
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-                               
+
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -4567,7 +4561,7 @@ static void yyensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object. 
+ * @return the newly allocated buffer state object.
  */
 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
@@ -4577,7 +4571,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
             base[size-1] != YY_END_OF_BUFFER_CHAR )
                /* They forgot to leave room for the EOB's. */
-               return 0;
+               return NULL;
 
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
@@ -4586,7 +4580,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
+       b->yy_input_file = NULL;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
@@ -4609,7 +4603,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes(yystr,strlen(yystr) );
+       return yy_scan_bytes(yystr,(int) strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -4619,7 +4613,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -4627,7 +4621,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len
        yy_size_t i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = _yybytes_len + 2;
+       n = (yy_size_t) _yybytes_len + 2;
        buf = (char *) yyalloc(n  );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -4653,7 +4647,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
                        (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
@@ -4666,7 +4660,7 @@ static void yy_fatal_error (yyconst char* msg )
        do \
                { \
                /* Undo effects of setting up yytext. */ \
-        yy_size_t yyless_macro_arg = (n); \
+        int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                yytext[yyleng] = (yy_hold_char); \
                (yy_c_buf_p) = yytext + yyless_macro_arg; \
@@ -4683,7 +4677,7 @@ static void yy_fatal_error (yyconst char* msg )
  */
 int yyget_lineno  (void)
 {
-        
+    
     return yylineno;
 }
 
@@ -4706,7 +4700,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-yy_size_t yyget_leng  (void)
+int yyget_leng  (void)
 {
         return yyleng;
 }
@@ -4762,10 +4756,10 @@ static int yy_init_globals (void)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = 0;
+    (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
+    (yy_c_buf_p) = NULL;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -4774,8 +4768,8 @@ static int yy_init_globals (void)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -4833,7 +4827,7 @@ static int yy_flex_strlen (yyconst char * s )
 
 void *yyalloc (yy_size_t  size )
 {
-                       return (void *) malloc( size );
+                       return malloc(size);
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size )
@@ -4846,7 +4840,7 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return (void *) realloc( (char *) ptr, size );
+       return realloc(ptr, size);
 }
 
 void yyfree (void * ptr )
@@ -4856,7 +4850,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 520 "./util/configlexer.lex"
+#line 521 "./util/configlexer.lex"
 
 
 
index 701df8ba4c2500002ab936dea4473148b89bf692..d9b8e281c568c004a12eb860979893ec0de69e6a 100644 (file)
@@ -301,6 +301,7 @@ do-not-query-address{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
 do-not-query-localhost{COLON}  { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
 access-control{COLON}          { YDVAR(2, VAR_ACCESS_CONTROL) }
 send-client-subnet{COLON}      { YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
+client-subnet-zone{COLON}      { YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
 client-subnet-always-forward{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
 client-subnet-opcode{COLON}    { YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
 max-client-subnet-ipv4{COLON}  { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
index b782bada8af8dc8ce003261707170d7798081212..a54a8146bd2133b91f9b207a8e0c32a0a6f12c56 100644 (file)
@@ -298,46 +298,47 @@ extern int yydebug;
     VAR_IP_RATELIMIT_FACTOR = 427,
     VAR_RATELIMIT_FACTOR = 428,
     VAR_SEND_CLIENT_SUBNET = 429,
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 430,
-    VAR_CLIENT_SUBNET_OPCODE = 431,
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 432,
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 433,
-    VAR_CAPS_WHITELIST = 434,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 435,
-    VAR_PERMIT_SMALL_HOLDDOWN = 436,
-    VAR_QNAME_MINIMISATION = 437,
-    VAR_QNAME_MINIMISATION_STRICT = 438,
-    VAR_IP_FREEBIND = 439,
-    VAR_DEFINE_TAG = 440,
-    VAR_LOCAL_ZONE_TAG = 441,
-    VAR_ACCESS_CONTROL_TAG = 442,
-    VAR_LOCAL_ZONE_OVERRIDE = 443,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 444,
-    VAR_ACCESS_CONTROL_TAG_DATA = 445,
-    VAR_VIEW = 446,
-    VAR_ACCESS_CONTROL_VIEW = 447,
-    VAR_VIEW_FIRST = 448,
-    VAR_SERVE_EXPIRED = 449,
-    VAR_FAKE_DSA = 450,
-    VAR_FAKE_SHA1 = 451,
-    VAR_LOG_IDENTITY = 452,
-    VAR_HIDE_TRUSTANCHOR = 453,
-    VAR_TRUST_ANCHOR_SIGNALING = 454,
-    VAR_USE_SYSTEMD = 455,
-    VAR_SHM_ENABLE = 456,
-    VAR_SHM_KEY = 457,
-    VAR_DNSCRYPT = 458,
-    VAR_DNSCRYPT_ENABLE = 459,
-    VAR_DNSCRYPT_PORT = 460,
-    VAR_DNSCRYPT_PROVIDER = 461,
-    VAR_DNSCRYPT_SECRET_KEY = 462,
-    VAR_DNSCRYPT_PROVIDER_CERT = 463,
-    VAR_IPSECMOD_ENABLED = 464,
-    VAR_IPSECMOD_HOOK = 465,
-    VAR_IPSECMOD_IGNORE_BOGUS = 466,
-    VAR_IPSECMOD_MAX_TTL = 467,
-    VAR_IPSECMOD_WHITELIST = 468,
-    VAR_IPSECMOD_STRICT = 469
+    VAR_CLIENT_SUBNET_ZONE = 430,
+    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 431,
+    VAR_CLIENT_SUBNET_OPCODE = 432,
+    VAR_MAX_CLIENT_SUBNET_IPV4 = 433,
+    VAR_MAX_CLIENT_SUBNET_IPV6 = 434,
+    VAR_CAPS_WHITELIST = 435,
+    VAR_CACHE_MAX_NEGATIVE_TTL = 436,
+    VAR_PERMIT_SMALL_HOLDDOWN = 437,
+    VAR_QNAME_MINIMISATION = 438,
+    VAR_QNAME_MINIMISATION_STRICT = 439,
+    VAR_IP_FREEBIND = 440,
+    VAR_DEFINE_TAG = 441,
+    VAR_LOCAL_ZONE_TAG = 442,
+    VAR_ACCESS_CONTROL_TAG = 443,
+    VAR_LOCAL_ZONE_OVERRIDE = 444,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 445,
+    VAR_ACCESS_CONTROL_TAG_DATA = 446,
+    VAR_VIEW = 447,
+    VAR_ACCESS_CONTROL_VIEW = 448,
+    VAR_VIEW_FIRST = 449,
+    VAR_SERVE_EXPIRED = 450,
+    VAR_FAKE_DSA = 451,
+    VAR_FAKE_SHA1 = 452,
+    VAR_LOG_IDENTITY = 453,
+    VAR_HIDE_TRUSTANCHOR = 454,
+    VAR_TRUST_ANCHOR_SIGNALING = 455,
+    VAR_USE_SYSTEMD = 456,
+    VAR_SHM_ENABLE = 457,
+    VAR_SHM_KEY = 458,
+    VAR_DNSCRYPT = 459,
+    VAR_DNSCRYPT_ENABLE = 460,
+    VAR_DNSCRYPT_PORT = 461,
+    VAR_DNSCRYPT_PROVIDER = 462,
+    VAR_DNSCRYPT_SECRET_KEY = 463,
+    VAR_DNSCRYPT_PROVIDER_CERT = 464,
+    VAR_IPSECMOD_ENABLED = 465,
+    VAR_IPSECMOD_HOOK = 466,
+    VAR_IPSECMOD_IGNORE_BOGUS = 467,
+    VAR_IPSECMOD_MAX_TTL = 468,
+    VAR_IPSECMOD_WHITELIST = 469,
+    VAR_IPSECMOD_STRICT = 470
   };
 #endif
 /* Tokens.  */
@@ -513,46 +514,47 @@ extern int yydebug;
 #define VAR_IP_RATELIMIT_FACTOR 427
 #define VAR_RATELIMIT_FACTOR 428
 #define VAR_SEND_CLIENT_SUBNET 429
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 430
-#define VAR_CLIENT_SUBNET_OPCODE 431
-#define VAR_MAX_CLIENT_SUBNET_IPV4 432
-#define VAR_MAX_CLIENT_SUBNET_IPV6 433
-#define VAR_CAPS_WHITELIST 434
-#define VAR_CACHE_MAX_NEGATIVE_TTL 435
-#define VAR_PERMIT_SMALL_HOLDDOWN 436
-#define VAR_QNAME_MINIMISATION 437
-#define VAR_QNAME_MINIMISATION_STRICT 438
-#define VAR_IP_FREEBIND 439
-#define VAR_DEFINE_TAG 440
-#define VAR_LOCAL_ZONE_TAG 441
-#define VAR_ACCESS_CONTROL_TAG 442
-#define VAR_LOCAL_ZONE_OVERRIDE 443
-#define VAR_ACCESS_CONTROL_TAG_ACTION 444
-#define VAR_ACCESS_CONTROL_TAG_DATA 445
-#define VAR_VIEW 446
-#define VAR_ACCESS_CONTROL_VIEW 447
-#define VAR_VIEW_FIRST 448
-#define VAR_SERVE_EXPIRED 449
-#define VAR_FAKE_DSA 450
-#define VAR_FAKE_SHA1 451
-#define VAR_LOG_IDENTITY 452
-#define VAR_HIDE_TRUSTANCHOR 453
-#define VAR_TRUST_ANCHOR_SIGNALING 454
-#define VAR_USE_SYSTEMD 455
-#define VAR_SHM_ENABLE 456
-#define VAR_SHM_KEY 457
-#define VAR_DNSCRYPT 458
-#define VAR_DNSCRYPT_ENABLE 459
-#define VAR_DNSCRYPT_PORT 460
-#define VAR_DNSCRYPT_PROVIDER 461
-#define VAR_DNSCRYPT_SECRET_KEY 462
-#define VAR_DNSCRYPT_PROVIDER_CERT 463
-#define VAR_IPSECMOD_ENABLED 464
-#define VAR_IPSECMOD_HOOK 465
-#define VAR_IPSECMOD_IGNORE_BOGUS 466
-#define VAR_IPSECMOD_MAX_TTL 467
-#define VAR_IPSECMOD_WHITELIST 468
-#define VAR_IPSECMOD_STRICT 469
+#define VAR_CLIENT_SUBNET_ZONE 430
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 431
+#define VAR_CLIENT_SUBNET_OPCODE 432
+#define VAR_MAX_CLIENT_SUBNET_IPV4 433
+#define VAR_MAX_CLIENT_SUBNET_IPV6 434
+#define VAR_CAPS_WHITELIST 435
+#define VAR_CACHE_MAX_NEGATIVE_TTL 436
+#define VAR_PERMIT_SMALL_HOLDDOWN 437
+#define VAR_QNAME_MINIMISATION 438
+#define VAR_QNAME_MINIMISATION_STRICT 439
+#define VAR_IP_FREEBIND 440
+#define VAR_DEFINE_TAG 441
+#define VAR_LOCAL_ZONE_TAG 442
+#define VAR_ACCESS_CONTROL_TAG 443
+#define VAR_LOCAL_ZONE_OVERRIDE 444
+#define VAR_ACCESS_CONTROL_TAG_ACTION 445
+#define VAR_ACCESS_CONTROL_TAG_DATA 446
+#define VAR_VIEW 447
+#define VAR_ACCESS_CONTROL_VIEW 448
+#define VAR_VIEW_FIRST 449
+#define VAR_SERVE_EXPIRED 450
+#define VAR_FAKE_DSA 451
+#define VAR_FAKE_SHA1 452
+#define VAR_LOG_IDENTITY 453
+#define VAR_HIDE_TRUSTANCHOR 454
+#define VAR_TRUST_ANCHOR_SIGNALING 455
+#define VAR_USE_SYSTEMD 456
+#define VAR_SHM_ENABLE 457
+#define VAR_SHM_KEY 458
+#define VAR_DNSCRYPT 459
+#define VAR_DNSCRYPT_ENABLE 460
+#define VAR_DNSCRYPT_PORT 461
+#define VAR_DNSCRYPT_PROVIDER 462
+#define VAR_DNSCRYPT_SECRET_KEY 463
+#define VAR_DNSCRYPT_PROVIDER_CERT 464
+#define VAR_IPSECMOD_ENABLED 465
+#define VAR_IPSECMOD_HOOK 466
+#define VAR_IPSECMOD_IGNORE_BOGUS 467
+#define VAR_IPSECMOD_MAX_TTL 468
+#define VAR_IPSECMOD_WHITELIST 469
+#define VAR_IPSECMOD_STRICT 470
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -563,7 +565,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 567 "util/configparser.c" /* yacc.c:355  */
+#line 569 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -580,7 +582,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 584 "util/configparser.c" /* yacc.c:358  */
+#line 586 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -822,21 +824,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   434
+#define YYLAST   442
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  215
+#define YYNTOKENS  216
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  230
+#define YYNNTS  231
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  441
+#define YYNRULES  443
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  664
+#define YYNSTATES  667
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   469
+#define YYMAXUTOK   470
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -891,7 +893,8 @@ static const yytype_uint8 yytranslate[] =
      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,   207,   208,   209,   210,   211,   212,   213,   214
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215
 };
 
 #if YYDEBUG
@@ -911,38 +914,38 @@ static const yytype_uint16 yyrline[] =
      204,   204,   205,   205,   205,   206,   206,   206,   207,   207,
      207,   207,   208,   208,   208,   209,   209,   209,   210,   210,
      211,   211,   212,   212,   213,   213,   214,   214,   214,   215,
-     215,   216,   216,   217,   218,   218,   219,   219,   220,   221,
-     222,   222,   223,   223,   224,   224,   225,   225,   225,   226,
-     226,   227,   227,   228,   228,   229,   229,   230,   230,   230,
-     231,   231,   231,   232,   232,   232,   233,   233,   234,   234,
-     235,   235,   236,   236,   238,   250,   251,   252,   252,   252,
-     252,   252,   253,   255,   267,   268,   269,   269,   269,   269,
-     270,   272,   286,   287,   288,   288,   288,   288,   289,   289,
-     289,   291,   300,   309,   320,   329,   338,   347,   358,   367,
-     379,   394,   405,   422,   439,   452,   467,   476,   485,   494,
-     503,   512,   521,   530,   539,   548,   557,   566,   575,   584,
-     593,   602,   609,   616,   625,   634,   643,   657,   666,   675,
-     684,   691,   698,   724,   732,   739,   746,   753,   760,   768,
-     776,   784,   791,   802,   809,   818,   827,   836,   843,   850,
-     858,   866,   876,   886,   896,   909,   920,   928,   941,   950,
-     959,   968,   978,   988,   996,  1009,  1018,  1026,  1035,  1043,
-    1056,  1065,  1072,  1082,  1092,  1102,  1112,  1122,  1132,  1142,
-    1152,  1159,  1166,  1173,  1182,  1191,  1200,  1207,  1217,  1234,
-    1241,  1259,  1272,  1285,  1294,  1303,  1312,  1321,  1331,  1341,
-    1350,  1359,  1372,  1385,  1394,  1401,  1410,  1419,  1428,  1437,
-    1445,  1458,  1466,  1494,  1501,  1516,  1526,  1536,  1543,  1550,
-    1559,  1573,  1592,  1611,  1623,  1635,  1647,  1658,  1677,  1687,
-    1696,  1704,  1712,  1725,  1738,  1751,  1764,  1773,  1782,  1792,
-    1802,  1815,  1828,  1839,  1852,  1863,  1876,  1886,  1893,  1900,
-    1909,  1919,  1929,  1939,  1946,  1953,  1962,  1972,  1982,  2011,
-    2021,  2029,  2038,  2053,  2062,  2067,  2068,  2069,  2069,  2069,
-    2070,  2070,  2070,  2071,  2071,  2073,  2083,  2092,  2099,  2109,
-    2116,  2123,  2130,  2137,  2142,  2143,  2144,  2144,  2145,  2145,
-    2146,  2146,  2147,  2148,  2149,  2150,  2151,  2152,  2154,  2162,
-    2169,  2177,  2185,  2192,  2199,  2208,  2217,  2226,  2235,  2244,
-    2253,  2258,  2259,  2260,  2262,  2268,  2278,  2285,  2294,  2302,
-    2308,  2309,  2311,  2311,  2311,  2312,  2312,  2314,  2323,  2333,
-    2340,  2347
+     215,   216,   216,   217,   218,   218,   219,   219,   220,   220,
+     221,   222,   222,   223,   223,   224,   224,   225,   225,   225,
+     226,   226,   227,   227,   228,   228,   229,   229,   230,   230,
+     230,   231,   231,   231,   232,   232,   232,   233,   233,   234,
+     234,   235,   235,   236,   236,   238,   250,   251,   252,   252,
+     252,   252,   252,   253,   255,   267,   268,   269,   269,   269,
+     269,   270,   272,   286,   287,   288,   288,   288,   288,   289,
+     289,   289,   291,   300,   309,   320,   329,   338,   347,   358,
+     367,   378,   391,   406,   417,   434,   451,   464,   479,   488,
+     497,   506,   515,   524,   533,   542,   551,   560,   569,   578,
+     587,   596,   605,   614,   621,   628,   637,   646,   655,   669,
+     678,   687,   696,   703,   710,   736,   744,   751,   758,   765,
+     772,   780,   788,   796,   803,   814,   821,   830,   839,   848,
+     855,   862,   870,   878,   888,   898,   908,   921,   932,   940,
+     953,   962,   971,   980,   990,  1000,  1008,  1021,  1030,  1038,
+    1047,  1055,  1068,  1077,  1084,  1094,  1104,  1114,  1124,  1134,
+    1144,  1154,  1164,  1171,  1178,  1185,  1194,  1203,  1212,  1219,
+    1229,  1246,  1253,  1271,  1284,  1297,  1306,  1315,  1324,  1333,
+    1343,  1353,  1362,  1371,  1384,  1397,  1406,  1413,  1422,  1431,
+    1440,  1449,  1457,  1470,  1478,  1506,  1513,  1528,  1538,  1548,
+    1555,  1562,  1571,  1585,  1604,  1623,  1635,  1647,  1659,  1670,
+    1689,  1699,  1708,  1716,  1724,  1737,  1750,  1763,  1776,  1785,
+    1794,  1804,  1814,  1827,  1840,  1851,  1864,  1875,  1888,  1898,
+    1905,  1912,  1921,  1931,  1941,  1951,  1958,  1965,  1974,  1984,
+    1994,  2023,  2033,  2041,  2050,  2065,  2074,  2079,  2080,  2081,
+    2081,  2081,  2082,  2082,  2082,  2083,  2083,  2085,  2095,  2104,
+    2111,  2121,  2128,  2135,  2142,  2149,  2154,  2155,  2156,  2156,
+    2157,  2157,  2158,  2158,  2159,  2160,  2161,  2162,  2163,  2164,
+    2166,  2174,  2181,  2189,  2197,  2204,  2211,  2220,  2229,  2238,
+    2247,  2256,  2265,  2270,  2271,  2272,  2274,  2280,  2290,  2297,
+    2306,  2314,  2320,  2321,  2323,  2323,  2323,  2324,  2324,  2326,
+    2335,  2345,  2352,  2359
 };
 #endif
 
@@ -1011,33 +1014,33 @@ static const char *const yytname[] =
   "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
   "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
   "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
-  "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ALWAYS_FORWARD",
-  "VAR_CLIENT_SUBNET_OPCODE", "VAR_MAX_CLIENT_SUBNET_IPV4",
-  "VAR_MAX_CLIENT_SUBNET_IPV6", "VAR_CAPS_WHITELIST",
-  "VAR_CACHE_MAX_NEGATIVE_TTL", "VAR_PERMIT_SMALL_HOLDDOWN",
-  "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
-  "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
-  "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
-  "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
-  "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
-  "VAR_SERVE_EXPIRED", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY",
-  "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_USE_SYSTEMD",
-  "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE",
-  "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", "VAR_DNSCRYPT_SECRET_KEY",
-  "VAR_DNSCRYPT_PROVIDER_CERT", "VAR_IPSECMOD_ENABLED",
-  "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
-  "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "$accept",
-  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
-  "content_server", "stubstart", "contents_stub", "content_stub",
-  "forwardstart", "contents_forward", "content_forward", "viewstart",
-  "contents_view", "content_view", "server_num_threads",
+  "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
+  "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
+  "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
+  "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
+  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION",
+  "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG",
+  "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
+  "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION",
+  "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW",
+  "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
+  "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING",
+  "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_DNSCRYPT",
+  "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
+  "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
+  "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS",
+  "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT",
+  "$accept", "toplevelvars", "toplevelvar", "serverstart",
+  "contents_server", "content_server", "stubstart", "contents_stub",
+  "content_stub", "forwardstart", "contents_forward", "content_forward",
+  "viewstart", "contents_view", "content_view", "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_always_forward",
-  "server_client_subnet_opcode", "server_max_client_subnet_ipv4",
-  "server_max_client_subnet_ipv6", "server_interface",
-  "server_outgoing_interface", "server_outgoing_range",
+  "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_interface", "server_outgoing_interface", "server_outgoing_range",
   "server_outgoing_port_permit", "server_outgoing_port_avoid",
   "server_outgoing_num_tcp", "server_incoming_num_tcp",
   "server_interface_automatic", "server_do_ip4", "server_do_ip6",
@@ -1149,14 +1152,14 @@ static const yytype_uint16 yytoknum[] =
      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
-     465,   466,   467,   468,   469
+     465,   466,   467,   468,   469,   470
 };
 # endif
 
-#define YYPACT_NINF -199
+#define YYPACT_NINF -200
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-199)))
+  (!!((Yystate) == (-200)))
 
 #define YYTABLE_NINF -1
 
@@ -1167,9 +1170,9 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -199,     0,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-      96,   -39,   -35,   152,   -65,  -131,  -106,  -198,     2,    25,
+    -200,     0,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+      96,   -39,   -35,   248,   -65,  -131,  -106,  -199,     2,    25,
       26,    27,    28,    29,    30,    32,    33,    34,    35,    36,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    55,    56,    57,    58,
@@ -1177,63 +1180,63 @@ static const yytype_int16 yypact[] =
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
       79,    80,    82,    83,    85,    88,    90,    91,    92,    93,
       94,    95,   126,   127,   128,   129,   133,   134,   177,   178,
-     179,   180,   183,   184,   185,   189,   194,   220,   221,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   277,   279,   289,   290,   291,   292,   293,   294,   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,   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,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,   362,   363,   364,
-     365,   366,   367,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-     368,   369,   370,   371,   372,  -199,  -199,  -199,  -199,  -199,
-    -199,   373,   374,   375,   376,   377,   378,   379,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,   380,   381,   382,   383,
-     384,   385,   386,   387,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   400,  -199,
-    -199,   401,   402,   403,   404,   405,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   406,   407,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,   408,   409,   410,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,   411,   412,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-     413,   414,   415,   416,   417,   418,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,   419,  -199,  -199,   420,   421,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,   422,   423,   424,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199
+     179,   180,   181,   183,   184,   185,   189,   193,   218,   219,
+     220,   221,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   280,   290,   291,   292,   293,
+     294,   295,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     332,   333,   334,   335,   336,   337,   338,   340,   341,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,   361,
+     362,   363,   364,   365,   366,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,   367,   368,   369,   370,   371,  -200,  -200,  -200,
+    -200,  -200,  -200,   372,   373,   374,   375,   376,   377,   378,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,   379,   380,
+     381,   382,   383,   384,   385,   386,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,   387,   388,   389,   390,   391,
+     392,   393,   394,   395,   396,   399,   400,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+     401,  -200,  -200,   402,   403,   404,   405,   406,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+     407,   408,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,   409,   410,   411,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,   412,   413,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,   414,   415,   416,   417,   418,   419,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,   420,  -200,  -200,   421,
+     422,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,   423,   424,   425,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1241,8 +1244,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    12,   174,   183,   374,   420,   393,   191,
-     429,     3,    14,   176,   185,   193,   376,   395,   422,   431,
+       2,     0,     1,    12,   175,   184,   376,   422,   395,   192,
+     431,     3,    14,   177,   186,   194,   378,   397,   424,   433,
        4,     5,     6,    10,     8,     9,     7,    11,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1259,111 +1262,113 @@ static const yytype_uint16 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,     0,    13,    15,    16,
-      75,    78,    87,   163,   164,    17,   137,   138,   139,   140,
-     141,    26,    66,    18,    79,    80,    37,    59,    74,    19,
-      20,    22,    23,    21,    24,    25,   110,   111,   112,   113,
-     114,   159,    76,    65,    91,   108,   109,    27,    28,    29,
-      30,    31,    67,    81,    82,    97,    53,    63,    54,   167,
-      92,    47,    48,   166,    49,    50,   101,   105,   118,   126,
-     146,   102,    60,    32,    33,    34,    89,   119,   120,   121,
-      35,    36,    38,    39,    41,    42,    40,   124,    43,    44,
-      45,    51,    70,   106,    84,   125,    77,   142,    85,    86,
-     103,   104,    90,    46,    68,    71,    52,    55,    93,    94,
-      69,   143,    95,    56,    57,    58,   107,   156,   157,   165,
-      96,    64,    98,    99,   100,   144,    61,    62,    83,    72,
-      73,    88,   115,   116,   117,   122,   123,   147,   148,   150,
-     152,   153,   151,   154,   160,   127,   128,   131,   132,   129,
-     130,   133,   134,   136,   135,   145,   155,   168,   170,   169,
-     171,   172,   173,   149,   158,   161,   162,     0,     0,     0,
-       0,     0,     0,   175,   177,   178,   179,   181,   182,   180,
-       0,     0,     0,     0,     0,   184,   186,   187,   188,   189,
-     190,     0,     0,     0,     0,     0,     0,     0,   192,   194,
-     195,   198,   199,   196,   200,   197,     0,     0,     0,     0,
-       0,     0,     0,     0,   375,   377,   379,   378,   384,   380,
-     381,   382,   383,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   394,   396,   397,   398,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,     0,   421,
-     423,     0,     0,     0,     0,     0,   430,   432,   433,   434,
-     436,   435,   202,   201,   208,   216,   214,   222,   223,   226,
-     224,   225,   227,   228,   240,   241,   242,   243,   244,   266,
-     267,   268,   273,   274,   219,   275,   276,   279,   277,   278,
-     281,   282,   283,   296,   254,   255,   257,   258,   284,   299,
-     249,   251,   300,   306,   307,   308,   220,   265,   319,   320,
-     250,   314,   236,   215,   245,   297,   303,   285,     0,     0,
-     323,   221,   203,   235,   289,   204,   217,   218,   246,   247,
-     321,   287,   291,   292,   205,   324,   269,   295,   237,   253,
-     301,   302,   305,   313,   248,   317,   315,   316,   259,   264,
-     293,   294,   260,   261,   286,   309,   238,   239,   229,   230,
-     231,   232,   233,   325,   326,   327,   270,   271,   272,   280,
-     328,   329,     0,     0,     0,   288,   262,   425,   338,   342,
-     340,   339,   343,   341,     0,     0,   346,   347,   209,   210,
-     211,   212,   213,   290,   304,   318,   348,   349,   263,   330,
-       0,     0,     0,     0,     0,     0,   310,   311,   312,   426,
-     256,   252,   234,   206,   207,   350,   352,   351,   353,   354,
-     355,   356,   357,   358,   361,   360,   359,   362,   363,   364,
-     365,   366,   367,     0,   371,   372,     0,     0,   373,   385,
-     387,   386,   389,   390,   391,   392,   388,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   419,   424,
-     437,   438,   439,   441,   440,   298,   322,   337,   427,   428,
-     344,   345,   331,   332,     0,     0,     0,   336,   368,   369,
-     370,   335,   333,   334
+       0,     0,     0,     0,     0,     0,     0,     0,    13,    15,
+      16,    75,    78,    87,   164,   165,    17,   137,   138,   139,
+     140,   141,   142,    26,    66,    18,    79,    80,    37,    59,
+      74,    19,    20,    22,    23,    21,    24,    25,   110,   111,
+     112,   113,   114,   160,    76,    65,    91,   108,   109,    27,
+      28,    29,    30,    31,    67,    81,    82,    97,    53,    63,
+      54,   168,    92,    47,    48,   167,    49,    50,   101,   105,
+     118,   126,   147,   102,    60,    32,    33,    34,    89,   119,
+     120,   121,    35,    36,    38,    39,    41,    42,    40,   124,
+      43,    44,    45,    51,    70,   106,    84,   125,    77,   143,
+      85,    86,   103,   104,    90,    46,    68,    71,    52,    55,
+      93,    94,    69,   144,    95,    56,    57,    58,   107,   157,
+     158,   166,    96,    64,    98,    99,   100,   145,    61,    62,
+      83,    72,    73,    88,   115,   116,   117,   122,   123,   148,
+     149,   151,   153,   154,   152,   155,   161,   127,   128,   131,
+     132,   129,   130,   133,   134,   136,   135,   146,   156,   169,
+     171,   170,   172,   173,   174,   150,   159,   162,   163,     0,
+       0,     0,     0,     0,     0,   176,   178,   179,   180,   182,
+     183,   181,     0,     0,     0,     0,     0,   185,   187,   188,
+     189,   190,   191,     0,     0,     0,     0,     0,     0,     0,
+     193,   195,   196,   199,   200,   197,   201,   198,     0,     0,
+       0,     0,     0,     0,     0,     0,   377,   379,   381,   380,
+     386,   382,   383,   384,   385,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   396,   398,   399,
+     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
+       0,   423,   425,     0,     0,     0,     0,     0,   432,   434,
+     435,   436,   438,   437,   203,   202,   209,   218,   216,   224,
+     225,   228,   226,   227,   229,   230,   242,   243,   244,   245,
+     246,   268,   269,   270,   275,   276,   221,   277,   278,   281,
+     279,   280,   283,   284,   285,   298,   256,   257,   259,   260,
+     286,   301,   251,   253,   302,   308,   309,   310,   222,   267,
+     321,   322,   252,   316,   238,   217,   247,   299,   305,   287,
+       0,     0,   325,   223,   204,   237,   291,   205,   219,   220,
+     248,   249,   323,   289,   293,   294,   206,   326,   271,   297,
+     239,   255,   303,   304,   307,   315,   250,   319,   317,   318,
+     261,   266,   295,   296,   262,   263,   288,   311,   240,   241,
+     231,   232,   233,   234,   235,   327,   328,   329,   272,   273,
+     274,   282,   330,   331,     0,     0,     0,   290,   264,   427,
+     340,   344,   342,   341,   345,   343,     0,     0,   348,   349,
+     210,   211,   212,   213,   214,   215,   292,   306,   320,   350,
+     351,   265,   332,     0,     0,     0,     0,     0,     0,   312,
+     313,   314,   428,   258,   254,   236,   207,   208,   352,   354,
+     353,   355,   356,   357,   358,   359,   360,   363,   362,   361,
+     364,   365,   366,   367,   368,   369,     0,   373,   374,     0,
+       0,   375,   387,   389,   388,   391,   392,   393,   394,   390,
+     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     420,   421,   426,   439,   440,   441,   443,   442,   300,   324,
+     339,   429,   430,   346,   347,   333,   334,     0,     0,     0,
+     338,   370,   371,   372,   337,   335,   336
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,  -200,
+    -200
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    11,    12,    20,   187,    13,    21,   353,    14,
-      22,   365,    15,    23,   378,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   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,
-     354,   355,   356,   357,   358,   359,   366,   367,   368,   369,
-     370,   379,   380,   381,   382,   383,   384,   385,    16,    24,
-     394,   395,   396,   397,   398,   399,   400,   401,   402,    17,
-      25,   415,   416,   417,   418,   419,   420,   421,   422,   423,
-     424,   425,   426,   427,    18,    26,   429,   430,   343,   344,
-     345,   346,    19,    27,   436,   437,   438,   439,   440,   441
+      -1,     1,    11,    12,    20,   188,    13,    21,   355,    14,
+      22,   367,    15,    23,   380,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   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,   356,   357,   358,   359,   360,   361,   368,   369,   370,
+     371,   372,   381,   382,   383,   384,   385,   386,   387,    16,
+      24,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+      17,    25,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,    18,    26,   431,   432,   345,
+     346,   347,   348,    19,    27,   438,   439,   440,   441,   442,
+     443
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1371,56 +1376,57 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-       2,   347,   428,   348,   349,   360,   431,   432,   433,   434,
-     435,     3,   442,   361,   362,   403,   404,   405,   406,   407,
-     408,   409,   410,   411,   412,   413,   414,   386,   387,   388,
-     389,   390,   391,   392,   393,   443,   444,   445,   446,   447,
-     448,     4,   449,   450,   451,   452,   453,     5,   454,   455,
-     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
-     466,   467,   468,   469,   350,   470,   471,   472,   473,   474,
-     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,     6,   496,   497,   351,   498,   352,   363,   499,   364,
-     500,   501,   502,   503,   504,   505,     0,     7,    28,    29,
+       2,   349,   430,   350,   351,   362,   433,   434,   435,   436,
+     437,     3,   444,   363,   364,   405,   406,   407,   408,   409,
+     410,   411,   412,   413,   414,   415,   416,   388,   389,   390,
+     391,   392,   393,   394,   395,   445,   446,   447,   448,   449,
+     450,     4,   451,   452,   453,   454,   455,     5,   456,   457,
+     458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
+     468,   469,   470,   471,   352,   472,   473,   474,   475,   476,
+     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
+     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
+     497,     6,   498,   499,   353,   500,   354,   365,   501,   366,
+     502,   503,   504,   505,   506,   507,     0,     7,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,   506,   507,   508,   509,
-      56,    57,    58,   510,   511,     8,    59,    60,    61,    62,
+      50,    51,    52,    53,    54,    55,   508,   509,   510,   511,
+      56,    57,    58,   512,   513,     8,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
       83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   512,   513,   514,
-     515,     9,   371,   516,   517,   518,   100,   101,   102,   519,
-     103,   104,   105,    10,   520,   106,   107,   108,   109,   110,
+      93,    94,    95,    96,    97,    98,    99,   514,   515,   516,
+     517,   518,     9,   519,   520,   521,   100,   101,   102,   522,
+     103,   104,   105,   523,    10,   106,   107,   108,   109,   110,
      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   372,   373,
-     521,   522,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   523,   524,   525,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   374,   138,   139,   140,   141,   142,   143,
+     121,   122,   123,   124,   125,   126,   127,   128,   524,   525,
+     526,   527,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   528,   529,   530,   531,   532,   533,   534,   535,   536,
+     537,   538,   539,   540,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   535,   171,   536,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   537,
-     538,   539,   540,   541,   542,   181,   182,   183,   184,   185,
-     186,   375,   376,   543,   544,   545,   546,   547,   548,   549,
-     550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
-     560,   561,   562,   563,   564,   565,   566,   567,   568,   569,
-     570,   571,   572,   573,   574,   377,   575,   576,   577,   578,
-     579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
-     589,   590,   591,   592,   593,   594,   595,   596,   597,   598,
-     599,   600,   601,   602,   603,   604,   605,   606,   607,   608,
-     609,   610,   611,   612,   613,   614,   615,   616,   617,   618,
-     619,   620,   621,   622,   623,   624,   625,   626,   627,   628,
-     629,   630,   631,   632,   633,   634,   635,   636,   637,   638,
-     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
-     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
-     659,   660,   661,   662,   663
+     164,   165,   166,   167,   168,   169,   170,   171,   373,   172,
+     541,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     542,   543,   544,   545,   546,   547,   182,   183,   184,   185,
+     186,   187,   548,   549,   550,   551,   552,   553,   554,   555,
+     556,   557,   558,   559,   374,   375,   560,   561,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     574,   575,   576,   577,   578,   579,   580,   581,   582,   376,
+     583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     593,   594,   595,   596,   597,   598,   599,   600,   601,   602,
+     603,   604,   605,   606,   607,   608,   609,   610,   611,   612,
+     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
+     633,   634,   635,   636,   637,   638,   639,   377,   378,   640,
+     641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
+     651,   652,   653,   654,   655,   656,   657,   658,   659,   660,
+     661,   662,   663,   664,   665,   666,     0,     0,     0,     0,
+       0,     0,   379
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    40,   108,    42,    43,    40,   204,   205,   206,   207,
-     208,    11,    10,    48,    49,   146,   147,   148,   149,   150,
+       0,    40,   108,    42,    43,    40,   205,   206,   207,   208,
+     209,    11,    10,    48,    49,   146,   147,   148,   149,   150,
      151,   152,   153,   154,   155,   156,   157,    92,    93,    94,
       95,    96,    97,    98,    99,    10,    10,    10,    10,    10,
       10,    41,    10,    10,    10,    10,    10,    47,    10,    10,
@@ -1438,40 +1444,41 @@ static const yytype_int16 yycheck[] =
       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    10,    10,    10,
-      10,   191,    40,    10,    10,    10,   100,   101,   102,    10,
-     104,   105,   106,   203,    10,   109,   110,   111,   112,   113,
+      10,    10,   192,    10,    10,    10,   100,   101,   102,    10,
+     104,   105,   106,    10,   204,   109,   110,   111,   112,   113,
      114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,    76,    77,
+     124,   125,   126,   127,   128,   129,   130,   131,    10,    10,
       10,    10,   136,   137,   138,   139,   140,   141,   142,   143,
      144,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,   101,   158,   159,   160,   161,   162,   163,
+      10,    10,    10,    10,   158,   159,   160,   161,   162,   163,
      164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,    10,   192,    10,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,    10,
-      10,    10,    10,    10,    10,   209,   210,   211,   212,   213,
-     214,   159,   160,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+     184,   185,   186,   187,   188,   189,   190,   191,    40,   193,
+      10,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+      10,    10,    10,    10,    10,    10,   210,   211,   212,   213,
+     214,   215,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    76,    77,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,   193,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,   101,
       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,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,   159,   160,    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,    -1,    -1,    -1,    -1,
+      -1,    -1,   194
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   216,     0,    11,    41,    47,    91,   107,   145,   191,
-     203,   217,   218,   221,   224,   227,   403,   414,   429,   437,
-     219,   222,   225,   228,   404,   415,   430,   438,    12,    13,
+       0,   217,     0,    11,    41,    47,    91,   107,   145,   192,
+     204,   218,   219,   222,   225,   228,   405,   416,   431,   439,
+     220,   223,   226,   229,   406,   417,   432,   440,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,    44,    45,    46,    50,
@@ -1486,8 +1493,8 @@ static const yytype_uint16 yystos[] =
      160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
      170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   192,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   209,   210,   211,   212,   213,   214,   220,   230,   231,
+     190,   191,   193,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   210,   211,   212,   213,   214,   215,   221,   231,
      232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
      242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
@@ -1503,17 +1510,17 @@ static const yytype_uint16 yystos[] =
      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,   433,   434,   435,   436,    40,    42,    43,
-     103,   133,   135,   223,   385,   386,   387,   388,   389,   390,
-      40,    48,    49,   132,   134,   226,   391,   392,   393,   394,
-     395,    40,    76,    77,   101,   159,   160,   193,   229,   396,
-     397,   398,   399,   400,   401,   402,    92,    93,    94,    95,
-      96,    97,    98,    99,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   416,   417,   418,   419,   420,
-     421,   422,   423,   424,   425,   426,   427,   428,   108,   431,
-     432,   204,   205,   206,   207,   208,   439,   440,   441,   442,
-     443,   444,    10,    10,    10,    10,    10,    10,    10,    10,
+     382,   383,   384,   385,   386,   435,   436,   437,   438,    40,
+      42,    43,   103,   133,   135,   224,   387,   388,   389,   390,
+     391,   392,    40,    48,    49,   132,   134,   227,   393,   394,
+     395,   396,   397,    40,    76,    77,   101,   159,   160,   194,
+     230,   398,   399,   400,   401,   402,   403,   404,    92,    93,
+      94,    95,    96,    97,    98,    99,   407,   408,   409,   410,
+     411,   412,   413,   414,   415,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   418,   419,   420,
+     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
+     108,   433,   434,   205,   206,   207,   208,   209,   441,   442,
+     443,   444,   445,   446,    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,
@@ -1535,33 +1542,33 @@ static const yytype_uint16 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
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   215,   216,   216,   217,   217,   217,   217,   217,   217,
-     217,   217,   218,   219,   219,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-     220,   220,   220,   220,   221,   222,   222,   223,   223,   223,
-     223,   223,   223,   224,   225,   225,   226,   226,   226,   226,
-     226,   227,   228,   228,   229,   229,   229,   229,   229,   229,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+       0,   216,   217,   217,   218,   218,   218,   218,   218,   218,
+     218,   218,   219,   220,   220,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   222,   223,   223,   224,   224,
+     224,   224,   224,   224,   225,   226,   226,   227,   227,   227,
+     227,   227,   228,   229,   229,   230,   230,   230,   230,   230,
+     230,   230,   231,   232,   233,   234,   235,   236,   237,   238,
      239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
      249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
      259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
@@ -1578,14 +1585,14 @@ static const yytype_uint16 yyr1[] =
      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,   404,   405,   405,   405,
-     405,   405,   405,   405,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   415,   416,   416,   416,   416,
-     416,   416,   416,   416,   416,   416,   416,   416,   417,   418,
+     399,   400,   401,   402,   403,   404,   405,   406,   406,   407,
+     407,   407,   407,   407,   407,   407,   407,   408,   409,   410,
+     411,   412,   413,   414,   415,   416,   417,   417,   418,   418,
+     418,   418,   418,   418,   418,   418,   418,   418,   418,   418,
      419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
-     429,   430,   430,   431,   432,   433,   434,   435,   436,   437,
-     438,   438,   439,   439,   439,   439,   439,   440,   441,   442,
-     443,   444
+     429,   430,   431,   432,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   440,   441,   441,   441,   441,   441,   442,
+     443,   444,   445,   446
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1608,10 +1615,10 @@ static const yytype_uint8 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,     1,     2,     0,     1,     1,
        1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     2,     0,     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,
@@ -1620,22 +1627,22 @@ static const yytype_uint8 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,     2,
+       3,     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,     3,     3,     4,     4,     4,     3,     3,     2,     2,
-       2,     2,     2,     2,     3,     3,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     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,     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,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       1,     2,     0,     1,     2,     2,     2,     3,     3,     1,
-       2,     0,     1,     1,     1,     1,     1,     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,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     1,     2,     0,     1,     2,     2,     2,     3,
+       3,     1,     2,     0,     1,     1,     1,     1,     1,     2,
+       2,     2,     2,     2
 };
 
 
@@ -2316,10 +2323,10 @@ yyreduce:
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2320 "util/configparser.c" /* yacc.c:1646  */
+#line 2327 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
+  case 175:
 #line 239 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
@@ -2331,10 +2338,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2335 "util/configparser.c" /* yacc.c:1646  */
+#line 2342 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
+  case 184:
 #line 256 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
@@ -2346,10 +2353,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2350 "util/configparser.c" /* yacc.c:1646  */
+#line 2357 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
+  case 192:
 #line 273 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_view* s;
@@ -2363,10 +2370,10 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2367 "util/configparser.c" /* yacc.c:1646  */
+#line 2374 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
+  case 202:
 #line 292 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
@@ -2375,10 +2382,10 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2379 "util/configparser.c" /* yacc.c:1646  */
+#line 2386 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
+  case 203:
 #line 301 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
@@ -2387,10 +2394,10 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2391 "util/configparser.c" /* yacc.c:1646  */
+#line 2398 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
+  case 204:
 #line 310 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
@@ -2401,10 +2408,10 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2405 "util/configparser.c" /* yacc.c:1646  */
+#line 2412 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
+  case 205:
 #line 321 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
@@ -2413,10 +2420,10 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2417 "util/configparser.c" /* yacc.c:1646  */
+#line 2424 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
+  case 206:
 #line 330 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
@@ -2425,10 +2432,10 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2429 "util/configparser.c" /* yacc.c:1646  */
+#line 2436 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
+  case 207:
 #line 339 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
@@ -2437,10 +2444,10 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2441 "util/configparser.c" /* yacc.c:1646  */
+#line 2448 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
+  case 208:
 #line 348 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
@@ -2451,10 +2458,10 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2455 "util/configparser.c" /* yacc.c:1646  */
+#line 2462 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
+  case 209:
 #line 359 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
@@ -2463,10 +2470,10 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2467 "util/configparser.c" /* yacc.c:1646  */
+#line 2474 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
+  case 210:
 #line 368 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
@@ -2477,11 +2484,26 @@ yyreduce:
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
        }
-#line 2481 "util/configparser.c" /* yacc.c:1646  */
+#line 2488 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 380 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 379 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef CLIENT_SUBNET
+               OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
+                       (yyvsp[0].str)))
+                       fatal_exit("out of memory adding client-subnet-zone");
+       #else
+               OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
+       #endif
+       }
+#line 2503 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 212:
+#line 392 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -2495,11 +2517,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2499 "util/configparser.c" /* yacc.c:1646  */
+#line 2521 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 395 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 407 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -2509,11 +2531,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2513 "util/configparser.c" /* yacc.c:1646  */
+#line 2535 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 406 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 418 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -2529,11 +2551,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2533 "util/configparser.c" /* yacc.c:1646  */
+#line 2555 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 423 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 435 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -2549,11 +2571,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2553 "util/configparser.c" /* yacc.c:1646  */
+#line 2575 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 440 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 452 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2565,11 +2587,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2569 "util/configparser.c" /* yacc.c:1646  */
+#line 2591 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 453 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 465 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2583,11 +2605,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2587 "util/configparser.c" /* yacc.c:1646  */
+#line 2609 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 468 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 480 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2595,11 +2617,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2599 "util/configparser.c" /* yacc.c:1646  */
+#line 2621 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 477 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 489 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2607,11 +2629,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2611 "util/configparser.c" /* yacc.c:1646  */
+#line 2633 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 486 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 498 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2619,11 +2641,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2623 "util/configparser.c" /* yacc.c:1646  */
+#line 2645 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 495 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 507 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2631,11 +2653,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2635 "util/configparser.c" /* yacc.c:1646  */
+#line 2657 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 504 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 516 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2643,11 +2665,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2647 "util/configparser.c" /* yacc.c:1646  */
+#line 2669 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 513 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 525 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2655,11 +2677,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2659 "util/configparser.c" /* yacc.c:1646  */
+#line 2681 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 522 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 534 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2667,11 +2689,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2671 "util/configparser.c" /* yacc.c:1646  */
+#line 2693 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 531 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 543 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2679,11 +2701,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2683 "util/configparser.c" /* yacc.c:1646  */
+#line 2705 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 540 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 552 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2691,11 +2713,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2695 "util/configparser.c" /* yacc.c:1646  */
+#line 2717 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 549 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 561 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2703,11 +2725,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2707 "util/configparser.c" /* yacc.c:1646  */
+#line 2729 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 558 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 570 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2715,11 +2737,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2719 "util/configparser.c" /* yacc.c:1646  */
+#line 2741 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 567 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 579 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2727,11 +2749,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2731 "util/configparser.c" /* yacc.c:1646  */
+#line 2753 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 576 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 588 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2739,11 +2761,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2743 "util/configparser.c" /* yacc.c:1646  */
+#line 2765 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 585 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 597 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2751,11 +2773,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2755 "util/configparser.c" /* yacc.c:1646  */
+#line 2777 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 594 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 606 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2763,31 +2785,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2767 "util/configparser.c" /* yacc.c:1646  */
+#line 2789 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 603 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 615 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2777 "util/configparser.c" /* yacc.c:1646  */
+#line 2799 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 610 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 622 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2787 "util/configparser.c" /* yacc.c:1646  */
+#line 2809 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 617 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 629 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2795,11 +2817,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2799 "util/configparser.c" /* yacc.c:1646  */
+#line 2821 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 626 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 638 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2807,11 +2829,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2811 "util/configparser.c" /* yacc.c:1646  */
+#line 2833 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 635 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 647 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2819,11 +2841,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2823 "util/configparser.c" /* yacc.c:1646  */
+#line 2845 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 644 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 656 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2836,11 +2858,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2840 "util/configparser.c" /* yacc.c:1646  */
+#line 2862 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 658 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 670 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2848,11 +2870,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2852 "util/configparser.c" /* yacc.c:1646  */
+#line 2874 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 667 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 679 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2860,11 +2882,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2864 "util/configparser.c" /* yacc.c:1646  */
+#line 2886 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 676 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 688 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2872,31 +2894,31 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 2876 "util/configparser.c" /* yacc.c:1646  */
+#line 2898 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 685 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 697 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2886 "util/configparser.c" /* yacc.c:1646  */
+#line 2908 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 692 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 704 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2896 "util/configparser.c" /* yacc.c:1646  */
+#line 2918 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 699 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 711 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -2921,105 +2943,105 @@ yyreduce:
                        }
                }
        }
-#line 2925 "util/configparser.c" /* yacc.c:1646  */
+#line 2947 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 725 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 737 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2936 "util/configparser.c" /* yacc.c:1646  */
+#line 2958 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 733 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 745 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2946 "util/configparser.c" /* yacc.c:1646  */
+#line 2968 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 740 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 752 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2956 "util/configparser.c" /* yacc.c:1646  */
+#line 2978 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 747 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 759 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2966 "util/configparser.c" /* yacc.c:1646  */
+#line 2988 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 754 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 766 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2976 "util/configparser.c" /* yacc.c:1646  */
+#line 2998 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 761 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 773 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2987 "util/configparser.c" /* yacc.c:1646  */
+#line 3009 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 769 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 781 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2998 "util/configparser.c" /* yacc.c:1646  */
+#line 3020 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 777 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 789 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3009 "util/configparser.c" /* yacc.c:1646  */
+#line 3031 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 785 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 797 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3019 "util/configparser.c" /* yacc.c:1646  */
+#line 3041 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 792 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 804 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3029,21 +3051,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3033 "util/configparser.c" /* yacc.c:1646  */
+#line 3055 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 803 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 815 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3043 "util/configparser.c" /* yacc.c:1646  */
+#line 3065 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 810 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 822 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3051,11 +3073,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3055 "util/configparser.c" /* yacc.c:1646  */
+#line 3077 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 819 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 831 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3063,11 +3085,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3067 "util/configparser.c" /* yacc.c:1646  */
+#line 3089 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 828 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 840 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3075,53 +3097,53 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3079 "util/configparser.c" /* yacc.c:1646  */
+#line 3101 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 837 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 849 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 3089 "util/configparser.c" /* yacc.c:1646  */
+#line 3111 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 844 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 856 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 3099 "util/configparser.c" /* yacc.c:1646  */
+#line 3121 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 851 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 863 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3110 "util/configparser.c" /* yacc.c:1646  */
+#line 3132 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 859 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 871 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3121 "util/configparser.c" /* yacc.c:1646  */
+#line 3143 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 867 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 879 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3130,11 +3152,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3134 "util/configparser.c" /* yacc.c:1646  */
+#line 3156 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 877 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 889 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3143,11 +3165,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3147 "util/configparser.c" /* yacc.c:1646  */
+#line 3169 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 887 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 899 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3156,11 +3178,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3160 "util/configparser.c" /* yacc.c:1646  */
+#line 3182 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 897 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 909 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3172,11 +3194,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3176 "util/configparser.c" /* yacc.c:1646  */
+#line 3198 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 910 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 922 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3186,22 +3208,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3190 "util/configparser.c" /* yacc.c:1646  */
+#line 3212 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 921 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 933 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3201 "util/configparser.c" /* yacc.c:1646  */
+#line 3223 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 929 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 941 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3213,11 +3235,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3217 "util/configparser.c" /* yacc.c:1646  */
+#line 3239 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 942 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 954 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3225,11 +3247,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3229 "util/configparser.c" /* yacc.c:1646  */
+#line 3251 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 951 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 963 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3237,11 +3259,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3241 "util/configparser.c" /* yacc.c:1646  */
+#line 3263 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 960 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 972 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3249,11 +3271,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3253 "util/configparser.c" /* yacc.c:1646  */
+#line 3275 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 969 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 981 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3262,11 +3284,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3266 "util/configparser.c" /* yacc.c:1646  */
+#line 3288 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 979 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 991 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3275,22 +3297,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3279 "util/configparser.c" /* yacc.c:1646  */
+#line 3301 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 989 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1001 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3290 "util/configparser.c" /* yacc.c:1646  */
+#line 3312 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 997 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1009 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3302,11 +3324,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3306 "util/configparser.c" /* yacc.c:1646  */
+#line 3328 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1010 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1022 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3314,22 +3336,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3318 "util/configparser.c" /* yacc.c:1646  */
+#line 3340 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1019 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1031 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3329 "util/configparser.c" /* yacc.c:1646  */
+#line 3351 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1027 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1039 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3337,22 +3359,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3341 "util/configparser.c" /* yacc.c:1646  */
+#line 3363 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1036 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1048 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3352 "util/configparser.c" /* yacc.c:1646  */
+#line 3374 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1044 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1056 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3364,11 +3386,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3368 "util/configparser.c" /* yacc.c:1646  */
+#line 3390 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1057 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1069 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3376,21 +3398,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3380 "util/configparser.c" /* yacc.c:1646  */
+#line 3402 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1066 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1078 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3390 "util/configparser.c" /* yacc.c:1646  */
+#line 3412 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1073 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1085 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3399,11 +3421,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3403 "util/configparser.c" /* yacc.c:1646  */
+#line 3425 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1083 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1095 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3412,11 +3434,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3416 "util/configparser.c" /* yacc.c:1646  */
+#line 3438 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1093 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1105 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3425,11 +3447,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3429 "util/configparser.c" /* yacc.c:1646  */
+#line 3451 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1103 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1115 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3438,11 +3460,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3442 "util/configparser.c" /* yacc.c:1646  */
+#line 3464 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1113 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1125 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3451,11 +3473,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3455 "util/configparser.c" /* yacc.c:1646  */
+#line 3477 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1123 "./util/configparser.y" /* yacc.c:1646  */
+  case 289:
+#line 1135 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3464,11 +3486,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3468 "util/configparser.c" /* yacc.c:1646  */
+#line 3490 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1133 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1145 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3477,11 +3499,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3481 "util/configparser.c" /* yacc.c:1646  */
+#line 3503 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1143 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1155 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -3490,41 +3512,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3494 "util/configparser.c" /* yacc.c:1646  */
+#line 3516 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1153 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1165 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3504 "util/configparser.c" /* yacc.c:1646  */
+#line 3526 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1160 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1172 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3514 "util/configparser.c" /* yacc.c:1646  */
+#line 3536 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1167 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1179 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3524 "util/configparser.c" /* yacc.c:1646  */
+#line 3546 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1174 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1186 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3532,11 +3554,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3536 "util/configparser.c" /* yacc.c:1646  */
+#line 3558 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1183 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1195 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3544,11 +3566,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3548 "util/configparser.c" /* yacc.c:1646  */
+#line 3570 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1192 "./util/configparser.y" /* yacc.c:1646  */
+  case 297:
+#line 1204 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3556,21 +3578,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3560 "util/configparser.c" /* yacc.c:1646  */
+#line 3582 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1201 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1213 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3570 "util/configparser.c" /* yacc.c:1646  */
+#line 3592 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1208 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1220 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -3579,11 +3601,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3583 "util/configparser.c" /* yacc.c:1646  */
+#line 3605 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1218 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1230 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -3599,21 +3621,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3603 "util/configparser.c" /* yacc.c:1646  */
+#line 3625 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1235 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1247 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3613 "util/configparser.c" /* yacc.c:1646  */
+#line 3635 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1242 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1254 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3630,11 +3652,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3634 "util/configparser.c" /* yacc.c:1646  */
+#line 3656 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1260 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1272 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3646,11 +3668,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3650 "util/configparser.c" /* yacc.c:1646  */
+#line 3672 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1273 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1285 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3662,11 +3684,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3666 "util/configparser.c" /* yacc.c:1646  */
+#line 3688 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1286 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1298 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3674,11 +3696,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3678 "util/configparser.c" /* yacc.c:1646  */
+#line 3700 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1295 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1307 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3686,11 +3708,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3690 "util/configparser.c" /* yacc.c:1646  */
+#line 3712 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1304 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1316 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3698,11 +3720,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3702 "util/configparser.c" /* yacc.c:1646  */
+#line 3724 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1313 "./util/configparser.y" /* yacc.c:1646  */
+  case 308:
+#line 1325 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3710,11 +3732,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3714 "util/configparser.c" /* yacc.c:1646  */
+#line 3736 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1322 "./util/configparser.y" /* yacc.c:1646  */
+  case 309:
+#line 1334 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3723,11 +3745,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3727 "util/configparser.c" /* yacc.c:1646  */
+#line 3749 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1332 "./util/configparser.y" /* yacc.c:1646  */
+  case 310:
+#line 1344 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3736,11 +3758,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3740 "util/configparser.c" /* yacc.c:1646  */
+#line 3762 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 1342 "./util/configparser.y" /* yacc.c:1646  */
+  case 311:
+#line 1354 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3748,11 +3770,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3752 "util/configparser.c" /* yacc.c:1646  */
+#line 3774 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 1351 "./util/configparser.y" /* yacc.c:1646  */
+  case 312:
+#line 1363 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3760,11 +3782,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3764 "util/configparser.c" /* yacc.c:1646  */
+#line 3786 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1360 "./util/configparser.y" /* yacc.c:1646  */
+  case 313:
+#line 1372 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3776,11 +3798,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3780 "util/configparser.c" /* yacc.c:1646  */
+#line 3802 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1373 "./util/configparser.y" /* yacc.c:1646  */
+  case 314:
+#line 1385 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3792,11 +3814,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3796 "util/configparser.c" /* yacc.c:1646  */
+#line 3818 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 1386 "./util/configparser.y" /* yacc.c:1646  */
+  case 315:
+#line 1398 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3804,21 +3826,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3808 "util/configparser.c" /* yacc.c:1646  */
+#line 3830 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 1395 "./util/configparser.y" /* yacc.c:1646  */
+  case 316:
+#line 1407 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3818 "util/configparser.c" /* yacc.c:1646  */
+#line 3840 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 1402 "./util/configparser.y" /* yacc.c:1646  */
+  case 317:
+#line 1414 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3826,11 +3848,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3830 "util/configparser.c" /* yacc.c:1646  */
+#line 3852 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 1411 "./util/configparser.y" /* yacc.c:1646  */
+  case 318:
+#line 1423 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3838,11 +3860,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3842 "util/configparser.c" /* yacc.c:1646  */
+#line 3864 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 1420 "./util/configparser.y" /* yacc.c:1646  */
+  case 319:
+#line 1432 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3850,11 +3872,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3854 "util/configparser.c" /* yacc.c:1646  */
+#line 3876 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 1429 "./util/configparser.y" /* yacc.c:1646  */
+  case 320:
+#line 1441 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3863,22 +3885,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3867 "util/configparser.c" /* yacc.c:1646  */
+#line 3889 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1438 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1450 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3878 "util/configparser.c" /* yacc.c:1646  */
+#line 3900 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1446 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1458 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3890,22 +3912,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3894 "util/configparser.c" /* yacc.c:1646  */
+#line 3916 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1459 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1471 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3905 "util/configparser.c" /* yacc.c:1646  */
+#line 3927 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1467 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1479 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -3932,21 +3954,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3936 "util/configparser.c" /* yacc.c:1646  */
+#line 3958 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1495 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1507 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3946 "util/configparser.c" /* yacc.c:1646  */
+#line 3968 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 1502 "./util/configparser.y" /* yacc.c:1646  */
+  case 326:
+#line 1514 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3960,11 +3982,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3964 "util/configparser.c" /* yacc.c:1646  */
+#line 3986 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 1517 "./util/configparser.y" /* yacc.c:1646  */
+  case 327:
+#line 1529 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3973,11 +3995,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3977 "util/configparser.c" /* yacc.c:1646  */
+#line 3999 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 1527 "./util/configparser.y" /* yacc.c:1646  */
+  case 328:
+#line 1539 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3986,31 +4008,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3990 "util/configparser.c" /* yacc.c:1646  */
+#line 4012 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1537 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1549 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4000 "util/configparser.c" /* yacc.c:1646  */
+#line 4022 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 328:
-#line 1544 "./util/configparser.y" /* yacc.c:1646  */
+  case 330:
+#line 1556 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 4010 "util/configparser.c" /* yacc.c:1646  */
+#line 4032 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 329:
-#line 1551 "./util/configparser.y" /* yacc.c:1646  */
+  case 331:
+#line 1563 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4018,11 +4040,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4022 "util/configparser.c" /* yacc.c:1646  */
+#line 4044 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 330:
-#line 1560 "./util/configparser.y" /* yacc.c:1646  */
+  case 332:
+#line 1572 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -4035,11 +4057,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4039 "util/configparser.c" /* yacc.c:1646  */
+#line 4061 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 331:
-#line 1574 "./util/configparser.y" /* yacc.c:1646  */
+  case 333:
+#line 1586 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4057,11 +4079,11 @@ yyreduce:
                        }
                }
        }
-#line 4061 "util/configparser.c" /* yacc.c:1646  */
+#line 4083 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 1593 "./util/configparser.y" /* yacc.c:1646  */
+  case 334:
+#line 1605 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4079,11 +4101,11 @@ yyreduce:
                        }
                }
        }
-#line 4083 "util/configparser.c" /* yacc.c:1646  */
+#line 4105 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 333:
-#line 1612 "./util/configparser.y" /* yacc.c:1646  */
+  case 335:
+#line 1624 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4094,11 +4116,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4098 "util/configparser.c" /* yacc.c:1646  */
+#line 4120 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 334:
-#line 1624 "./util/configparser.y" /* yacc.c:1646  */
+  case 336:
+#line 1636 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4109,11 +4131,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4113 "util/configparser.c" /* yacc.c:1646  */
+#line 4135 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 335:
-#line 1636 "./util/configparser.y" /* yacc.c:1646  */
+  case 337:
+#line 1648 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4124,11 +4146,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4128 "util/configparser.c" /* yacc.c:1646  */
+#line 4150 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 1648 "./util/configparser.y" /* yacc.c:1646  */
+  case 338:
+#line 1660 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -4138,11 +4160,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4142 "util/configparser.c" /* yacc.c:1646  */
+#line 4164 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 1659 "./util/configparser.y" /* yacc.c:1646  */
+  case 339:
+#line 1671 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4160,11 +4182,11 @@ yyreduce:
                        }
                }
        }
-#line 4164 "util/configparser.c" /* yacc.c:1646  */
+#line 4186 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 338:
-#line 1678 "./util/configparser.y" /* yacc.c:1646  */
+  case 340:
+#line 1690 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4172,11 +4194,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4176 "util/configparser.c" /* yacc.c:1646  */
+#line 4198 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 339:
-#line 1688 "./util/configparser.y" /* yacc.c:1646  */
+  case 341:
+#line 1700 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4184,33 +4206,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4188 "util/configparser.c" /* yacc.c:1646  */
+#line 4210 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 1697 "./util/configparser.y" /* yacc.c:1646  */
+  case 342:
+#line 1709 "./util/configparser.y" /* yacc.c:1646  */
     {
        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 4199 "util/configparser.c" /* yacc.c:1646  */
+#line 4221 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 341:
-#line 1705 "./util/configparser.y" /* yacc.c:1646  */
+  case 343:
+#line 1717 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4210 "util/configparser.c" /* yacc.c:1646  */
+#line 4232 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 342:
-#line 1713 "./util/configparser.y" /* yacc.c:1646  */
+  case 344:
+#line 1725 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -4222,11 +4244,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 4226 "util/configparser.c" /* yacc.c:1646  */
+#line 4248 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 343:
-#line 1726 "./util/configparser.y" /* yacc.c:1646  */
+  case 345:
+#line 1738 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4238,11 +4260,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4242 "util/configparser.c" /* yacc.c:1646  */
+#line 4264 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 1739 "./util/configparser.y" /* yacc.c:1646  */
+  case 346:
+#line 1751 "./util/configparser.y" /* yacc.c:1646  */
     {
                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) {
@@ -4254,11 +4276,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 4258 "util/configparser.c" /* yacc.c:1646  */
+#line 4280 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 345:
-#line 1752 "./util/configparser.y" /* yacc.c:1646  */
+  case 347:
+#line 1764 "./util/configparser.y" /* yacc.c:1646  */
     {
                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) {
@@ -4270,11 +4292,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 4274 "util/configparser.c" /* yacc.c:1646  */
+#line 4296 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 346:
-#line 1765 "./util/configparser.y" /* yacc.c:1646  */
+  case 348:
+#line 1777 "./util/configparser.y" /* yacc.c:1646  */
     { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4282,11 +4304,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 4286 "util/configparser.c" /* yacc.c:1646  */
+#line 4308 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 347:
-#line 1774 "./util/configparser.y" /* yacc.c:1646  */
+  case 349:
+#line 1786 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4294,11 +4316,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4298 "util/configparser.c" /* yacc.c:1646  */
+#line 4320 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 1783 "./util/configparser.y" /* yacc.c:1646  */
+  case 350:
+#line 1795 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4307,11 +4329,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4311 "util/configparser.c" /* yacc.c:1646  */
+#line 4333 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 349:
-#line 1793 "./util/configparser.y" /* yacc.c:1646  */
+  case 351:
+#line 1805 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4320,11 +4342,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4324 "util/configparser.c" /* yacc.c:1646  */
+#line 4346 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 350:
-#line 1803 "./util/configparser.y" /* yacc.c:1646  */
+  case 352:
+#line 1815 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -4336,11 +4358,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4340 "util/configparser.c" /* yacc.c:1646  */
+#line 4362 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 351:
-#line 1816 "./util/configparser.y" /* yacc.c:1646  */
+  case 353:
+#line 1828 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -4352,11 +4374,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4356 "util/configparser.c" /* yacc.c:1646  */
+#line 4378 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 352:
-#line 1829 "./util/configparser.y" /* yacc.c:1646  */
+  case 354:
+#line 1841 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -4366,11 +4388,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4370 "util/configparser.c" /* yacc.c:1646  */
+#line 4392 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 353:
-#line 1840 "./util/configparser.y" /* yacc.c:1646  */
+  case 355:
+#line 1852 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -4382,11 +4404,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4386 "util/configparser.c" /* yacc.c:1646  */
+#line 4408 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 354:
-#line 1853 "./util/configparser.y" /* yacc.c:1646  */
+  case 356:
+#line 1865 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -4396,11 +4418,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4400 "util/configparser.c" /* yacc.c:1646  */
+#line 4422 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 355:
-#line 1864 "./util/configparser.y" /* yacc.c:1646  */
+  case 357:
+#line 1876 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -4412,11 +4434,11 @@ yyreduce:
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
        }
-#line 4416 "util/configparser.c" /* yacc.c:1646  */
+#line 4438 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 356:
-#line 1877 "./util/configparser.y" /* yacc.c:1646  */
+  case 358:
+#line 1889 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -4425,31 +4447,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 4429 "util/configparser.c" /* yacc.c:1646  */
+#line 4451 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 357:
-#line 1887 "./util/configparser.y" /* yacc.c:1646  */
+  case 359:
+#line 1899 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4439 "util/configparser.c" /* yacc.c:1646  */
+#line 4461 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 1894 "./util/configparser.y" /* yacc.c:1646  */
+  case 360:
+#line 1906 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4449 "util/configparser.c" /* yacc.c:1646  */
+#line 4471 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 1901 "./util/configparser.y" /* yacc.c:1646  */
+  case 361:
+#line 1913 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4457,11 +4479,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4461 "util/configparser.c" /* yacc.c:1646  */
+#line 4483 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 1910 "./util/configparser.y" /* yacc.c:1646  */
+  case 362:
+#line 1922 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4470,11 +4492,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4474 "util/configparser.c" /* yacc.c:1646  */
+#line 4496 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 1920 "./util/configparser.y" /* yacc.c:1646  */
+  case 363:
+#line 1932 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4483,11 +4505,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4487 "util/configparser.c" /* yacc.c:1646  */
+#line 4509 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 1930 "./util/configparser.y" /* yacc.c:1646  */
+  case 364:
+#line 1942 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -4496,31 +4518,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 4500 "util/configparser.c" /* yacc.c:1646  */
+#line 4522 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 363:
-#line 1940 "./util/configparser.y" /* yacc.c:1646  */
+  case 365:
+#line 1952 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4510 "util/configparser.c" /* yacc.c:1646  */
+#line 4532 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 364:
-#line 1947 "./util/configparser.y" /* yacc.c:1646  */
+  case 366:
+#line 1959 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4520 "util/configparser.c" /* yacc.c:1646  */
+#line 4542 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 365:
-#line 1954 "./util/configparser.y" /* yacc.c:1646  */
+  case 367:
+#line 1966 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4528,11 +4550,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4532 "util/configparser.c" /* yacc.c:1646  */
+#line 4554 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 366:
-#line 1963 "./util/configparser.y" /* yacc.c:1646  */
+  case 368:
+#line 1975 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4541,11 +4563,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4545 "util/configparser.c" /* yacc.c:1646  */
+#line 4567 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 367:
-#line 1973 "./util/configparser.y" /* yacc.c:1646  */
+  case 369:
+#line 1985 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -4554,11 +4576,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 4558 "util/configparser.c" /* yacc.c:1646  */
+#line 4580 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 368:
-#line 1983 "./util/configparser.y" /* yacc.c:1646  */
+  case 370:
+#line 1995 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -4586,11 +4608,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4590 "util/configparser.c" /* yacc.c:1646  */
+#line 4612 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 369:
-#line 2012 "./util/configparser.y" /* yacc.c:1646  */
+  case 371:
+#line 2024 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4599,22 +4621,22 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 4603 "util/configparser.c" /* yacc.c:1646  */
+#line 4625 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 370:
-#line 2022 "./util/configparser.y" /* yacc.c:1646  */
+  case 372:
+#line 2034 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4614 "util/configparser.c" /* yacc.c:1646  */
+#line 4636 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 371:
-#line 2030 "./util/configparser.y" /* yacc.c:1646  */
+  case 373:
+#line 2042 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
@@ -4622,11 +4644,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4626 "util/configparser.c" /* yacc.c:1646  */
+#line 4648 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 372:
-#line 2039 "./util/configparser.y" /* yacc.c:1646  */
+  case 374:
+#line 2051 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -4640,11 +4662,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 4644 "util/configparser.c" /* yacc.c:1646  */
+#line 4666 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 373:
-#line 2054 "./util/configparser.y" /* yacc.c:1646  */
+  case 375:
+#line 2066 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4652,19 +4674,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4656 "util/configparser.c" /* yacc.c:1646  */
+#line 4678 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 374:
-#line 2063 "./util/configparser.y" /* yacc.c:1646  */
+  case 376:
+#line 2075 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 4664 "util/configparser.c" /* yacc.c:1646  */
+#line 4686 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 385:
-#line 2074 "./util/configparser.y" /* yacc.c:1646  */
+  case 387:
+#line 2086 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4673,11 +4695,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4677 "util/configparser.c" /* yacc.c:1646  */
+#line 4699 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 386:
-#line 2084 "./util/configparser.y" /* yacc.c:1646  */
+  case 388:
+#line 2096 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4685,21 +4707,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4689 "util/configparser.c" /* yacc.c:1646  */
+#line 4711 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 387:
-#line 2093 "./util/configparser.y" /* yacc.c:1646  */
+  case 389:
+#line 2105 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4699 "util/configparser.c" /* yacc.c:1646  */
+#line 4721 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 388:
-#line 2100 "./util/configparser.y" /* yacc.c:1646  */
+  case 390:
+#line 2112 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4708,122 +4730,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4712 "util/configparser.c" /* yacc.c:1646  */
+#line 4734 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 389:
-#line 2110 "./util/configparser.y" /* yacc.c:1646  */
+  case 391:
+#line 2122 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4722 "util/configparser.c" /* yacc.c:1646  */
+#line 4744 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 390:
-#line 2117 "./util/configparser.y" /* yacc.c:1646  */
+  case 392:
+#line 2129 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4732 "util/configparser.c" /* yacc.c:1646  */
+#line 4754 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 391:
-#line 2124 "./util/configparser.y" /* yacc.c:1646  */
+  case 393:
+#line 2136 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4742 "util/configparser.c" /* yacc.c:1646  */
+#line 4764 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 392:
-#line 2131 "./util/configparser.y" /* yacc.c:1646  */
+  case 394:
+#line 2143 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4752 "util/configparser.c" /* yacc.c:1646  */
+#line 4774 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 393:
-#line 2138 "./util/configparser.y" /* yacc.c:1646  */
+  case 395:
+#line 2150 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 4760 "util/configparser.c" /* yacc.c:1646  */
+#line 4782 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 408:
-#line 2155 "./util/configparser.y" /* yacc.c:1646  */
+  case 410:
+#line 2167 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4771 "util/configparser.c" /* yacc.c:1646  */
+#line 4793 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 409:
-#line 2163 "./util/configparser.y" /* yacc.c:1646  */
+  case 411:
+#line 2175 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4781 "util/configparser.c" /* yacc.c:1646  */
+#line 4803 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 410:
-#line 2170 "./util/configparser.y" /* yacc.c:1646  */
+  case 412:
+#line 2182 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4792 "util/configparser.c" /* yacc.c:1646  */
+#line 4814 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 411:
-#line 2178 "./util/configparser.y" /* yacc.c:1646  */
+  case 413:
+#line 2190 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4803 "util/configparser.c" /* yacc.c:1646  */
+#line 4825 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 412:
-#line 2186 "./util/configparser.y" /* yacc.c:1646  */
+  case 414:
+#line 2198 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4813 "util/configparser.c" /* yacc.c:1646  */
+#line 4835 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 413:
-#line 2193 "./util/configparser.y" /* yacc.c:1646  */
+  case 415:
+#line 2205 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4823 "util/configparser.c" /* yacc.c:1646  */
+#line 4845 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 414:
-#line 2200 "./util/configparser.y" /* yacc.c:1646  */
+  case 416:
+#line 2212 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4831,11 +4853,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4835 "util/configparser.c" /* yacc.c:1646  */
+#line 4857 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 415:
-#line 2209 "./util/configparser.y" /* yacc.c:1646  */
+  case 417:
+#line 2221 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4843,11 +4865,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4847 "util/configparser.c" /* yacc.c:1646  */
+#line 4869 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 416:
-#line 2218 "./util/configparser.y" /* yacc.c:1646  */
+  case 418:
+#line 2230 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4855,11 +4877,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4859 "util/configparser.c" /* yacc.c:1646  */
+#line 4881 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 417:
-#line 2227 "./util/configparser.y" /* yacc.c:1646  */
+  case 419:
+#line 2239 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4867,11 +4889,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4871 "util/configparser.c" /* yacc.c:1646  */
+#line 4893 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 418:
-#line 2236 "./util/configparser.y" /* yacc.c:1646  */
+  case 420:
+#line 2248 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4879,11 +4901,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4883 "util/configparser.c" /* yacc.c:1646  */
+#line 4905 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 419:
-#line 2245 "./util/configparser.y" /* yacc.c:1646  */
+  case 421:
+#line 2257 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4891,29 +4913,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4895 "util/configparser.c" /* yacc.c:1646  */
+#line 4917 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 420:
-#line 2254 "./util/configparser.y" /* yacc.c:1646  */
+  case 422:
+#line 2266 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4903 "util/configparser.c" /* yacc.c:1646  */
+#line 4925 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 424:
-#line 2263 "./util/configparser.y" /* yacc.c:1646  */
+  case 426:
+#line 2275 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4913 "util/configparser.c" /* yacc.c:1646  */
+#line 4935 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 425:
-#line 2269 "./util/configparser.y" /* yacc.c:1646  */
+  case 427:
+#line 2281 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4922,21 +4944,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4926 "util/configparser.c" /* yacc.c:1646  */
+#line 4948 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 426:
-#line 2279 "./util/configparser.y" /* yacc.c:1646  */
+  case 428:
+#line 2291 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4936 "util/configparser.c" /* yacc.c:1646  */
+#line 4958 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 427:
-#line 2286 "./util/configparser.y" /* yacc.c:1646  */
+  case 429:
+#line 2298 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4944,42 +4966,42 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 4948 "util/configparser.c" /* yacc.c:1646  */
+#line 4970 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 428:
-#line 2295 "./util/configparser.y" /* yacc.c:1646  */
+  case 430:
+#line 2307 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4959 "util/configparser.c" /* yacc.c:1646  */
+#line 4981 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 429:
-#line 2303 "./util/configparser.y" /* yacc.c:1646  */
+  case 431:
+#line 2315 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnscrypt:)\n"));
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 4968 "util/configparser.c" /* yacc.c:1646  */
+#line 4990 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 437:
-#line 2315 "./util/configparser.y" /* yacc.c:1646  */
+  case 439:
+#line 2327 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4979 "util/configparser.c" /* yacc.c:1646  */
+#line 5001 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 438:
-#line 2324 "./util/configparser.y" /* yacc.c:1646  */
+  case 440:
+#line 2336 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
 
@@ -4988,41 +5010,41 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4992 "util/configparser.c" /* yacc.c:1646  */
+#line 5014 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 439:
-#line 2334 "./util/configparser.y" /* yacc.c:1646  */
+  case 441:
+#line 2346 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 5002 "util/configparser.c" /* yacc.c:1646  */
+#line 5024 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 440:
-#line 2341 "./util/configparser.y" /* yacc.c:1646  */
+  case 442:
+#line 2353 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 5012 "util/configparser.c" /* yacc.c:1646  */
+#line 5034 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 441:
-#line 2348 "./util/configparser.y" /* yacc.c:1646  */
+  case 443:
+#line 2360 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 5022 "util/configparser.c" /* yacc.c:1646  */
+#line 5044 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 5026 "util/configparser.c" /* yacc.c:1646  */
+#line 5048 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5250,7 +5272,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2354 "./util/configparser.y" /* yacc.c:1906  */
+#line 2366 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index 00fe05892bfbd532f256ff040247fef115eef166..d42eb0820cca7d13ea646587310531bfc162fc5d 100644 (file)
@@ -217,46 +217,47 @@ extern int yydebug;
     VAR_IP_RATELIMIT_FACTOR = 427,
     VAR_RATELIMIT_FACTOR = 428,
     VAR_SEND_CLIENT_SUBNET = 429,
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 430,
-    VAR_CLIENT_SUBNET_OPCODE = 431,
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 432,
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 433,
-    VAR_CAPS_WHITELIST = 434,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 435,
-    VAR_PERMIT_SMALL_HOLDDOWN = 436,
-    VAR_QNAME_MINIMISATION = 437,
-    VAR_QNAME_MINIMISATION_STRICT = 438,
-    VAR_IP_FREEBIND = 439,
-    VAR_DEFINE_TAG = 440,
-    VAR_LOCAL_ZONE_TAG = 441,
-    VAR_ACCESS_CONTROL_TAG = 442,
-    VAR_LOCAL_ZONE_OVERRIDE = 443,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 444,
-    VAR_ACCESS_CONTROL_TAG_DATA = 445,
-    VAR_VIEW = 446,
-    VAR_ACCESS_CONTROL_VIEW = 447,
-    VAR_VIEW_FIRST = 448,
-    VAR_SERVE_EXPIRED = 449,
-    VAR_FAKE_DSA = 450,
-    VAR_FAKE_SHA1 = 451,
-    VAR_LOG_IDENTITY = 452,
-    VAR_HIDE_TRUSTANCHOR = 453,
-    VAR_TRUST_ANCHOR_SIGNALING = 454,
-    VAR_USE_SYSTEMD = 455,
-    VAR_SHM_ENABLE = 456,
-    VAR_SHM_KEY = 457,
-    VAR_DNSCRYPT = 458,
-    VAR_DNSCRYPT_ENABLE = 459,
-    VAR_DNSCRYPT_PORT = 460,
-    VAR_DNSCRYPT_PROVIDER = 461,
-    VAR_DNSCRYPT_SECRET_KEY = 462,
-    VAR_DNSCRYPT_PROVIDER_CERT = 463,
-    VAR_IPSECMOD_ENABLED = 464,
-    VAR_IPSECMOD_HOOK = 465,
-    VAR_IPSECMOD_IGNORE_BOGUS = 466,
-    VAR_IPSECMOD_MAX_TTL = 467,
-    VAR_IPSECMOD_WHITELIST = 468,
-    VAR_IPSECMOD_STRICT = 469
+    VAR_CLIENT_SUBNET_ZONE = 430,
+    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 431,
+    VAR_CLIENT_SUBNET_OPCODE = 432,
+    VAR_MAX_CLIENT_SUBNET_IPV4 = 433,
+    VAR_MAX_CLIENT_SUBNET_IPV6 = 434,
+    VAR_CAPS_WHITELIST = 435,
+    VAR_CACHE_MAX_NEGATIVE_TTL = 436,
+    VAR_PERMIT_SMALL_HOLDDOWN = 437,
+    VAR_QNAME_MINIMISATION = 438,
+    VAR_QNAME_MINIMISATION_STRICT = 439,
+    VAR_IP_FREEBIND = 440,
+    VAR_DEFINE_TAG = 441,
+    VAR_LOCAL_ZONE_TAG = 442,
+    VAR_ACCESS_CONTROL_TAG = 443,
+    VAR_LOCAL_ZONE_OVERRIDE = 444,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 445,
+    VAR_ACCESS_CONTROL_TAG_DATA = 446,
+    VAR_VIEW = 447,
+    VAR_ACCESS_CONTROL_VIEW = 448,
+    VAR_VIEW_FIRST = 449,
+    VAR_SERVE_EXPIRED = 450,
+    VAR_FAKE_DSA = 451,
+    VAR_FAKE_SHA1 = 452,
+    VAR_LOG_IDENTITY = 453,
+    VAR_HIDE_TRUSTANCHOR = 454,
+    VAR_TRUST_ANCHOR_SIGNALING = 455,
+    VAR_USE_SYSTEMD = 456,
+    VAR_SHM_ENABLE = 457,
+    VAR_SHM_KEY = 458,
+    VAR_DNSCRYPT = 459,
+    VAR_DNSCRYPT_ENABLE = 460,
+    VAR_DNSCRYPT_PORT = 461,
+    VAR_DNSCRYPT_PROVIDER = 462,
+    VAR_DNSCRYPT_SECRET_KEY = 463,
+    VAR_DNSCRYPT_PROVIDER_CERT = 464,
+    VAR_IPSECMOD_ENABLED = 465,
+    VAR_IPSECMOD_HOOK = 466,
+    VAR_IPSECMOD_IGNORE_BOGUS = 467,
+    VAR_IPSECMOD_MAX_TTL = 468,
+    VAR_IPSECMOD_WHITELIST = 469,
+    VAR_IPSECMOD_STRICT = 470
   };
 #endif
 /* Tokens.  */
@@ -432,46 +433,47 @@ extern int yydebug;
 #define VAR_IP_RATELIMIT_FACTOR 427
 #define VAR_RATELIMIT_FACTOR 428
 #define VAR_SEND_CLIENT_SUBNET 429
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 430
-#define VAR_CLIENT_SUBNET_OPCODE 431
-#define VAR_MAX_CLIENT_SUBNET_IPV4 432
-#define VAR_MAX_CLIENT_SUBNET_IPV6 433
-#define VAR_CAPS_WHITELIST 434
-#define VAR_CACHE_MAX_NEGATIVE_TTL 435
-#define VAR_PERMIT_SMALL_HOLDDOWN 436
-#define VAR_QNAME_MINIMISATION 437
-#define VAR_QNAME_MINIMISATION_STRICT 438
-#define VAR_IP_FREEBIND 439
-#define VAR_DEFINE_TAG 440
-#define VAR_LOCAL_ZONE_TAG 441
-#define VAR_ACCESS_CONTROL_TAG 442
-#define VAR_LOCAL_ZONE_OVERRIDE 443
-#define VAR_ACCESS_CONTROL_TAG_ACTION 444
-#define VAR_ACCESS_CONTROL_TAG_DATA 445
-#define VAR_VIEW 446
-#define VAR_ACCESS_CONTROL_VIEW 447
-#define VAR_VIEW_FIRST 448
-#define VAR_SERVE_EXPIRED 449
-#define VAR_FAKE_DSA 450
-#define VAR_FAKE_SHA1 451
-#define VAR_LOG_IDENTITY 452
-#define VAR_HIDE_TRUSTANCHOR 453
-#define VAR_TRUST_ANCHOR_SIGNALING 454
-#define VAR_USE_SYSTEMD 455
-#define VAR_SHM_ENABLE 456
-#define VAR_SHM_KEY 457
-#define VAR_DNSCRYPT 458
-#define VAR_DNSCRYPT_ENABLE 459
-#define VAR_DNSCRYPT_PORT 460
-#define VAR_DNSCRYPT_PROVIDER 461
-#define VAR_DNSCRYPT_SECRET_KEY 462
-#define VAR_DNSCRYPT_PROVIDER_CERT 463
-#define VAR_IPSECMOD_ENABLED 464
-#define VAR_IPSECMOD_HOOK 465
-#define VAR_IPSECMOD_IGNORE_BOGUS 466
-#define VAR_IPSECMOD_MAX_TTL 467
-#define VAR_IPSECMOD_WHITELIST 468
-#define VAR_IPSECMOD_STRICT 469
+#define VAR_CLIENT_SUBNET_ZONE 430
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 431
+#define VAR_CLIENT_SUBNET_OPCODE 432
+#define VAR_MAX_CLIENT_SUBNET_IPV4 433
+#define VAR_MAX_CLIENT_SUBNET_IPV6 434
+#define VAR_CAPS_WHITELIST 435
+#define VAR_CACHE_MAX_NEGATIVE_TTL 436
+#define VAR_PERMIT_SMALL_HOLDDOWN 437
+#define VAR_QNAME_MINIMISATION 438
+#define VAR_QNAME_MINIMISATION_STRICT 439
+#define VAR_IP_FREEBIND 440
+#define VAR_DEFINE_TAG 441
+#define VAR_LOCAL_ZONE_TAG 442
+#define VAR_ACCESS_CONTROL_TAG 443
+#define VAR_LOCAL_ZONE_OVERRIDE 444
+#define VAR_ACCESS_CONTROL_TAG_ACTION 445
+#define VAR_ACCESS_CONTROL_TAG_DATA 446
+#define VAR_VIEW 447
+#define VAR_ACCESS_CONTROL_VIEW 448
+#define VAR_VIEW_FIRST 449
+#define VAR_SERVE_EXPIRED 450
+#define VAR_FAKE_DSA 451
+#define VAR_FAKE_SHA1 452
+#define VAR_LOG_IDENTITY 453
+#define VAR_HIDE_TRUSTANCHOR 454
+#define VAR_TRUST_ANCHOR_SIGNALING 455
+#define VAR_USE_SYSTEMD 456
+#define VAR_SHM_ENABLE 457
+#define VAR_SHM_KEY 458
+#define VAR_DNSCRYPT 459
+#define VAR_DNSCRYPT_ENABLE 460
+#define VAR_DNSCRYPT_PORT 461
+#define VAR_DNSCRYPT_PROVIDER 462
+#define VAR_DNSCRYPT_SECRET_KEY 463
+#define VAR_DNSCRYPT_PROVIDER_CERT 464
+#define VAR_IPSECMOD_ENABLED 465
+#define VAR_IPSECMOD_HOOK 466
+#define VAR_IPSECMOD_IGNORE_BOGUS 467
+#define VAR_IPSECMOD_MAX_TTL 468
+#define VAR_IPSECMOD_WHITELIST 469
+#define VAR_IPSECMOD_STRICT 470
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -482,7 +484,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 486 "util/configparser.h" /* yacc.c:1909  */
+#line 488 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index 98ce2f4fb151407a77a9d249486f552a6df341d3..ea7b62ee59cf61939152d64e89e9aee0a8e34fac 100644 (file)
@@ -131,8 +131,8 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN
 %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR
-%token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ALWAYS_FORWARD
-%token VAR_CLIENT_SUBNET_OPCODE
+%token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE
+%token VAR_CLIENT_SUBNET_ALWAYS_FORWARD VAR_CLIENT_SUBNET_OPCODE
 %token VAR_MAX_CLIENT_SUBNET_IPV4 VAR_MAX_CLIENT_SUBNET_IPV6
 %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN
 %token VAR_QNAME_MINIMISATION VAR_QNAME_MINIMISATION_STRICT VAR_IP_FREEBIND
@@ -217,7 +217,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_ratelimit_for_domain |
        server_ratelimit_below_domain | server_ratelimit_factor |
        server_ip_ratelimit_factor | server_send_client_subnet |
-       server_client_subnet_always_forward |
+       server_client_subnet_zone | server_client_subnet_always_forward |
        server_client_subnet_opcode |
        server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 |
        server_caps_whitelist | server_cache_max_negative_ttl |
@@ -375,6 +375,18 @@ server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG
        #endif
        }
        ;
+server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG
+       {
+       #ifdef CLIENT_SUBNET
+               OUTYY(("P(server_client_subnet_zone:%s)\n", $2));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
+                       $2))
+                       fatal_exit("out of memory adding client-subnet-zone");
+       #else
+               OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
+       #endif
+       }
+       ;
 server_client_subnet_always_forward:
        VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG
        {