]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
harden-below-nxdomain option taken from draft-vixie-dnsext-resimprove.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 18 Nov 2010 08:49:15 +0000 (08:49 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 18 Nov 2010 08:49:15 +0000 (08:49 +0000)
Default off (for now), as some older software that gives nxdomain for ENT
would be incompatible.  But that would only happen in the reverse tree, and
such software (nonDNSSEC) may go out of style, so in the future a default yes
could be possible.

git-svn-id: file:///svn/unbound/trunk@2347 be551aaa-1e26-0410-a405-d3ace91eadb9

12 files changed:
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
services/cache/dns.c
testdata/stop_nxdomain.rpl
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index ec332efe185a6ecdcecc4aad44b59c3aa2942bba..da3f4a27edd6ae20a56f5acbeb9b7e937198aa71 100644 (file)
@@ -1,3 +1,8 @@
+18 November 2010: Wouter
+       - harden-below-nxdomain option, default off (because very old
+         software may be incompatible).  We could enable it by default in
+         the future.
+
 17 November 2010: Wouter
        - implement draft-vixie-dnsext-resimprove-00, we stop on NXDOMAIN.
        - make test output nicer.
index 5c4abcd1632792e8b686911897c4d15ab967fc60..34d314c67d24325300bf0cb95ce786d420a33963 100644 (file)
@@ -257,6 +257,10 @@ server:
        # Default on, which insists on dnssec data for trust-anchored zones.
        # harden-dnssec-stripped: yes
 
+       # Harden against queries that fall under known nxdomain names.
+       # Default off because very old software can be incompatible.
+       # harden-below-nxdomain: no
+
         # Harden the referral path by performing additional queries for
        # infrastructure data.  Validates the replies (if possible).
        # Default off, because the lookups burden the server.  Experimental 
index 31a3d7dcee9680738e33262bb2f19a3dd08cb15b..940acf470640a42fd376512aa9495739bdedcc33 100644 (file)
@@ -466,6 +466,13 @@ removes DNSSEC data from packets, or a zone changes from signed to
 unsigned to badly signed often. If turned off you run the risk of a 
 downgrade attack that disables security for a zone. Default is on.
 .TP
+.B harden\-below\-nxdomain: \fI<yes or no>
+From draft-vixie-dnsext-resimprove, returns nxdomain to queries for a name
+below another name that is already known to be nxdomain.  DNSSEC mandates
+noerror for empty nonterminals, hence this is possible.  Very old software
+might return nxdomain for empty nonterminals (that usually happen for reverse
+IP address lookups), and thus may be incompatible with this.  Default is off.
+.TP
 .B harden\-referral\-path: \fI<yes or no>
 Harden the referral path by performing additional queries for
 infrastructure data.  Validates the replies if trust anchors are configured
index a43e52cb0c347a87bf91484740bdd3221fd2f677..9a21516c82448bcbcef9d20a552b5e870c90971e 100644 (file)
@@ -49,6 +49,7 @@
 #include "util/module.h"
 #include "util/net_help.h"
 #include "util/regional.h"
+#include "util/config_file.h"
 
 /** store rrsets in the rrset cache. 
  * @param env: module environment with caches.
@@ -675,7 +676,8 @@ dns_cache_lookup(struct module_env* env,
         * Empty nonterminals are NOERROR, so an NXDOMAIN for foo
         * means bla.foo also does not exist.  The DNSSEC proofs are
         * the same.  We search upwards for NXDOMAINs. */
-       while(!dname_is_root(k.qname)) {
+       if(env->cfg->harden_below_nxdomain)
+           while(!dname_is_root(k.qname)) {
                dname_remove_label(&k.qname, &k.qname_len);
                h = query_info_hash(&k);
                e = slabhash_lookup(env->msg_cache, h, &k, 0);
index 5feb3a7563e9914fafeeaa3b2d5298f98f564846..76c90c1c9626e7227e263642b1c92edaf0c47618 100644 (file)
@@ -1,6 +1,7 @@
 ; config options
 server:
        target-fetch-policy: "0 0 0 0 0"
+       harden-below-nxdomain: yes
 
 stub-zone:
        name: "."
index bcd5426a513893fae70405efd10e4b005f88b2c7..fccd30868c257a39c2661f895253cc0bca881611 100644 (file)
@@ -153,6 +153,7 @@ config_create(void)
        cfg->harden_large_queries = 0;
        cfg->harden_glue = 1;
        cfg->harden_dnssec_stripped = 1;
+       cfg->harden_below_nxdomain = 0;
        cfg->harden_referral_path = 0;
        cfg->use_caps_bits_for_id = 0;
        cfg->private_address = NULL;
index 5ca7b1ef0a132deaa8ff8407c17abc52cc727833..7a014f5428c0259b9d54882f630c93a3904058c9 100644 (file)
@@ -156,6 +156,8 @@ struct config_file {
        int harden_glue;
        /** harden against receiving no DNSSEC data for trust anchor */
        int harden_dnssec_stripped;
+       /** harden against queries that fall under known nxdomain names */
+       int harden_below_nxdomain;
        /** harden the referral path, query for NS,A,AAAA and validate */
        int harden_referral_path;
        /** use 0x20 bits in query as random ID bits */
index 9dda30a766600057246d118ac7a843b1c6e38a9d..9877393a84d0eda0254f25cada6de60ad05cf987 100644 (file)
@@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 130
-#define YY_END_OF_BUFFER 131
+#define YY_NUM_RULES 131
+#define YY_END_OF_BUFFER 132
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,142 +371,144 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1221] =
+static yyconst flex_int16_t yy_accept[1236] =
     {   0,
-        1,    1,  112,  112,  116,  116,  120,  120,  124,  124,
-        1,    1,  131,  128,    1,  110,  110,  129,    2,  129,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  112,
-      113,  113,  114,  129,  116,  117,  117,  118,  129,  123,
-      120,  121,  121,  122,  129,  124,  125,  125,  126,  129,
-      127,  111,    2,  115,  129,  127,  128,    0,    1,    2,
-        2,    2,    2,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  112,    0,  116,    0,  123,
-        0,  120,  124,    0,  127,    0,    2,    2,  127,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  127,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  127,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,   56,  128,  128,  128,  128,  128,    6,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  127,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  127,  128,  128,
-      128,  128,   22,  128,  128,  128,  128,  128,   12,   13,
-      128,   15,   14,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  108,  128,  128,  128,  128,
-        3,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  127,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  119,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-       25,  128,  128,  128,  128,  128,  128,  128,   26,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,   69,
-      119,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,   68,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,   54,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,   23,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,   24,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,   17,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,   20,
-       21,  128,   57,   58,  128,   55,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,    5,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,   71,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,   94,   93,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,   27,  128,  128,  128,  128,
-       59,  128,  128,  128,  128,  128,   91,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,   46,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,    4,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,   88,  128,  128,  128,
-      128,  128,  128,  128,  102,   89,  128,   16,  128,  128,
-      128,  128,   61,   62,   60,  128,  128,  128,  128,  128,
-       67,  128,  128,  128,  128,  128,  128,  128,  128,   90,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,   53,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,   76,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,   34,
-       35,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,   66,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,   70,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      107,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,   80,  128,   83,  128,  128,  128,  128,
-       65,  128,  128,  100,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-       36,   37,  128,   42,   84,  128,   95,   92,  128,   30,
-
-      128,   86,  128,  128,  128,  128,  128,    7,  128,   52,
-       99,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,   72,  128,  128,  109,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,   85,   29,   31,
-      128,  128,  128,  128,  128,   51,  128,  128,  128,  103,
-      128,  128,  128,  128,  128,  128,   49,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  105,  128,  128,   28,
-      128,  128,  128,  128,  128,   11,  128,  128,  128,  128,
-      128,  128,   10,  128,  128,   32,  128,  104,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,   79,   78,
-      128,  106,  101,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,   38,  128,  128,  128,  128,  128,   33,  128,
-      128,  128,   73,   75,  128,  128,  128,   77,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,   18,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,   98,  128,  128,  128,  128,  128,
-      128,   19,  128,    9,  128,  128,   96,   43,  128,  128,
-      128,   82,  128,   63,  128,  128,   45,   48,   44,  128,
-       39,  128,    8,  128,  128,   81,  128,  128,  128,  128,
-
-       40,  128,   97,  128,  128,   74,   64,   47,   41,  128,
-      128,  128,  128,   50,  128,  128,  128,  128,   87,    0
+        1,    1,  113,  113,  117,  117,  121,  121,  125,  125,
+        1,    1,  132,  129,    1,  111,  111,  130,    2,  130,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  113,
+      114,  114,  115,  130,  117,  118,  118,  119,  130,  124,
+      121,  122,  122,  123,  130,  125,  126,  126,  127,  130,
+      128,  112,    2,  116,  130,  128,  129,    0,    1,    2,
+        2,    2,    2,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  113,    0,  117,    0,  124,
+        0,  121,  125,    0,  128,    0,    2,    2,  128,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  128,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  128,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,   57,  129,  129,  129,  129,  129,    6,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,  128,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  128,  129,  129,
+      129,  129,   22,  129,  129,  129,  129,  129,   12,   13,
+      129,   15,   14,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  109,  129,  129,  129,  129,
+        3,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  128,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  120,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,   25,  129,  129,  129,  129,  129,  129,  129,   26,
+
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+       70,  120,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,   69,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,   55,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,   23,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,   24,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,   17,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,   20,   21,  129,   58,   59,  129,   56,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,    5,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,   72,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,   95,   94,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,   27,
+      129,  129,  129,  129,   60,  129,  129,  129,  129,  129,
+       92,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+       46,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,    4,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,   89,  129,  129,  129,  129,  129,  129,  129,  103,
+       90,  129,   16,  129,  129,  129,  129,   62,   63,   61,
+      129,  129,  129,  129,  129,  129,   68,  129,  129,  129,
+      129,  129,  129,  129,  129,   91,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+       54,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+
+      129,  129,   77,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,   34,   35,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,   67,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,   71,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  108,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+       81,  129,   84,  129,  129,  129,  129,   66,  129,  129,
+      101,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,   36,   37,
+
+      129,   42,   85,  129,   96,   93,  129,   30,  129,   87,
+      129,  129,  129,  129,  129,    7,  129,   53,  100,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+       73,  129,  129,  110,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,   86,   29,   31,  129,
+      129,  129,  129,  129,   52,  129,  129,  129,  104,  129,
+      129,  129,  129,  129,  129,   50,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  106,  129,  129,   28,  129,
+      129,  129,  129,  129,  129,   11,  129,  129,  129,  129,
+
+      129,  129,   10,  129,  129,   32,  129,  105,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,   80,   79,
+      129,  107,  102,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,   38,  129,  129,  129,  129,  129,   33,
+      129,  129,  129,   74,   76,  129,  129,  129,   78,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,   18,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,   99,  129,  129,  129,
+      129,  129,  129,  129,   19,  129,    9,  129,  129,   97,
+       43,  129,  129,  129,   83,  129,   64,  129,  129,  129,
+
+       45,   49,   44,  129,   39,  129,    8,  129,  129,   82,
+      129,  129,  129,   48,  129,   40,  129,   98,  129,  129,
+       75,   65,   47,   41,  129,  129,  129,  129,   51,  129,
+      129,  129,  129,   88,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -549,21 +551,21 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1235] =
+static yyconst flex_int16_t yy_base[1250] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2345, 2331,   50, 2447, 2447, 2447,  129,   94,
+       87,  108, 2230, 2128,   50, 2482, 2482, 2482,  129,   94,
        70,  104,  122,   90,   92,  115,  126,   95,   84,  132,
-      133,  138,   50,  135,  136,  156,  145,  155,  157, 2329,
-     2447, 2447, 2447,   70, 2328, 2447, 2447, 2447,   42, 2258,
-     2096, 2447, 2447, 2447,  176, 1978, 2447, 2447, 2447,  181,
-     1860, 2447,  186, 2447,  190,  111, 1300,  196,  120,    0,
+      133,  138,   50,  135,  136,  156,  145,  155,  157, 1820,
+     2482, 2482, 2482,   70, 1695, 2482, 2482, 2482,   42, 1498,
+     1461, 2482, 2482, 2482,  176, 1377, 2482, 2482, 2482,  181,
+     1342, 2482,  186, 2482,  190,  111, 1093,  196,  120,    0,
       207,    0,    0,  103,  189,  183,  191,  192,  197,  200,
       202,  142,  209,  205,  208,  213,  214,  217,  218,  224,
       215,  233,  236,  225,  235,  237,  240,  241,  226,  245,
 
       248,  251,  252,  255,  259,  257,  253,  267,  263,  261,
-      265,   49,  270,  269,  273, 1184,  286, 1051,  289,  811,
+      265,   49,  270,  269,  273,  995,  286,  848,  289,  811,
       296,  710,  466,  301,  282,  305,  309,    0,  302,  306,
       312,  289,  308,  295,  313,  319,  315,  322,  334,  323,
       318,  321,  327,  325,  330,  328,  332,  331,  336,  339,
@@ -580,7 +582,7 @@ static yyconst flex_int16_t yy_base[1235] =
       527,  535,  538,  534,  536,  541,  548,  560,  566,  550,
       553,  557,  567,  572,  571,  568,  576,  578,  579,  580,
       582,  594,  577,  592,  585,  595,  604,  593,  601,  603,
-      605,  606, 2447,  609,  611,  612,  614,  615, 2447,  616,
+      605,  606, 2482,  609,  611,  612,  614,  615, 2482,  616,
       617,  619,  624,  622,  639,  625,  618,  631,  628,  641,
       638,  650,  644,  651,  621,  653,  648,  656,  659,  660,
 
@@ -592,244 +594,246 @@ static yyconst flex_int16_t yy_base[1235] =
       774,  768,  778,  784,  780,  785,  766,  788,  789,  772,
       791,  798,  794,  796,  797,  799,  801,  803,  805,  808,
       807,  817,  818,  809,  819,  821,  810,  828,  829,  831,
-      825,  836, 2447,  839,  838,  840,  841,  844, 2447, 2447,
-      149, 2447, 2447,  843,  847,  850,  856,  860,  857,  848,
-
-      855,  869,  863,  873,  861,  881,  883,  865,  871,  884,
-      887,  889,  891,  894,  895,  897,  899,  900,  901,  905,
-      902,  912,  906,  918,  915, 2447,  917,  916,  921,  924,
-     2447,  923,  925,  928,  929,  926,  931,  936,  932,  939,
-      947,  948,  941,  943,  949,  951,  956,  963,  959,  961,
-      964,  970,  966,  968,  974,  969,  971,  976,  978,  980,
-     1003,  981,  982,  983,  987,  988,  990,  991, 1005, 1010,
-      999, 1015,  992, 1016, 1017, 1020, 1022, 1024, 2447, 1031,
-     1029, 1028, 1030, 1033, 1035, 1037, 1040, 1039, 1046, 1053,
-     2447, 1042, 1049, 1050, 1058, 1052, 1064, 1067, 2447, 1071,
-
-     1068, 1073, 1074, 1075, 1077, 1078, 1079, 1081, 1082, 1090,
-     1085, 1086, 1091, 1092, 1094, 1098, 1096, 1105, 1113, 1102,
-     1110, 1111, 1112, 1115, 1118, 1116, 1119, 1120, 1121, 2447,
-      216, 1122, 1123, 1124, 1137, 1140, 1142, 1129, 1131, 1148,
-     1141, 1149, 1151, 1152, 1154, 1155, 1157, 1161, 1158, 1165,
-     1159, 1167, 1162, 1168, 1172, 1173, 1171, 1175, 1178, 2447,
-     1180, 1125, 1183, 1188, 1197, 1185, 1191, 1204, 1201, 1205,
-     1206, 1208, 1209, 1216, 1217, 1213, 1215, 1214, 1220, 2447,
-     1221, 1224, 1226, 1229, 1233, 1234, 1235, 1236, 1238, 1241,
-     1245, 1247, 1249, 1250, 1257, 1251, 1254, 1258, 1259, 1260,
-
-      989, 2447, 1270, 1272, 1268, 1274, 1275, 1276, 1278, 1280,
-     1281, 1282, 1288, 1286, 1287, 1285, 1290, 1292, 1293, 1296,
-     1294, 2447, 1309, 1297, 1298, 1310, 1302, 1299, 1321, 1311,
-     1313, 1322, 1324, 1326, 1331, 1328, 1334, 1332, 1335, 1337,
-     1344, 1345, 1348, 2447, 1350, 1338, 1351, 1358, 1360, 1354,
-     1361, 1368, 1362, 1364, 1365, 1366, 1372, 1369, 1374, 1375,
-     1377, 1387, 1379, 1371, 1378, 1394, 1395, 1388, 1401, 2447,
-     2447, 1402, 2447, 2447, 1404, 2447, 1406, 1399, 1405, 1407,
-     1410, 1416, 1411, 1417, 1413, 1421, 1419, 1420, 1422, 2447,
-     1424, 1426, 1428, 1433, 1434, 1436,  875, 1438, 1446, 1437,
-
-     1444, 1445, 2447, 1447, 1448, 1459, 1455, 1460, 1449, 1463,
-     1464, 1465, 1472, 1474, 1466, 1468, 1475, 1476, 1478, 1482,
-     1480, 1481, 1485, 1487, 1486, 1496, 1494, 2447, 2447, 1489,
-     1498, 1497, 1503, 1504, 1514, 1518, 1499, 1511, 1520, 1521,
-     1522, 1523, 1525, 1527, 1528, 2447, 1534, 1536, 1533, 1542,
-     2447, 1532, 1530, 1537, 1544, 1549, 2447, 1550, 1553, 1554,
-     1558, 1561, 1555, 1552, 1562, 1569, 1565, 1571, 1572, 1578,
-     1574, 1576, 1581, 1589, 1591, 1592, 1596, 1585, 1582, 1593,
-     1597, 1599, 1605, 1607, 1608, 2447, 1614, 1600, 1615, 1602,
-     1620, 1621, 1622, 1613, 1623, 1624, 1625, 1629, 1626, 1630,
-
-     1635, 1638, 1632, 1640, 1637, 1650, 1642, 1645, 2447, 1648,
-     1659, 1656, 1657, 1666, 1662, 1660, 1658, 1670, 1671, 1673,
-     1672, 1674, 1675, 1682, 1688, 1691, 1680, 1698, 1684, 1697,
-     1694, 1699, 1705, 1703, 1707, 1704, 2447, 1708, 1710, 1713,
-     1714, 1717, 1715, 1718, 2447, 2447, 1719, 2447, 1728, 1723,
-     1726, 1730, 2447, 2447, 2447, 1737, 1733, 1742, 1734, 1745,
-     2447, 1738, 1746, 1748, 1749, 1751, 1752, 1753, 1754, 2447,
-     1755, 1757, 1762, 1756, 1767, 1770, 1771, 1773, 1772, 1778,
-     1779, 1781, 1787, 1784, 2447, 1785, 1786, 1791, 1793, 1794,
-     1798, 1799, 1795, 1792, 1802, 1809, 2447, 1810, 1788, 1814,
-
-     1820, 1817, 1822, 1824, 1825, 1827, 1828, 1831, 1834, 2447,
-     2447, 1835, 1837, 1838, 1833, 1846, 1848, 1840, 1849, 1847,
-     1850, 1853, 1856, 1858, 1857, 2447, 1859, 1861, 1863, 1864,
-     1867, 1880, 1868, 1883, 1885, 1871, 1887, 1889, 2447, 1891,
-     1893, 1875, 1898, 1895, 1899, 1900, 1901, 1907, 1904, 1909,
-     2447, 1911, 1912, 1914, 1916, 1919, 1918, 1920, 1921, 1922,
-     1926, 1932, 1929, 2447, 1930, 2447, 1934, 1940, 1942, 1944,
-     2447, 1946, 1947, 2447, 1948, 1949, 1956, 1958, 1957, 1964,
-     1965, 1952, 1966, 1968, 1974, 1971, 1967, 1975, 1976, 1979,
-     2447, 2447, 1987, 2447, 2447, 1990, 2447, 2447, 1992, 2447,
-
-     1994, 2447, 2000, 1996, 1982, 1985, 1999, 2447, 2002, 2447,
-     2447, 2003, 2009, 2005, 2013, 2006, 2014, 2015, 2016, 2017,
-     2019, 2021, 2022, 2023, 2024, 2025, 2026, 2033, 2030, 2035,
-     2036, 2043, 2447, 2034, 2045, 2447, 2054, 2051, 2037, 2056,
-     2057, 2058, 2062, 2064, 2063, 2065, 2066, 2447, 2447, 2447,
-     2067, 2068, 2070, 2075, 2076, 2447, 2080, 2072, 2082, 2447,
-     2088, 2083, 2092, 2093, 2095, 2096, 2447, 2097, 2102, 2103,
-     2099, 2110, 2116, 2111, 2118, 2120, 2447, 2121, 2113, 2447,
-     2124, 2122, 2123, 2128, 2130, 2447, 2133, 2134, 2136, 2137,
-     2140, 2138, 2447, 2141, 2142, 2447, 2145, 2447, 2147, 2156,
-
-     2151, 2159, 2161, 2162, 2149, 2169, 2166, 2168, 2447, 2447,
-     2170, 2447, 2447, 2171, 2173, 2174, 2175, 2177, 2178, 2179,
-     2183, 2184, 2447, 2185, 2189, 2187, 2195, 2194, 2447, 2197,
-     2196, 2200, 2447, 2447, 2209, 2201, 2210, 2447, 2211, 2212,
-     2213, 2215, 2218, 2220, 2222, 2223, 2224, 2226, 2227, 2234,
-     2235, 2447, 2238, 2228, 2239, 2243, 2245, 2247, 2250, 2249,
-     2254, 2251, 2256, 2257, 2447, 2259, 2268, 2271, 2273, 2260,
-     2275, 2447, 2277, 2447, 2280, 2281, 2447, 2447, 2282, 2284,
-     2287, 2447, 2288, 2447, 2285, 2291, 2447, 2447, 2447, 2297,
-     2447, 2294, 2447, 2300, 2289, 2447, 2301, 2303, 2307, 2309,
-
-     2447, 2311, 2447, 2312, 2313, 2447, 2447, 2447, 2447, 2316,
-     2315, 2318, 2321, 2447, 2322, 2325, 2323, 2327, 2447, 2447,
-     2355, 2362, 2369, 2376, 2383,   94, 2390, 2397, 2404, 2411,
-     2418, 2425, 2432, 2439
+      825,  836, 2482,  839,  838,  840,  841,  844, 2482, 2482,
+      149, 2482, 2482,  843,  847,  850,  856,  860,  861,  855,
+
+      857,  869,  863,  874,  865,  876,  881,  871,  883,  885,
+      886,  888,  889,  896,  897,  892,  899,  901,  890,  905,
+      904,  913,  906,  920,  916, 2482,  918,  917,  922,  925,
+     2482,  919,  924,  929,  926,  927,  932,  933,  937,  934,
+      944,  949,  942,  950,  951,  952,  954,  963,  957,  959,
+      965,  969,  966,  968,  971,  972,  975,  974,  976,  980,
+     1001,  981,  982,  983,  988,  984,  989,  990,  997, 1008,
+     1013, 1011, 1014, 1019, 1022,  991, 1015, 1021, 1024, 2482,
+     1033, 1032, 1030, 1031, 1036, 1037, 1038, 1042, 1039, 1048,
+     1050, 2482, 1043, 1051, 1055, 1061, 1054, 1052, 1069, 2482,
+
+     1072, 1073, 1065, 1070, 1075, 1076, 1078, 1081, 1082, 1084,
+     1089, 1080, 1087, 1091, 1094, 1096, 1097, 1102, 1108, 1110,
+     1106, 1112, 1109, 1115, 1114, 1120, 1117, 1118, 1119, 1122,
+     2482,  216, 1123, 1124, 1125, 1136, 1146, 1143, 1130, 1140,
+     1150, 1134, 1142, 1133, 1151, 1152, 1153, 1156, 1159, 1160,
+     1162, 1163, 1165, 1170, 1167, 1168, 1172, 1171, 1173, 1174,
+     1176, 2482, 1181, 1183, 1184, 1187, 1198, 1196, 1199, 1205,
+     1201, 1206, 1212, 1203, 1207, 1215, 1219, 1216, 1218, 1220,
+     1224, 2482, 1223, 1226, 1228, 1230, 1231, 1232, 1233, 1237,
+     1243, 1248, 1239, 1253, 1255, 1256, 1260, 1245, 1249, 1263,
+
+     1264, 1266, 1267, 2482, 1275, 1276, 1273, 1284, 1277, 1269,
+     1280, 1290, 1281, 1283, 1292, 1285, 1293, 1294, 1295, 1297,
+     1298, 1300, 1299, 2482, 1308, 1302, 1309, 1310, 1311, 1304,
+     1316, 1314, 1321, 1319, 1325, 1326, 1330, 1336, 1332, 1338,
+     1339, 1340, 1343, 1351, 1357, 1355, 2482, 1353, 1345, 1349,
+     1365, 1363, 1366, 1367, 1374, 1370, 1371, 1372, 1375, 1378,
+     1376, 1380, 1381, 1379, 1383, 1386, 1393, 1388, 1401, 1398,
+     1396, 1409, 2482, 2482, 1410, 2482, 2482, 1407, 2482, 1411,
+     1412, 1413, 1415, 1417, 1419, 1421, 1422, 1424, 1425, 1426,
+     1428, 1429, 2482, 1431, 1437, 1439, 1433, 1435, 1442, 1443,
+
+     1452, 1459, 1444, 1456, 1460, 2482, 1458, 1448, 1465, 1472,
+     1474, 1461, 1469, 1471, 1477, 1478, 1481, 1482, 1484, 1485,
+     1486, 1490, 1488, 1496, 1492, 1493, 1494, 1495, 1507, 1499,
+     1503, 2482, 2482, 1517, 1509, 1497, 1521, 1522, 1528, 1525,
+     1526, 1527, 1529, 1534, 1532, 1535, 1536, 1538, 1541, 2482,
+     1544, 1550, 1543, 1552, 2482, 1556, 1542, 1551, 1558, 1562,
+     2482, 1563, 1565, 1566, 1567, 1568, 1575, 1576, 1577, 1579,
+     1581, 1582, 1585, 1591, 1588, 1587, 1590, 1602, 1604, 1589,
+     1607, 1613, 1593, 1609, 1610, 1612, 1616, 1618, 1624, 1620,
+     2482, 1626, 1622, 1632, 1625, 1634, 1636, 1629, 1635, 1637,
+
+     1638, 1639, 1645, 1642, 1646, 1649, 1652, 1656, 1653, 1651,
+     1664, 1654, 1659, 2482, 1666, 1672, 1670, 1674, 1679, 1682,
+     1676, 1673, 1683, 1684, 1686, 1688, 1689, 1691, 1699, 1701,
+     1707, 1704, 1711, 1708, 1709, 1712, 1714, 1722, 1715, 1723,
+     1719, 2482, 1725, 1727, 1730, 1732, 1735, 1736, 1734, 2482,
+     2482, 1721, 2482, 1744, 1741, 1746, 1748, 2482, 2482, 2482,
+     1747, 1754, 1750, 1751, 1758, 1763, 2482, 1753, 1764, 1766,
+     1768, 1769, 1770, 1771, 1772, 2482, 1774, 1775, 1776, 1784,
+     1789, 1778, 1785, 1795, 1791, 1798, 1783, 1799, 1805, 1802,
+     2482, 1806, 1808, 1810, 1811, 1812, 1817, 1815, 1816, 1813,
+
+     1814, 1828, 2482, 1831, 1818, 1832, 1836, 1838, 1840, 1842,
+     1844, 1845, 1846, 1852, 1849, 2482, 2482, 1853, 1855, 1863,
+     1856, 1860, 1866, 1858, 1867, 1869, 1871, 1874, 1875, 1876,
+     1877, 1878, 2482, 1879, 1880, 1883, 1884, 1887, 1892, 1888,
+     1903, 1905, 1881, 1907, 1909, 2482, 1910, 1912, 1913, 1917,
+     1918, 1914, 1919, 1923, 1926, 1921, 1928, 2482, 1930, 1931,
+     1933, 1935, 1937, 1938, 1941, 1943, 1944, 1945, 1955, 1948,
+     2482, 1949, 2482, 1951, 1961, 1968, 1964, 2482, 1956, 1966,
+     2482, 1967, 1972, 1975, 1976, 1979, 1984, 1981, 1985, 1987,
+     1988, 1989, 1995, 1992, 1993, 1996, 1999, 2000, 2482, 2482,
+
+     2003, 2482, 2482, 2011, 2482, 2482, 2013, 2482, 2015, 2482,
+     2021, 2017, 2006, 1997, 2020, 2482, 2024, 2482, 2482, 2026,
+     2027, 2028, 2035, 2030, 2032, 2036, 2037, 2039, 2038, 2041,
+     2043, 2044, 2045, 2046, 2047, 2053, 2054, 2055, 2056, 2063,
+     2482, 2057, 2068, 2482, 2074, 2076, 2064, 2066, 2077, 2078,
+     2080, 2082, 2088, 2086, 2087, 2089, 2482, 2482, 2482, 2090,
+     2093, 2092, 2097, 2098, 2482, 2103, 2100, 2105, 2482, 2107,
+     2111, 2113, 2115, 2118, 2117, 2482, 2114, 2121, 2127, 2124,
+     2131, 2135, 2141, 2138, 2143, 2482, 2140, 2144, 2482, 2146,
+     2147, 2148, 2150, 2151, 2153, 2482, 2154, 2155, 2164, 2158,
+
+     2161, 2165, 2482, 2166, 2168, 2482, 2172, 2482, 2176, 2177,
+     2179, 2184, 2186, 2180, 2187, 2193, 2190, 2191, 2482, 2482,
+     2194, 2482, 2482, 2192, 2197, 2199, 2202, 2204, 2207, 2206,
+     2208, 2210, 2209, 2482, 2213, 2214, 2222, 2223, 2215, 2482,
+     2228, 2230, 2225, 2482, 2482, 2231, 2238, 2235, 2482, 2240,
+     2243, 2241, 2233, 2247, 2249, 2251, 2253, 2254, 2256, 2255,
+     2257, 2264, 2265, 2482, 2269, 2259, 2266, 2274, 2278, 2271,
+     2275, 2280, 2283, 2284, 2286, 2289, 2482, 2291, 2292, 2294,
+     2299, 2302, 2304, 2307, 2482, 2310, 2482, 2313, 2314, 2482,
+     2482, 2295, 2316, 2317, 2482, 2318, 2482, 2320, 2325, 2326,
+
+     2482, 2482, 2482, 2328, 2482, 2329, 2482, 2332, 2321, 2482,
+     2334, 2338, 2342, 2482, 2344, 2482, 2346, 2482, 2335, 2348,
+     2482, 2482, 2482, 2482, 2350, 2339, 2356, 2351, 2482, 2353,
+     2357, 2358, 2362, 2482, 2482, 2390, 2397, 2404, 2411, 2418,
+       94, 2425, 2432, 2439, 2446, 2453, 2460, 2467, 2474
     } ;
 
-static yyconst flex_int16_t yy_def[1235] =
+static yyconst flex_int16_t yy_def[1250] =
     {   0,
-     1220,    1, 1221, 1221, 1222, 1222, 1223, 1223, 1224, 1224,
-     1225, 1225, 1220, 1226, 1220, 1220, 1220, 1220, 1227, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1228,
-     1220, 1220, 1220, 1228, 1229, 1220, 1220, 1220, 1229, 1230,
-     1220, 1220, 1220, 1220, 1230, 1231, 1220, 1220, 1220, 1231,
-     1232, 1220, 1233, 1220, 1232, 1232, 1226, 1226, 1220, 1234,
-     1227, 1234, 1227, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1228, 1228, 1229, 1229, 1230,
-     1230, 1220, 1231, 1231, 1232, 1232, 1233, 1233, 1232, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226,
-     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1220,
-     1226, 1220, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1232, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1232, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1220, 1226, 1220, 1220, 1226, 1220, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1220, 1220, 1226, 1220, 1226, 1226,
-     1226, 1226, 1220, 1220, 1220, 1226, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1220, 1226, 1220, 1226, 1226, 1226, 1226,
-     1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1220, 1220, 1226, 1220, 1220, 1226, 1220, 1220, 1226, 1220,
-
-     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1220,
-     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220, 1220,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1220,
-     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-     1226, 1226, 1220, 1226, 1226, 1220, 1226, 1220, 1226, 1226,
-
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220,
-     1226, 1220, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
-     1226, 1226, 1220, 1220, 1226, 1226, 1226, 1220, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226,
-     1226, 1220, 1226, 1220, 1226, 1226, 1220, 1220, 1226, 1226,
-     1226, 1220, 1226, 1220, 1226, 1226, 1220, 1220, 1220, 1226,
-     1220, 1226, 1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
-
-     1220, 1226, 1220, 1226, 1226, 1220, 1220, 1220, 1220, 1226,
-     1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1220,    0,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220
+     1235,    1, 1236, 1236, 1237, 1237, 1238, 1238, 1239, 1239,
+     1240, 1240, 1235, 1241, 1235, 1235, 1235, 1235, 1242, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1243,
+     1235, 1235, 1235, 1243, 1244, 1235, 1235, 1235, 1244, 1245,
+     1235, 1235, 1235, 1235, 1245, 1246, 1235, 1235, 1235, 1246,
+     1247, 1235, 1248, 1235, 1247, 1247, 1241, 1241, 1235, 1249,
+     1242, 1249, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1243, 1243, 1244, 1244, 1245,
+     1245, 1235, 1246, 1246, 1247, 1247, 1248, 1248, 1247, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1247, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1247, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1247, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1247, 1241, 1241,
+     1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1235, 1235,
+     1241, 1235, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+     1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1247, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1235, 1247, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1235, 1235, 1241, 1235, 1235, 1241, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1235, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235,
+     1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241,
+     1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235,
+     1235, 1241, 1235, 1241, 1241, 1241, 1241, 1235, 1235, 1235,
+     1241, 1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1235, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1235, 1241, 1235, 1241, 1241, 1241, 1241, 1235, 1241, 1241,
+     1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235, 1235,
+
+     1241, 1235, 1235, 1241, 1235, 1235, 1241, 1235, 1241, 1235,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1235, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1235, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1235, 1235, 1235, 1241,
+     1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241,
+
+     1241, 1241, 1235, 1241, 1241, 1235, 1241, 1235, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1235, 1235,
+     1241, 1235, 1235, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1235,
+     1241, 1241, 1241, 1235, 1235, 1241, 1241, 1241, 1235, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1235, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241, 1235, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1235, 1241, 1235, 1241, 1241, 1235,
+     1235, 1241, 1241, 1241, 1235, 1241, 1235, 1241, 1241, 1241,
+
+     1235, 1235, 1235, 1241, 1235, 1241, 1235, 1241, 1241, 1235,
+     1241, 1241, 1241, 1235, 1241, 1235, 1241, 1235, 1241, 1241,
+     1235, 1235, 1235, 1235, 1241, 1241, 1241, 1241, 1235, 1241,
+     1241, 1241, 1241, 1235,    0, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235
     } ;
 
-static yyconst flex_int16_t yy_nxt[2487] =
+static yyconst flex_int16_t yy_nxt[2522] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -925,188 +929,193 @@ static yyconst flex_int16_t yy_nxt[2487] =
        68,   68,  444,   68,  449,  450,  454,   68,  452,  451,
       126,   68,  453,   68,  456,  455,  461,  457,   68,  459,
        68,   68,   68,   68,  462,   68,   68,  460,  458,   68,
-       68,  464,   68,  470,  467,  468,  469,   68,   68,   68,
-      463,  465,   68,   68,  476,   68,  471,   68,  477,  472,
-      479,   68,  480,   68,  473,   68,  481,   68,  482,  771,
-      474,  475,  478,   68,  483,   68,   68,  485,  484,   68,
-
-      488,   68,  486,   68,  487,  491,   68,   68,  490,   68,
-      492,   68,   68,   68,   68,  493,  489,   68,   68,  494,
-      495,  498,  497,  499,   68,  501,  500,   68,   68,   68,
-       68,  496,  503,   68,  505,   68,   68,   68,   68,  506,
-       68,   68,  504,   68,   68,  511,  502,  507,   68,  510,
-      515,   68,  513,   68,  517,   68,  508,  512,  509,   68,
-       68,   68,  514,   68,  518,  516,  521,  520,   68,  523,
-      524,   68,  519,   68,  525,   68,   68,  528,   68,  530,
-       68,   68,   68,   68,  522,  531,  126,  533,   68,  527,
-       68,  526,   68,   68,   68,   68,  532,  542,  529,   68,
-
-       68,   68,   68,   68,   68,  555,  536,  534,  682,  548,
-      544,   68,  549,  545,  535,   68,  547,   68,  537,  543,
-      538,  546,   68,  550,  539,  553,  540,   68,   68,   68,
-      551,  541,   68,  556,   68,  560,   68,  557,  561,  554,
-       68,   68,   68,   68,  562,   68,  558,   68,  552,   68,
-      565,   68,   68,  559,   68,  564,  566,  568,   68,  563,
-      571,   68,   68,  119,   68,   68,  573,  574,  567,  572,
-       68,  569,  570,  576,  578,  575,   68,  577,  579,   68,
-       68,  581,  580,   68,  582,   68,   68,   68,  583,   68,
-       68,   68,  586,   68,   68,  587,  588,   68,   68,  589,
-
-      590,  584,   68,   68,   68,  591,   68,  585,   68,  595,
-       68,  596,  599,  597,   68,  592,  594,   68,  593,  598,
-      600,  602,   68,   68,   68,   68,  606,   68,   68,  601,
-       68,   68,   68,   68,   68,   68,   68,   68,  604,  605,
-      608,   68,  603,   68,  614,  640,  607,  615,  611,   68,
-      612,  609,   68,   68,   68,  617,  613,  618,  610,  616,
-       68,   68,  622,   68,   68,  619,   68,   68,  620,   68,
-       68,   68,  625,   68,   68,  624,  621,   68,  627,   68,
-       68,  629,  623,   68,   68,   68,  630,   68,  626,  628,
-       68,  635,   68,  632,  631,   68,  117,   68,  636,  638,
-
-       68,  633,  634,   68,  643,  642,  639,  637,  644,   68,
-      645,  647,  646,   68,  648,  641,   68,   68,   68,  650,
-       68,   68,  649,  653,  654,   68,   68,   68,   68,   68,
-      655,  656,   68,   68,  651,  657,   68,  662,   68,  652,
-      658,   68,  659,  661,  660,   68,   68,   68,   68,  670,
-       68,  663,  671,   68,  667,  665,  664,   68,  673,   68,
-      674,   68,   68,   68,  666,  668,   68,  675,  676,   68,
-       68,   68,   68,  669,  678,  679,  672,  683,  681,  684,
-       68,  686,   68,  677,   68,  685,   68,   68,   68,  680,
-       68,  690,   68,   68,   68,  693,  687,   68,   68,   68,
-
-       68,  689,   68,  697,   68,   68,   68,  688,   68,   68,
-       68,   68,   68,  691,   68,  696,  702,  692,  694,  695,
-      703,   68,   68,   68,  698,   68,  700,  706,  705,  701,
-      699,  708,  707,   68,   68,  704,   68,  709,   68,  711,
-       68,  713,  710,   68,   68,  714,   68,   68,  715,   68,
-       68,  721,  722,  712,  720,  717,   68,   68,  716,  718,
-       68,  723,   68,   68,  725,  727,   68,  724,  719,  728,
-       68,  729,   68,   68,   68,  732,   68,   68,   68,  731,
-       68,   68,  726,   68,   68,  730,   68,   68,  740,   68,
-       68,   68,  744,  733,  741,  734,  735,  736,  737,   68,
-
-       68,  739,  738,  742,  743,  746,   68,   68,  749,  750,
-      745,   68,  747,   68,   68,  751,   68,   68,   68,   68,
-      748,  752,   68,   68,  755,   68,  753,  757,   68,   68,
-      759,   68,   68,   68,   68,  762,   68,  756,   68,  764,
-       68,  767,  754,  758,  761,   68,   68,  760,   68,   68,
-       68,  763,  766,  773,  765,  772,   68,   68,   68,   68,
-       68,   68,  780,  776,  777,  768,  769,   68,  770,  774,
-      775,   68,   68,  781,  779,   68,   68,   68,   68,  782,
-       68,  784,  785,  786,   68,  778,   68,   68,   68,  793,
-       68,  787,   68,   68,   68,  783,  788,   68,   68,   68,
-
-      789,   68,  791,  792,  802,  798,   68,  790,   68,   68,
-       68,   68,  794,  795,  797,   68,   68,  799,  796,  803,
-      800,  808,  801,   68,  805,  807,   68,  806,  804,  809,
-       68,  810,   68,   68,   68,   68,  811,   68,  816,   68,
-       68,  819,   68,  820,   68,   68,   68,  813,   68,   68,
-      812,  821,  824,  815,   68,  817,   68,  822,  818,  814,
-      825,   68,   68,  823,   68,   68,   68,   68,  826,  830,
-       68,  831,  827,   68,   68,  832,  834,   68,  833,  828,
-      837,   68,  829,   68,   68,  841,   68,  835,   68,  836,
-       68,  838,  849,   68,   68,  839,  840,   68,  842,  844,
-
-      845,   68,  846,   68,   68,   68,  843,  848,   68,   68,
-      853,   68,   68,  847,   68,  850,  854,   68,  855,   68,
-       68,  857,  859,  856,  851,   68,   68,   68,  862,  852,
-      858,  861,   68,   68,   68,   68,   68,   68,   68,  860,
-      870,   68,   68,  872,   68,  866,  863,   68,  864,   68,
-       68,  875,   68,  865,   68,  867,  868,   68,  869,  874,
-       68,  876,   68,  878,  871,  881,  882,  873,   68,   68,
-       68,   68,   68,  880,   68,  877,  884,  885,   68,  886,
-      879,  887,   68,   68,   68,   68,   68,   68,  883,  895,
-      888,  891,   68,  892,   68,  896,   68,  889,  898,  897,
-
-       68,  894,  890,   68,  899,  900,   68,  893,  901,   68,
-       68,   68,  905,  902,  907,   68,   68,   68,  903,   68,
-       68,  910,   68,  909,  911,   68,   68,   68,  908,   68,
-       68,   68,  912,  914,  913,   68,  904,  906,   68,  915,
-       68,  917,   68,  916,  922,   68,   68,  920,  925,   68,
-       68,  921,  918,  919,   68,  924,  926,   68,   68,  928,
-       68,   68,  923,   68,   68,   68,   68,   68,   68,   68,
-      927,  936,  935,  930,   68,  931,  932,  938,  939,   68,
-      933,  929,   68,   68,   68,   68,  934,  942,  941,  943,
-       68,   68,  937,   68,  947,  944,   68,   68,   68,   68,
-
-       68,  948,  951,   68,   68,   68,   68,   68,  940,  945,
-       68,   68,  950,  946,   68,  953,  949,  952,  954,  955,
-      957,   68,   68,  956,  958,  962,   68,  960,  961,   68,
-      959,  964,   68,  966,   68,  963,   68,   68,  965,   68,
-       68,  968,  971,   68,  969,   68,   68,   68,  974,   68,
-       68,  975,   68,  970,  972,  967,  973,  976,   68,   68,
-       68,   68,   68,  977,  978,   68,  980,  979,   68,   68,
-       68,   68,  126,   68,  987,   68,   68,  990,  991,   68,
-       68,  982,  985,   68,  983,  981,  988,   68,  989,  984,
-      986,  992,   68,  993,  994,   68,  995,   68,  997,   68,
-
-      998,   68,  996,   68, 1000,   68, 1001,   68,  999, 1002,
-       68,   68,   68,   68, 1006, 1005,   68, 1004, 1008,   68,
-     1010,   68, 1011,   68,   68, 1003,   68, 1013,   68, 1007,
-       68,   68,   68,   68,   68, 1009, 1015, 1017,   68, 1021,
-     1014,   68,   68, 1019,   68, 1022,   68, 1020, 1018, 1026,
-     1012, 1016,   68, 1025,   68, 1024,   68, 1027,   68,   68,
-       68,   68, 1023, 1031,   68, 1028, 1032, 1033,   68,   68,
-       68, 1030, 1035, 1029, 1034, 1036,   68,   68,   68,   68,
-       68, 1041, 1037,   68, 1038, 1040,   68,   68,   68, 1042,
-      124,   68, 1044, 1046,   68, 1043, 1045,   68, 1039,   68,
-
-     1047, 1048,   68, 1049,   68, 1050,   68, 1051,   68, 1052,
-     1053,   68,   68, 1056,   68,   68, 1055,   68,   68, 1054,
-     1057,   68, 1059, 1058, 1060,   68,   68,   68,   68,   68,
-     1061,   68, 1067,   68,   68,   68,   68,   68,   68, 1063,
-     1064, 1065,   68, 1068, 1062,   68,   68,   68,   68,   68,
-     1071, 1066, 1075, 1076, 1077,   68, 1070,   68, 1079, 1073,
-     1074, 1069, 1072,   68, 1078, 1080,   68, 1082,   68,   68,
-       68, 1087, 1081, 1086,   68,   68,   68,   68,   68,   68,
-       68, 1093,   68, 1092,   68, 1084, 1083,   68,   68, 1085,
-     1088, 1096,   68, 1098,   68,   68, 1089,  122, 1090, 1091,
-
-       68, 1099, 1094, 1097,   68,   68, 1095,   68,   68,   68,
-     1102,   68, 1103, 1101,   68,   68, 1104, 1100, 1111, 1106,
-     1107, 1109,   68,   68, 1105,   68, 1108, 1110,   68, 1112,
-       68, 1113,   68,   68,   68,   68,   68, 1115, 1114, 1116,
-       68, 1119,   68, 1117, 1118,   68,   68, 1123,   68,   68,
-       68, 1120,   68,   68,   68, 1126, 1129,   68, 1124,   68,
-     1125,   68, 1127,   68, 1121, 1122, 1132, 1128,   68, 1131,
-     1133,   68, 1134,   68,   68, 1136, 1137, 1138,   68, 1130,
-       68,   68,   68,   68, 1139,   68,   68,   68, 1140,   68,
-       68,   68, 1135, 1142, 1145,   68,   68,   68, 1152,   68,
-
-     1150,   68, 1141, 1144, 1148, 1143,   68,   68,   68,   68,
-     1146, 1153,   68,   68, 1159, 1154, 1149, 1147, 1155, 1151,
-     1156,   68,   68,   68,   68,   68, 1158,   68, 1161, 1165,
-       68, 1160,   68, 1162,   68,   68,   68, 1157,   68,   68,
-       68, 1169, 1164, 1168, 1163, 1172,   68,   68, 1166, 1174,
-       68,   68, 1173, 1167, 1177,   68, 1178,   68, 1171,   68,
-     1175,   68,   68,   68, 1170, 1182,   68, 1184,   68,   68,
-      121,   68,   68, 1176, 1180, 1183, 1186, 1190, 1179, 1187,
-       68, 1181, 1188,   68, 1189,   68, 1191,   68, 1185,   68,
-     1192, 1193,   68,   68,   68, 1196,   68,   68, 1194,   68,
-
-       68,   68, 1195,   68, 1197, 1198,   68, 1200, 1201,   68,
-     1202, 1203,   68,   68, 1206,   68, 1204, 1199, 1207,   68,
-     1208,   68, 1209,   68,   68,   68, 1211,   68,   68, 1214,
-       68, 1205, 1212,   68,   68,   68, 1210,   68, 1219,   68,
-      119,  117, 1215,   68, 1220, 1220, 1220, 1213, 1220, 1216,
-     1220, 1217, 1220, 1220, 1218,   40,   40,   40,   40,   40,
-       40,   40,   45,   45,   45,   45,   45,   45,   45,   50,
-       50,   50,   50,   50,   50,   50,   56,   56,   56,   56,
-       56,   56,   56,   61,   61,   61,   61,   61,   61,   61,
-       71,   71, 1220,   71,   71,   71,   71,  116,  116, 1220,
-
-     1220, 1220,  116,  116,  118,  118, 1220, 1220,  118, 1220,
-      118,  120, 1220, 1220, 1220, 1220, 1220,  120,  123,  123,
-     1220, 1220, 1220,  123,  123,  125, 1220, 1220, 1220, 1220,
-     1220,  125,  127,  127, 1220,  127,  127,  127,  127,   72,
-       72, 1220,   72,   72,   72,   72,   13, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220
+      119,  464,   68,  470,  467,  468,  469,   68,   68,   68,
+      463,  465,   68,   68,  471,   68,  472,   68,  477,  473,
+      480,   68,  481,   68,  474,  478,   68,  482,   68,  484,
+      475,  476,  483,   68,  479,   68,  485,   68,   68,  489,
+
+       68,   68,   68,  486,   68,  488,  491,  492,   68,   68,
+      494,   68,  493,   68,  487,  490,   68,   68,   68,  495,
+      497,  496,  498,  499,  500,   68,  501,  502,   68,   68,
+       68,   68,   68,  504,   68,  506,   68,   68,   68,   68,
+      507,   68,  512,  505,   68,   68,   68,  503,  508,   68,
+      511,  518,  509,  514,   68,  516,   68,  510,  513,  515,
+      517,   68,   68,   68,   68,  519,   68,  524,  522,   68,
+      525,   68,  526,  520,  521,   68,  529,   68,   68,  531,
+       68,   68,  532,  126,   68,  523,   68,   68,   68,  527,
+      528,  534,   68,   68,   68,   68,   68,  543,  530,  533,
+
+       68,   68,   68,   68,  550,  535,  537,  117,  549,   68,
+      545,  559,  536,   68,  546,  548,  538,  547,  539,  544,
+       68,  551,  540,   68,  541,   68,   68,   68,  552,  542,
+      554,   68,  557,   68,   68,  562,   68,  555,  556,  558,
+      563,  560,   68,   68,   68,   68,  553,  564,   68,   68,
+       68,   68,  561,  567,   68,   68,  566,  573,  568,  570,
+       68,  565,   68,   68,   68,  579,   68,   68,  575,  569,
+      574,  571,  576,   68,  572,  578,  580,   68,  577,  581,
+      585,   68,   68,  582,   68,   68,  583,   68,   68,  584,
+       68,  588,   68,   68,   68,  589,   68,  586,  590,   68,
+
+      591,   68,  592,   68,  593,   68,   68,  587,   68,   68,
+      594,  597,  599,  598,   68,  601,  596,  602,   68,  595,
+       68,   68,   68,  604,   68,  600,   68,   68,  608,   68,
+       68,   68,   68,  603,   68,   68,   68,   68,  607,  610,
+      605,  606,   68,  616,  624,   68,   68,  609,   68,  613,
+      611,  614,   68,  617,   68,   68,  619,  615,   68,  612,
+      618,  622,   68,   68,   68,   68,  620,  621,   68,  623,
+      627,   68,   68,  626,   68,   68,  629,   68,  631,   68,
+       68,  625,   68,   68,   68,   68,   68,  628,   68,  638,
+      632,  630,  633,   68,  634,   68,   68,  641,  635,   68,
+
+      639,  636,  637,  643,  645,  646,  640,  642,   68,  647,
+       68,   68,  650,   68,  651,   68,  644,   68,   68,   68,
+      649,  648,  656,  652,   68,  653,  657,   68,   68,  654,
+       68,   68,   68,  658,  659,   68,   68,  655,   68,  665,
+       68,  660,   68,   68,   68,   68,  661,  664,  662,   68,
+      663,   68,  670,  666,  673,   68,  668,   68,  667,  674,
+       68,   68,  669,  671,  676,   68,  677,   68,   68,  681,
+      675,  679,   68,  678,  672,   68,   68,  680,   68,   68,
+      682,   68,  686,  687,  684,   68,  685,   68,   68,   68,
+      688,  689,   68,   68,  683,   68,   68,   68,  690,  696,
+
+      691,  693,   68,  692,   68,   68,   68,   68,  700,   68,
+       68,   68,   68,  694,   68,  705,   68,  697,  695,  706,
+       68,   68,   68,   68,  699,  698,   68,  709,   68,  701,
+      703,   68,  712,   68,  704,  702,  711,   68,   68,  708,
+      707,  710,   68,  717,   68,  713,  715,  714,   68,  718,
+       68,   68,   68,  719,  126,   68,  716,   68,  725,  721,
+      724,   68,  720,   68,  726,   68,  722,   68,  727,   68,
+      728,  729,  731,  723,  733,   68,  732,   68,   68,   68,
+      730,  736,   68,   68,   68,  735,   68,   68,   68,  124,
+       68,   68,   68,   68,  744,   68,  745,  734,   68,  746,
+
+       68,  737,  738,  739,  741,   68,  740,  743,   68,  742,
+       68,  747,  750,   68,  748,  751,  753,  754,  755,   68,
+      749,   68,   68,   68,   68,   68,  756,   68,  752,   68,
+      761,   68,  759,   68,   68,  763,   68,   68,   68,  757,
+       68,   68,  766,   68,  760,   68,  768,   68,  765,   68,
+      758,   68,  771,  762,   68,   68,   68,  775,  764,  767,
+       68,  769,  122,  770,   68,  772,  777,  773,   68,  776,
+       68,   68,   68,   68,  774,  781,  778,   68,  780,  784,
+      783,   68,  779,   68,   68,  782,   68,  785,  788,   68,
+       68,  786,  791,   68,   68,  790,   68,   68,   68,  792,
+
+       68,  787,   68,  798,   68,   68,   68,   68,   68,   68,
+      121,   68,  789,  797,  793,   68,  796,  794,  795,   68,
+      804,   68,  802,  805,  799,  800,  803,  801,  809,   68,
+      808,  806,  807,   68,   68,  813,  814,   68,   68,   68,
+       68,   68,  810,  812,   68,  811,   68,   68,   68,  821,
+       68,  824,  816,   68,   68,   68,   68,  825,  815,  817,
+      818,  826,   68,   68,   68,  820,  822,  827,   68,  819,
+       68,  823,  830,  828,   68,   68,  829,   68,   68,   68,
+       68,  835,  831,  836,  837,  838,  832,   68,   68,   68,
+      842,   68,  833,   68,   68,  834,  839,   68,  846,   68,
+
+       68,   68,   68,   68,  841,   68,  844,  843,  849,  845,
+      852,  840,  847,  850,   68,  851,   68,  848,  853,   68,
+      854,   68,   68,  858,   68,   68,  855,  859,   68,  860,
+       68,  861,   68,  863,   68,  862,   68,   68,   68,  865,
+      856,   68,  857,  868,   68,  867,   68,   68,   68,   68,
+       68,   68,  864,  869,   68,  870,  876,   68,   68,  878,
+      871,   68,  866,   68,   68,   68,   68,  872,   68,  873,
+      874,   68,  875,  880,  882,  881,   68,  884,   68,  888,
+      877,  879,   68,  887,   68,   68,   68,  886,   68,  883,
+      891,   68,  885,  890,   68,   68,   68,  893,   68,  892,
+
+       68,   68,  889,   68,  897,  894,  901,  119,  902,  898,
+      895,   68,  903,   68,  904,  896,   68,  900,  906,   68,
+       68,   68,  899,   68,   68,  908,   68,   68,  905,  911,
+      913,   68,  907,   68,   68,   68,  909,   68,  916,   68,
+      915,  917,   68,  914,   68,  922,   68,   68,   68,  912,
+      918,  910,  919,   68,  920,  921,   68,  923,   68,   68,
+       68,  929,   68,   68,  931,   68,   68,  926,  924,  927,
+       68,  925,  932,  928,  933,   68,   68,  935,   68,  930,
+       68,   68,   68,   68,   68,  934,   68,   68,   68,  943,
+       68,  942,  937,  938,  939,   68,   68,   68,  940,  936,
+
+      946,   68,  948,   68,  941,  945,  944,   68,  950,  949,
+       68,   68,  954,  952,   68,  951,  947,   68,   68,  955,
+       68,  958,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,  953,  117,  960,  957,  959,  961,  956,  962,  963,
+       68,  964,  966,   68,   68,  965,  967,  971,   68,  968,
+       68,  973,   68,  970,   68,  969,   68,   68,   68,  972,
+      975,   68,  976,  978,   68,   68,  981,   68,   68,  979,
+       68,  977,   68,  974,  980,   68,  982,  984,   68,   68,
+      983,   68,  985,   68,  987,  986,   68,   68,   68,   68,
+       68,   68,   68,   68,  995,   68,   68,  998,  999,   68,
+
+       68,  993,  989, 1000,   68,  996,  991,  988,  997,  992,
+      990,  994, 1004, 1001, 1002,   68, 1003,   68, 1005,   68,
+     1006,   68,   68, 1008,   68,   68,   68, 1007, 1010,   68,
+       68,   68, 1012,   68, 1013,   68, 1014, 1016,   68, 1018,
+       68, 1019,   68,   68, 1009,   68, 1021,   68, 1011,   68,
+       68, 1015, 1017,   68, 1023,   68,   68,   68, 1025, 1022,
+       68,   68, 1029,   68, 1030, 1027, 1028,   68,   68, 1020,
+     1026, 1024, 1032,   68, 1033, 1034,   68, 1035,   68,   68,
+       68, 1031, 1039, 1037,   68, 1036, 1041,   68,   68, 1040,
+     1038,   68, 1042,   68, 1043, 1044,   68,   68, 1045,   68,
+
+       68,   68, 1050, 1047,   68,   68, 1049,   68,   68,   68,
+     1051,   68,   68, 1053, 1055,   68, 1056, 1046,   68, 1054,
+     1048, 1052, 1057,   68, 1058,   68, 1059,   68, 1060,   68,
+     1061, 1063,   68,   68, 1062, 1065,   68, 1064,   68,   68,
+       68, 1067,   68, 1066,   68, 1068, 1069,   68,   68,   68,
+       68,   68, 1076,   68, 1070,   68,   68,   68,   68,   68,
+     1072, 1073, 1071, 1074, 1077,   68,   68,   68,   68,   68,
+     1075, 1080, 1084, 1085, 1086,   68,   68, 1079,   68, 1082,
+       68, 1088, 1078, 1081, 1083, 1089,   68, 1087,   68,   68,
+       68, 1091,   68, 1096,   68, 1097, 1092, 1090,   68,   68,
+
+       68,   68,   68, 1103,   68,   68, 1094, 1093, 1102,   68,
+       68, 1095,   68, 1098, 1106,   68, 1108,   68, 1099,   68,
+     1109, 1100, 1101,   68, 1104,   68,   68,   68, 1105,   68,
+       68, 1107, 1112,   68, 1111, 1113,   68, 1114, 1116,   68,
+       68, 1115, 1119,   68, 1117, 1110, 1120,   68, 1121, 1122,
+       68, 1118,   68,   68, 1123,   68,   68, 1124,   68,   68,
+       68, 1126,   68,   68, 1130,   68,   68,   68, 1125, 1128,
+       68, 1129, 1127,   68, 1131, 1134,   68,   68,   68, 1135,
+       68, 1136, 1137, 1140,   68, 1132, 1133, 1138,   68,   68,
+     1142,   68,   68, 1139, 1143, 1144,   68, 1145,   68,   68,
+
+     1148, 1149,   68,   68,   68,   68,   68, 1150, 1141,   68,
+     1146,   68, 1151, 1147,   68, 1155,   68, 1153,   68,   68,
+       68,   68,   68, 1152, 1157,   68,   68,   68, 1162, 1235,
+     1154, 1160, 1156, 1164,   68,   68, 1166,   68, 1158, 1165,
+       68, 1161,   68,   68, 1163,   68, 1159,   68, 1170, 1167,
+       68, 1171,   68,   68, 1168,   68, 1172, 1173, 1177,   68,
+     1176,   68, 1169,   68, 1174,   68,   68,   68,   68,   68,
+     1178,   68, 1175, 1182, 1181, 1185,   68,   68,   68, 1179,
+     1187,   68, 1186,   68, 1180, 1190,   68,   68, 1184, 1191,
+       68, 1188,   68, 1183, 1195,   68,   68, 1197,   68, 1193,
+
+     1189,   68, 1192,   68,   68, 1201,   68,   68, 1196, 1200,
+     1202,   68, 1194, 1203,   68, 1209,   68, 1199, 1205,   68,
+     1198, 1204,   68, 1206, 1207,   68,   68, 1210,   68,   68,
+       68, 1208,   68,   68, 1211, 1212, 1214,   68,   68, 1216,
+       68,   68, 1215, 1218,   68, 1217,   68,   68, 1219, 1221,
+       68,   68, 1213, 1222,   68, 1223,   68, 1224,   68, 1225,
+       68, 1226,   68,   68, 1220,   68, 1227, 1229,   68,   68,
+       68, 1228, 1230, 1234,   68, 1235, 1235, 1235, 1235, 1235,
+     1231, 1235, 1235, 1232, 1235, 1235, 1235, 1235, 1235, 1233,
+       40,   40,   40,   40,   40,   40,   40,   45,   45,   45,
+
+       45,   45,   45,   45,   50,   50,   50,   50,   50,   50,
+       50,   56,   56,   56,   56,   56,   56,   56,   61,   61,
+       61,   61,   61,   61,   61,   71,   71, 1235,   71,   71,
+       71,   71,  116,  116, 1235, 1235, 1235,  116,  116,  118,
+      118, 1235, 1235,  118, 1235,  118,  120, 1235, 1235, 1235,
+     1235, 1235,  120,  123,  123, 1235, 1235, 1235,  123,  123,
+      125, 1235, 1235, 1235, 1235, 1235,  125,  127,  127, 1235,
+      127,  127,  127,  127,   72,   72, 1235,   72,   72,   72,
+       72,   13, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235
     } ;
 
-static yyconst flex_int16_t yy_chk[2487] =
+static yyconst flex_int16_t yy_chk[2522] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1117,7 +1126,7 @@ static yyconst flex_int16_t yy_chk[2487] =
         9,  112,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  112,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1226,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1241,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
@@ -1132,7 +1141,7 @@ static yyconst flex_int16_t yy_chk[2487] =
 
        68,   75,   68,   77,   78,   75,   77,   68,   71,   79,
        71,   71,   80,   71,   81,   76,   83,   84,   71,   71,
-       85,   83,   78,   79,   80,   86,   87,   91,  531,   88,
+       85,   83,   78,   79,   80,   86,   87,   91,  532,   88,
        89,   84,   81,   88,   83,   89,   90,   94,   99,   90,
        85,   94,   90,   86,   87,   92,   91,   95,   93,   96,
        92,   93,   97,   98,   95,   93,   90,  100,   99,   97,
@@ -1202,185 +1211,190 @@ static yyconst flex_int16_t yy_chk[2487] =
       373,  375,  367,  376,  372,  373,  377,  381,  375,  374,
       378,  379,  376,  380,  379,  378,  384,  380,  382,  382,
       385,  384,  386,  387,  385,  394,  388,  382,  381,  395,
-      400,  387,  396,  397,  394,  395,  396,  401,  397,  399,
-      386,  388,  398,  405,  399,  403,  398,  408,  400,  398,
-      402,  402,  403,  409,  398,  404,  404,  697,  405,  697,
-      398,  398,  401,  406,  406,  407,  410,  408,  407,  411,
-
-      411,  412,  409,  413,  410,  414,  414,  415,  413,  416,
-      415,  417,  418,  419,  421,  416,  412,  420,  423,  417,
-      418,  421,  420,  422,  422,  424,  423,  425,  428,  427,
-      424,  419,  427,  429,  429,  432,  430,  433,  436,  430,
-      434,  435,  428,  437,  439,  435,  425,  430,  438,  434,
-      439,  440,  437,  443,  441,  444,  432,  436,  433,  441,
-      442,  445,  438,  446,  442,  440,  445,  444,  447,  447,
-      448,  449,  443,  450,  449,  448,  451,  452,  453,  454,
-      454,  456,  452,  457,  446,  455,  455,  457,  458,  451,
-      459,  450,  460,  462,  463,  464,  456,  462,  453,  465,
-
-      466,  601,  467,  468,  473,  473,  460,  458,  601,  468,
-      464,  471,  469,  465,  459,  461,  467,  469,  461,  463,
-      461,  466,  470,  470,  461,  471,  461,  472,  474,  475,
-      470,  461,  476,  474,  477,  478,  478,  475,  480,  472,
-      482,  481,  483,  480,  481,  484,  476,  485,  470,  486,
-      484,  488,  487,  477,  492,  483,  485,  487,  489,  482,
-      490,  493,  494,  118,  496,  490,  493,  494,  486,  492,
-      495,  488,  489,  496,  498,  495,  497,  497,  500,  498,
-      501,  501,  500,  500,  501,  502,  503,  504,  502,  505,
-      506,  507,  505,  508,  509,  506,  507,  511,  512,  508,
-
-      509,  503,  510,  513,  514,  510,  515,  504,  517,  514,
-      516,  515,  518,  516,  520,  511,  513,  518,  512,  517,
-      519,  521,  521,  522,  523,  519,  525,  524,  526,  520,
-      525,  527,  528,  529,  532,  533,  534,  562,  523,  524,
-      527,  538,  522,  539,  535,  562,  526,  536,  532,  535,
-      533,  528,  536,  541,  537,  538,  534,  539,  529,  537,
-      540,  542,  543,  543,  544,  540,  545,  546,  541,  547,
-      549,  551,  546,  548,  553,  545,  542,  550,  548,  552,
-      554,  550,  544,  557,  555,  556,  551,  558,  547,  549,
-      559,  556,  561,  553,  552,  563,  116,  566,  557,  559,
-
-      564,  554,  555,  567,  565,  564,  561,  558,  565,  565,
-      566,  568,  567,  569,  569,  563,  568,  570,  571,  571,
-      572,  573,  570,  574,  575,  576,  578,  577,  574,  575,
-      576,  577,  579,  581,  572,  578,  582,  581,  583,  573,
-      578,  584,  578,  579,  578,  585,  586,  587,  588,  589,
-      589,  582,  590,  590,  586,  584,  583,  591,  592,  592,
-      593,  593,  594,  596,  585,  587,  597,  594,  595,  595,
-      598,  599,  600,  588,  597,  598,  591,  603,  600,  604,
-      605,  606,  603,  596,  604,  605,  606,  607,  608,  599,
-      609,  610,  610,  611,  612,  613,  607,  616,  614,  615,
-
-      613,  609,  617,  617,  618,  619,  621,  608,  620,  624,
-      625,  628,   67,  611,  627,  616,  623,  612,  614,  615,
-      623,  623,  626,  630,  618,  631,  620,  626,  625,  621,
-      619,  628,  627,  629,  632,  624,  633,  629,  634,  631,
-      636,  633,  630,  635,  638,  634,  637,  639,  635,  640,
-      646,  641,  642,  632,  640,  637,  641,  642,  636,  638,
-      643,  643,  645,  647,  646,  648,  650,  645,  639,  648,
-      648,  649,  649,  651,  653,  652,  654,  655,  656,  651,
-      652,  658,  647,  664,  657,  650,  659,  660,  660,  661,
-      665,  663,  664,  653,  661,  654,  655,  656,  657,  662,
-
-      668,  659,  658,  662,  663,  666,  666,  667,  669,  672,
-      665,  678,  667,  669,  672,  675,  675,  679,  677,  680,
-      668,  677,  681,  683,  680,  685,  678,  682,  682,  684,
-      684,  687,  688,  686,  689,  687,  691,  681,  692,  689,
-      693,  693,  679,  683,  686,  694,  695,  685,  696,  700,
-      698,  688,  692,  699,  691,  698,  701,  702,  699,  704,
-      705,  709,  707,  702,  704,  694,  695,  707,  696,  700,
-      701,  706,  708,  708,  706,  710,  711,  712,  715,  709,
-      716,  711,  712,  713,  713,  705,  714,  717,  718,  720,
-      719,  714,  721,  722,  720,  710,  715,  723,  725,  724,
-
-      716,  730,  718,  719,  730,  725,  727,  717,  726,  732,
-      731,  737,  721,  722,  724,  733,  734,  726,  723,  731,
-      726,  735,  727,  738,  733,  734,  735,  733,  732,  736,
-      736,  737,  739,  740,  741,  742,  738,  743,  743,  744,
-      745,  747,  753,  748,  752,  749,  747,  740,  748,  754,
-      739,  749,  752,  742,  750,  744,  755,  750,  745,  741,
-      753,  756,  758,  750,  764,  759,  760,  763,  754,  759,
-      761,  760,  755,  762,  765,  761,  763,  767,  762,  756,
-      766,  766,  758,  768,  769,  770,  771,  764,  772,  765,
-      770,  767,  778,  773,  779,  768,  769,  778,  771,  773,
-
-      774,  774,  775,  775,  776,  780,  772,  777,  777,  781,
-      782,  782,  788,  776,  790,  779,  783,  783,  784,  784,
-      785,  787,  789,  785,  780,  794,  787,  789,  792,  781,
-      788,  791,  791,  792,  793,  795,  796,  797,  799,  790,
-      798,  798,  800,  800,  803,  794,  793,  801,  793,  805,
-      802,  803,  804,  793,  807,  795,  796,  808,  797,  802,
-      810,  804,  806,  806,  799,  810,  811,  801,  812,  813,
-      817,  811,  816,  808,  815,  805,  813,  814,  814,  815,
-      807,  816,  818,  819,  821,  820,  822,  823,  812,  824,
-      817,  820,  827,  821,  824,  825,  829,  818,  826,  825,
-
-      825,  823,  819,  826,  827,  828,  831,  822,  829,  830,
-      828,  832,  833,  830,  835,  834,  836,  833,  831,  835,
-      838,  839,  839,  838,  840,  840,  841,  843,  836,  842,
-      844,  847,  841,  843,  842,  850,  832,  834,  851,  844,
-      849,  849,  852,  847,  856,  857,  859,  851,  859,  856,
-      862,  852,  849,  850,  858,  858,  860,  860,  863,  863,
-      864,  865,  857,  866,  867,  868,  869,  871,  874,  872,
-      862,  872,  871,  865,  873,  866,  867,  874,  875,  875,
-      868,  864,  876,  877,  879,  878,  869,  878,  877,  879,
-      880,  881,  873,  882,  883,  880,  884,  886,  887,  883,
-
-      899,  884,  888,  888,  894,  889,  890,  893,  876,  881,
-      891,  892,  887,  882,  895,  890,  886,  889,  890,  891,
-      893,  896,  898,  892,  894,  899,  900,  896,  898,  902,
-      895,  901,  901,  903,  903,  900,  904,  905,  902,  906,
-      907,  905,  908,  908,  906,  915,  909,  912,  913,  913,
-      914,  914,  918,  907,  909,  904,  912,  915,  916,  920,
-      917,  919,  921,  916,  917,  922,  919,  918,  923,  925,
-      924,  927,   61,  928,  927,  929,  930,  930,  931,  931,
-      933,  921,  924,  936,  922,  920,  928,  942,  929,  923,
-      925,  932,  932,  933,  934,  934,  935,  935,  937,  937,
-
-      938,  938,  936,  940,  941,  941,  942,  944,  940,  943,
-      943,  945,  946,  947,  947,  946,  949,  945,  948,  948,
-      950,  950,  952,  952,  953,  944,  954,  954,  955,  947,
-      957,  956,  958,  959,  960,  949,  956,  958,  961,  962,
-      955,  963,  965,  960,  962,  963,  967,  961,  959,  969,
-      953,  957,  968,  968,  969,  967,  970,  970,  972,  973,
-      975,  976,  965,  975,  982,  970,  976,  977,  977,  979,
-      978,  973,  979,  972,  978,  980,  980,  981,  983,  987,
-      984,  985,  981,  986,  982,  984,  985,  988,  989,  986,
-       56,  990,  988,  990, 1005,  987,  989, 1006,  983,  993,
-
-      993,  996,  996,  999,  999, 1001, 1001, 1003, 1004, 1004,
-     1005, 1007, 1003, 1009, 1009, 1012, 1007, 1014, 1016, 1006,
-     1012, 1013, 1014, 1013, 1015, 1015, 1017, 1018, 1019, 1020,
-     1016, 1021, 1022, 1022, 1023, 1024, 1025, 1026, 1027, 1018,
-     1019, 1020, 1029, 1023, 1017, 1028, 1034, 1030, 1031, 1039,
-     1026, 1021, 1030, 1031, 1032, 1032, 1025, 1035, 1035, 1028,
-     1029, 1024, 1027, 1038, 1034, 1037, 1037, 1039, 1040, 1041,
-     1042, 1044, 1038, 1043, 1043, 1045, 1044, 1046, 1047, 1051,
-     1052, 1053, 1053, 1052, 1058, 1041, 1040, 1054, 1055, 1042,
-     1045, 1057, 1057, 1059, 1059, 1062, 1046,   51, 1047, 1051,
-
-     1061, 1061, 1054, 1058, 1063, 1064, 1055, 1065, 1066, 1068,
-     1064, 1071, 1065, 1063, 1069, 1070, 1066, 1062, 1074, 1069,
-     1070, 1072, 1072, 1074, 1068, 1079, 1071, 1073, 1073, 1075,
-     1075, 1076, 1076, 1078, 1082, 1083, 1081, 1079, 1078, 1081,
-     1084, 1084, 1085, 1082, 1083, 1087, 1088, 1089, 1089, 1090,
-     1092, 1085, 1091, 1094, 1095, 1092, 1097, 1097, 1090, 1099,
-     1091, 1105, 1094, 1101, 1087, 1088, 1101, 1095, 1100, 1100,
-     1102, 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1107, 1099,
-     1108, 1106, 1111, 1114, 1108, 1115, 1116, 1117, 1111, 1118,
-     1119, 1120, 1104, 1115, 1118, 1121, 1122, 1124, 1126, 1126,
-
-     1124, 1125, 1114, 1117, 1121, 1116, 1128, 1127, 1131, 1130,
-     1119, 1127, 1132, 1136, 1136, 1128, 1122, 1120, 1130, 1125,
-     1131, 1135, 1137, 1139, 1140, 1141, 1135, 1142, 1139, 1143,
-     1143, 1137, 1144, 1140, 1145, 1146, 1147, 1132, 1148, 1149,
-     1154, 1147, 1142, 1146, 1141, 1150, 1150, 1151, 1144, 1153,
-     1153, 1155, 1151, 1145, 1156, 1156, 1157, 1157, 1149, 1158,
-     1154, 1160, 1159, 1162, 1148, 1161, 1161, 1163, 1163, 1164,
-       50, 1166, 1170, 1155, 1159, 1162, 1166, 1170, 1158, 1167,
-     1167, 1160, 1168, 1168, 1169, 1169, 1171, 1171, 1164, 1173,
-     1173, 1175, 1175, 1176, 1179, 1180, 1180, 1185, 1176, 1181,
-
-     1183, 1195, 1179, 1186, 1181, 1183, 1192, 1186, 1190, 1190,
-     1192, 1194, 1194, 1197, 1198, 1198, 1195, 1185, 1199, 1199,
-     1200, 1200, 1202, 1202, 1204, 1205, 1205, 1211, 1210, 1212,
-     1212, 1197, 1210, 1213, 1215, 1217, 1204, 1216, 1218, 1218,
-       45,   40, 1213,   14,   13,    0,    0, 1211,    0, 1215,
-        0, 1216,    0,    0, 1217, 1221, 1221, 1221, 1221, 1221,
-     1221, 1221, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223,
-     1223, 1223, 1223, 1223, 1223, 1223, 1224, 1224, 1224, 1224,
-     1224, 1224, 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
-     1227, 1227,    0, 1227, 1227, 1227, 1227, 1228, 1228,    0,
-
-        0,    0, 1228, 1228, 1229, 1229,    0,    0, 1229,    0,
-     1229, 1230,    0,    0,    0,    0,    0, 1230, 1231, 1231,
-        0,    0,    0, 1231, 1231, 1232,    0,    0,    0,    0,
-        0, 1232, 1233, 1233,    0, 1233, 1233, 1233, 1233, 1234,
-     1234,    0, 1234, 1234, 1234, 1234, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220
+      118,  387,  396,  397,  394,  395,  396,  400,  397,  401,
+      386,  388,  398,  399,  398,  403,  398,  405,  399,  398,
+      402,  402,  403,  408,  398,  400,  404,  404,  406,  406,
+      398,  398,  405,  407,  401,  409,  407,  410,  411,  411,
+
+      412,  413,  419,  408,  416,  410,  413,  414,  414,  415,
+      416,  417,  415,  418,  409,  412,  421,  420,  423,  417,
+      419,  418,  420,  421,  422,  422,  423,  424,  425,  428,
+      427,  432,  424,  427,  429,  429,  433,  430,  435,  436,
+      430,  434,  435,  428,  437,  438,  440,  425,  430,  439,
+      434,  441,  432,  437,  443,  439,  441,  433,  436,  438,
+      440,  442,  444,  445,  446,  442,  447,  447,  445,  449,
+      448,  450,  449,  443,  444,  448,  452,  451,  453,  454,
+      454,  452,  455,  455,  456,  446,  458,  457,  459,  450,
+      451,  457,  460,  462,  463,  464,  466,  462,  453,  456,
+
+      465,  467,  468,  476,  469,  458,  460,  116,  468,  469,
+      464,  476,  459,  461,  465,  467,  461,  466,  461,  463,
+      470,  470,  461,  472,  461,  471,  473,  477,  470,  461,
+      471,  474,  474,  478,  475,  479,  479,  472,  473,  475,
+      481,  477,  483,  484,  482,  481,  470,  482,  485,  486,
+      487,  489,  478,  485,  488,  493,  484,  491,  486,  488,
+      490,  483,  491,  494,  498,  498,  497,  495,  494,  487,
+      493,  489,  495,  496,  490,  497,  499,  503,  496,  501,
+      503,  499,  504,  501,  501,  502,  502,  505,  506,  502,
+      507,  506,  512,  508,  509,  507,  510,  504,  508,  513,
+
+      509,  511,  510,  514,  511,   67,  515,  505,  516,  517,
+      512,  515,  517,  516,  518,  519,  514,  520,  521,  513,
+      519,  523,  520,  522,  522,  518,  525,  524,  526,  527,
+      528,  529,  526,  521,  530,  533,  534,  535,  525,  528,
+      523,  524,  539,  536,  544,  544,  542,  527,  536,  533,
+      529,  534,  540,  537,  543,  538,  539,  535,  537,  530,
+      538,  542,  541,  545,  546,  547,  540,  541,  548,  543,
+      547,  549,  550,  546,  551,  552,  549,  553,  551,  555,
+      556,  545,  554,  558,  557,  559,  560,  548,  561,  558,
+      552,  550,  553,  563,  554,  564,  565,  561,  555,  566,
+
+      559,  556,  557,  564,  566,  567,  560,  563,  568,  567,
+      567,  569,  570,  571,  571,  574,  565,  570,  572,  575,
+      569,  568,  576,  572,  573,  573,  577,  576,  578,  574,
+      579,  577,  580,  578,  579,  583,  581,  575,  584,  583,
+      585,  580,  586,  587,  588,  589,  580,  581,  580,  590,
+      580,  593,  588,  584,  591,  591,  586,  598,  585,  592,
+      592,  599,  587,  589,  594,  594,  595,  595,  596,  599,
+      593,  597,  597,  596,  590,  600,  601,  598,  602,  603,
+      600,  610,  605,  606,  602,  607,  603,  605,  606,  609,
+      607,  608,  611,  613,  601,  614,  608,  616,  609,  615,
+
+      610,  612,  612,  611,  615,  617,  618,  619,  619,  620,
+      621,  623,  622,  613,  626,  625,  630,  616,  614,  625,
+      625,  627,  628,  629,  618,  617,  632,  628,  631,  620,
+      622,  634,  631,  633,  623,  621,  630,  635,  636,  627,
+      626,  629,  637,  636,  639,  632,  634,  633,  638,  637,
+      640,  641,  642,  638,   61,  643,  635,  649,  644,  640,
+      643,  650,  639,  644,  645,  648,  641,  646,  646,  645,
+      648,  649,  651,  642,  652,  652,  651,  651,  653,  654,
+      650,  655,  656,  657,  658,  654,  655,  659,  661,   56,
+      660,  664,  662,  663,  663,  665,  664,  653,  666,  665,
+
+      668,  656,  657,  658,  660,  667,  659,  662,  671,  661,
+      670,  666,  669,  669,  667,  670,  672,  675,  678,  678,
+      668,  672,  675,  680,  681,  682,  680,  683,  671,  684,
+      685,  685,  683,  686,  687,  687,  688,  689,  690,  681,
+      691,  692,  690,  694,  684,  697,  692,  698,  689,  695,
+      682,  696,  696,  686,  699,  700,  703,  700,  688,  691,
+      708,  694,   51,  695,  701,  697,  702,  698,  704,  701,
+      707,  702,  705,  712,  699,  707,  703,  709,  705,  710,
+      709,  713,  704,  714,  710,  708,  711,  711,  714,  715,
+      716,  712,  717,  717,  718,  716,  719,  720,  721,  718,
+
+      723,  713,  722,  724,  725,  726,  727,  728,  724,  736,
+       50,  730,  715,  723,  719,  731,  722,  720,  721,  729,
+      730,  735,  728,  730,  725,  726,  729,  727,  736,  734,
+      735,  731,  734,  737,  738,  739,  740,  740,  741,  742,
+      739,  743,  737,  738,  745,  737,  744,  746,  747,  747,
+      748,  751,  742,  749,  757,  753,  751,  752,  741,  743,
+      744,  753,  752,  758,  754,  746,  748,  754,  756,  745,
+      759,  749,  757,  754,  760,  762,  756,  763,  764,  765,
+      766,  763,  758,  764,  765,  766,  759,  767,  768,  769,
+      770,  770,  760,  771,  772,  762,  767,  773,  774,  776,
+
+      775,  780,  777,  774,  769,  783,  772,  771,  777,  773,
+      780,  768,  775,  778,  778,  779,  779,  776,  781,  781,
+      782,  784,  785,  786,  786,  782,  783,  787,  787,  788,
+      788,  789,  790,  792,  793,  790,  789,  795,  792,  794,
+      784,  798,  785,  797,  794,  796,  796,  799,  797,  800,
+      801,  802,  793,  798,  804,  798,  803,  803,  805,  805,
+      798,  806,  795,  810,  807,  809,  812,  799,  808,  800,
+      801,  813,  802,  807,  809,  808,  811,  811,  815,  816,
+      804,  806,  817,  815,  816,  822,  818,  813,  821,  810,
+      819,  819,  812,  818,  820,  823,  824,  821,  825,  820,
+
+      826,  827,  817,  828,  825,  822,  829,   45,  830,  826,
+      823,  829,  830,  830,  831,  824,  832,  828,  833,  831,
+      834,  835,  827,  833,  836,  835,  837,  839,  832,  838,
+      840,  841,  834,  852,  838,  840,  836,  843,  844,  844,
+      843,  845,  845,  841,  846,  852,  849,  847,  848,  839,
+      846,  837,  847,  855,  848,  849,  854,  854,  856,  861,
+      857,  862,  863,  864,  864,  868,  862,  856,  854,  857,
+      865,  855,  865,  861,  866,  866,  869,  869,  870,  863,
+      871,  872,  873,  874,  875,  868,  877,  878,  879,  878,
+      882,  877,  871,  872,  873,  887,  880,  883,  874,  870,
+
+      881,  881,  883,  885,  875,  880,  879,  884,  885,  884,
+      886,  888,  889,  887,  890,  886,  882,  889,  892,  890,
+      893,  894,  894,  895,  896,  900,  901,  898,  899,  897,
+      905,  888,   40,  896,  893,  895,  896,  892,  897,  898,
+      902,  899,  901,  904,  906,  900,  902,  907,  907,  904,
+      908,  909,  909,  906,  910,  905,  911,  912,  913,  908,
+      911,  915,  912,  914,  914,  918,  919,  919,  921,  915,
+      924,  913,  922,  910,  918,  920,  920,  922,  923,  925,
+      921,  926,  923,  927,  925,  924,  928,  929,  930,  931,
+      932,  934,  935,  943,  934,  936,  937,  937,  938,  938,
+
+      940,  931,  927,  939,  939,  935,  929,  926,  936,  930,
+      928,  932,  943,  940,  941,  941,  942,  942,  944,  944,
+      945,  945,  947,  948,  948,  949,  952,  947,  950,  950,
+      951,  953,  952,  956,  953,  954,  954,  955,  955,  957,
+      957,  959,  959,  960,  949,  961,  961,  962,  951,  963,
+      964,  954,  956,  965,  963,  966,  967,  968,  965,  962,
+      970,  972,  969,  974,  970,  967,  968,  969,  979,  960,
+      966,  964,  974,  975,  975,  976,  977,  977,  980,  982,
+      976,  972,  982,  979,  983,  977,  984,  984,  985,  983,
+      980,  986,  985,  988,  986,  987,  987,  989,  988,  990,
+
+      991,  992,  993,  990,  994,  995,  992,  993,  996, 1014,
+      994,  997,  998,  996,  998, 1001, 1001,  989, 1013,  997,
+      991,  995, 1004, 1004, 1007, 1007, 1009, 1009, 1011, 1012,
+     1012, 1014, 1015, 1011, 1013, 1017, 1017, 1015, 1020, 1021,
+     1022, 1021, 1024, 1020, 1025, 1022, 1023, 1023, 1026, 1027,
+     1029, 1028, 1030, 1030, 1024, 1031, 1032, 1033, 1034, 1035,
+     1026, 1027, 1025, 1028, 1031, 1036, 1037, 1038, 1039, 1042,
+     1029, 1034, 1038, 1039, 1040, 1040, 1047, 1033, 1048, 1036,
+     1043, 1043, 1032, 1035, 1037, 1045, 1045, 1042, 1046, 1049,
+     1050, 1047, 1051, 1052, 1052, 1053, 1048, 1046, 1054, 1055,
+
+     1053, 1056, 1060, 1062, 1062, 1061, 1050, 1049, 1061, 1063,
+     1064, 1051, 1067, 1054, 1066, 1066, 1068, 1068, 1055, 1070,
+     1070, 1056, 1060, 1071, 1063, 1072, 1077, 1073, 1064, 1075,
+     1074, 1067, 1073, 1078, 1072, 1074, 1080, 1075, 1078, 1079,
+       14, 1077, 1081, 1081, 1079, 1071, 1082, 1082, 1083, 1084,
+     1084, 1080, 1087, 1083, 1085, 1085, 1088, 1087, 1090, 1091,
+     1092, 1090, 1093, 1094, 1094, 1095, 1097, 1098, 1088, 1092,
+     1100, 1093, 1091, 1101, 1095, 1099, 1099, 1102, 1104, 1100,
+     1105, 1101, 1102, 1107, 1107, 1097, 1098, 1104, 1109, 1110,
+     1110, 1111, 1114, 1105, 1111, 1112, 1112, 1113, 1113, 1115,
+
+     1116, 1117, 1117, 1118, 1124, 1116, 1121, 1118, 1109, 1125,
+     1114, 1126, 1121, 1115, 1127, 1127, 1128, 1125, 1130, 1129,
+     1131, 1133, 1132, 1124, 1129, 1135, 1136, 1139, 1135,   13,
+     1126, 1132, 1128, 1137, 1137, 1138, 1139, 1143, 1130, 1138,
+     1141, 1133, 1142, 1146, 1136, 1153, 1131, 1148, 1146, 1141,
+     1147, 1147, 1150, 1152, 1142, 1151, 1148, 1150, 1154, 1154,
+     1153, 1155, 1143, 1156, 1151, 1157, 1158, 1160, 1159, 1161,
+     1155, 1166, 1152, 1159, 1158, 1162, 1162, 1163, 1167, 1156,
+     1165, 1165, 1163, 1170, 1157, 1168, 1168, 1171, 1161, 1169,
+     1169, 1166, 1172, 1160, 1173, 1173, 1174, 1175, 1175, 1171,
+
+     1167, 1176, 1170, 1178, 1179, 1180, 1180, 1192, 1174, 1179,
+     1181, 1181, 1172, 1182, 1182, 1192, 1183, 1178, 1184, 1184,
+     1176, 1183, 1186, 1186, 1188, 1188, 1189, 1193, 1193, 1194,
+     1196, 1189, 1198, 1209, 1194, 1196, 1199, 1199, 1200, 1204,
+     1204, 1206, 1200, 1208, 1208, 1206, 1211, 1219, 1209, 1212,
+     1212, 1226, 1198, 1213, 1213, 1215, 1215, 1217, 1217, 1219,
+     1220, 1220, 1225, 1228, 1211, 1230, 1225, 1227, 1227, 1231,
+     1232, 1226, 1228, 1233, 1233,    0,    0,    0,    0,    0,
+     1230,    0,    0, 1231,    0,    0,    0,    0,    0, 1232,
+     1236, 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237, 1237,
+
+     1237, 1237, 1237, 1237, 1238, 1238, 1238, 1238, 1238, 1238,
+     1238, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1240,
+     1240, 1240, 1240, 1240, 1240, 1242, 1242,    0, 1242, 1242,
+     1242, 1242, 1243, 1243,    0,    0,    0, 1243, 1243, 1244,
+     1244,    0,    0, 1244,    0, 1244, 1245,    0,    0,    0,
+        0,    0, 1245, 1246, 1246,    0,    0,    0, 1246, 1246,
+     1247,    0,    0,    0,    0,    0, 1247, 1248, 1248,    0,
+     1248, 1248, 1248, 1248, 1249, 1249,    0, 1249, 1249, 1249,
+     1249, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+     1235
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1504,7 +1518,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1506 "<stdout>"
+#line 1520 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1691,7 +1705,7 @@ YY_DECL
     
 #line 120 "util/configlexer.lex"
 
-#line 1693 "<stdout>"
+#line 1707 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1750,13 +1764,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 >= 1221 )
+                               if ( yy_current_state >= 1236 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2447 );
+               while ( yy_base[yy_current_state] != 2482 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2021,349 +2035,354 @@ YY_RULE_SETUP
 case 48:
 YY_RULE_SETUP
 #line 171 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 172 "util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 173 "util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 174 "util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 175 "util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 176 "util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 177 "util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 178 "util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 179 "util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 180 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 181 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 182 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 183 "util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 184 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 185 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 186 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 187 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 188 "util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 189 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 190 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 191 "util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 192 "util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 193 "util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 194 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 195 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 196 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 197 "util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 198 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 199 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 200 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 201 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 202 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 203 "util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 204 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 205 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 206 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 207 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 208 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 209 "util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 210 "util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 212 "util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 211 "util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 213 "util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 214 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 215 "util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 216 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 217 "util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 218 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 219 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 220 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 221 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 222 "util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 223 "util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 224 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 225 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 226 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 227 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 228 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 229 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 230 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 231 "util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 232 "util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 233 "util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 110:
-/* rule 110 can match eol */
 YY_RULE_SETUP
 #line 234 "util/configlexer.lex"
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+       YY_BREAK
+case 111:
+/* rule 111 can match eol */
+YY_RULE_SETUP
+#line 235 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 237 "util/configlexer.lex"
+#line 238 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 238 "util/configlexer.lex"
+#line 239 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 243 "util/configlexer.lex"
+#line 244 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 113:
-/* rule 113 can match eol */
+case 114:
+/* rule 114 can match eol */
 YY_RULE_SETUP
-#line 244 "util/configlexer.lex"
+#line 245 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 246 "util/configlexer.lex"
+#line 247 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2376,34 +2395,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 258 "util/configlexer.lex"
+#line 259 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 259 "util/configlexer.lex"
+#line 260 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 264 "util/configlexer.lex"
+#line 265 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 117:
-/* rule 117 can match eol */
+case 118:
+/* rule 118 can match eol */
 YY_RULE_SETUP
-#line 265 "util/configlexer.lex"
+#line 266 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 267 "util/configlexer.lex"
+#line 268 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2416,38 +2435,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 279 "util/configlexer.lex"
+#line 280 "util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 281 "util/configlexer.lex"
+#line 282 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 285 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 121:
-/* rule 121 can match eol */
 YY_RULE_SETUP
 #line 286 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 122:
+/* rule 122 can match eol */
 YY_RULE_SETUP
 #line 287 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 288 "util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 289 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2455,27 +2474,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 293 "util/configlexer.lex"
+#line 294 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 297 "util/configlexer.lex"
+#line 298 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 125:
-/* rule 125 can match eol */
+case 126:
+/* rule 126 can match eol */
 YY_RULE_SETUP
-#line 298 "util/configlexer.lex"
+#line 299 "util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 300 "util/configlexer.lex"
+#line 301 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2485,7 +2504,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 306 "util/configlexer.lex"
+#line 307 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2496,33 +2515,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 316 "util/configlexer.lex"
+#line 317 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 320 "util/configlexer.lex"
+#line 321 "util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 324 "util/configlexer.lex"
+#line 325 "util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 328 "util/configlexer.lex"
+#line 329 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2524 "<stdout>"
+#line 2543 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2812,7 +2831,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 1221 )
+                       if ( yy_current_state >= 1236 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2840,11 +2859,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 >= 1221 )
+               if ( yy_current_state >= 1236 )
                        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 == 1220);
+       yy_is_jam = (yy_current_state == 1235);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3481,7 +3500,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 328 "util/configlexer.lex"
+#line 329 "util/configlexer.lex"
 
 
 
index 43d82f72dba640b83d5dc4544964cfd13ddca81c..5ccb9ec681e4e9dcb92a6cb5c0dae75e711c60f0 100644 (file)
@@ -168,6 +168,7 @@ harden-short-bufsize{COLON} { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
 harden-large-queries{COLON}    { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
 harden-glue{COLON}             { YDVAR(1, VAR_HARDEN_GLUE) }
 harden-dnssec-stripped{COLON}  { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+harden-below-nxdomain{COLON}   { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
 harden-referral-path{COLON}    { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
 use-caps-for-id{COLON}         { YDVAR(1, VAR_USE_CAPS_FOR_ID) }
 unwanted-reply-threshold{COLON}        { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
index d202af2a1ba208d6b3375e8973402d12cebefd8f..558b5eec10514b0bdf7623a4cf4a95f4011c48b9 100644 (file)
@@ -238,7 +238,8 @@ extern struct config_parser_state* cfg_parser;
      VAR_EDNS_BUFFER_SIZE = 369,
      VAR_PREFETCH = 370,
      VAR_PREFETCH_KEY = 371,
-     VAR_SO_SNDBUF = 372
+     VAR_SO_SNDBUF = 372,
+     VAR_HARDEN_BELOW_NXDOMAIN = 373
    };
 #endif
 /* Tokens.  */
@@ -357,6 +358,7 @@ extern struct config_parser_state* cfg_parser;
 #define VAR_PREFETCH 370
 #define VAR_PREFETCH_KEY 371
 #define VAR_SO_SNDBUF 372
+#define VAR_HARDEN_BELOW_NXDOMAIN 373
 
 
 
@@ -373,7 +375,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 377 "util/configparser.c"
+#line 379 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -385,7 +387,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 389 "util/configparser.c"
+#line 391 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -600,20 +602,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   214
+#define YYLAST   216
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  118
+#define YYNTOKENS  119
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  121
+#define YYNNTS  122
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  229
+#define YYNRULES  231
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  335
+#define YYNSTATES  338
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   372
+#define YYMAXUTOK   373
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -658,7 +660,7 @@ static const yytype_uint8 yytranslate[] =
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117
+     115,   116,   117,   118
 };
 
 #if YYDEBUG
@@ -676,81 +678,83 @@ static const yytype_uint16 yyprhs[] =
      144,   146,   148,   150,   152,   154,   156,   158,   160,   162,
      164,   166,   168,   170,   172,   174,   176,   178,   180,   182,
      184,   186,   188,   190,   192,   194,   196,   198,   200,   202,
-     204,   206,   209,   210,   212,   214,   216,   218,   220,   223,
-     224,   226,   228,   230,   233,   236,   239,   242,   245,   248,
-     251,   254,   257,   260,   263,   266,   269,   272,   275,   278,
-     281,   284,   287,   290,   293,   296,   299,   302,   305,   308,
-     311,   314,   317,   320,   323,   326,   329,   332,   335,   338,
-     341,   344,   347,   350,   353,   356,   359,   362,   365,   368,
-     371,   374,   377,   380,   383,   386,   389,   392,   395,   398,
-     401,   404,   407,   410,   413,   416,   419,   422,   425,   428,
-     431,   435,   438,   441,   444,   447,   450,   453,   456,   459,
-     462,   465,   468,   471,   474,   477,   480,   483,   486,   490,
-     493,   496,   499,   502,   505,   508,   511,   514,   517,   519,
-     522,   523,   525,   527,   529,   531,   533,   535,   537,   540,
-     543,   546,   549,   552,   555,   558,   560,   563,   564,   566
+     204,   206,   208,   211,   212,   214,   216,   218,   220,   222,
+     225,   226,   228,   230,   232,   235,   238,   241,   244,   247,
+     250,   253,   256,   259,   262,   265,   268,   271,   274,   277,
+     280,   283,   286,   289,   292,   295,   298,   301,   304,   307,
+     310,   313,   316,   319,   322,   325,   328,   331,   334,   337,
+     340,   343,   346,   349,   352,   355,   358,   361,   364,   367,
+     370,   373,   376,   379,   382,   385,   388,   391,   394,   397,
+     400,   403,   406,   409,   412,   415,   418,   421,   424,   427,
+     430,   433,   436,   440,   443,   446,   449,   452,   455,   458,
+     461,   464,   467,   470,   473,   476,   479,   482,   485,   488,
+     491,   495,   498,   501,   504,   507,   510,   513,   516,   519,
+     522,   524,   527,   528,   530,   532,   534,   536,   538,   540,
+     542,   545,   548,   551,   554,   557,   560,   563,   565,   568,
+     569,   571
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     119,     0,    -1,    -1,   119,   120,    -1,   121,   122,    -1,
-     124,   125,    -1,   127,   128,    -1,   235,   236,    -1,   225,
-     226,    -1,    11,    -1,   122,   123,    -1,    -1,   130,    -1,
-     131,    -1,   135,    -1,   138,    -1,   144,    -1,   145,    -1,
-     146,    -1,   147,    -1,   136,    -1,   151,    -1,   152,    -1,
-     153,    -1,   154,    -1,   155,    -1,   172,    -1,   173,    -1,
-     174,    -1,   176,    -1,   177,    -1,   141,    -1,   178,    -1,
-     179,    -1,   182,    -1,   180,    -1,   181,    -1,   183,    -1,
-     184,    -1,   185,    -1,   195,    -1,   164,    -1,   165,    -1,
-     166,    -1,   167,    -1,   186,    -1,   198,    -1,   160,    -1,
-     162,    -1,   199,    -1,   204,    -1,   205,    -1,   206,    -1,
-     142,    -1,   171,    -1,   212,    -1,   213,    -1,   161,    -1,
-     208,    -1,   149,    -1,   137,    -1,   156,    -1,   196,    -1,
-     202,    -1,   187,    -1,   197,    -1,   215,    -1,   216,    -1,
-     143,    -1,   132,    -1,   148,    -1,   189,    -1,   133,    -1,
-     139,    -1,   140,    -1,   157,    -1,   158,    -1,   214,    -1,
-     188,    -1,   190,    -1,   191,    -1,   134,    -1,   217,    -1,
-     175,    -1,   194,    -1,   150,    -1,   163,    -1,   200,    -1,
-     201,    -1,   203,    -1,   207,    -1,   159,    -1,   209,    -1,
-     210,    -1,   211,    -1,   168,    -1,   170,    -1,   192,    -1,
-     193,    -1,   169,    -1,    38,    -1,   125,   126,    -1,    -1,
-     218,    -1,   219,    -1,   220,    -1,   221,    -1,    44,    -1,
-     128,   129,    -1,    -1,   222,    -1,   223,    -1,   224,    -1,
-      13,    10,    -1,    12,    10,    -1,    76,    10,    -1,    79,
-      10,    -1,    96,    10,    -1,    14,    10,    -1,    16,    10,
-      -1,    67,    10,    -1,    15,    10,    -1,    80,    10,    -1,
-      81,    10,    -1,    31,    10,    -1,    60,    10,    -1,    75,
-      10,    -1,    17,    10,    -1,    18,    10,    -1,    19,    10,
-      -1,    20,    10,    -1,    77,    10,    -1,    66,    10,    -1,
-     101,    10,    -1,    21,    10,    -1,    22,    10,    -1,    23,
-      10,    -1,    24,    10,    -1,    25,    10,    -1,    68,    10,
-      -1,    82,    10,    -1,    83,    10,    -1,   109,    10,    -1,
-      54,    10,    -1,    64,    10,    -1,    55,    10,    -1,   102,
-      10,    -1,    48,    10,    -1,    49,    10,    -1,    50,    10,
-      -1,    51,    10,    -1,   113,    10,    -1,   117,    10,    -1,
-     114,    10,    -1,    61,    10,    -1,    26,    10,    -1,    27,
-      10,    -1,    28,    10,    -1,    98,    10,    -1,    29,    10,
-      -1,    30,    10,    -1,    32,    10,    -1,    33,    10,    -1,
-      35,    10,    -1,    36,    10,    -1,    34,    10,    -1,    41,
-      10,    -1,    42,    10,    -1,    43,    10,    -1,    52,    10,
-      -1,    71,    10,    -1,    85,    10,    -1,    78,    10,    -1,
-      86,    10,    -1,    87,    10,    -1,   115,    10,    -1,   116,
-      10,    -1,   100,    10,    -1,    47,    10,    -1,    69,    10,
-      -1,    72,    10,    10,    -1,    53,    10,    -1,    56,    10,
-      -1,   105,    10,    -1,   106,    10,    -1,    70,    10,    -1,
-     107,    10,    -1,    57,    10,    -1,    58,    10,    -1,    59,
-      10,    -1,   108,    10,    -1,    65,    10,    -1,   111,    10,
-      -1,   112,    10,    -1,   110,    10,    -1,    62,    10,    -1,
-      63,    10,    -1,    84,    10,    -1,    73,    10,    10,    -1,
-      74,    10,    -1,    97,    10,    -1,    37,    10,    -1,    39,
-      10,    -1,    40,    10,    -1,    99,    10,    -1,    37,    10,
-      -1,    45,    10,    -1,    46,    10,    -1,    88,    -1,   226,
-     227,    -1,    -1,   228,    -1,   230,    -1,   229,    -1,   231,
-      -1,   232,    -1,   233,    -1,   234,    -1,    89,    10,    -1,
-      91,    10,    -1,    90,    10,    -1,    92,    10,    -1,    93,
-      10,    -1,    94,    10,    -1,    95,    10,    -1,   103,    -1,
-     236,   237,    -1,    -1,   238,    -1,   104,    10,    -1
+     120,     0,    -1,    -1,   120,   121,    -1,   122,   123,    -1,
+     125,   126,    -1,   128,   129,    -1,   237,   238,    -1,   227,
+     228,    -1,    11,    -1,   123,   124,    -1,    -1,   131,    -1,
+     132,    -1,   136,    -1,   139,    -1,   145,    -1,   146,    -1,
+     147,    -1,   148,    -1,   137,    -1,   152,    -1,   153,    -1,
+     154,    -1,   155,    -1,   156,    -1,   173,    -1,   174,    -1,
+     175,    -1,   177,    -1,   178,    -1,   142,    -1,   179,    -1,
+     180,    -1,   183,    -1,   181,    -1,   182,    -1,   184,    -1,
+     185,    -1,   186,    -1,   197,    -1,   165,    -1,   166,    -1,
+     167,    -1,   168,    -1,   187,    -1,   200,    -1,   161,    -1,
+     163,    -1,   201,    -1,   206,    -1,   207,    -1,   208,    -1,
+     143,    -1,   172,    -1,   214,    -1,   215,    -1,   162,    -1,
+     210,    -1,   150,    -1,   138,    -1,   157,    -1,   198,    -1,
+     204,    -1,   188,    -1,   199,    -1,   217,    -1,   218,    -1,
+     144,    -1,   133,    -1,   149,    -1,   191,    -1,   134,    -1,
+     140,    -1,   141,    -1,   158,    -1,   159,    -1,   216,    -1,
+     190,    -1,   192,    -1,   193,    -1,   135,    -1,   219,    -1,
+     176,    -1,   196,    -1,   151,    -1,   164,    -1,   202,    -1,
+     203,    -1,   205,    -1,   209,    -1,   160,    -1,   211,    -1,
+     212,    -1,   213,    -1,   169,    -1,   171,    -1,   194,    -1,
+     195,    -1,   170,    -1,   189,    -1,    38,    -1,   126,   127,
+      -1,    -1,   220,    -1,   221,    -1,   222,    -1,   223,    -1,
+      44,    -1,   129,   130,    -1,    -1,   224,    -1,   225,    -1,
+     226,    -1,    13,    10,    -1,    12,    10,    -1,    76,    10,
+      -1,    79,    10,    -1,    96,    10,    -1,    14,    10,    -1,
+      16,    10,    -1,    67,    10,    -1,    15,    10,    -1,    80,
+      10,    -1,    81,    10,    -1,    31,    10,    -1,    60,    10,
+      -1,    75,    10,    -1,    17,    10,    -1,    18,    10,    -1,
+      19,    10,    -1,    20,    10,    -1,    77,    10,    -1,    66,
+      10,    -1,   101,    10,    -1,    21,    10,    -1,    22,    10,
+      -1,    23,    10,    -1,    24,    10,    -1,    25,    10,    -1,
+      68,    10,    -1,    82,    10,    -1,    83,    10,    -1,   109,
+      10,    -1,    54,    10,    -1,    64,    10,    -1,    55,    10,
+      -1,   102,    10,    -1,    48,    10,    -1,    49,    10,    -1,
+      50,    10,    -1,    51,    10,    -1,   113,    10,    -1,   117,
+      10,    -1,   114,    10,    -1,    61,    10,    -1,    26,    10,
+      -1,    27,    10,    -1,    28,    10,    -1,    98,    10,    -1,
+      29,    10,    -1,    30,    10,    -1,    32,    10,    -1,    33,
+      10,    -1,    35,    10,    -1,    36,    10,    -1,    34,    10,
+      -1,    41,    10,    -1,    42,    10,    -1,    43,    10,    -1,
+      52,    10,    -1,    71,    10,    -1,   118,    10,    -1,    85,
+      10,    -1,    78,    10,    -1,    86,    10,    -1,    87,    10,
+      -1,   115,    10,    -1,   116,    10,    -1,   100,    10,    -1,
+      47,    10,    -1,    69,    10,    -1,    72,    10,    10,    -1,
+      53,    10,    -1,    56,    10,    -1,   105,    10,    -1,   106,
+      10,    -1,    70,    10,    -1,   107,    10,    -1,    57,    10,
+      -1,    58,    10,    -1,    59,    10,    -1,   108,    10,    -1,
+      65,    10,    -1,   111,    10,    -1,   112,    10,    -1,   110,
+      10,    -1,    62,    10,    -1,    63,    10,    -1,    84,    10,
+      -1,    73,    10,    10,    -1,    74,    10,    -1,    97,    10,
+      -1,    37,    10,    -1,    39,    10,    -1,    40,    10,    -1,
+      99,    10,    -1,    37,    10,    -1,    45,    10,    -1,    46,
+      10,    -1,    88,    -1,   228,   229,    -1,    -1,   230,    -1,
+     232,    -1,   231,    -1,   233,    -1,   234,    -1,   235,    -1,
+     236,    -1,    89,    10,    -1,    91,    10,    -1,    90,    10,
+      -1,    92,    10,    -1,    93,    10,    -1,    94,    10,    -1,
+      95,    10,    -1,   103,    -1,   238,   239,    -1,    -1,   240,
+      -1,   104,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -766,19 +770,20 @@ static const yytype_uint16 yyrline[] =
      145,   146,   146,   147,   147,   148,   148,   148,   149,   149,
      150,   150,   151,   151,   152,   152,   153,   153,   154,   154,
      154,   155,   155,   156,   156,   156,   157,   157,   157,   158,
-     160,   172,   173,   174,   174,   174,   174,   176,   188,   189,
-     190,   190,   190,   192,   201,   210,   221,   230,   239,   248,
-     261,   276,   285,   294,   303,   312,   321,   330,   339,   348,
-     357,   366,   375,   389,   398,   405,   412,   419,   427,   434,
-     441,   448,   455,   463,   471,   479,   486,   493,   502,   511,
-     518,   525,   533,   541,   554,   565,   573,   586,   595,   604,
-     612,   625,   634,   643,   652,   661,   674,   681,   691,   701,
-     711,   721,   731,   741,   748,   755,   764,   773,   782,   789,
-     799,   813,   820,   838,   851,   864,   873,   882,   891,   901,
-     911,   920,   927,   936,   945,   954,   962,   975,   983,  1003,
-    1010,  1025,  1032,  1039,  1046,  1056,  1063,  1070,  1077,  1082,
-    1083,  1084,  1084,  1084,  1085,  1085,  1085,  1086,  1088,  1098,
-    1107,  1114,  1121,  1128,  1135,  1142,  1147,  1148,  1149,  1151
+     158,   160,   172,   173,   174,   174,   174,   174,   176,   188,
+     189,   190,   190,   190,   192,   201,   210,   221,   230,   239,
+     248,   261,   276,   285,   294,   303,   312,   321,   330,   339,
+     348,   357,   366,   375,   389,   398,   405,   412,   419,   427,
+     434,   441,   448,   455,   463,   471,   479,   486,   493,   502,
+     511,   518,   525,   533,   541,   554,   565,   573,   586,   595,
+     604,   612,   625,   634,   643,   652,   661,   674,   681,   691,
+     701,   711,   721,   731,   741,   751,   758,   765,   774,   783,
+     792,   799,   809,   823,   830,   848,   861,   874,   883,   892,
+     901,   911,   921,   930,   937,   946,   955,   964,   972,   985,
+     993,  1013,  1020,  1035,  1042,  1049,  1056,  1066,  1073,  1080,
+    1087,  1092,  1093,  1094,  1094,  1094,  1095,  1095,  1095,  1096,
+    1098,  1108,  1117,  1124,  1131,  1138,  1145,  1152,  1157,  1158,
+    1159,  1161
 };
 #endif
 
@@ -824,10 +829,11 @@ static const char *const yytname[] =
   "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING",
   "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF",
   "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY",
-  "VAR_SO_SNDBUF", "$accept", "toplevelvars", "toplevelvar", "serverstart",
-  "contents_server", "content_server", "stubstart", "contents_stub",
-  "content_stub", "forwardstart", "contents_forward", "content_forward",
-  "server_num_threads", "server_verbosity", "server_statistics_interval",
+  "VAR_SO_SNDBUF", "VAR_HARDEN_BELOW_NXDOMAIN", "$accept", "toplevelvars",
+  "toplevelvar", "serverstart", "contents_server", "content_server",
+  "stubstart", "contents_stub", "content_stub", "forwardstart",
+  "contents_forward", "content_forward", "server_num_threads",
+  "server_verbosity", "server_statistics_interval",
   "server_statistics_cumulative", "server_extended_statistics",
   "server_port", "server_interface", "server_outgoing_interface",
   "server_outgoing_range", "server_outgoing_port_permit",
@@ -850,14 +856,15 @@ static const char *const yytname[] =
   "server_infra_cache_lame_size", "server_infra_cache_slabs",
   "server_target_fetch_policy", "server_harden_short_bufsize",
   "server_harden_large_queries", "server_harden_glue",
-  "server_harden_dnssec_stripped", "server_harden_referral_path",
-  "server_use_caps_for_id", "server_private_address",
-  "server_private_domain", "server_prefetch", "server_prefetch_key",
-  "server_unwanted_reply_threshold", "server_do_not_query_address",
-  "server_do_not_query_localhost", "server_access_control",
-  "server_module_conf", "server_val_override_date",
-  "server_val_sig_skew_min", "server_val_sig_skew_max",
-  "server_cache_max_ttl", "server_cache_min_ttl", "server_bogus_ttl",
+  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
+  "server_harden_referral_path", "server_use_caps_for_id",
+  "server_private_address", "server_private_domain", "server_prefetch",
+  "server_prefetch_key", "server_unwanted_reply_threshold",
+  "server_do_not_query_address", "server_do_not_query_localhost",
+  "server_access_control", "server_module_conf",
+  "server_val_override_date", "server_val_sig_skew_min",
+  "server_val_sig_skew_max", "server_cache_max_ttl",
+  "server_cache_min_ttl", "server_bogus_ttl",
   "server_val_clean_additional", "server_val_permissive_mode",
   "server_val_log_level", "server_val_nsec3_keysize_iterations",
   "server_add_holddown", "server_del_holddown", "server_keep_missing",
@@ -888,25 +895,25 @@ static const yytype_uint16 yytoknum[] =
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372
+     365,   366,   367,   368,   369,   370,   371,   372,   373
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   118,   119,   119,   120,   120,   120,   120,   120,   121,
-     122,   122,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     124,   125,   125,   126,   126,   126,   126,   127,   128,   128,
-     129,   129,   129,   130,   131,   132,   133,   134,   135,   136,
+       0,   119,   120,   120,   121,   121,   121,   121,   121,   122,
+     123,   123,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   125,   126,   126,   127,   127,   127,   127,   128,   129,
+     129,   130,   130,   130,   131,   132,   133,   134,   135,   136,
      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
@@ -916,8 +923,9 @@ static const yytype_uint8 yyr1[] =
      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,
-     226,   227,   227,   227,   227,   227,   227,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   236,   237,   238
+     227,   228,   228,   229,   229,   229,   229,   229,   229,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   238,
+     239,   240
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -933,19 +941,20 @@ 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,     2,     0,     1,     1,     1,     1,     1,     2,     0,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     2,     0,     1,     1,     1,     1,     1,     2,
+       0,     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,     2,     2,     2,     2,     2,     2,     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,     2,     2,     2,     2,     2,     2,
        3,     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,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     2
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
+       1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -953,8 +962,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     9,   100,   107,   208,   225,     3,    11,
-     102,   109,   210,   227,     4,     5,     6,     8,     7,     0,
+       2,     0,     1,     9,   101,   108,   210,   227,     3,    11,
+     103,   110,   212,   229,     4,     5,     6,     8,     7,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -963,48 +972,48 @@ static const yytype_uint8 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,    10,    12,    13,
-      69,    72,    81,    14,    20,    60,    15,    73,    74,    31,
-      53,    68,    16,    17,    18,    19,    70,    59,    85,    21,
-      22,    23,    24,    25,    61,    75,    76,    91,    47,    57,
-      48,    86,    41,    42,    43,    44,    95,    99,    96,    54,
-      26,    27,    28,    83,    29,    30,    32,    33,    35,    36,
-      34,    37,    38,    39,    45,    64,    78,    71,    79,    80,
-      97,    98,    84,    40,    62,    65,    46,    49,    87,    88,
-      63,    89,    50,    51,    52,    90,    58,    92,    93,    94,
-      55,    56,    77,    66,    67,    82,     0,     0,     0,     0,
-     101,   103,   104,   105,   106,     0,     0,     0,   108,   110,
-     111,   112,     0,     0,     0,     0,     0,     0,     0,   209,
-     211,   213,   212,   214,   215,   216,   217,     0,   226,   228,
-     114,   113,   118,   121,   119,   127,   128,   129,   130,   134,
-     135,   136,   137,   138,   155,   156,   157,   159,   160,   124,
-     161,   162,   165,   163,   164,   166,   167,   168,   178,   147,
-     148,   149,   150,   169,   181,   143,   145,   182,   187,   188,
-     189,   125,   154,   195,   196,   144,   191,   132,   120,   139,
-     179,   185,   170,     0,     0,   199,   126,   115,   131,   172,
-     116,   122,   123,   140,   141,   197,   171,   173,   174,   117,
-     200,   158,   177,   133,   146,   183,   184,   186,   190,   142,
-     194,   192,   193,   151,   153,   175,   176,   152,   201,   202,
-     203,   204,   205,   206,   207,   218,   220,   219,   221,   222,
-     223,   224,   229,   180,   198
+       0,     0,     0,     0,     0,     0,     0,     0,    10,    12,
+      13,    69,    72,    81,    14,    20,    60,    15,    73,    74,
+      31,    53,    68,    16,    17,    18,    19,    70,    59,    85,
+      21,    22,    23,    24,    25,    61,    75,    76,    91,    47,
+      57,    48,    86,    41,    42,    43,    44,    95,    99,    96,
+      54,    26,    27,    28,    83,    29,    30,    32,    33,    35,
+      36,    34,    37,    38,    39,    45,    64,   100,    78,    71,
+      79,    80,    97,    98,    84,    40,    62,    65,    46,    49,
+      87,    88,    63,    89,    50,    51,    52,    90,    58,    92,
+      93,    94,    55,    56,    77,    66,    67,    82,     0,     0,
+       0,     0,   102,   104,   105,   106,   107,     0,     0,     0,
+     109,   111,   112,   113,     0,     0,     0,     0,     0,     0,
+       0,   211,   213,   215,   214,   216,   217,   218,   219,     0,
+     228,   230,   115,   114,   119,   122,   120,   128,   129,   130,
+     131,   135,   136,   137,   138,   139,   156,   157,   158,   160,
+     161,   125,   162,   163,   166,   164,   165,   167,   168,   169,
+     180,   148,   149,   150,   151,   170,   183,   144,   146,   184,
+     189,   190,   191,   126,   155,   197,   198,   145,   193,   133,
+     121,   140,   181,   187,   171,     0,     0,   201,   127,   116,
+     132,   174,   117,   123,   124,   141,   142,   199,   173,   175,
+     176,   118,   202,   159,   179,   134,   147,   185,   186,   188,
+     192,   143,   196,   194,   195,   152,   154,   177,   178,   153,
+     172,   203,   204,   205,   206,   207,   208,   209,   220,   222,
+     221,   223,   224,   225,   226,   231,   182,   200
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     8,     9,    14,   107,    10,    15,   200,    11,
-      16,   208,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     201,   202,   203,   204,   209,   210,   211,    12,    17,   219,
-     220,   221,   222,   223,   224,   225,   226,    13,    18,   228,
-     229
+      -1,     1,     8,     9,    14,   108,    10,    15,   202,    11,
+      16,   210,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   203,   204,   205,   206,   211,   212,   213,    12,    17,
+     221,   222,   223,   224,   225,   226,   227,   228,    13,    18,
+     230,   231
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1013,16 +1022,16 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -80,    76,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -12,    40,    46,    17,   -79,    16,
-      18,    22,    23,    24,    68,    71,    72,   103,   105,   106,
-     107,   108,   109,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -12,    40,    46,    18,   -79,    16,
+      17,    22,    23,    24,    68,    71,    72,   105,   106,   107,
+     108,   109,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
@@ -1031,21 +1040,21 @@ static const yytype_int16 yypact[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   188,   189,   190,   191,
-     -80,   -80,   -80,   -80,   -80,   192,   193,   194,   -80,   -80,
-     -80,   -80,   195,   196,   197,   198,   199,   200,   201,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   202,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   190,   191,
+     192,   193,   -80,   -80,   -80,   -80,   -80,   194,   195,   196,
+     -80,   -80,   -80,   -80,   197,   198,   199,   200,   201,   202,
+     203,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   204,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   203,   204,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   205,   206,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1063,7 +1072,7 @@ static const yytype_int8 yypgoto[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80
+     -80,   -80
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1075,33 +1084,33 @@ static const yytype_uint16 yytable[] =
 {
       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,   227,   230,     0,   231,    44,
-      45,    46,   232,   233,   234,    47,    48,    49,    50,    51,
+      39,    40,    41,    42,    43,   229,   232,   233,     0,    44,
+      45,    46,   234,   235,   236,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,     2,   196,   235,   197,
-     198,   236,   237,   205,    88,    89,    90,     3,    91,    92,
-      93,   206,   207,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   212,   213,   214,   215,
-     216,   217,   218,   238,     4,   239,   240,   241,   242,   243,
-       5,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   199,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,     6,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,     7,
-     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
+      82,    83,    84,    85,    86,    87,     2,   198,   237,   199,
+     200,   238,   239,   207,    88,    89,    90,     3,    91,    92,
+      93,   208,   209,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   214,   215,   216,
+     217,   218,   219,   220,     4,   240,   241,   242,   243,   244,
+       5,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   201,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,     6,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,     7,
+     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
 };
 
 static const yytype_int8 yycheck[] =
 {
       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,   104,    10,    -1,    10,    41,
+      32,    33,    34,    35,    36,   104,    10,    10,    -1,    41,
       42,    43,    10,    10,    10,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
@@ -1109,8 +1118,8 @@ static const yytype_int8 yycheck[] =
       82,    83,    84,    85,    86,    87,     0,    37,    10,    39,
       40,    10,    10,    37,    96,    97,    98,    11,   100,   101,
      102,    45,    46,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,    89,    90,    91,    92,
-      93,    94,    95,    10,    38,    10,    10,    10,    10,    10,
+     112,   113,   114,   115,   116,   117,   118,    89,    90,    91,
+      92,    93,    94,    95,    38,    10,    10,    10,    10,    10,
       44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    99,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1120,15 +1129,15 @@ static const yytype_int8 yycheck[] =
       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
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   119,     0,    11,    38,    44,    88,   103,   120,   121,
-     124,   127,   225,   235,   122,   125,   128,   226,   236,    12,
+       0,   120,     0,    11,    38,    44,    88,   103,   121,   122,
+     125,   128,   227,   237,   123,   126,   129,   228,   238,    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,    41,    42,    43,    47,    48,    49,
@@ -1137,7 +1146,7 @@ static const yytype_uint8 yystos[] =
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    84,    85,    86,    87,    96,    97,
       98,   100,   101,   102,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   123,   130,   131,
+     111,   112,   113,   114,   115,   116,   117,   118,   124,   131,
      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
@@ -1146,10 +1155,11 @@ static const yytype_uint8 yystos[] =
      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,   215,   216,   217,    37,    39,    40,    99,
-     126,   218,   219,   220,   221,    37,    45,    46,   129,   222,
-     223,   224,    89,    90,    91,    92,    93,    94,    95,   227,
-     228,   229,   230,   231,   232,   233,   234,   104,   237,   238,
+     212,   213,   214,   215,   216,   217,   218,   219,    37,    39,
+      40,    99,   127,   220,   221,   222,   223,    37,    45,    46,
+     130,   224,   225,   226,    89,    90,    91,    92,    93,    94,
+      95,   229,   230,   231,   232,   233,   234,   235,   236,   104,
+     239,   240,    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,
@@ -1159,8 +1169,7 @@ static const yytype_uint8 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1980,7 +1989,7 @@ yyreduce:
        }
     break;
 
-  case 100:
+  case 101:
 
 /* Line 1455 of yacc.c  */
 #line 161 "util/configparser.y"
@@ -1996,7 +2005,7 @@ yyreduce:
        }
     break;
 
-  case 107:
+  case 108:
 
 /* Line 1455 of yacc.c  */
 #line 177 "util/configparser.y"
@@ -2012,7 +2021,7 @@ yyreduce:
        }
     break;
 
-  case 113:
+  case 114:
 
 /* Line 1455 of yacc.c  */
 #line 193 "util/configparser.y"
@@ -2025,7 +2034,7 @@ yyreduce:
        }
     break;
 
-  case 114:
+  case 115:
 
 /* Line 1455 of yacc.c  */
 #line 202 "util/configparser.y"
@@ -2038,7 +2047,7 @@ yyreduce:
        }
     break;
 
-  case 115:
+  case 116:
 
 /* Line 1455 of yacc.c  */
 #line 211 "util/configparser.y"
@@ -2053,7 +2062,7 @@ yyreduce:
        }
     break;
 
-  case 116:
+  case 117:
 
 /* Line 1455 of yacc.c  */
 #line 222 "util/configparser.y"
@@ -2066,7 +2075,7 @@ yyreduce:
        }
     break;
 
-  case 117:
+  case 118:
 
 /* Line 1455 of yacc.c  */
 #line 231 "util/configparser.y"
@@ -2079,7 +2088,7 @@ yyreduce:
        }
     break;
 
-  case 118:
+  case 119:
 
 /* Line 1455 of yacc.c  */
 #line 240 "util/configparser.y"
@@ -2092,7 +2101,7 @@ yyreduce:
        }
     break;
 
-  case 119:
+  case 120:
 
 /* Line 1455 of yacc.c  */
 #line 249 "util/configparser.y"
@@ -2109,7 +2118,7 @@ yyreduce:
        }
     break;
 
-  case 120:
+  case 121:
 
 /* Line 1455 of yacc.c  */
 #line 262 "util/configparser.y"
@@ -2128,7 +2137,7 @@ yyreduce:
        }
     break;
 
-  case 121:
+  case 122:
 
 /* Line 1455 of yacc.c  */
 #line 277 "util/configparser.y"
@@ -2141,7 +2150,7 @@ yyreduce:
        }
     break;
 
-  case 122:
+  case 123:
 
 /* Line 1455 of yacc.c  */
 #line 286 "util/configparser.y"
@@ -2154,7 +2163,7 @@ yyreduce:
        }
     break;
 
-  case 123:
+  case 124:
 
 /* Line 1455 of yacc.c  */
 #line 295 "util/configparser.y"
@@ -2167,7 +2176,7 @@ yyreduce:
        }
     break;
 
-  case 124:
+  case 125:
 
 /* Line 1455 of yacc.c  */
 #line 304 "util/configparser.y"
@@ -2180,7 +2189,7 @@ yyreduce:
        }
     break;
 
-  case 125:
+  case 126:
 
 /* Line 1455 of yacc.c  */
 #line 313 "util/configparser.y"
@@ -2193,7 +2202,7 @@ yyreduce:
        }
     break;
 
-  case 126:
+  case 127:
 
 /* Line 1455 of yacc.c  */
 #line 322 "util/configparser.y"
@@ -2206,7 +2215,7 @@ yyreduce:
        }
     break;
 
-  case 127:
+  case 128:
 
 /* Line 1455 of yacc.c  */
 #line 331 "util/configparser.y"
@@ -2219,7 +2228,7 @@ yyreduce:
        }
     break;
 
-  case 128:
+  case 129:
 
 /* Line 1455 of yacc.c  */
 #line 340 "util/configparser.y"
@@ -2232,7 +2241,7 @@ yyreduce:
        }
     break;
 
-  case 129:
+  case 130:
 
 /* Line 1455 of yacc.c  */
 #line 349 "util/configparser.y"
@@ -2245,7 +2254,7 @@ yyreduce:
        }
     break;
 
-  case 130:
+  case 131:
 
 /* Line 1455 of yacc.c  */
 #line 358 "util/configparser.y"
@@ -2258,7 +2267,7 @@ yyreduce:
        }
     break;
 
-  case 131:
+  case 132:
 
 /* Line 1455 of yacc.c  */
 #line 367 "util/configparser.y"
@@ -2271,7 +2280,7 @@ yyreduce:
        }
     break;
 
-  case 132:
+  case 133:
 
 /* Line 1455 of yacc.c  */
 #line 376 "util/configparser.y"
@@ -2289,7 +2298,7 @@ yyreduce:
        }
     break;
 
-  case 133:
+  case 134:
 
 /* Line 1455 of yacc.c  */
 #line 390 "util/configparser.y"
@@ -2302,7 +2311,7 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 
 /* Line 1455 of yacc.c  */
 #line 399 "util/configparser.y"
@@ -2313,7 +2322,7 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 136:
 
 /* Line 1455 of yacc.c  */
 #line 406 "util/configparser.y"
@@ -2324,7 +2333,7 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 137:
 
 /* Line 1455 of yacc.c  */
 #line 413 "util/configparser.y"
@@ -2335,7 +2344,7 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 138:
 
 /* Line 1455 of yacc.c  */
 #line 420 "util/configparser.y"
@@ -2347,7 +2356,7 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 139:
 
 /* Line 1455 of yacc.c  */
 #line 428 "util/configparser.y"
@@ -2358,7 +2367,7 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 140:
 
 /* Line 1455 of yacc.c  */
 #line 435 "util/configparser.y"
@@ -2369,7 +2378,7 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 141:
 
 /* Line 1455 of yacc.c  */
 #line 442 "util/configparser.y"
@@ -2380,7 +2389,7 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 
 /* Line 1455 of yacc.c  */
 #line 449 "util/configparser.y"
@@ -2391,7 +2400,7 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 
 /* Line 1455 of yacc.c  */
 #line 456 "util/configparser.y"
@@ -2403,7 +2412,7 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 
 /* Line 1455 of yacc.c  */
 #line 464 "util/configparser.y"
@@ -2415,7 +2424,7 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 
 /* Line 1455 of yacc.c  */
 #line 472 "util/configparser.y"
@@ -2427,7 +2436,7 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 
 /* Line 1455 of yacc.c  */
 #line 480 "util/configparser.y"
@@ -2438,7 +2447,7 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 
 /* Line 1455 of yacc.c  */
 #line 487 "util/configparser.y"
@@ -2449,7 +2458,7 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 
 /* Line 1455 of yacc.c  */
 #line 494 "util/configparser.y"
@@ -2462,7 +2471,7 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 
 /* Line 1455 of yacc.c  */
 #line 503 "util/configparser.y"
@@ -2475,7 +2484,7 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 
 /* Line 1455 of yacc.c  */
 #line 512 "util/configparser.y"
@@ -2486,7 +2495,7 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 
 /* Line 1455 of yacc.c  */
 #line 519 "util/configparser.y"
@@ -2497,7 +2506,7 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 152:
 
 /* Line 1455 of yacc.c  */
 #line 526 "util/configparser.y"
@@ -2509,7 +2518,7 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 153:
 
 /* Line 1455 of yacc.c  */
 #line 534 "util/configparser.y"
@@ -2521,7 +2530,7 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 154:
 
 /* Line 1455 of yacc.c  */
 #line 542 "util/configparser.y"
@@ -2538,7 +2547,7 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 155:
 
 /* Line 1455 of yacc.c  */
 #line 555 "util/configparser.y"
@@ -2553,7 +2562,7 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 156:
 
 /* Line 1455 of yacc.c  */
 #line 566 "util/configparser.y"
@@ -2565,7 +2574,7 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 157:
 
 /* Line 1455 of yacc.c  */
 #line 574 "util/configparser.y"
@@ -2582,7 +2591,7 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 158:
 
 /* Line 1455 of yacc.c  */
 #line 587 "util/configparser.y"
@@ -2595,7 +2604,7 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 159:
 
 /* Line 1455 of yacc.c  */
 #line 596 "util/configparser.y"
@@ -2608,7 +2617,7 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 160:
 
 /* Line 1455 of yacc.c  */
 #line 605 "util/configparser.y"
@@ -2620,7 +2629,7 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 161:
 
 /* Line 1455 of yacc.c  */
 #line 613 "util/configparser.y"
@@ -2637,7 +2646,7 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 162:
 
 /* Line 1455 of yacc.c  */
 #line 626 "util/configparser.y"
@@ -2650,7 +2659,7 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 163:
 
 /* Line 1455 of yacc.c  */
 #line 635 "util/configparser.y"
@@ -2663,7 +2672,7 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 164:
 
 /* Line 1455 of yacc.c  */
 #line 644 "util/configparser.y"
@@ -2676,7 +2685,7 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 165:
 
 /* Line 1455 of yacc.c  */
 #line 653 "util/configparser.y"
@@ -2689,7 +2698,7 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 166:
 
 /* Line 1455 of yacc.c  */
 #line 662 "util/configparser.y"
@@ -2706,7 +2715,7 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 167:
 
 /* Line 1455 of yacc.c  */
 #line 675 "util/configparser.y"
@@ -2717,7 +2726,7 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 168:
 
 /* Line 1455 of yacc.c  */
 #line 682 "util/configparser.y"
@@ -2731,7 +2740,7 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 169:
 
 /* Line 1455 of yacc.c  */
 #line 692 "util/configparser.y"
@@ -2745,7 +2754,7 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 170:
 
 /* Line 1455 of yacc.c  */
 #line 702 "util/configparser.y"
@@ -2759,7 +2768,7 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 171:
 
 /* Line 1455 of yacc.c  */
 #line 712 "util/configparser.y"
@@ -2773,10 +2782,24 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 172:
 
 /* Line 1455 of yacc.c  */
 #line 722 "util/configparser.y"
+    {
+               OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->harden_below_nxdomain = 
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 173:
+
+/* Line 1455 of yacc.c  */
+#line 732 "util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2787,10 +2810,10 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 174:
 
 /* Line 1455 of yacc.c  */
-#line 732 "util/configparser.y"
+#line 742 "util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2801,10 +2824,10 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 175:
 
 /* Line 1455 of yacc.c  */
-#line 742 "util/configparser.y"
+#line 752 "util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2812,10 +2835,10 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 176:
 
 /* Line 1455 of yacc.c  */
-#line 749 "util/configparser.y"
+#line 759 "util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2823,10 +2846,10 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 177:
 
 /* Line 1455 of yacc.c  */
-#line 756 "util/configparser.y"
+#line 766 "util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2836,10 +2859,10 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 178:
 
 /* Line 1455 of yacc.c  */
-#line 765 "util/configparser.y"
+#line 775 "util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2849,10 +2872,10 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 179:
 
 /* Line 1455 of yacc.c  */
-#line 774 "util/configparser.y"
+#line 784 "util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2862,10 +2885,10 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 180:
 
 /* Line 1455 of yacc.c  */
-#line 783 "util/configparser.y"
+#line 793 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -2873,10 +2896,10 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 181:
 
 /* Line 1455 of yacc.c  */
-#line 790 "util/configparser.y"
+#line 800 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2887,10 +2910,10 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 182:
 
 /* Line 1455 of yacc.c  */
-#line 800 "util/configparser.y"
+#line 810 "util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -2905,10 +2928,10 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 183:
 
 /* Line 1455 of yacc.c  */
-#line 814 "util/configparser.y"
+#line 824 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2916,10 +2939,10 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 184:
 
 /* Line 1455 of yacc.c  */
-#line 821 "util/configparser.y"
+#line 831 "util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2938,10 +2961,10 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 185:
 
 /* Line 1455 of yacc.c  */
-#line 839 "util/configparser.y"
+#line 849 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2955,10 +2978,10 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 186:
 
 /* Line 1455 of yacc.c  */
-#line 852 "util/configparser.y"
+#line 862 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2972,10 +2995,10 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 187:
 
 /* Line 1455 of yacc.c  */
-#line 865 "util/configparser.y"
+#line 875 "util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2985,10 +3008,10 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 188:
 
 /* Line 1455 of yacc.c  */
-#line 874 "util/configparser.y"
+#line 884 "util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2998,10 +3021,10 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 189:
 
 /* Line 1455 of yacc.c  */
-#line 883 "util/configparser.y"
+#line 893 "util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3011,10 +3034,10 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 190:
 
 /* Line 1455 of yacc.c  */
-#line 892 "util/configparser.y"
+#line 902 "util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3025,10 +3048,10 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 191:
 
 /* Line 1455 of yacc.c  */
-#line 902 "util/configparser.y"
+#line 912 "util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3039,10 +3062,10 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 192:
 
 /* Line 1455 of yacc.c  */
-#line 912 "util/configparser.y"
+#line 922 "util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3052,10 +3075,10 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 193:
 
 /* Line 1455 of yacc.c  */
-#line 921 "util/configparser.y"
+#line 931 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3063,10 +3086,10 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 194:
 
 /* Line 1455 of yacc.c  */
-#line 928 "util/configparser.y"
+#line 938 "util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3076,10 +3099,10 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 195:
 
 /* Line 1455 of yacc.c  */
-#line 937 "util/configparser.y"
+#line 947 "util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3089,10 +3112,10 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 196:
 
 /* Line 1455 of yacc.c  */
-#line 946 "util/configparser.y"
+#line 956 "util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3102,10 +3125,10 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 
 /* Line 1455 of yacc.c  */
-#line 955 "util/configparser.y"
+#line 965 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3114,10 +3137,10 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 
 /* Line 1455 of yacc.c  */
-#line 963 "util/configparser.y"
+#line 973 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3131,10 +3154,10 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 976 "util/configparser.y"
+#line 986 "util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3143,10 +3166,10 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 984 "util/configparser.y"
+#line 994 "util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3167,10 +3190,10 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1004 "util/configparser.y"
+#line 1014 "util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3178,10 +3201,10 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1011 "util/configparser.y"
+#line 1021 "util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3197,10 +3220,10 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1026 "util/configparser.y"
+#line 1036 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -3208,10 +3231,10 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1033 "util/configparser.y"
+#line 1043 "util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3219,10 +3242,10 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1040 "util/configparser.y"
+#line 1050 "util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3230,10 +3253,10 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1047 "util/configparser.y"
+#line 1057 "util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3244,10 +3267,10 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1057 "util/configparser.y"
+#line 1067 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -3255,10 +3278,10 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1064 "util/configparser.y"
+#line 1074 "util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3266,10 +3289,10 @@ yyreduce:
        }
     break;
 
-  case 207:
+  case 209:
 
 /* Line 1455 of yacc.c  */
-#line 1071 "util/configparser.y"
+#line 1081 "util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3277,19 +3300,19 @@ yyreduce:
        }
     break;
 
-  case 208:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 1078 "util/configparser.y"
+#line 1088 "util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 218:
+  case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1089 "util/configparser.y"
+#line 1099 "util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3300,10 +3323,10 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1099 "util/configparser.y"
+#line 1109 "util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3313,10 +3336,10 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1108 "util/configparser.y"
+#line 1118 "util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3324,10 +3347,10 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1115 "util/configparser.y"
+#line 1125 "util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3335,10 +3358,10 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1122 "util/configparser.y"
+#line 1132 "util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3346,10 +3369,10 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1129 "util/configparser.y"
+#line 1139 "util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3357,10 +3380,10 @@ yyreduce:
        }
     break;
 
-  case 224:
+  case 226:
 
 /* Line 1455 of yacc.c  */
-#line 1136 "util/configparser.y"
+#line 1146 "util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3368,19 +3391,19 @@ yyreduce:
        }
     break;
 
-  case 225:
+  case 227:
 
 /* Line 1455 of yacc.c  */
-#line 1143 "util/configparser.y"
+#line 1153 "util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 229:
+  case 231:
 
 /* Line 1455 of yacc.c  */
-#line 1152 "util/configparser.y"
+#line 1162 "util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3391,7 +3414,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 3395 "util/configparser.c"
+#line 3418 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3603,7 +3626,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 1157 "util/configparser.y"
+#line 1167 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index f3c908678d82e587e6ad400b378b3369a7b107f8..fade8fd7df30ac7ea19797e5e8d2b035d093450b 100644 (file)
      VAR_EDNS_BUFFER_SIZE = 369,
      VAR_PREFETCH = 370,
      VAR_PREFETCH_KEY = 371,
-     VAR_SO_SNDBUF = 372
+     VAR_SO_SNDBUF = 372,
+     VAR_HARDEN_BELOW_NXDOMAIN = 373
    };
 #endif
 /* Tokens.  */
 #define VAR_PREFETCH 370
 #define VAR_PREFETCH_KEY 371
 #define VAR_SO_SNDBUF 372
+#define VAR_HARDEN_BELOW_NXDOMAIN 373
 
 
 
@@ -288,7 +290,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 292 "util/configparser.h"
+#line 294 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 093a107d254abbd4ae3839589fe69f37f69f97ab..abc461b26ff38a45d019af1e9e3bee49bd5f4459 100644 (file)
@@ -101,7 +101,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL
 %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN 
 %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH
-%token VAR_PREFETCH_KEY VAR_SO_SNDBUF
+%token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_HARDEN_BELOW_NXDOMAIN
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -155,7 +155,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_auto_trust_anchor_file | server_add_holddown | 
        server_del_holddown | server_keep_missing | server_so_rcvbuf |
        server_edns_buffer_size | server_prefetch | server_prefetch_key |
-       server_so_sndbuf
+       server_so_sndbuf | server_harden_below_nxdomain
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -718,6 +718,16 @@ server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG
                free($2);
        }
        ;
+server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG
+       {
+               OUTYY(("P(server_harden_below_nxdomain:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->harden_below_nxdomain = 
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG
        {
                OUTYY(("P(server_harden_referral_path:%s)\n", $2));