]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #1184: Log DNS replies. This includes the same logging
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 5 Jan 2017 11:39:54 +0000 (11:39 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 5 Jan 2017 11:39:54 +0000 (11:39 +0000)
  information that DNS queries and response code and response size,
  patch from Larissa Feng.

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

14 files changed:
daemon/worker.c
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
services/mesh.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/data/msgreply.c
util/data/msgreply.h

index 41df6cdca8f954725e043a69d5fe68cc7fc18fcc..32dd6f9efcec2263c0e27667b68a782b62d640d5 100644 (file)
@@ -1085,6 +1085,12 @@ send_reply_rc:
                dt_msg_send_client_response(&worker->dtenv, &repinfo->addr,
                        c->type, c->buffer);
 #endif
+       if(worker->env.cfg->log_replies)
+       {
+               struct timeval tv = {0, 0};
+               log_reply_info(0, &qinfo, &repinfo->addr, repinfo->addrlen,
+                       tv, 1, c->buffer);
+       }
        return rc;
 }
 
index b04aae73c36c9c83c182ab6bed3c404d95421958..152fd4995aa12414625ac3c8ee3b2692ad1b30fa 100644 (file)
@@ -1,6 +1,9 @@
 5 January 2017: Wouter
        - Fix to return formerr for queries for meta-types, to avoid
          packet amplification if this meta-type is sent on to upstream.
+       - Fix #1184: Log DNS replies. This includes the same logging
+         information that DNS queries and response code and response size,
+         patch from Larissa Feng.
 
 3 January 2017: Wouter
        - configure --enable-systemd and lets unbound use systemd sockets if
index 1c42eba2345ae5d86ffe287990da11269e41e0fa..95f13fa496ffb2af70d1cd294718437e14c885ae 100644 (file)
@@ -292,6 +292,10 @@ server:
        # print one line with time, IP, name, type, class for every query.
        # log-queries: no
 
+       # print one line per reply, with time, IP, name, type, class, rcode,
+       # timetoresolve, fromcache and responsesize.
+       # log-replies: no
+
        # the pid file. Can be an absolute path outside of chroot/work dir.
        # pidfile: "@UNBOUND_PIDFILE@"
 
index 12efc16520b058cd6e7e71ca2f94a702aa314a22..516fbdbc3fc8712d34a03a457eb016ad8694b469 100644 (file)
@@ -557,6 +557,13 @@ name, type and class.  Default is no.  Note that it takes time to print these
 lines which makes the server (significantly) slower.  Odd (nonprintable)
 characters in names are printed as '?'.
 .TP
+.B log\-replies: \fI<yes or no>
+Prints one line per reply to the log, with the log timestamp and IP address,
+name, type, class, return code, time to resolve, from cache and response size.
+Default is no.  Note that it takes time to print these
+lines which makes the server (significantly) slower.  Odd (nonprintable)
+characters in names are printed as '?'.
+.TP
 .B pidfile: \fI<filename>
 The process id is written to the file. Default is "@UNBOUND_PIDFILE@". 
 So,
index 83a01ede82af17a323b75346329cd50994d32648..fc7e20de0e57bbe7fc393767ca233aefaa1dfe6a 100644 (file)
@@ -1019,6 +1019,12 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                        query_reply.c->buffer)) == 0)
                        m->s.env->mesh->ans_nodata++;
        }
+       /* Log reply sent */
+       if(m->s.env->cfg->log_replies) {
+               log_reply_info(0, &m->s.qinfo, &r->query_reply.addr,
+                       r->query_reply.addrlen, duration, 0,
+                       r->query_reply.c->buffer);
+       }
 }
 
 void mesh_query_done(struct mesh_state* mstate)
index 50f8b3032a2e4e74bf412573309deb82fed1ccea..19b360c53b2ac889e4548a34b540f901b9bbd2ba 100644 (file)
@@ -108,6 +108,7 @@ config_create(void)
        cfg->log_identity = NULL; /* changed later with argv[0] */
        cfg->log_time_ascii = 0;
        cfg->log_queries = 0;
+       cfg->log_replies = 0;
 #ifndef USE_WINSOCK
 #  ifdef USE_MINI_EVENT
        /* select max 1024 sockets */
@@ -458,6 +459,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_NUMBER_OR_ZERO("val-log-level:", val_log_level)
        else S_YNO("val-log-squelch:", val_log_squelch)
        else S_YNO("log-queries:", log_queries)
+       else S_YNO("log-replies:", log_replies)
        else S_YNO("val-permissive-mode:", val_permissive_mode)
        else S_YNO("ignore-cd-flag:", ignore_cd)
        else S_YNO("serve-expired:", serve_expired)
@@ -736,6 +738,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_STR(opt, "directory", directory)
        else O_STR(opt, "logfile", logfile)
        else O_YNO(opt, "log-queries", log_queries)
+       else O_YNO(opt, "log-replies", log_replies)
        else O_STR(opt, "pidfile", pidfile)
        else O_YNO(opt, "hide-identity", hide_identity)
        else O_YNO(opt, "hide-version", hide_version)
index e4ed22895fb482cf7d1ab9abed7e2348357950fe..a141eb598bdd4c02f27e1be0f36a693e205f5318 100644 (file)
@@ -229,6 +229,8 @@ struct config_file {
        int log_time_ascii;
        /** log queries with one line per query */
        int log_queries;
+       /** log replies with one line per reply */
+       int log_replies;
        /** log identity to report */
        char* log_identity;
 
index 338f4919253b53d2d5e93f854c15d3b572d893b4..52fd30206d31ce196bef216825ed59a97f4453aa 100644 (file)
@@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 198
-#define YY_END_OF_BUFFER 199
+#define YY_NUM_RULES 199
+#define YY_END_OF_BUFFER 200
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,223 +387,224 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1961] =
+static yyconst flex_int16_t yy_accept[1969] =
     {   0,
-        1,    1,  180,  180,  184,  184,  188,  188,  192,  192,
-        1,    1,  199,  196,    1,  178,  178,  197,    2,  197,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      180,  181,  181,  182,  197,  184,  185,  185,  186,  197,
-      191,  188,  189,  189,  190,  197,  192,  193,  193,  194,
-      197,  195,  179,    2,  183,  197,  195,  196,    0,    1,
-        2,    2,    2,    2,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  180,    0,
-      184,    0,  191,    0,  188,  192,    0,  195,    0,    2,
-        2,  195,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  195,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  195,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,   77,
-      196,  196,  196,  196,  196,  196,    8,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,   88,  195,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  195,  196,  196,
-      196,  196,  196,   37,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  158,  196,   14,   15,  196,   18,
-       17,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  144,  196,  196,  196,  196,
-      196,  196,  196,  196,    3,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  195,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  187,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,   40,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,   41,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,   20,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,   96,  196,  187,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  112,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,   95,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,   75,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,   25,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,   38,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,   39,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,   28,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  172,  196,  196,  196,  196,  196,  196,  196,
-       32,  196,   33,  196,  196,  196,   78,  196,   79,  196,
-      196,   76,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,    7,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  151,  196,  196,  196,  196,   98,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,   29,  196,  196,  196,  196,  196,  196,
-      127,  196,  126,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       16,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       42,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       81,   80,  196,  196,  196,  196,  196,  196,  196,  196,
-      122,  196,  196,  196,  196,  196,  196,  196,  196,   89,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,   60,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       64,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,   36,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  125,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,    6,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,   26,
-      196,  196,  196,  196,  196,  196,  196,  196,  118,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  137,  196,
-      119,  196,  196,  149,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,   27,  196,  196,  196,  196,   84,
-      196,   85,  196,   83,  196,  196,  196,  196,  196,  196,
-      196,   94,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  120,  196,  196,  196,  196,  196,
-      123,  196,  148,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,   74,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,   34,  196,  196,   22,  196,  196,  196,  196,
-
-       19,  196,  103,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,   49,   51,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  159,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,   86,  196,  196,  196,  196,  196,  196,  196,
-       93,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       97,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  143,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  111,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  107,
-      196,  113,  196,  196,  196,  196,  196,   92,  196,  196,
-       70,  196,  135,  196,  196,  196,  196,  196,  150,  196,
-      196,  196,  196,  196,  196,  196,  164,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  110,
-      196,  196,  196,  196,  196,   52,   53,  196,  196,   35,
-       59,  114,  196,  128,  196,  152,  124,  196,  196,   45,
-      196,  116,  196,  196,  196,  196,  196,    9,  196,  196,
-      196,   73,  196,  196,  196,  196,  174,  196,  134,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-       99,  163,  196,  196,  196,  196,  196,  196,  196,  196,
-      145,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  115,  196,  196,
-       44,   46,  196,  196,  196,  196,  196,  196,  196,   72,
-      196,  196,  196,  196,  173,  196,  196,  196,  196,  139,
-       23,   24,  196,  196,  196,  196,  196,  196,  196,  196,
-       69,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  141,  138,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,   43,  196,  196,  196,  196,  196,
-      196,  196,  196,   13,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,   12,  196,  196,   21,  196,  196,
-      196,  177,  196,   47,  196,  147,  140,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  106,
-      105,  196,  196,  196,  196,  142,  136,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,   54,  196,  196,
-      196,  146,  196,  196,  196,  196,  196,  196,  196,  196,
-       48,  196,  196,   82,  196,  100,  102,  129,  196,  196,
-
-      196,  104,  196,  196,  153,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  160,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  130,
-      196,  196,  196,   30,  196,  196,  196,  196,    4,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      156,  196,  196,  196,  196,  196,  196,  196,  196,  162,
-      196,  196,  133,  196,  196,  196,  196,  196,  196,  196,
-      196,   57,  196,   31,  157,  196,   11,  196,  196,  196,
-      196,  196,  196,  131,   61,  196,  196,  196,  109,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  161,
-
-       90,  196,   87,  196,  196,  196,   63,   67,   62,  196,
-       55,  196,   10,  196,  196,  196,  175,  196,  196,  108,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,   68,   66,  196,   56,  196,  121,  196,
-      196,  132,  196,  196,  196,  196,  101,   50,  196,  196,
-      196,  196,  196,  196,  196,   91,   65,   58,  196,  176,
-      196,  196,  196,  155,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,   71,  196,  154,  171,  196,  196,  196,
-      196,  196,  196,    5,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  117,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  167,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  165,  196,
-      168,  169,  196,  196,  196,  196,  196,  166,  170,    0
+        1,    1,  181,  181,  185,  185,  189,  189,  193,  193,
+        1,    1,  200,  197,    1,  179,  179,  198,    2,  198,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      181,  182,  182,  183,  198,  185,  186,  186,  187,  198,
+      192,  189,  190,  190,  191,  198,  193,  194,  194,  195,
+      198,  196,  180,    2,  184,  198,  196,  197,    0,    1,
+        2,    2,    2,    2,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  181,    0,
+      185,    0,  192,    0,  189,  193,    0,  196,    0,    2,
+        2,  196,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  196,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  196,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+       77,  197,  197,  197,  197,  197,  197,    8,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,   88,  196,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  196,
+      197,  197,  197,  197,  197,   37,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  159,  197,   14,   15,
+      197,   18,   17,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  145,  197,
+      197,  197,  197,  197,  197,  197,  197,    3,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  196,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      188,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,   40,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+       41,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,   20,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,   96,  197,  188,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      112,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,   95,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   75,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,   25,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,   38,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   39,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,   28,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  173,  197,
+      197,  197,  197,  197,  197,  197,   32,  197,   33,  197,
+      197,  197,   78,  197,   79,  197,  197,   76,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,    7,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  152,
+      197,  197,  197,  197,   98,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,   29,
+      197,  197,  197,  197,  197,  197,  128,  197,  127,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   16,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   42,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   81,   80,  197,
+      197,  197,  197,  197,  197,  197,  197,  122,  197,  197,
+      197,  197,  197,  197,  197,  197,   89,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,   60,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   64,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+       36,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      125,  126,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,    6,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,   26,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  118,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  138,  197,  119,  197,
+      197,  150,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,   27,  197,  197,  197,  197,   84,  197,   85,
+      197,   83,  197,  197,  197,  197,  197,  197,  197,   94,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  120,  197,  197,  197,  197,  197,  123,  197,
+      149,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,   74,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+       34,  197,  197,   22,  197,  197,  197,  197,   19,  197,
+      103,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,   49,   51,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  160,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+       86,  197,  197,  197,  197,  197,  197,  197,   93,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,   97,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  144,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  197,  197,  111,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  107,  197,  113,
+      197,  197,  197,  197,  197,   92,  197,  197,   70,  197,
+      136,  197,  197,  197,  197,  197,  151,  197,  197,  197,
+      197,  197,  197,  197,  165,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  110,  197,  197,
+      197,  197,  197,   52,   53,  197,  197,   35,   59,  114,
+      197,  129,  197,  153,  124,  197,  197,   45,  197,  116,
+      197,  197,  197,  197,  197,    9,  197,  197,  197,   73,
+      197,  197,  197,  197,  175,  197,  135,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,   99,  164,
+      197,  197,  197,  197,  197,  197,  197,  197,  146,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  115,  197,  197,   44,   46,
+      197,  197,  197,  197,  197,  197,  197,   72,  197,  197,
+      197,  197,  174,  197,  197,  197,  197,  140,   23,   24,
+      197,  197,  197,  197,  197,  197,  197,  197,   69,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+
+      197,  142,  139,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,   43,  197,  197,  197,  197,  197,  197,  197,
+      197,   13,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,   12,  197,  197,   21,  197,  197,  197,  178,
+      197,   47,  197,  148,  141,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  106,  105,  197,
+      197,  197,  197,  143,  137,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,   54,  197,  197,  197,  147,
+      197,  197,  197,  197,  197,  197,  197,  197,   48,  197,
+
+      197,   82,  197,  100,  102,  130,  197,  197,  197,  104,
+      197,  197,  154,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  161,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  131,  197,  197,
+      197,   30,  197,  197,  197,  197,    4,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  157,  197,
+      197,  197,  197,  197,  197,  197,  197,  163,  197,  197,
+      134,  197,  197,  197,  197,  197,  197,  197,  197,   57,
+      197,   31,  158,  197,   11,  197,  197,  197,  197,  197,
+      197,  132,   61,  197,  197,  197,  109,  197,  197,  197,
+
+      197,  197,  197,  197,  197,  197,  197,  162,   90,  197,
+       87,  197,  197,  197,   63,   67,   62,  197,   55,  197,
+       10,  197,  197,  197,  176,  197,  197,  108,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,   68,   66,  197,   56,  197,  121,  197,  197,  133,
+      197,  197,  197,  197,  101,   50,  197,  197,  197,  197,
+      197,  197,  197,   91,   65,   58,  197,  177,  197,  197,
+      197,  156,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,   71,  197,  155,  172,  197,  197,  197,  197,  197,
+
+      197,    5,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  117,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  168,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  166,  197,  169,  170,
+      197,  197,  197,  197,  197,  167,  171,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -646,23 +647,23 @@ static yyconst YY_CHAR yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[1975] =
+static yyconst flex_uint16_t yy_base[1983] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 1941, 1871,   50, 3872, 3872, 3872,  129,   94,
+       87,  108, 2641, 2517,   50, 3886, 3886, 3886,  129,   94,
        70,  104,  130,   90,  109,  106,  127,  111,   84,  122,
       146,  148,   50,  170,  136,  158,  152,  180,  168,  191,
-     1674, 3872, 3872, 3872,   70, 1503, 3872, 3872, 3872,   42,
-     1423, 1366, 3872, 3872, 3872,  210, 1187, 3872, 3872, 3872,
-      141,  955, 3872,  214, 3872,  218,  140,  911,  224,  167,
+     2475, 3886, 3886, 3886,   70, 1858, 3886, 3886, 3886,   42,
+     1703, 1444, 3886, 3886, 3886,  210, 1332, 3886, 3886, 3886,
+      141, 1259, 3886,  214, 3886,  218,  140, 1188,  224,  167,
         0,  235,    0,    0,   92,  162,  164,  174,  193,  217,
       230,  219,  103,  178,  233,  225,  220,  221,  241,  243,
       244,  189,  249,  247,  256,  245,  252,  255,  254,  260,
 
       265,  268,  138,  272,  270,  271,  276,  280,  281,  287,
       273,  285,  282,  288,  289,  290,  295,  303,  300,  305,
-      297,  307,  308,  314,  317,  318,  310,  319,  665,  329,
-      592,  122,  458,  342,  373,  327,  347,  222,  351,  355,
+      297,  307,  308,  314,  317,  318,  310,  319, 1145,  329,
+      665,  122,  458,  342,  373,  327,  347,  222,  351,  355,
         0,  332,  348,  356,  350,  352,  354,  357,  341,  358,
       368,  359,  370,  379,  377,  398,  380,  366,  378,  382,
        49,  384,  386,  311,  389,  393,  376,  390,  396,  409,
@@ -684,411 +685,413 @@ static yyconst flex_uint16_t yy_base[1975] =
       692,  694,  702,  698,  700,  709,  699,  710,  711,  703,
       713,  712,  718,  720,  721,  723,  724,  725,  736,  728,
       734,  731,  741,  739,  744,  750,  748,  742,  756,  759,
-      758,  746,  760,  761,  764,  765,  770,  763,  771, 3872,
-      776,  774,  778,  779,  780,  781, 3872,  783,  782,  785,
-      792,  789,  791,  797,  809,  811,  790,  794,  810,  807,
-      808,  816,  817,  837,  819,  821,  818,  825,  823,  824,
-      827,  833,  841,  831,  835,  849,  848,  850,  852,  851,
-      854,  855,  859, 3872,  862,  874,  868,  861,  871,  875,
-      877,  878,  886,  882,  885,  887,  891,  889,  893,  900,
-
-      897,  904,  906,  913,  915,  917,  923,  898,  920,  907,
-      924,  927,  929,  930,  901,  936,  932,  934,  938,  939,
-      942,  940,  944,  945,  952,  951,  953,  961,  962,  963,
-      964,  966,  954,  969,  978,  974,  972,  976,  983,  982,
-      984,  990,  986,  994,  992,  996, 1004,  993,  997, 1007,
-     1005, 1008, 1012, 1020, 1016, 1009, 1021, 1013, 1022, 1024,
-     1025, 1029, 1027, 1032, 1030, 1034, 1035, 1042, 1038, 1039,
-     1051, 1055, 1049, 1041, 1054, 1044, 1056, 1061, 1062, 1064,
-     1072, 1073, 1065, 1074, 1066, 1076, 1079, 1080, 1084, 1082,
-     1089, 1091, 1093, 3872, 1099, 1095, 1097, 1096, 1098, 1109,
-
-     1103, 1105, 1106, 1132, 3872, 1107, 3872, 3872, 1112, 3872,
-     3872, 1117, 1113, 1114, 1120, 1130, 1155, 1128, 1124, 1127,
-     1135, 1140, 1136, 1145, 1134, 1147, 1153, 1160, 1161, 1168,
-     1150, 1164, 1171, 1172, 1175, 1177, 1165, 1178, 1181, 1183,
-     1193, 1194, 1195, 1185, 1197, 1199, 1200, 1201, 1202, 1203,
-     1211, 1204, 1208, 1217, 1214, 3872, 1215, 1219, 1220, 1221,
-     1225, 1227,  403, 1229, 3872, 1230, 1231, 1234, 1237, 1238,
-     1239, 1241, 1243, 1244, 1245, 1249, 1253, 1252, 1248, 1268,
-     1256, 1261, 1274, 1277, 1278, 1270, 1271, 1279, 1273, 1280,
-     1290, 1292, 1286, 1287, 1293, 1296, 1298, 1299, 1302, 1303,
-
-     1305, 1306, 1307, 1308, 1310, 1332, 1311, 1315, 1313, 1314,
-     1320, 1321, 1329, 1326, 1333, 1323, 1342, 1344, 1345, 1338,
-     1346, 1351, 1354, 1361, 1363, 1368, 1358, 1366, 1364, 1372,
-     1379, 1377, 1373, 1375, 1383, 1386, 1388, 3872, 1395, 1393,
-     1391, 1398, 1404, 1400, 1397, 1403, 1401, 1406, 1407, 1408,
-     1409, 1414, 1418, 1421, 1424, 3872, 1420, 1422, 1427, 1431,
-     1432, 1441, 1425, 1443, 1450, 1435, 3872, 1433, 1452, 1453,
-     1455, 1456, 1459, 1460, 1461, 1462, 1463, 1464, 1466, 1467,
-     1468, 1469, 1476, 1478, 1483, 1473, 1486, 1487, 1488, 1490,
-     1493, 1499, 1495, 1496, 3872, 1497, 1508, 1498, 1502, 1517,
-
-     1518, 1504, 1516, 1523, 1520, 1524, 1525, 1530, 1527, 1531,
-     1528, 1529, 3872, 1532,  186, 1534, 1535, 1533, 1541, 1549,
-     1552, 1555, 1542, 1558, 1559, 1546, 1543, 1563, 1565, 1566,
-     1568, 1569, 1571, 1573, 1574, 1575, 1577, 1581, 1578, 1584,
-     1586, 1590, 1591, 1593, 1595, 1597, 3872, 1598, 1601, 1603,
-     1605, 1606, 1607, 1608, 1609, 1611, 1613, 1617, 1615, 1619,
-     1625, 3872, 1627, 1626, 1629, 1633, 1636, 1635, 1643, 1644,
-     1645, 1648, 1651, 1646, 1657, 1660, 1662, 1656, 1666, 1668,
-     1670, 1672, 1673, 1658, 1680, 1683, 1681, 1650, 1688, 1684,
-     1691, 1682, 3872, 1690, 1692, 1695, 1696, 1715, 1698, 1699,
-
-     1701, 1703, 1711, 1716, 1700, 1722, 1723, 1727, 3872, 1728,
-     1719, 1729, 1733, 1730, 1736, 1737, 1739, 1741, 1743, 1744,
-     1745, 1746, 1754, 1747, 1752, 1757, 1756, 3872, 1766, 1767,
-     1768, 1775, 1771, 1759, 1772, 1777, 1774, 1779, 1781, 1787,
-     1786, 1785, 1784, 1789, 1790, 1788, 1792, 1793, 1797, 1810,
-     1795, 1798, 3872, 1801, 1824, 1812, 1814, 1813, 1816, 1831,
-     1825, 1827, 1828, 1832, 1833, 1834, 1835, 1836, 1837, 1842,
-     1840, 1843, 1848, 1846, 1849, 1844, 1845, 1865, 1852, 1866,
-     1867, 1854, 1868, 1870, 1873, 1880, 1882, 1885, 1887, 3872,
-     1890, 1879, 1881, 1892, 1893, 1894, 1901, 1903, 1895, 1904,
-
-     1905, 1906, 1908, 1910, 1914, 1911, 1912, 1917, 1918, 1919,
-     1920, 1925, 1921, 1926, 1934, 1939, 1942, 1944, 1943, 1945,
-     1949, 1951, 3872, 1935, 1959, 1960, 1963, 1950, 1952, 1966,
-     3872, 1964, 3872, 1969, 1975, 1978, 3872, 1980, 3872, 1984,
-     1971, 3872, 1985, 1989, 1977, 1981, 1986, 1991, 1993, 1995,
-     1997, 1998, 2002, 1999, 2004, 2005, 2007, 2011, 3872, 2013,
-     2010, 2017, 2019, 2022, 2014, 2023, 2024, 2025, 2030, 2035,
-     2041, 2029, 2042, 3872, 2038, 2047, 2039, 2044, 3872, 2048,
-     2053, 2051, 2055, 2056, 2065, 2061, 2064, 2071, 2057, 2067,
-     2083, 2068, 2077, 2079, 2080, 2086, 2084, 2090, 2087, 2088,
-
-     2092, 2094, 2096, 2097, 2101, 2102, 2103, 2105, 2109, 2106,
-     2107, 2108, 2111, 3872, 2113, 2119, 2120, 2123, 2125, 2128,
-     3872, 2131, 3872, 2129, 2139, 2133, 2140, 2141, 2143, 2142,
-     2147, 2149, 2153, 2163, 2150, 2155, 2160, 2165, 2164, 2169,
-     3872, 2166, 2167, 2171, 2173, 2174, 2177, 2175, 2184, 2186,
-     3872, 2192, 2188, 2194, 2200, 2197, 2198, 2207, 2201, 2208,
-     3872, 3872, 2205, 2212, 2209, 2210, 2213, 2221, 2215, 2219,
-     3872, 2226, 2223, 2229, 2230, 2234, 2236, 2238, 2227, 3872,
-     2240, 2245, 2242, 2246, 2248, 2249, 2251, 2257, 2254, 2258,
-     2259, 2263, 2264, 2269, 3872, 2272, 2271, 2274, 2275, 2278,
-
-     2279, 2281, 2282, 2284, 2285, 2286, 2290, 2292, 2300, 2296,
-     2299, 2301, 2303, 2304, 2309, 2298, 2311, 2312, 2320, 2322,
-     3872, 2328, 2313, 2332, 2314, 2330, 2333, 2340, 2336, 2326,
-     2337, 2343, 2341, 3872, 2342, 2344, 2352, 2345, 2353, 2347,
-     2358, 2359, 2363, 3872, 2364, 2369, 2366, 2370, 2374, 2372,
-     2375, 2378, 2379, 3872, 2382, 2389, 2385, 2386, 2396, 2397,
-     2400, 2401, 2394, 2388, 2390, 2402, 2407, 2411, 2412, 2415,
-     2413, 2417, 2418, 2419, 2420, 2421, 2425, 2431, 2435, 2422,
-     2427, 2432, 2444, 2446, 2454, 2455, 2437, 2448, 2456, 3872,
-     2457, 2458, 2459, 2440, 2466, 2464, 2472, 2468, 3872, 2470,
-
-     2474, 2477, 2479, 2481, 2482, 2484, 2485, 2483, 3872, 2490,
-     3872, 2493, 2487, 3872, 2494, 2498, 2500, 2502, 2503, 2504,
-     2505, 2507, 2513, 2510, 3872, 2514, 2516, 2518, 2519, 3872,
-     2530, 3872, 2517, 3872, 2522, 2525, 2536, 1246, 2540, 2542,
-     2546, 3872, 2543, 2532, 2547, 2549, 2535, 2551, 2553, 2554,
-     2538, 2555, 2557, 2559, 3872, 2562, 2569, 2560, 2568, 2574,
-     3872, 2575, 3872, 2572, 2583, 2561, 2580, 2588, 2589, 2591,
-     2592, 2593, 2600, 2597, 2598, 2599, 3872, 2601, 2603, 2605,
-     2608, 2606, 2612, 2619, 2618, 2622, 2615, 2616, 2629, 2634,
-     2626, 2630, 3872, 2636, 2638, 3872, 2637, 2639, 2640, 2644,
-
-     3872, 2645, 3872, 2646, 2647, 2648, 2654, 2656, 2657, 2665,
-     2649, 2667, 2669, 2670, 2677, 2653, 2675, 3872, 3872, 2679,
-     2680, 2682, 2684, 2686, 2687, 2693, 2691, 2700, 3872, 2690,
-     2692, 2694, 2701, 2702, 2703, 2704, 2709, 2706, 2711, 2713,
-     2712, 2714, 3872, 2722, 2719, 2723, 2724, 2725, 2727, 2728,
-     3872, 2730, 2731, 2732, 2736, 2735, 2751, 2754, 2756, 2744,
-     2757, 2761, 2763, 2765, 2758, 2767, 2768, 2772, 2774, 2769,
-     3872, 2775, 2779, 2776, 2782, 2783, 2784, 2737, 2791, 2794,
-     2785, 2787, 2789, 2797, 3872, 2798, 2799, 2800, 2805, 2811,
-     2806, 2813, 2803, 2816, 2814, 3872, 2819, 2821, 2820, 2824,
-
-     2827, 2828, 2830, 2832, 2834, 2840, 2836, 2844, 2838, 3872,
-     2841, 3872, 2846, 2851, 2858, 2856, 2854, 3872, 2860, 2859,
-     3872, 2866, 3872, 2864, 2872, 2862, 2869, 2871, 3872, 2880,
-     2873, 2883, 2885, 2886, 2888, 2889, 3872, 2891, 2893, 2899,
-     2901, 2892, 2894, 2902, 2904, 2903, 2905, 2918, 2909, 3872,
-     2911, 2917, 2924, 2920, 2929, 3872, 3872, 2921, 2925, 3872,
-     3872, 3872, 2933, 3872, 2930, 3872, 3872, 2934, 2937, 3872,
-     2941, 3872, 2943, 2944, 2942, 2946, 2947, 3872, 2950, 2949,
-     2954, 3872, 2951, 2962, 2955, 2956, 3872, 2964, 3872, 2965,
-     2972, 2966, 2976, 2978, 2983, 2985, 2967, 2975, 2986, 2988,
-
-     2989, 2990, 2991, 2992, 2995, 2997, 2998, 2999, 3003, 3004,
-     3007, 3008, 3005, 3011, 3010, 3013, 3015, 3023, 3026, 3030,
-     3872, 3872, 3017, 3027, 3033, 3034, 3035, 3036, 3039, 3040,
-     3872, 3043, 3038, 3046, 3051, 3048, 3049, 3050, 3053, 3052,
-     3060, 3066, 3062, 3070, 3065, 3072, 3073, 3872, 3074, 3075,
-     3872, 3872, 3076, 3078, 3087, 3082, 3088, 3090, 3091, 3872,
-     3092, 3098, 3100, 3101, 3872, 3104, 3105, 3109, 3111, 3872,
-     3872, 3872, 3112, 3115, 3116, 3117, 3118, 3120, 3119, 3122,
-     3872, 3121, 3127, 3128, 3131, 3135, 3140, 3141, 3142, 3149,
-     3145, 3152, 3154, 3872, 3872, 3143, 3160, 3157, 3158, 3159,
-
-     3162, 3164, 3165, 3166, 3872, 3171, 3175, 3167, 3169, 3179,
-     3181, 3183, 3186, 3872, 3173, 3176, 3187, 3194, 3189, 3191,
-     3197, 3199, 3202, 3204, 3872, 3203, 3205, 3872, 3207, 3213,
-     3214, 3872, 3215, 3872, 3220, 3872, 3872, 3217, 3221, 3224,
-     3225, 3231, 3233, 3235, 3226, 3236, 3243, 3240, 3241, 3872,
-     3872, 3247, 3248, 3249, 3256, 3872, 3872, 3252, 3258, 3254,
-     3260, 3253, 3263, 3262, 3264, 3266, 3265, 3267, 3269, 3279,
-     3272, 3281, 3282, 3285, 3287, 3289, 3290, 3872, 3292, 3294,
-     3293, 3872, 3295, 3300, 3301, 3303, 3304, 3321, 3314, 3306,
-     3872, 3308, 3318, 3872, 3307, 3872, 3872, 3872, 3323, 3324,
-
-     3322, 3872, 3329, 3335, 3872, 3338, 3333, 3326, 3345, 3341,
-     3343, 3347, 3349, 3350, 3352, 3872, 3353, 3354, 3356, 3357,
-     3359, 3358, 3360, 3361, 3366, 3368, 3364, 3378, 3379, 3872,
-     3382, 3384, 3386, 3872, 3388, 3385, 3371, 3389, 3872, 3392,
-     3395, 3396, 3400, 3402, 3397, 3403, 3404, 3407, 3410, 3411,
-     3872, 3414, 3417, 3419, 3420, 3421, 3428, 3427, 3430, 3872,
-     3432, 3433, 3872, 3435, 3436, 3439, 3438, 3447, 3449, 3451,
-     3454, 3872, 3456, 3872, 3872, 3457, 3872, 3461, 3462, 3463,
-     3464, 3466, 3467, 3872, 3872, 3469, 3471, 3474, 3872, 3468,
-     3475, 3480, 3478, 3481, 3482, 3486, 3487, 3491, 3492, 3872,
-
-     3872, 3493, 3872, 3499, 3507, 3510, 3872, 3872, 3872, 3509,
-     3872, 3511, 3872, 3517, 3501, 3518, 3872, 3521, 3522, 3872,
-     3523, 3494, 3524, 3527, 3529, 3530, 3531, 3533, 3534, 3538,
-     3539, 3540, 3546, 3872, 3872, 3550, 3872, 3552, 3872, 3553,
-     3558, 3872, 3484, 3560, 3554, 3564, 3872, 3872, 3565, 3547,
-     3566, 3567, 3570, 3573, 3571, 3872, 3872, 3872, 3574, 3872,
-     3575, 3576, 3578, 3872, 3582, 3581, 3583, 3585, 3584, 3586,
-     3590, 3588, 3598, 3595, 3607, 3610, 3612, 3613, 3599, 3601,
-     3619, 3615, 3621, 3872, 3622, 3872, 3872, 3623, 3630, 3631,
-     3627, 3632, 3628, 3872, 3634, 3633, 3636, 3638, 3635, 3639,
-
-     3650, 3640, 3656, 3653, 3660, 3661, 3643, 3668, 3670, 3664,
-     3667, 3672, 3678, 3674, 3675, 3872, 3676, 3677, 3679, 3682,
-     3683, 3680, 3687, 3689, 3699, 3692, 3694, 3702, 3704, 3705,
-     3707, 3708, 3710, 3709, 3872, 3711, 3713, 3717, 3719, 3722,
-     3720, 3724, 3725, 3730, 3733, 3732, 3735, 3737, 3872, 3741,
-     3872, 3872, 3742, 3745, 3748, 3750, 3752, 3872, 3872, 3872,
-     3780, 3787, 3794, 3801, 3808,   94, 3815, 3822, 3829, 3836,
-     3843, 3850, 3857, 3864
+      758,  746,  760,  761,  763,  764,  771,  769,  766,  776,
+     3886,  778,  773,  780,  781,  782,  783, 3886,  785,  784,
+      786,  796,  789,  792,  793,  811,  812,  799,  808,  809,
+      810,  814,  815,  816,  836,  818,  820,  817,  827,  823,
+      828,  840,  824,  845,  843,  847,  850,  834,  851,  856,
+      854,  857,  860,  864, 3886,  867,  874,  866,  868,  872,
+      879,  881,  877,  888,  882,  890,  884,  891,  892,  897,
+
+      903,  901,  905,  907,  915,  909,  912,  922,  900,  918,
+      919,  920,  930,  927,  928,  926,  934,  932,  935,  936,
+      940,  941,  943,  945,  951,  952,  953,  954,  955,  963,
+      964,  956,  960,  966,  967,  970,  979,  978,  977,  985,
+      986,  975,  976,  992,  989, 1000,  996,  997, 1006,  998,
+     1003, 1009, 1008, 1007, 1013, 1020, 1012, 1021, 1022, 1023,
+     1026, 1027, 1028, 1029, 1030, 1032, 1031, 1034, 1035, 1042,
+     1036, 1038, 1051, 1054, 1045, 1059, 1060, 1043, 1061, 1063,
+     1066, 1065, 1068, 1075, 1067, 1077, 1069, 1079, 1081, 1082,
+     1083, 1088, 1089, 1094, 1091, 3886, 1101, 1097, 1098, 1099,
+
+     1104, 1112, 1105, 1106, 1108, 1134, 3886, 1114, 3886, 3886,
+     1109, 3886, 3886, 1116, 1115, 1119, 1127, 1135, 1157, 1131,
+     1120, 1137, 1141, 1148, 1142, 1150, 1140, 1165, 1163, 1167,
+     1172, 1152, 1160, 1171, 1173, 1174, 1180, 1178, 1118, 1183,
+     1184, 1185, 1187, 1194, 1200, 1199, 1197, 1198, 1204, 1205,
+     1208, 1207, 1209, 1211, 1215, 1217, 1221, 1218, 3886, 1220,
+     1222, 1227, 1219, 1234, 1226,  403, 1236, 3886, 1232, 1238,
+     1240, 1242, 1244, 1245, 1246, 1248, 1249, 1250, 1251, 1256,
+     1257, 1258, 1273, 1254, 1263, 1275, 1281, 1278, 1279, 1280,
+     1283, 1284, 1285, 1294, 1287, 1291, 1293, 1301, 1295, 1303,
+
+     1299, 1308, 1297, 1310, 1304, 1311, 1313, 1316, 1337, 1318,
+     1320, 1326, 1322, 1321, 1328, 1329, 1330, 1331, 1350, 1349,
+     1351, 1333, 1355, 1339, 1357, 1359, 1367, 1373, 1374, 1376,
+     1363, 1370, 1377, 1378, 1381, 1383, 1385, 1387, 1395, 1392,
+     3886, 1402, 1398, 1390, 1403, 1410, 1407, 1404, 1352, 1408,
+     1411, 1413, 1414, 1415, 1417, 1418, 1421, 1425, 1427, 3886,
+     1426, 1428, 1429, 1436, 1437, 1443, 1440, 1450, 1452, 1453,
+     3886, 1439, 1459, 1456, 1461, 1462, 1463, 1465, 1467, 1468,
+     1469, 1470, 1472, 1473, 1475, 1479, 1482, 1485, 1489, 1474,
+     1491, 1493, 1496, 1497, 1499, 1505, 1501, 1502, 3886, 1503,
+
+     1510, 1508, 1504, 1514, 1523, 1520, 1522, 1525, 1526, 1528,
+     1529, 1534, 1531, 1537, 1532, 1533, 3886, 1536,  186, 1538,
+     1539, 1540, 1548, 1561, 1557, 1559, 1553, 1563, 1565, 1566,
+     1550, 1568, 1571, 1572, 1574, 1576, 1578, 1579, 1580, 1582,
+     1584, 1587, 1588, 1544, 1592, 1595, 1593, 1597, 1601, 1599,
+     3886, 1603, 1605, 1608, 1609, 1611, 1612, 1613, 1615, 1617,
+     1621, 1624, 1620, 1622, 1627, 3886, 1637, 1629, 1633, 1631,
+     1640, 1644, 1653, 1646, 1647, 1649, 1654, 1655, 1662, 1658,
+     1663, 1660, 1666, 1670, 1672, 1674, 1676, 1677, 1678, 1684,
+     1685, 1682, 1686, 1697, 1688, 1694, 1693, 3886, 1695, 1701,
+
+     1700, 1698, 1710, 1708, 1702, 1712, 1714, 1723, 1719, 1724,
+     1726, 1727, 1730, 3886, 1731, 1733, 1735, 1740, 1736, 1744,
+     1741, 1745, 1748, 1750, 1752, 1751, 1753, 1760, 1755, 1762,
+     1764, 1763, 3886, 1772, 1774, 1775, 1782, 1778, 1765, 1779,
+     1786, 1781, 1783, 1788, 1794, 1792, 1793, 1795, 1791, 1796,
+     1798, 1799, 1802, 1800, 1815, 1804, 1816, 3886, 1810, 1831,
+     1808, 1825, 1832, 1822, 1828, 1835, 1837, 1819, 1840, 1841,
+     1842, 1843, 1844, 1845, 1850, 1846, 1851, 1853, 1854, 1855,
+     1852, 1857, 1872, 1873, 1856, 1875, 1876, 1877, 1860, 1880,
+     1887, 1893, 1889, 1894, 3886, 1897, 1898, 1886, 1900, 1892,
+
+     1899, 1908, 1914, 1901, 1910, 1911, 1912, 1915, 1916, 1917,
+     1924, 1920, 1925, 1926, 1927, 1922, 1928, 1932, 1933, 1937,
+     1938, 1943, 1948, 1951, 1952, 1954, 1956, 1958, 3886, 1959,
+     1962, 1966, 1968, 1957, 1967, 1978, 3886, 1970, 3886, 1976,
+     1982, 1985, 3886, 1990, 3886, 1992, 1984, 3886, 1993, 1994,
+     1986, 1974, 1997, 1998, 2002, 2005, 2006, 2007, 2008, 2012,
+     2013, 2014, 2016, 2015, 3886, 2022, 2019, 2025, 2028, 2026,
+     2023, 2030, 2032, 2033, 2036, 2040, 2047, 2044, 2051, 3886,
+     2048, 2055, 2049, 2052, 3886, 2056, 2059, 2057, 2061, 2067,
+     2071, 2072, 2065, 2078, 2063, 2076, 2087, 2089, 2075, 2084,
+
+     2086, 2096, 2092, 2099, 2095, 2100, 2102, 2104, 2098, 2107,
+     2108, 2110, 2111, 2112, 2119, 2113, 2115, 2117, 2120, 3886,
+     2122, 2129, 2130, 2132, 2137, 2126, 3886, 2136, 3886, 2138,
+     2144, 2148, 2150, 2152, 2154, 2155, 2140, 2160, 2158, 2166,
+     2174, 2162, 2165, 2168, 2171, 2175, 2176, 3886, 2177, 2179,
+     2180, 2183, 2184, 2187, 2189, 2194, 2195, 3886, 2201, 2198,
+     2200, 2212, 2208, 2209, 2215, 2211, 2217, 3886, 3886, 2218,
+     2219, 2221, 2222, 2223, 2230, 2228, 2231, 3886, 2233, 2235,
+     2239, 2236, 2245, 2246, 2238, 2248, 3886, 2252, 2254, 2256,
+     2257, 2260, 2261, 2258, 2268, 2262, 2265, 2269, 2279, 2281,
+
+     2286, 3886, 2282, 2280, 2291, 2276, 2292, 2293, 2294, 2295,
+     2296, 2298, 2299, 2300, 2304, 2313, 2305, 2309, 2311, 2317,
+     2312, 2322, 2314, 2324, 2325, 2338, 2327, 3886, 2339, 2318,
+     2342, 2340, 2344, 2345, 2352, 2341, 2348, 2349, 2356, 2350,
+     3886, 2357, 2358, 2362, 2359, 2363, 2366, 2367, 2372, 2375,
+     3886, 3886, 2378, 2377, 2380, 2259, 2381, 2382, 2383, 2388,
+     2391, 3886, 2392, 2398, 2396, 2394, 2404, 2405, 2403, 2406,
+     2409, 2410, 2412, 2413, 2417, 2415, 2419, 2421, 2423, 2424,
+     2426, 2428, 2429, 2427, 2440, 2437, 2447, 2434, 2442, 2444,
+     2454, 2451, 2462, 2463, 2452, 2459, 2465, 3886, 2467, 2466,
+
+     2468, 2469, 2477, 2473, 2481, 2474, 3886, 2482, 2483, 2488,
+     2490, 2491, 2492, 2496, 2493, 2497, 3886, 2500, 3886, 2504,
+     2502, 3886, 2503, 2509, 2510, 2512, 2513, 2516, 2518, 2519,
+     2525, 2523, 3886, 2526, 2528, 2532, 2533, 3886, 2540, 3886,
+     2529, 3886, 2534, 2536, 2548, 2544, 2551, 2553, 2557, 3886,
+     2547, 2558, 2559, 2562, 2563, 2564, 2565, 2567, 2566, 2568,
+     2569, 2570, 3886, 2575, 2572, 2573, 2581, 2587, 3886, 2588,
+     3886, 2582, 2599, 2585, 2595, 2601, 2602, 2604, 2605, 2593,
+     2615, 2612, 2606, 2608, 3886, 2614, 2618, 2621, 2624, 2622,
+     2626, 2634, 2630, 2636, 2627, 2631, 2642, 2648, 2641, 2645,
+
+     3886, 2649, 2651, 3886, 2652, 2653, 2658, 2655, 3886, 2660,
+     3886, 2661, 2659, 2662, 2663, 2669, 2670, 2678, 2664, 2680,
+     2681, 2675, 2690, 2691, 2682, 3886, 3886, 2693, 2694, 2696,
+     2697, 2700, 2701, 2709, 2705, 2707, 3886, 2708, 2711, 2713,
+     2714, 2715, 2717, 2718, 2722, 2723, 2724, 2725, 2726, 2728,
+     3886, 2731, 2732, 2737, 2738, 2741, 2742, 2743, 3886, 2745,
+     2746, 2740, 2751, 2756, 2758, 2767, 2771, 2748, 2760, 2775,
+     2777, 2779, 2768, 2781, 2772, 2783, 2785, 2786, 3886, 2788,
+     2792, 2789, 2795, 2796, 2797, 2798, 2799, 2807, 2802, 2804,
+     2809, 2811, 3886, 2812, 2813, 2816, 2818, 2824, 2820, 2826,
+
+     2817, 2829, 2833, 3886, 2834, 2835, 2827, 2837, 2838, 2844,
+     2848, 2841, 2845, 2851, 2847, 2862, 2863, 3886, 2855, 3886,
+     2864, 2865, 2874, 2870, 2858, 3886, 2868, 2872, 3886, 2876,
+     3886, 2882, 2884, 2877, 2886, 2891, 3886, 2893, 2887, 2894,
+     2896, 2899, 2900, 2902, 3886, 2905, 2904, 2911, 2912, 2906,
+     2914, 2915, 2916, 2918, 2922, 2928, 2924, 3886, 2921, 2931,
+     2940, 2925, 2939, 3886, 3886, 2932, 2942, 3886, 3886, 3886,
+     2945, 3886, 2947, 3886, 3886, 2948, 2950, 3886, 2952, 3886,
+     2959, 2955, 2957, 2958, 2961, 3886, 2960, 2962, 2964, 3886,
+     2967, 2975, 2968, 2969, 3886, 2972, 3886, 2977, 2981, 2978,
+
+     2985, 2988, 2994, 2996, 2989, 2991, 2997, 2999, 3000, 3002,
+     3003, 3004, 3006, 3007, 3010, 3013, 3015, 3017, 3018, 3019,
+     3021, 3022, 3023, 3026, 3029, 3038, 3043, 3046, 3886, 3886,
+     3035, 3039, 3027, 3044, 3050, 3048, 3051, 3052, 3886, 3061,
+     3054, 3056, 3058, 3062, 3066, 3067, 3070, 3071, 3073, 3080,
+     3076, 3078, 3079, 3082, 3081, 3886, 3083, 3088, 3886, 3886,
+     3089, 3096, 3103, 3091, 3095, 3105, 3108, 3886, 3100, 3110,
+     3117, 3111, 3886, 3119, 3120, 3122, 3126, 3886, 3886, 3886,
+     3127, 3123, 3129, 3131, 3130, 3132, 3133, 3136, 3886, 3134,
+     3138, 3141, 3147, 3151, 3154, 3148, 3156, 3163, 3159, 3166,
+
+     3168, 3886, 3886, 3157, 3174, 3171, 3172, 3173, 3176, 3178,
+     3179, 3180, 3886, 3185, 3189, 3181, 3183, 3193, 3195, 3197,
+     3200, 3886, 3187, 3190, 3201, 3208, 3203, 3205, 3211, 3213,
+     3216, 3218, 3886, 3217, 3219, 3886, 3221, 3227, 3228, 3886,
+     3229, 3886, 3234, 3886, 3886, 3231, 3235, 3238, 3239, 3245,
+     3247, 3249, 3240, 3250, 3257, 3254, 3255, 3886, 3886, 3261,
+     3262, 3263, 3270, 3886, 3886, 3266, 3272, 3268, 3274, 3267,
+     3277, 3276, 3278, 3280, 3279, 3281, 3283, 3293, 3286, 3295,
+     3296, 3299, 3301, 3303, 3304, 3886, 3306, 3308, 3307, 3886,
+     3309, 3314, 3315, 3317, 3318, 3335, 3328, 3320, 3886, 3322,
+
+     3332, 3886, 3321, 3886, 3886, 3886, 3337, 3338, 3336, 3886,
+     3343, 3349, 3886, 3352, 3347, 3340, 3359, 3355, 3357, 3361,
+     3363, 3364, 3366, 3886, 3367, 3368, 3370, 3371, 3373, 3372,
+     3374, 3375, 3380, 3382, 3378, 3392, 3393, 3886, 3396, 3398,
+     3400, 3886, 3402, 3399, 3385, 3403, 3886, 3406, 3409, 3410,
+     3414, 3416, 3411, 3417, 3418, 3421, 3424, 3425, 3886, 3428,
+     3431, 3433, 3434, 3435, 3442, 3441, 3444, 3886, 3446, 3447,
+     3886, 3449, 3450, 3453, 3452, 3461, 3463, 3465, 3468, 3886,
+     3470, 3886, 3886, 3471, 3886, 3475, 3476, 3477, 3478, 3480,
+     3481, 3886, 3886, 3483, 3485, 3488, 3886, 3482, 3489, 3494,
+
+     3492, 3495, 3496, 3500, 3501, 3505, 3506, 3886, 3886, 3507,
+     3886, 3513, 3521, 3524, 3886, 3886, 3886, 3523, 3886, 3525,
+     3886, 3531, 3515, 3532, 3886, 3535, 3536, 3886, 3537, 3508,
+     3538, 3541, 3543, 3544, 3545, 3547, 3548, 3552, 3553, 3554,
+     3560, 3886, 3886, 3564, 3886, 3566, 3886, 3567, 3572, 3886,
+     3498, 3574, 3568, 3578, 3886, 3886, 3579, 3561, 3580, 3581,
+     3584, 3587, 3585, 3886, 3886, 3886, 3588, 3886, 3589, 3590,
+     3592, 3886, 3596, 3595, 3597, 3599, 3598, 3600, 3604, 3602,
+     3612, 3609, 3621, 3624, 3626, 3627, 3613, 3615, 3633, 3629,
+     3635, 3886, 3636, 3886, 3886, 3637, 3644, 3645, 3641, 3646,
+
+     3642, 3886, 3648, 3647, 3650, 3652, 3649, 3653, 3664, 3654,
+     3670, 3667, 3674, 3675, 3657, 3682, 3684, 3678, 3681, 3686,
+     3692, 3688, 3689, 3886, 3690, 3691, 3693, 3696, 3697, 3694,
+     3701, 3703, 3713, 3706, 3708, 3716, 3718, 3719, 3721, 3722,
+     3724, 3723, 3886, 3725, 3727, 3731, 3733, 3736, 3734, 3738,
+     3739, 3744, 3747, 3746, 3749, 3751, 3886, 3755, 3886, 3886,
+     3756, 3759, 3762, 3764, 3766, 3886, 3886, 3886, 3794, 3801,
+     3808, 3815, 3822,   94, 3829, 3836, 3843, 3850, 3857, 3864,
+     3871, 3878
     } ;
 
-static yyconst flex_int16_t yy_def[1975] =
+static yyconst flex_int16_t yy_def[1983] =
     {   0,
-     1960,    1, 1961, 1961, 1962, 1962, 1963, 1963, 1964, 1964,
-     1965, 1965, 1960, 1966, 1960, 1960, 1960, 1960, 1967, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1968, 1960, 1960, 1960, 1968, 1969, 1960, 1960, 1960, 1969,
-     1970, 1960, 1960, 1960, 1960, 1970, 1971, 1960, 1960, 1960,
-     1971, 1972, 1960, 1973, 1960, 1972, 1972, 1966, 1966, 1960,
-     1974, 1967, 1974, 1967, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1968, 1968,
-     1969, 1969, 1970, 1970, 1960, 1971, 1971, 1972, 1972, 1973,
-     1973, 1972, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1972, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1960, 1966, 1960, 1960, 1966, 1960,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1972, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1960, 1966, 1966, 1966, 1960, 1966, 1960, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960,
-     1966, 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-
-     1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1960,
-     1960, 1960, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1960,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960,
-     1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1960, 1966, 1966,
-     1966, 1960, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1960, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1960, 1966, 1960, 1960, 1960, 1966, 1966,
-
-     1966, 1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-     1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1960, 1966, 1960, 1960, 1966, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966, 1960, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960,
-
-     1960, 1966, 1960, 1966, 1966, 1966, 1960, 1960, 1960, 1966,
-     1960, 1966, 1960, 1966, 1966, 1966, 1960, 1966, 1966, 1960,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1960, 1966, 1960, 1966, 1960, 1966,
-     1966, 1960, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1960, 1960, 1966, 1960,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1966,
-     1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966,
-
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966,
-     1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966,
-     1960, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1960,    0,
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960
+     1968,    1, 1969, 1969, 1970, 1970, 1971, 1971, 1972, 1972,
+     1973, 1973, 1968, 1974, 1968, 1968, 1968, 1968, 1975, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1976, 1968, 1968, 1968, 1976, 1977, 1968, 1968, 1968, 1977,
+     1978, 1968, 1968, 1968, 1968, 1978, 1979, 1968, 1968, 1968,
+     1979, 1980, 1968, 1981, 1968, 1980, 1980, 1974, 1974, 1968,
+     1982, 1975, 1982, 1975, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1976, 1976,
+     1977, 1977, 1978, 1978, 1968, 1979, 1979, 1980, 1980, 1981,
+     1981, 1980, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1980, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1980, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1968, 1980, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1980,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968, 1968,
+     1974, 1968, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1980, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1980, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968, 1974,
+     1974, 1974, 1968, 1974, 1968, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968, 1974,
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1968, 1974, 1968,
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1968, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1968, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1968, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1968, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1968, 1968, 1974, 1974, 1968, 1968, 1968,
+     1974, 1968, 1974, 1968, 1968, 1974, 1974, 1968, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1968, 1974, 1968, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1968, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1968, 1968, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1968, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1968, 1974, 1974, 1974, 1968,
+     1974, 1968, 1974, 1968, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1968, 1974,
+     1974, 1974, 1974, 1968, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+
+     1974, 1968, 1974, 1968, 1968, 1968, 1974, 1974, 1974, 1968,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1974, 1968, 1974, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1974,
+     1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968,
+     1974, 1968, 1968, 1974, 1968, 1974, 1974, 1974, 1974, 1974,
+     1974, 1968, 1968, 1974, 1974, 1974, 1968, 1974, 1974, 1974,
+
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1968, 1968, 1974,
+     1968, 1974, 1974, 1974, 1968, 1968, 1968, 1974, 1968, 1974,
+     1968, 1974, 1974, 1974, 1968, 1974, 1974, 1968, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1968, 1968, 1974, 1968, 1974, 1968, 1974, 1974, 1968,
+     1974, 1974, 1974, 1974, 1968, 1968, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1968, 1968, 1968, 1974, 1968, 1974, 1974,
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1968, 1974, 1968, 1968, 1974, 1974, 1974, 1974, 1974,
+
+     1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1968, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
+     1974, 1974, 1974, 1974, 1974, 1974, 1968, 1974, 1968, 1968,
+     1974, 1974, 1974, 1974, 1974, 1968, 1968,    0, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968
     } ;
 
-static yyconst flex_uint16_t yy_nxt[3912] =
+static yyconst flex_uint16_t yy_nxt[3926] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1137,7 +1140,7 @@ static yyconst flex_uint16_t yy_nxt[3912] =
       235,   69,   69,  236,   69,   69,  241,  242,   69,  224,
        69,  260,   69,  243,  225,   69,  238,  239,   69,  226,
       240,   69,  244,  249,  227,   69,  250,  245,   69,   69,
-      228,  229,  247,  251,  248,  253,   69,  256,   69,  678,
+      228,  229,  247,  251,  248,  253,   69,  256,   69,  682,
        69,  246,   69,   69,  252,  254,  258,  259,  257,   69,
       255,   69,   69,   69,   69,   69,   69,   69,   69,  262,
        69,  264,  261,   69,   69,  266,   69,   69,  268,   69,
@@ -1154,376 +1157,377 @@ static yyconst flex_uint16_t yy_nxt[3912] =
       316,   69,   69,  312,   69,   69,   69,  321,   69,   69,
       317,  322,   69,   69,   69,  328,  324,  320,   69,  318,
        69,   69,   69,  319,  329,   69,   69,  323,   69,   69,
-      327,  325,  326,   69,  330,  331,   69,  334,  336,   69,
-
-       69,  338,  339,  332,  132,  337,  333,  340,   69,   69,
-      335,   69,  341,  342,   69,  344,  343,  347,   69,   69,
-      345,   69,  349,  346,  348,   69,   69,   69,   69,  354,
-       69,  351,   69,   69,   69,   69,  357,  356,  358,  352,
-      350,   69,   69,   69,   69,   69,   69,  364,  353,  359,
-      355,  363,   69,   69,   69,   69,  366,  360,  365,  369,
-      361,  381,  362,   69,  367,  368,  371,   69,  370,  373,
-      383,  139,   69,   69,  384,   69,  382,  130,   69,  389,
-       69,   69,  372,   69,   69,  374,  375,   69,  387,   69,
-       69,  386,  385,   69,  393,  376,  392,  377,  378,  379,
-
-      388,  390,  380,  395,   69,  394,   69,  391,   69,  399,
-       69,   69,   69,  396,   69,   69,  397,  401,  402,  403,
-      398,   69,   69,   69,   69,   69,  400,  408,  409,  407,
-       69,  404,   69,   69,  410,   69,   69,   69,  405,  406,
-       69,  419,  416,   69,  413,  415,   69,  412,   69,  418,
-      411,   69,  417,   69,   69,  422,   69,  414,   69,  421,
-       69,  423,   69,  424,  420,  425,  428,  426,   69,  427,
-       69,   69,   69,   69,  429,   69,   69,   69,  434,  430,
-      433,  431,   69,   69,  437,  432,   69,  435,   69,  438,
-       69,   69,   69,   69,   69,   69,  436,   69,  440,  448,
-
-      441,   69,   69,   69,   69,  443,   69,  439,  450,   69,
-      449,  447,  442,  444,  446,  445,  452,  451,  453,   69,
-       69,   69,   69,   69,  455,  459,  457,  456,   69,   69,
-       69,   69,  471,   69,  458,   69,   69,   69,  473,   69,
-      475,  454,  472,   69,  460,   69,  470,   69,  461,   69,
-      462,  468,  469,   69,  477,  463,  474,  464,  478,  479,
-       69,   69,   69,   69,   69,  465,   69,   69,  466,  483,
-      476,   69,  484,   69,  139,  467,  480,  487,  488,  481,
-       69,  489,  486,   69,  482,  485,   69,   69,  494,   69,
-       69,  491,  490,  496,   69,  493,  492,   69,   69,   69,
-
-      498,   69,  495,   69,  501,   69,  497,  504,  500,   69,
-       69,  505,   69,   69,  499,  507,   69,  508,   69,   69,
-      509,  502,  506,   69,  503,   69,  510,   69,  511,   69,
-      512,  513,   69,  520,  517,   69,   69,  514,  515,   69,
-      516,   69,   69,  521,   69,  518,   69,  519,   69,  522,
-       69,   69,   69,  524,   69,  528,   69,   69,  525,  532,
-      523,  530,  526,   69,   69,   69,   69,  139,  534,  527,
-      529,  531,  533,   69,   69,   69,   69,  535,   69,  537,
-      538,   69,  541,  540,   69,  543,   69,  545,   69,  539,
-       69,  546,  544,  542,   69,   69,   69,  550,   69,  536,
-
-      547,  552,   69,  551,   69,   69,   69,  553,   69,   69,
-      549,  555,  548,  554,  559,  556,   69,   69,  557,   69,
-       69,   69,  558,  561,   69,   69,  560,  564,   69,  563,
-      566,  565,   69,   69,   69,  568,   69,   69,  562,   69,
-      567,   69,   69,  569,   69,  573,   69,   69,  574,  579,
-       69,   69,  570,   69,   69,  571,   69,  572,  585,  575,
-      576,   69,  578,   69,  582,  577,   69,   69,   69,  580,
-      581,  583,  584,   69,   69,  587,   69,   69,   69,  590,
-      589,  588,  586,  591,   69,   69,   69,  596,   69,  592,
-      593,   69,  139,  595,   69,  594,   69,  599,  601,  600,
-
-      598,   69,  597,   69,  603,   69,  606,   69,   69,   69,
-       69,   69,  604,  608,  605,   69,  611,   69,   69,   69,
-      609,   69,  602,  612,   69,   69,   69,  607,  610,   69,
-      624,  623,   69,  625,  620,  613,   69,  626,  622,   69,
-       69,  621,   69,  614,   69,  634,   69,   69,   69,  615,
-      637,  638,   69,  616,  635,  639,  617,   69,  640,   69,
-      642,  641,   69,  618,  636,   69,  619,   69,  627,  628,
-      643,  629,   69,   69,  630,  644,   69,   69,  645,  631,
-       69,  647,  646,   69,   69,  632,  633,   69,  651,   69,
-       69,  653,  650,   69,  656,   69,  648,   69,  655,  137,
-
-      657,  658,  649,  660,  652,   69,   69,   69,  654,   69,
-      659,   69,   69,   69,   69,   69,   69,  661,  664,  662,
-       69,  665,  667,   69,  670,  668,   69,   69,  669,   69,
-      663,   69,   69,   69,  666,  674,  672,   69,  676,   69,
-      673,   69,   69,   69,  679,  671,   69,  675,  682,   69,
-       69,   69,  680,   69,  677,   69,   69,   69,   69,  688,
-       69,   69,  687,  681,   69,   69,  694,  683,   69,  684,
-      691,  686,  685,   69,  689, 1348,  690,  692,  693,  695,
-       69,  698,   69,   69,  699,   69,   69,  697,  696,   69,
-       69,   69,   69,  706,  700,  702,  704,  707,   69,   69,
-
-      711,  701,   69,  703,   69,   69,  705,  708,   69,  713,
-       69,   69,  710,  715,  139,   69,  709,   69,   69,   69,
-       69,  717,   69,   69,  728,   69,   69,   69,  712,  714,
-      716,  729,   69,   69,  720,   69,  732,  718,   69,  737,
-      730,   69,  721,  719,   69,   69,  734,  722,  733,  723,
-       69,  731,  735,  724,   69,  725,   69,   69,   69,  736,
-      726,  739,  741,   69,  742,  727,   69,  135,  746,  738,
-       69,  740,  745,   69,  747,   69,   69,  744,   69,  743,
-       69,  748,  753,  754,   69,   69,  749,   69,  750,   69,
-      755,   69,  757,  759,  758,   69,  756,  762,   69,  751,
-
-       69,  760,  764,   69,  763,   69,  752,   69,  765,   69,
-       69,  768,   69,   69,  761,   69,   69,  769,   69,   69,
-       69,   69,  766,  767,  771,  775,   69,  773,  770,  772,
-       69,  780,   69,   69,   69,  134,   69,   69,  774,   69,
-      777,  776,  779,   69,   69,   69,  787,   69,  784,  785,
-      778,  781,  782,   69,  783,   69,  788,  789,  786,  792,
-      790,  791,   69,  793,   69,   69,  794,   69,   69,  795,
-      796,   69,   69,   69,   69,   69,   69,  801,   69,   69,
-       69,   69,  797,  804,  805,   69,  806,  799,   69,  809,
-       69,  798,  803,  800,  808,   69,  802,  807,   69,   69,
-
-       69,  812,   69,  811,  810,   69,  817,   69,   69,   69,
-       69,   69,  818,  819,   69,  132,   69,  813,  816,  814,
-       69,  822,  815,  821,  824,  825,  823,  820,   69,   69,
-       69,  826,   69,  827,  828,   69,   69,   69,  832,   69,
-       69,   69,   69,   69,   69,   69,   69,   69,  841,  831,
-      830,  829,  834,   69,   69,   69,  842,  833,   69,  835,
-      838,   69,  839,  837,   69,  840,  836,   69,  845,  843,
-       69,   69,  844,  848,  849,   69,  847,   69,   69,  853,
-       69,   69,  850,   69,  846,   69,   69,   69,  858,   69,
-       69,  856,  851,   69,  859,  854,   69,  852,   69,  862,
-
-      860,  855,   69,   69,  861,   69,  857,   69,  865,   69,
-       69,  864,  867,   69,  869,   69,  863,   69,   69,   69,
-       69,   69,  870,   69,  866,   69,  874,   69,  868,   69,
-      871,   69,  875,  873,  883,  879,  872,   69,   69,   69,
-      876,   69,  880,  878,  877,   69,  882,   69,   69,  885,
-      889,  881,  884,  887,  890,   69,   69,   69,   69,  888,
-       69,  893,   69,   69,  896,  886,  909,  895,   69,   69,
-       69,  892,   69,  897,   69,  891,  894,  899,   69,  898,
-       69,  901,   69,  900,   69,   69,  130,  906,  905,  903,
-      907,  902,   69,   69,   69,   69,   69,  915,  908,  904,
-
-       69,  916,   69,   69,   69,  917,  918,   69,   69,  910,
-       69,   69,   69,   69,  911,   69,  912,  921,  913,  919,
-      914,  926,  922,   69,  924,  920,  923,   69,   69,  927,
-      925,   69,  928,  931,   69,   69,  935,  930,  933,   69,
-       69,   69,   69,  934,  937,   69,  929,  939,   69,   69,
-      932,   69,  942,   69,  940,   69,   69,   69,   69,   69,
-      936,  944,  938,  946,   69,  945,   69,  947,   69,   69,
-      949,   69,  941,  952,  953,  943,  950,  948,   69,   69,
-       69,  951,  955,   69,   69,  954,   69,   69,  959,   69,
-      957,   69,  956,   69,  963,  958,   69,   69,   69,   69,
-
-       69,   69,   69,  969,   69,   69,  960,   69,  967,   69,
-       69,  961,  964,   69,  973,  976,  962,  966,  965,  968,
-      970,  974,   69,  972,   69,   69,   69,  982,   69,  971,
-      975,  978,  977,  980,  981,  979,   69,   69,  984,   69,
-       69,  985,  983,   69,   69,   69,   69,   69,   69,   69,
-      986,  990,   69,  993,   69,   69,   69,   69,   69,  987,
-       69,   69, 1001,  989,   69,  991,   69,  996,  992, 1003,
-      988,  995,  994,  998,  997, 1000,  999,   69,   69,   69,
-       69, 1006,   69,   69, 1002,   69, 1007, 1010, 1005, 1011,
-     1009,   69,   69,   69,   69, 1015, 1004,   69, 1012,   69,
-
-     1013, 1014,   69, 1008,   69,   69,   69,   69, 1020, 1017,
-     1022, 1016, 1021,   69, 1023,   69,   69,   69,   69, 1018,
-       69, 1030,   69,   69,   69, 1019,   69, 1024, 1029,   69,
-       69,   69,   69,   69, 1038, 1025, 1026,   69,   69, 1028,
-     1960, 1039, 1031, 1032, 1027, 1035,   69,   69, 1033, 1034,
-     1041,   69, 1037, 1036,   69,   69,   69,   69, 1040, 1042,
-     1043,   69,   69,   69,   69, 1047, 1045, 1050, 1044, 1048,
-     1051,   69,   69, 1056, 1046,   69,   69, 1052,   69, 1053,
-     1054,   69, 1049,   69, 1055, 1060, 1058,   69, 1059,   69,
-       69, 1061,   69,   69, 1057, 1062,   69,   69,   69, 1063,
-
-     1064,   69, 1065,   69, 1066,   69, 1071,   69, 1069,   69,
-       69,   69, 1068, 1072,   69, 1074,   69,   69, 1067,   69,
-     1070, 1077,   69,   69, 1080,   69,   69, 1076, 1079,   69,
-     1073,   69, 1083, 1075,   69,   69,   69,   69, 1078, 1084,
-     1081,   69,   69, 1082, 1089, 1087, 1085,   69, 1091, 1093,
-       69,   69, 1090,   69,   69, 1086,   69, 1088, 1095,   69,
-       69, 1092, 1097,   69, 1094,   69, 1099,   69,   69,   69,
-     1096, 1102, 1105,   69, 1103, 1100,   69,   69, 1106,   69,
-       69, 1112, 1110,   69, 1098, 1107, 1104, 1101, 1108,   69,
-     1111,   69,   69, 1116, 1109,   69,   69, 1118,   69,   69,
-
-       69, 1117,   69, 1121,   69, 1120,   69, 1113,   69,   69,
-     1114, 1122, 1115,   69,   69,   69, 1129,   69,   69,   69,
-       69,   69, 1119,   69, 1134,   69, 1123, 1127, 1126, 1124,
-     1128,   69,   69, 1125, 1132,   69, 1135,   69, 1130, 1131,
-       69,   69, 1137,   69, 1133,   69, 1138, 1136, 1145, 1139,
-     1144,   69,   69,   69,   69,   69, 1140, 1146, 1141,   69,
-     1153,   69,   69, 1142, 1148,   69, 1143,   69, 1150, 1147,
-     1152, 1151,   69, 1149, 1154,   69,   69,   69,   69,   69,
-     1156,   69, 1155,   69, 1163,   69,   69,   69, 1167,   69,
-     1157, 1158, 1159, 1160, 1166, 1165,   69, 1162,   69, 1172,
-
-       69, 1164, 1168, 1161,   69, 1169,   69, 1175, 1170,   69,
-       69, 1174,   69,   69, 1178, 1176, 1171,   69, 1173,   69,
-       69,   69,   69, 1180,   69,   69, 1179,   69, 1187, 1181,
-     1177,   69, 1183,   69, 1184,   69, 1182, 1190,   69,   69,
-     1185,   69,   69, 1188, 1186, 1192,   69, 1193,   69, 1189,
-       69, 1194,   69, 1195,   69, 1191, 1199,   69,   69, 1196,
-       69,   69, 1197,   69, 1205, 1201,   69, 1198, 1200,   69,
-       69,   69, 1202, 1203, 1209,   69,   69, 1208, 1206, 1210,
-     1211,   69, 1204,   69,   69, 1214,   69,   69, 1207, 1212,
-       69,   69, 1213,   69,   69, 1216,   69,   69,   69, 1215,
-
-     1217, 1220,   69, 1225,   69, 1218, 1221, 1226,   69, 1219,
-       69,   69,   69,   69, 1230,   69,   69, 1224, 1223, 1222,
-     1232,   69, 1234,   69,   69,   69,   69, 1236, 1235, 1227,
-     1228, 1233,   69, 1229,   69, 1238, 1231, 1237,   69, 1240,
-       69, 1242,   69, 1239,   69,   69, 1243, 1244,   69,   69,
-     1251, 1241,   69,   69,   69,   69,   69,   69, 1249,   69,
-     1245, 1246, 1247, 1255,   69,   69, 1257, 1248, 1253, 1250,
-       69,   69, 1260, 1252, 1261,   69,   69, 1254,   69, 1258,
-     1263,   69,   69, 1256,   69, 1262,   69,   69, 1268, 1265,
-       69,   69, 1259, 1264,   69, 1266, 1272,   69,   69, 1271,
-
-       69,   69,   69, 1275, 1276, 1274,   69, 1270,   69,   69,
-     1267, 1277,   69,   69,   69, 1279, 1269, 1273, 1278,   69,
-     1280, 1281, 1283,   69,   69,   69, 1282,   69, 1286,   69,
-       69,   69,   69,   69,   69, 1290, 1293,   69, 1291,   69,
-     1287, 1284, 1292,   69,   69, 1289, 1296,   69, 1288,   69,
-     1285, 1300,   69, 1298, 1294, 1297,   69, 1301,   69, 1295,
-       69, 1302, 1304, 1307, 1299, 1303,   69,   69,   69,   69,
-       69,   69, 1306, 1312, 1309, 1305,   69, 1311,   69, 1314,
-       69, 1308,   69, 1310,   69, 1316,   69, 1317, 1318,   69,
-     1319,   69, 1315,   69,   69,   69,   69,   69, 1313,   69,
-
-     1321, 1322,   69, 1323, 1324,   69,   69, 1325, 1326, 1329,
-       69, 1327,   69, 1320,   69,   69,   69,   69, 1328,   69,
-     1336, 1334,   69, 1331, 1335,   69,   69, 1338,   69,   69,
-       69,   69, 1330, 1332,   69, 1333, 1337,   69, 1339, 1341,
-     1342, 1343,   69, 1347,   69, 1344, 1340,   69,   69, 1345,
-       69, 1346,   69, 1349,   69,   69, 1350, 1351,   69,   69,
-     1354,   69, 1352,   69, 1353,   69,   69,   69, 1356,   69,
-     1355,   69,   69,   69,   69, 1357, 1360, 1358, 1359, 1364,
-       69,   69, 1361, 1365,   69, 1367,   69,   69, 1960, 1362,
-     1366, 1363,   69, 1368, 1371,   69, 1369, 1373, 1370, 1372,
-
-       69,   69, 1374,   69,   69,   69, 1375, 1379, 1376,   69,
-       69,   69,   69,   69, 1380,   69, 1385,   69,   69, 1382,
-       69, 1386, 1377, 1381,   69, 1378, 1389,   69,   69, 1384,
-       69,   69, 1383, 1387,   69, 1390, 1391, 1393,   69, 1392,
-     1394,   69,   69, 1395, 1388, 1396,   69, 1397,   69,   69,
-       69,   69,   69, 1399, 1398, 1400,   69,   69,   69,   69,
-       69,   69, 1401, 1405, 1406,   69,   69, 1410,   69,   69,
-     1403, 1402, 1404, 1419, 1407, 1409, 1412,   69, 1411,   69,
-     1413,   69,   69, 1414, 1417, 1408, 1415,   69, 1418,   69,
-     1421,   69,   69, 1423,   69, 1416,   69, 1424,   69,   69,
-
-     1427, 1422,   69,   69,   69,   69,   69, 1420, 1428, 1431,
-     1425, 1429,   69,   69,   69,   69,   69, 1426,   69, 1434,
-     1437,   69, 1438,   69,   69,   69,   69, 1430, 1433, 1432,
-     1440,   69, 1436, 1435,   69,   69,   69,   69, 1439,   69,
-       69, 1450,   69,   69,   69, 1442, 1451,   69,   69,   69,
-     1441, 1448, 1475, 1443, 1444, 1446,   69, 1452, 1447, 1445,
-     1454, 1449, 1453,   69, 1455, 1456,   69, 1457,   69,   69,
-       69, 1458, 1460,   69, 1461,   69, 1462,   69, 1464,   69,
-       69,   69, 1459, 1466,   69, 1467,   69,   69,   69, 1463,
-     1470,   69, 1469, 1472,   69,   69,   69,   69, 1465,   69,
-
-     1468,   69, 1474,   69, 1476, 1478,   69, 1471, 1482,   69,
-       69,   69,   69, 1473, 1480,   69, 1479,   69,   69, 1477,
-     1481, 1486, 1487,   69, 1489,   69,   69, 1485,   69, 1491,
-     1483,   69,   69,   69, 1484, 1492,   69, 1488, 1494,   69,
-       69, 1490,   69, 1493,   69, 1498,   69, 1499,   69, 1496,
-       69, 1504,   69,   69, 1505, 1501,   69, 1495,   69, 1500,
-     1497, 1502, 1503,   69, 1508, 1509,   69, 1507,   69, 1510,
-       69,   69,   69, 1506,   69, 1960,   69, 1511,   69, 1517,
-     1515,   69, 1521,   69,   69,   69, 1512, 1514, 1513, 1518,
-     1516, 1522,   69, 1520, 1519,   69, 1524,   69,   69, 1523,
-
-       69,   69, 1528,   69,   69,   69,   69, 1529, 1530, 1525,
-     1531,   69, 1526,   69,   69,   69,   69,   69, 1532, 1527,
-     1536,   69, 1538,   69, 1533, 1539, 1534, 1540, 1535,   69,
-       69, 1543,   69,   69, 1542, 1537,   69,   69, 1547, 1541,
-     1544,   69,   69, 1545, 1548,   69,   69, 1546, 1551,   69,
-     1553, 1550, 1552,   69,   69,   69,   69, 1554,   69,   69,
-     1549,   69,   69,   69, 1557, 1560,   69,   69,   69, 1562,
-     1555, 1960, 1561, 1559,   69, 1565,   69,   69,   69,   69,
-     1556, 1558, 1566, 1564,   69, 1563, 1567,   69,   69, 1570,
-       69, 1573, 1568, 1569, 1571,   69, 1572,   69,   69, 1575,
-
-       69,   69,   69,   69,   69, 1574, 1581,   69, 1579,   69,
-       69,   69, 1576, 1577, 1578,   69,   69,   69, 1582,   69,
-       69, 1588,   69,   69, 1580,   69, 1589,   69, 1585,   69,
-     1592, 1584, 1593, 1587, 1594,   69, 1583, 1595,   69,   69,
-     1586, 1590,   69, 1596, 1591,   69,   69,   69,   69, 1597,
-       69,   69,   69, 1604, 1605,   69, 1601, 1598,   69, 1606,
-       69,   69,   69,   69,   69,   69, 1600, 1599, 1602, 1603,
-     1608, 1614,   69, 1615,   69, 1609, 1607,   69,   69, 1610,
-     1611, 1612,   69, 1613,   69,   69,   69,   69,   69, 1619,
-       69, 1960, 1616, 1624,   69, 1621, 1618, 1617, 1625,   69,
-
-       69, 1628,   69,   69,   69, 1620, 1622, 1629, 1623, 1626,
-       69, 1632,   69,   69, 1631, 1634,   69,   69, 1627, 1630,
-     1636,   69, 1637,   69,   69, 1638, 1633,   69,   69,   69,
-       69,   69,   69,   69,   69, 1642, 1635, 1643, 1641,   69,
-       69, 1640, 1645,   69, 1647, 1648, 1650,   69, 1646, 1639,
-     1644, 1651,   69,   69,   69,   69, 1654,   69, 1649, 1653,
-     1652,   69, 1655, 1656,   69, 1657,   69, 1659, 1658,   69,
-       69,   69,   69, 1660,   69, 1661,   69,   69,   69,   69,
-     1662,   69, 1665,   69, 1664,   69, 1667,   69,   69, 1663,
-     1666,   69, 1668,   69, 1670,   69, 1673, 1669,   69,   69,
-
-     1671,   69, 1672,   69, 1675, 1678,   69, 1674, 1676,   69,
-     1682,   69, 1680, 1681,   69,   69,   69,   69, 1677,   69,
-     1679, 1684, 1683, 1687, 1685,   69,   69,   69, 1690,   69,
-     1686, 1691,   69,   69, 1693, 1694,   69,   69,   69, 1688,
-     1695, 1689, 1696,   69, 1697,   69, 1698,   69,   69, 1692,
-     1701, 1702,   69,   69, 1704,   69, 1699, 1703, 1705,   69,
-       69,   69, 1700, 1708,   69,   69,   69, 1707,   69, 1709,
-       69, 1712,   69, 1716,   69,   69,   69,   69,   69,   69,
-     1720,   69, 1721, 1706,   69, 1714, 1718, 1710, 1711, 1715,
-     1713,   69, 1722,   69,   69, 1717, 1719,   69, 1724,   69,
-
-     1723,   69,   69, 1730,   69,   69,   69,   69, 1727, 1731,
-     1732, 1734,   69,   69, 1725,   69,   69, 1735,   69,   69,
-       69, 1728, 1729, 1726, 1736, 1733,   69, 1741, 1738, 1742,
-       69, 1737, 1739,   69,   69,   69,   69, 1746,   69, 1740,
-     1745,   69, 1743, 1747, 1744,   69, 1748,   69, 1749, 1751,
-       69, 1750, 1754,   69, 1752,   69, 1758,   69, 1753,   69,
-     1756,   69,   69, 1760,   69,   69,   69, 1763,   69,   69,
-       69,   69,   69,   69, 1755, 1765,   69, 1757,   69, 1766,
-       69, 1762, 1764,   69, 1761, 1770, 1769, 1759, 1767, 1772,
-       69,   69, 1768, 1774,   69, 1775,   69,   69,   69, 1777,
-
-       69,   69, 1771, 1776,   69, 1781, 1779,   69,   69,   69,
-     1773, 1784,   69, 1785,   69,   69,   69, 1778, 1789,   69,
-     1780, 1782,   69,   69, 1791, 1790,   69, 1787, 1786,   69,
-     1783,   69,   69,   69, 1794, 1797, 1788, 1795, 1792,   69,
-       69, 1800,   69, 1801,   69,   69, 1803,   69,   69, 1793,
-       69,   69, 1796, 1804, 1960, 1806, 1798, 1799, 1807,   69,
-     1808,   69, 1809,   69, 1802, 1805,   69, 1811,   69,   69,
-     1812, 1810, 1813,   69,   69,   69,   69, 1817,   69,   69,
-       69,   69, 1820,   69, 1818, 1816,   69,   69, 1814, 1819,
-       69, 1821,   69,   69,   69, 1815,   69, 1824,   69,   69,
-
-     1822, 1826, 1825,   69,   69,   69,   69, 1823, 1861, 1832,
-     1834,   69, 1827,   69, 1828, 1845, 1829, 1830, 1835,   69,
-     1837,   69,   69,   69, 1831, 1833, 1836, 1838, 1839,   69,
-       69, 1840, 1842,   69,   69,   69,   69, 1846, 1847,   69,
-     1848,   69,   69,   69, 1841,   69,   69, 1849, 1960, 1843,
-       69,   69,   69, 1844, 1866, 1853, 1854, 1856,   69,   69,
-     1851, 1857,   69, 1858,   69,   69,   69, 1852, 1850, 1860,
-       69, 1855,   69, 1862, 1859, 1864,   69,   69,   69,   69,
-     1865, 1863,   69,   69, 1868,   69,   69,   69,   69, 1872,
-       69, 1873, 1867,   69,   69,   69,   69,   69,   69, 1871,
-
-       69, 1869,   69, 1870, 1875, 1876, 1877,   69, 1874, 1884,
-       69,   69, 1880,   69, 1878, 1879, 1885, 1882, 1886,   69,
-     1883, 1887,   69, 1881,   69,   69, 1892,   69, 1891, 1888,
-     1889,   69, 1894,   69,   69,   69, 1890, 1897, 1898,   69,
-       69, 1893,   69,   69,   69,   69,   69,   69,   69, 1895,
-       69,   69,   69, 1899, 1896,   69, 1907, 1900, 1960, 1901,
-     1902, 1904,   69, 1905, 1903,   69, 1906, 1908,   69, 1910,
-     1911, 1909,   69,   69, 1914, 1915,   69, 1912, 1913,   69,
-       69, 1916,   69, 1917,   69, 1920,   69,   69,   69,   69,
-       69,   69,   69, 1923,   69,   69, 1927, 1928, 1918,   69,
-
-     1922,   69, 1930, 1919,   69, 1921,   69, 1926, 1924, 1932,
-     1925,   69, 1931, 1933,   69, 1935,   69,   69, 1929,   69,
-       69,   69,   69,   69, 1936,   69, 1937, 1939, 1941,   69,
-     1942,   69,   69, 1934,   69, 1945,   69,   69, 1948, 1938,
-     1940, 1949,   69, 1951,   69,   69, 1952,   69, 1943,   69,
-     1944, 1946, 1950,   69,   69, 1947, 1953,   69, 1954, 1955,
-       69, 1958,   69, 1959,   69, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960, 1960, 1960, 1956, 1960, 1960, 1957,
-       41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
-       46,   46,   46,   46,   51,   51,   51,   51,   51,   51,
-
-       51,   57,   57,   57,   57,   57,   57,   57,   62,   62,
-       62,   62,   62,   62,   62,   72,   72, 1960,   72,   72,
-       72,   72,  129,  129, 1960, 1960, 1960,  129,  129,  131,
-      131, 1960, 1960,  131, 1960,  131,  133, 1960, 1960, 1960,
-     1960, 1960,  133,  136,  136, 1960, 1960, 1960,  136,  136,
-      138, 1960, 1960, 1960, 1960, 1960,  138,  140,  140, 1960,
-      140,  140,  140,  140,   73,   73, 1960,   73,   73,   73,
-       73,   13, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960
+      327,  325,  326,   69,  330,  331,   69,  335,  337,   69,
+
+       69,  339,  340,  332,  333,  338,  334,  341,   69,   69,
+      336,   69,  342,  343,   69,  345,  344,  348,   69,   69,
+      346,   69,  350,  347,  349,   69,   69,   69,   69,  355,
+       69,  352,   69,   69,   69,   69,  358,  357,  359,  353,
+      351,   69,   69,   69,   69,   69,   69,  365,  354,  360,
+      356,  364,   69,   69,   69,   69,  367,  361,  366,  370,
+      362,  382,  363,   69,  368,  369,  372,   69,  371,  374,
+      384,  139,   69,   69,  385,   69,  383,  132,   69,  390,
+       69,   69,  373,   69,   69,  375,  376,   69,  388,   69,
+       69,  387,  386,   69,  394,  377,  393,  378,  379,  380,
+
+      389,  391,  381,  396,   69,  395,   69,  392,   69,  400,
+       69,   69,   69,  397,   69,   69,  398,  402,  403,  404,
+      399,   69,   69,   69,   69,   69,  401,  409,  410,  408,
+       69,  405,   69,   69,  411,   69,   69,   69,  406,  407,
+       69,  420,  417,   69,  414,  416,   69,  413,   69,  419,
+      412,   69,  418,   69,   69,  423,   69,  415,   69,  422,
+       69,  424,   69,  425,  421,  426,  429,  427,   69,  428,
+       69,   69,   69,   69,  430,   69,   69,  432,   69,  431,
+      435,   69,  433,   69,  436,   69,  437,  434,   69,  439,
+       69,  440,   69,   69,   69,   69,   69,   69,   69,  438,
+
+      442,   69,  443,  450,   69,   69,  441,  445,   69,  452,
+      451,   69,  449,  453,  444,  446,  448,  447,  454,  455,
+       69,   69,   69,   69,   69,  459,   69,   69,   69,   69,
+       69,  461,   69,  457,  473,   69,   69,  460,  475,   69,
+       69,  458,  456,  462,  474,  472,   69,  463,   69,  464,
+      470,  471,   69,  477,  465,   69,  466,   69,  479,   69,
+      476,  478,   69,   69,  467,  483,   69,  468,   69,   69,
+      480,  481,   69,  485,  469,  486,   69,  482,   69,  139,
+       69,  491,  489,  490,   69,  484,   69,  488,  487,   69,
+      492,   69,  496,   69,   69,  498,   69,  494,  493,  495,
+
+       69,  497,   69,   69,   69,  500,  499,  503,  502,   69,
+      506,  501,   69,   69,  507,   69,  509,   69,  510,   69,
+      512,   69,  511,  513,   69,  504,  508,   69,  505,  514,
+       69,   69,   69,  515,   69,  516,  518,  519,   69,   69,
+       69,  523,   69,  520,   69,  521,   69,   69,   69,  524,
+      517,  526,   69,   69,  530,   69,  527,   69,  522,  534,
+      528,  525,  532,   69,   69,   69,   69,   69,   69,  536,
+      529,  537,   69,  531,  535,   69,   69,  533,   69,   69,
+      539,  540,   69,  543,  541,  542,  546,   69,   69,   69,
+       69,   69,  548,  538,  545,  544,  547,   69,   69,  553,
+
+      549,   69,  552,  550,   69,  551,  554,  555,   69,   69,
+       69,  556,   69,  558,  557,   69,  562,  559,   69,   69,
+       69,   69,  564,  560,   69,   69,  569,  567,  561,  563,
+      566,  568,   69,   69,   69,   69,  571,  565,   69,   69,
+       69,   69,   69,   69,   69,  576,   69,   69,   69,  582,
+       69,  577,  570,  572,   69,   69,  573,   69,  574,  578,
+      575,  579,  581,   69,  585,  580,   69,  583,  587,  584,
+      586,   69,   69,   69,  590,   69,  588,   69,   69,   69,
+       69,   69,  592,  593,  594,  595,  591,   69,  589,   69,
+      599,   69,  596,   69,  139,   69,  598,  597,  603,  602,
+
+       69,   69,  601,   69,  604,  600,   69,  606,  609,   69,
+       69,   69,  608,   69,  611,  607,   69,   69,   69,  614,
+       69,   69,  605,  612,   69,  615,   69,   69,   69,  610,
+       69,   69,   69,  626,  613,  627,  616,  625,  624,   69,
+      628,  623,  629,   69,  656,  617,   69,   69,  637,   69,
+      638,  618,   69,   69,   69,  619,  640,  130,  620,  641,
+       69,  642,   69,  643,   69,  621,  649,  644,  622,   69,
+      630,  631,   69,  632,  639,   69,  633,   69,  645,   69,
+      646,  634,  647,   69,   69,   69,   69,  635,  636,  648,
+       69,  650,   69,  654,  653,   69,   69,   69,  660,   69,
+
+       69,  661,  659,  651,  652,  655,   69,  662,  658,   69,
+       69,   69,   69,  657,  663,  664,   69,   69,  665,   69,
+       69,   69,  671,   69,  666,  668,  669,   69,  674,   69,
+       69,   69,   69,   69,   69,  667,  672,  673,   69,   69,
+      670,  676,  678,  677,   69,  679,   69,  680,   69,  675,
+       69,  683,   69,  681,   69,  686,   69,   69,   69,  684,
+       69,   69,   69,   69,  692,  685,   69,  691,   69,   69,
+       69,  139,  695,  687,  688,   69,  698,  690,  689,  693,
+      696,  694,  702,  697,  699,   69,  700,   69,  703,  701,
+       69,   69,   69,   69,  704,   69,   69,   69,  710,   69,
+
+      708,  711,  712,   69,  706,   69,   69,   69,  715,   69,
+      705,   69,  707,   69,  717,   69,   69,  709,  714,  719,
+      139,  713,   69,   69,  720,   69,  721,  716,   69,  718,
+       69,  732,   69,   69,   69,  722,  733,  736,   69,  724,
+       69,   69,   69,   69,  137,   69,  738,  723,  725,   69,
+      745,   69,  726,  734,  727,  737,  739,  740,  728,  735,
+      729,   69,   69,   69,   69,  730,  741,   69,  743,   69,
+      731,   69,  747,  775,  750,   69,  742,  749,  744,   69,
+      758,  746,   69,  748,  751,   69,   69,  752,   69,   69,
+       69,  761,  753,   69,  754,   69,  759,   69,  762,   69,
+
+      757,  760,   69,  763,   69,  755,  766,   69,  767,  768,
+       69,  764,  756,  769,   69,   69,   69,  772,  765,   69,
+       69,  770,   69,   69,  773,   69,   69,   69,  771,   69,
+       69,  779,  777,   69,  785,  774,  776,   69,   69,   69,
+       69,   69,  783,  781,  778,  135,  784,  780,   69,   69,
+      782,   69,   69,  789,  790,   69,  788,  786,  787,  794,
+      791,  792,   69,  793,   69,   69,  797,  796,   69,  799,
+      798,   69,  800,   69,   69,   69,  801,   69,  795,   69,
+       69,   69,   69,  806,   69,   69,   69,   69,  802,  809,
+      810,   69,  804,  811,   69,  803,  814,   69,  808,  805,
+
+      813,   69,  807,   69,  816,   69,  817,  812,   69,   69,
+      815,   69,  822,   69,   69,   69,   69,   69,  823,  824,
+       69,  829,   69,  818,  821,  826,   69,  819,  828,  820,
+      830,  827,   69,  825,   69,   69,  833,   69,   69,  832,
+       69,   69,  837,   69,   69,   69,   69,  831,   69,   69,
+       69,   69,   69,  836,  835,  846,   69,  834,  839,  867,
+       69,  838,   69,  840,  843,   69,  844,  842,  847,   69,
+      841,   69,  845,   69,  848,   69,  849,   69,   69,  850,
+       69,  854,  852,   69,   69,  858,   69,  855,   69,  851,
+       69,   69,   69,  853,   69,  863,   69,  861,  856,   69,
+
+       69,  864,  859,  857,   69,   69,  865,   69,  860,   69,
+      870,   69,  862,   69,  866,   69,  869,   69,  872,  874,
+       69,   69,  868,   69,   69,   69,  875,   69,  871,   69,
+      873,  879,   69,   69,   69,  876,   69,  880,  878,   69,
+      877,   69,  884,   69,  888,   69,  881,  885,  887,   69,
+      882,  883,   69,  890,  886,  889,   69,  892,   69,   69,
+      894,   69,  898,  891,  895,   69,   69,   69,  893,  901,
+       69,  902,   69,  897,   69,   69,  900,  896,   69,  899,
+      903,  904,   69,  905,   69,  907,   69,  906,   69,   69,
+       69,  912,  913,  909,   69,  908,   69,   69,   69,  914,
+
+       69,  921,  915,  910,  922,   69,   69,   69,  911,   69,
+       69,  924,   69,   69,   69,  134,  923,  928,  916,  927,
+       69,  929,   69,  917,   69,  918,   69,  919,  925,  920,
+      926,   69,  932,  931,  930,   69,   69,  937,   69,   69,
+      933,  939,   69,   69,  934,   69,  940,   69,   69,  935,
+      941,  943,   69,   69,  938,  945,   69,   69,  946,  948,
+       69,  936,   69,   69,   69,   69,  942,   69,  944,  950,
+      952,  951,   69,  953,   69,   69,   69,   69,  947,  958,
+      955,  959,  949,  956,   69,  954,   69,   69,  957,  961,
+       69,   69,  960,   69,   69,   69,  963,  965,   69,  962,
+
+       69,  969,  964,   69,   69,   69,   69,   69,   69,  975,
+       69,   69,   69,  966,   69,  967,   69,  979,  970,  973,
+       69,  974,   69,  968,  971,  972,  980,   69,   69,  986,
+      976,   69,  978,  982,   69,  990,  977,   69,  984,  981,
+       69,  983,  985,   69,   69,  987,  988,   69,  989,   69,
+      993,  991,   69,   69,   69,   69,   69,   69,   69,  996,
+      992,  999,   69,   69,   69,   69,   69,   69,   69,   69,
+      132,  995,   69,  997, 1007, 1002,  998, 1001,  994, 1003,
+     1000, 1004, 1005, 1006,   69,   69, 1010,   69,   69,   69,
+     1009, 1008,   69, 1014, 1016, 1013, 1011, 1015,   69,   69,
+
+     1017,   69, 1018, 1012,   69,   69,   69, 1019, 1020,   69,
+       69,   69,   69,   69, 1021, 1026, 1022, 1023, 1024, 1027,
+       69, 1028,   69,   69,   69, 1029,   69,   69,   69,   69,
+     1025, 1037,   69, 1030,   69, 1036,   69,   69,   69,   69,
+       69, 1031, 1032, 1033,   69,   69, 1045, 1035, 1042,   69,
+       69, 1038, 1046, 1034, 1048,   69, 1039, 1040, 1041, 1044,
+       69, 1043, 1047,   69,   69, 1049,   69, 1050,   69,   69,
+       69,   69, 1054, 1058,   69, 1052, 1055, 1051,   69,   69,
+       69, 1053,   69, 1059, 1060, 1063,   69, 1061,   69, 1056,
+       69, 1057, 1067, 1065,   69, 1066,   69,   69,   69, 1062,
+
+     1064, 1068,   69, 1069,   69,   69,   69, 1072, 1071,   69,
+       69, 1074, 1070, 1073,   69, 1076, 1078,   69,   69,   69,
+       69, 1081, 1079, 1075,   69,   69,   69,   69,   69, 1077,
+     1084,   69, 1086, 1087,   69,   69, 1083,   69,   69, 1080,
+       69, 1090,   69, 1091,   69,   69, 1082, 1085,   69, 1088,
+     1096, 1089,   69, 1094, 1098, 1092,   69, 1097, 1100,   69,
+       69,   69, 1093,   69,   69, 1095, 1102,   69,   69,   69,
+     1104,   69, 1106,   69, 1101,   69, 1099,   69, 1112,   69,
+     1103, 1107, 1109,   69,   69, 1110, 1114,   69,   69, 1113,
+       69, 1117, 1105, 1108, 1118, 1115,   69, 1111,   69,   69,
+
+     1116,   69, 1119, 1123,   69, 1120, 1125,   69,   69, 1124,
+       69,   69,   69, 1128,   69, 1121,   69, 1127, 1122,   69,
+       69, 1129,   69,   69,   69,   69, 1136,   69, 1130,   69,
+     1126,   69,   69, 1141,   69, 1134, 1133, 1135,   69, 1131,
+     1132,   69,   69, 1139,   69, 1137, 1142, 1138,   69,   69,
+       69, 1144,   69, 1140, 1147, 1151,   69, 1143, 1145, 1152,
+       69, 1146,   69, 1148,   69, 1153,   69,   69, 1149, 1154,
+       69, 1157,   69, 1161,   69, 1150, 1156,   69,   69, 1160,
+       69, 1158, 1155,   69, 1159, 1162,   69,   69,   69,   69,
+     1164,   69,   69, 1171, 1163,   69,   69, 1166, 1165,   69,
+
+     1168,   69, 1175, 1167, 1174, 1173,   69,   69, 1180, 1170,
+       69, 1172,   69,   69, 1169, 1177, 1176, 1182, 1178, 1183,
+       69,   69, 1186,   69,   69, 1179, 1184,   69, 1181,   69,
+       69,   69, 1188,   69,   69,   69, 1187, 1195, 1189, 1191,
+       69, 1185,   69,   69, 1198,   69, 1192,   69,   69, 1190,
+       69,   69, 1193, 1201, 1194, 1200, 1196,   69,   69, 1204,
+       69, 1197, 1202, 1203,   69, 1207,   69, 1199,   69,   69,
+       69,   69,   69,   69,   69, 1213, 1209,   69, 1273, 1206,
+       69,   69, 1208, 1205, 1210, 1211, 1214, 1216,   69, 1212,
+     1217,   69,   69,   69,   69, 1215, 1218, 1219,   69, 1220,
+
+     1223, 1221, 1222,   69,   69,   69,   69,   69,   69, 1224,
+       69,   69,   69, 1228, 1225, 1233,   69,   69, 1226, 1229,
+     1234,   69, 1227,   69,   69,   69,   69, 1232, 1238,   69,
+       69, 1231, 1230, 1240,   69, 1242,   69,   69, 1235,   69,
+     1236, 1243, 1245, 1237, 1239, 1244, 1246, 1241, 1247, 1248,
+       69,   69,   69,   69,   69, 1250,   69,   69, 1251, 1252,
+       69,   69,   69, 1259,   69, 1253, 1254, 1255,   69,   69,
+       69,   69, 1256, 1263,   69,   69, 1265, 1249,   69,   69,
+     1257, 1258, 1260, 1261,   69, 1268, 1269,   69, 1271,   69,
+       69, 1262,   69,   69,   69,   69, 1276, 1264, 1266, 1270,
+
+       69, 1267, 1274,   69,   69, 1280,   69, 1272,   69, 1279,
+       69, 1283, 1284, 1282, 1285,   69,   69,   69,   69, 1278,
+     1275,   69,   69, 1286,   69,   69, 1277,   69, 1281,   69,
+     1287,   69, 1291,   69, 1294,   69,   69, 1290,   69,   69,
+       69,   69, 1288, 1289, 1298, 1292,   69, 1299, 1300,   69,
+     1295, 1301,   69, 1297,   69, 1296,   69, 1293, 1304,   69,
+     1302, 1308, 1309,   69,   69, 1303,   69, 1305, 1306, 1310,
+     1312,   69, 1315, 1311,   69,   69, 1307,   69,   69,   69,
+       69,   69, 1317, 1314, 1320,   69,   69,  130, 1322,   69,
+     1313, 1316, 1318,   69,   69,   69, 1325, 1324, 1323, 1326,
+
+       69, 1327,   69,   69,   69,   69, 1319, 1321,   69,   69,
+     1329, 1331,   69, 1330,   69,   69,   69, 1333, 1332, 1334,
+     1337,   69,   69, 1328,   69,   69, 1335, 1336,   69,   69,
+       69,   69, 1344, 1339, 1342,   69, 1343,   69,   69, 1346,
+       69,   69, 1338, 1340,   69,   69,   69, 1341,   69, 1345,
+     1347, 1351,   69, 1349, 1350, 1355,   69, 1352, 1348,   69,
+       69, 1353, 1354,   69, 1357,   69, 1360, 1358, 1359,   69,
+       69,   69, 1362, 1356,   69,   69,   69,   69,   69,   69,
+       69,   69,   69, 1363,   69,   69, 1373,   69, 1365, 1366,
+     1361, 1367, 1372,   69,   69, 1369, 1364,   69, 1375,   69,
+
+       69, 1370, 1371, 1374, 1368,   69, 1376,   69, 1378, 1377,
+     1379,   69, 1381,   69,   69, 1382,   69,   69,   69, 1383,
+       69, 1384, 1387, 1380,   69, 1386,   69,   69, 1390, 1388,
+       69, 1389, 1393,   69,   69, 1385,   69, 1394,   69,   69,
+     1968, 1397,   69,   69, 1392, 1391,   69, 1398,   69, 1395,
+     1399, 1400, 1401,   69,   69, 1402, 1403,   69, 1396, 1404,
+       69,   69, 1405,   69,   69,   69, 1407,   69, 1408, 1406,
+       69,   69,   69,   69,   69,   69,   69, 1409, 1413, 1414,
+     1418,   69,   69, 1412, 1417, 1410, 1415,   69, 1411, 1420,
+       69, 1419,   69,   69,   69, 1421, 1422, 1425, 1423, 1416,
+
+     1424, 1426,   69,   69, 1429,   69,   69, 1431,   69,   69,
+     1432, 1427,   69,   69, 1428, 1430, 1435,   69, 1437,   69,
+       69,   69, 1436,   69, 1433,   69,   69,   69, 1439,   69,
+       69, 1434, 1442, 1445,   69,   69,   69,   69,   69, 1446,
+       69, 1441, 1448,   69,   69, 1438, 1444, 1443, 1440,   69,
+       69, 1447,   69,   69,   69,   69, 1458,   69,   69, 1450,
+       69, 1459, 1451,   69, 1449, 1460, 1456, 1452,   69, 1454,
+       69, 1463,   69, 1453, 1455, 1466, 1457, 1461, 1464,   69,
+       69, 1462, 1465,   69,   69, 1467, 1468,   69, 1469,   69,
+     1470,   69, 1472,   69, 1474,   69, 1475,   69,   69, 1471,
+
+       69,   69, 1473, 1478,   69, 1477, 1480,   69,   69,   69,
+       69,   69, 1484, 1483,   69, 1482,   69, 1476, 1486,   69,
+     1479,   69, 1490,   69,   69,   69, 1481, 1485,   69,   69,
+       69, 1488,   69, 1487, 1494, 1495,   69, 1497,   69,   69,
+     1489,   69, 1499, 1493, 1491,   69,   69,   69, 1492,   69,
+       69, 1496, 1502,   69, 1500, 1498,   69,   69, 1501,   69,
+       69, 1506, 1504,   69, 1503, 1507, 1509,   69, 1508, 1512,
+       69, 1505, 1510, 1511,   69,   69,   69,   69, 1516, 1513,
+       69, 1517,   69, 1518,   69, 1515,   69, 1514,   69,   69,
+     1520, 1519, 1521, 1523,   69, 1522,   69, 1525,   69,   69,
+
+     1524, 1526, 1529,   69, 1530,   69,   69, 1532,   69, 1527,
+     1528,   69,   69, 1531,   69, 1536,   69,   69,   69, 1538,
+     1533, 1537, 1539,   69,   69, 1534,   69,   69,   69, 1540,
+       69, 1535, 1544,   69,   69, 1547,   69,   69, 1541, 1546,
+       69, 1543, 1548,   69,   69, 1552, 1542, 1551, 1550, 1549,
+     1545,   69,   69, 1553,   69, 1555, 1556,   69, 1554,   69,
+       69, 1559,   69, 1560,   69, 1558, 1561,   69, 1562,   69,
+       69,   69,   69,   69,   69, 1568,   69, 1557, 1565,   69,
+       69,   69, 1570, 1573,   69, 1563, 1567,   69, 1569,   69,
+       69, 1566, 1564,   69, 1574, 1575, 1572,   69, 1571, 1578,
+
+       69,   69, 1577,   69, 1576, 1579,   69, 1580,   69,   69,
+     1583,   69,   69, 1581,   69,   69,   69, 1589,   69,   69,
+     1587, 1582,   69, 1584, 1585,   69, 1586,   69, 1590,   69,
+       69,   69, 1596,   69,   69,   69, 1588, 1968,   69,   69,
+     1593,   69, 1597, 1600, 1595, 1592, 1601,   69, 1591, 1602,
+       69,   69, 1598, 1594, 1603,   69,   69, 1599,   69, 1604,
+       69, 1607,   69,   69,   69, 1612,   69, 1605,   69, 1606,
+       69, 1609, 1613,   69,   69, 1614, 1608, 1616,   69,   69,
+     1610, 1611,   69,   69, 1622,   69, 1615, 1623,   69, 1617,
+       69,   69,   69,   69,   69,   69, 1618, 1619, 1620, 1627,
+
+       69,   69, 1621,   69, 1629, 1625, 1624,   69,   69, 1968,
+     1626, 1632,   69, 1628, 1633,   69, 1636,   69, 1634, 1630,
+       69, 1631,   69,   69, 1637, 1635, 1639, 1638, 1640,   69,
+     1642,   69,   69, 1644,   69,   69, 1641, 1645,   69,   69,
+     1646,   69,   69,   69,   69,   69,   69, 1650,   69, 1651,
+       69, 1643, 1649,   69, 1648, 1655, 1653, 1647, 1656,   69,
+       69, 1654, 1658,   69, 1652, 1659,   69, 1660,   69,   69,
+     1662,   69, 1968, 1661, 1657,   69, 1663, 1664,   69, 1665,
+       69, 1667, 1666,   69,   69,   69,   69, 1668,   69, 1669,
+       69,   69,   69,   69, 1670,   69, 1673,   69, 1672,   69,
+
+     1675,   69,   69, 1671, 1674,   69, 1676,   69, 1678,   69,
+     1681, 1677,   69,   69, 1679,   69, 1680,   69, 1683, 1686,
+       69, 1682, 1684,   69, 1690,   69, 1688, 1689,   69,   69,
+       69,   69, 1685,   69, 1687, 1692, 1691, 1695, 1693,   69,
+       69,   69, 1698,   69, 1694, 1699,   69,   69, 1701, 1702,
+       69,   69,   69, 1696, 1703, 1697, 1704,   69, 1705,   69,
+     1706,   69,   69, 1700, 1709, 1710,   69,   69, 1712,   69,
+     1707, 1711, 1713,   69,   69,   69, 1708, 1716,   69,   69,
+       69, 1715,   69, 1717,   69, 1720,   69, 1724,   69,   69,
+       69,   69,   69,   69, 1728,   69, 1729, 1714,   69, 1722,
+
+     1726, 1718, 1719, 1723, 1721,   69, 1730,   69,   69, 1725,
+     1727,   69, 1732,   69, 1731,   69,   69, 1738,   69,   69,
+       69,   69, 1735, 1739, 1740, 1742,   69,   69, 1733,   69,
+       69, 1743,   69,   69,   69, 1736, 1737, 1734, 1744, 1741,
+       69, 1749, 1746, 1750,   69, 1745, 1747,   69,   69,   69,
+       69, 1754,   69, 1748, 1753,   69, 1751, 1755, 1752,   69,
+     1756,   69, 1757, 1759,   69, 1758, 1762,   69, 1760,   69,
+     1766,   69, 1761,   69, 1764,   69,   69, 1768,   69,   69,
+       69, 1771,   69,   69,   69,   69,   69,   69, 1763, 1773,
+       69, 1765,   69, 1774,   69, 1770, 1772,   69, 1769, 1778,
+
+     1777, 1767, 1775, 1780,   69,   69, 1776, 1782,   69, 1783,
+       69,   69,   69, 1785,   69,   69, 1779, 1784,   69, 1789,
+     1787,   69,   69,   69, 1781, 1792,   69, 1793,   69,   69,
+       69, 1786, 1797,   69, 1788, 1790,   69,   69, 1799, 1798,
+       69, 1795, 1794,   69, 1791,   69,   69,   69, 1802, 1805,
+     1796, 1803, 1800,   69,   69, 1808,   69, 1809,   69,   69,
+     1811,   69,   69, 1801,   69,   69, 1804, 1812, 1968, 1814,
+     1806, 1807, 1815,   69, 1816,   69, 1817,   69, 1810, 1813,
+       69, 1819,   69,   69, 1820, 1818, 1821,   69,   69,   69,
+       69, 1825,   69,   69,   69,   69, 1828,   69, 1826, 1824,
+
+       69,   69, 1822, 1827,   69, 1829,   69,   69,   69, 1823,
+       69, 1832,   69,   69, 1830, 1834, 1833,   69,   69,   69,
+       69, 1831, 1869, 1840, 1842,   69, 1835,   69, 1836, 1853,
+     1837, 1838, 1843,   69, 1845,   69,   69,   69, 1839, 1841,
+     1844, 1846, 1847,   69,   69, 1848, 1850,   69,   69,   69,
+       69, 1854, 1855,   69, 1856,   69,   69,   69, 1849,   69,
+       69, 1857, 1968, 1851,   69,   69,   69, 1852, 1874, 1861,
+     1862, 1864,   69,   69, 1859, 1865,   69, 1866,   69,   69,
+       69, 1860, 1858, 1868,   69, 1863,   69, 1870, 1867, 1872,
+       69,   69,   69,   69, 1873, 1871,   69,   69, 1876,   69,
+
+       69,   69,   69, 1880,   69, 1881, 1875,   69,   69,   69,
+       69,   69,   69, 1879,   69, 1877,   69, 1878, 1883, 1884,
+     1885,   69, 1882, 1892,   69,   69, 1888,   69, 1886, 1887,
+     1893, 1890, 1894,   69, 1891, 1895,   69, 1889,   69,   69,
+     1900,   69, 1899, 1896, 1897,   69, 1902,   69,   69,   69,
+     1898, 1905, 1906,   69,   69, 1901,   69,   69,   69,   69,
+       69,   69,   69, 1903,   69,   69,   69, 1907, 1904,   69,
+     1915, 1908, 1968, 1909, 1910, 1912,   69, 1913, 1911,   69,
+     1914, 1916,   69, 1918, 1919, 1917,   69,   69, 1922, 1923,
+       69, 1920, 1921,   69,   69, 1924,   69, 1925,   69, 1928,
+
+       69,   69,   69,   69,   69,   69,   69, 1931,   69,   69,
+     1935, 1936, 1926,   69, 1930,   69, 1938, 1927,   69, 1929,
+       69, 1934, 1932, 1940, 1933,   69, 1939, 1941,   69, 1943,
+       69,   69, 1937,   69,   69,   69,   69,   69, 1944,   69,
+     1945, 1947, 1949,   69, 1950,   69,   69, 1942,   69, 1953,
+       69,   69, 1956, 1946, 1948, 1957,   69, 1959,   69,   69,
+     1960,   69, 1951,   69, 1952, 1954, 1958,   69,   69, 1955,
+     1961,   69, 1962, 1963,   69, 1966,   69, 1967,   69, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1964, 1968, 1968, 1965,   41,   41,   41,   41,   41,   41,
+
+       41,   46,   46,   46,   46,   46,   46,   46,   51,   51,
+       51,   51,   51,   51,   51,   57,   57,   57,   57,   57,
+       57,   57,   62,   62,   62,   62,   62,   62,   62,   72,
+       72, 1968,   72,   72,   72,   72,  129,  129, 1968, 1968,
+     1968,  129,  129,  131,  131, 1968, 1968,  131, 1968,  131,
+      133, 1968, 1968, 1968, 1968, 1968,  133,  136,  136, 1968,
+     1968, 1968,  136,  136,  138, 1968, 1968, 1968, 1968, 1968,
+      138,  140,  140, 1968,  140,  140,  140,  140,   73,   73,
+     1968,   73,   73,   73,   73,   13, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968
     } ;
 
-static yyconst flex_int16_t yy_chk[3912] =
+static yyconst flex_int16_t yy_chk[3926] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1534,7 +1538,7 @@ static yyconst flex_int16_t yy_chk[3912] =
         9,  161,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   45,   45,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  161,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1966,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1974,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   75,   20,   24,   75,   11,   12,
        12,   12,   12,   12,   12,   83,   22,   22,   26,   26,
@@ -1545,7 +1549,7 @@ static yyconst flex_int16_t yy_chk[3912] =
        32,   32,   35,  103,   37,   32,   67,   31,   70,   37,
        36,   36,   70,   31,   76,   36,   77,   31,   76,   37,
        39,   32,   34,   37,   37,   36,   78,   34,   36,   78,
-       84,   34,   38,   38,   39,   38,   77,   34,  715,   39,
+       84,   34,   38,   38,   39,   38,   77,   34,  719,   39,
 
        34,   92,   78,   40,   40,   79,   92,   34,   40,   84,
        38,   56,   40,   56,   56,   64,   56,   64,   64,   66,
@@ -1570,9 +1574,9 @@ static yyconst flex_int16_t yy_chk[3912] =
       159,  154,  157,  157,  160,  159,  162,  158,  163,  160,
 
       162,  165,  168,  163,  183,  166,  167,  168,  169,  155,
-      156,  183,  171,  169,  156,  563,  165,  166,  172,  156,
+      156,  183,  171,  169,  156,  566,  165,  166,  172,  156,
       166,  170,  170,  173,  156,  174,  174,  170,  173,  178,
-      156,  156,  171,  175,  172,  176,  177,  179,  175,  563,
+      156,  156,  171,  175,  172,  176,  177,  179,  175,  566,
       176,  170,  179,  180,  175,  177,  181,  182,  180,  184,
       178,  181,  182,  185,  186,  187,  188,  189,  190,  185,
       192,  187,  184,  191,  193,  189,  195,  194,  191,  198,
@@ -1591,14 +1595,14 @@ static yyconst flex_int16_t yy_chk[3912] =
       248,  249,  250,  239,  249,  254,  251,  243,  252,  253,
       247,  245,  246,  255,  250,  251,  259,  252,  254,  256,
 
-      260,  256,  256,  251,  131,  255,  251,  257,  257,  258,
+      260,  256,  256,  251,  251,  255,  251,  257,  257,  258,
       253,  261,  258,  259,  262,  260,  259,  263,  263,  264,
       261,  265,  265,  262,  264,  266,  267,  268,  269,  270,
       271,  267,  272,  273,  270,  274,  273,  272,  273,  268,
       266,  275,  276,  279,  281,  280,  286,  277,  269,  274,
       271,  276,  277,  278,  282,  284,  279,  275,  278,  281,
       275,  286,  275,  283,  279,  280,  283,  287,  282,  284,
-      288,  289,  290,  291,  288,  288,  287,  129,  294,  293,
+      288,  289,  290,  291,  288,  288,  287,  131,  294,  293,
       292,  296,  283,  285,  293,  285,  285,  295,  291,  297,
       298,  290,  289,  300,  297,  285,  296,  285,  285,  285,
 
@@ -1609,353 +1613,354 @@ static yyconst flex_int16_t yy_chk[3912] =
       320,  321,  318,  322,  316,  317,  321,  315,  319,  320,
       314,  324,  319,  323,  328,  324,  325,  316,  332,  323,
       327,  325,  326,  326,  322,  327,  330,  328,  329,  329,
-      331,  330,  333,  334,  331,  338,  335,  336,  336,  332,
-      335,  333,  337,  339,  339,  334,  342,  337,  341,  341,
-      343,  344,  345,  346,  349,  348,  338,  350,  343,  351,
-
-      344,  352,  357,  353,  351,  346,  358,  342,  353,  354,
-      352,  350,  345,  348,  349,  348,  355,  354,  356,  360,
-      361,  355,  359,  356,  357,  361,  359,  358,  362,  363,
-      367,  365,  368,  366,  360,  369,  370,  368,  369,  371,
-      371,  356,  368,  374,  362,  372,  367,  375,  363,  364,
-      364,  365,  366,  373,  373,  364,  370,  364,  374,  375,
-      377,  376,  378,  380,  379,  364,  381,  382,  364,  379,
-      372,  383,  380,  388,  385,  364,  376,  383,  385,  377,
-      387,  386,  382,  389,  378,  381,  386,  390,  391,  391,
-      392,  388,  387,  393,  394,  390,  389,  395,  393,  396,
-
-      395,  398,  392,  397,  398,  399,  394,  400,  397,  401,
-      408,  400,  400,  415,  396,  402,  402,  403,  403,  410,
-      404,  399,  401,   68,  399,  404,  405,  405,  406,  406,
-      407,  408,  409,  415,  412,  407,  411,  409,  410,  412,
-      411,  413,  414,  416,  417,  413,  418,  414,  416,  417,
-      419,  420,  422,  419,  421,  421,  423,  424,  419,  425,
-      418,  423,  419,  426,  425,  427,  433,   62,  427,  420,
-      422,  424,  426,  428,  429,  430,  431,  428,  432,  429,
-      430,  434,  433,  432,  437,  435,  436,  437,  438,  431,
-      435,  438,  436,  434,  440,  439,  441,  442,  443,  428,
-
-      439,  444,  442,  443,  445,  448,  444,  445,  446,  449,
-      441,  447,  440,  446,  450,  447,  447,  451,  448,  450,
-      452,  456,  449,  452,  453,  458,  451,  454,  455,  453,
-      455,  454,  454,  457,  459,  457,  460,  461,  452,  463,
-      456,  462,  465,  458,  464,  462,  466,  467,  463,  468,
-      469,  470,  459,  474,  468,  460,  476,  461,  474,  464,
-      465,  473,  467,  471,  471,  466,  475,  472,  477,  469,
-      470,  472,  473,  478,  479,  476,  480,  483,  485,  479,
-      478,  477,  475,  480,  481,  482,  484,  485,  486,  481,
-      482,  487,  488,  484,  490,  483,  489,  488,  490,  489,
-
-      487,  491,  486,  492,  492,  493,  495,  496,  498,  497,
-      499,  495,  492,  497,  493,  501,  500,  502,  503,  506,
-      498,  500,  491,  501,  509,  513,  514,  496,  499,  512,
-      514,  513,  515,  515,  506,  502,  519,  516,  512,  520,
-      518,  509,  516,  503,  504,  518,  525,  521,  523,  504,
-      521,  522,  522,  504,  519,  523,  504,  524,  524,  526,
-      526,  525,  531,  504,  520,  527,  504,  517,  517,  517,
-      527,  517,  528,  529,  517,  528,  532,  537,  529,  517,
-      530,  531,  530,  533,  534,  517,  517,  535,  535,  536,
-      538,  537,  534,  539,  540,  540,  532,  544,  539,   57,
-
-      541,  542,  533,  544,  536,  541,  542,  543,  538,  545,
-      543,  546,  547,  548,  549,  550,  552,  545,  548,  546,
-      553,  549,  551,  551,  554,  552,  555,  557,  553,  554,
-      547,  558,  559,  560,  550,  559,  557,  561,  561,  562,
-      558,  564,  566,  567,  564,  555,  568,  560,  567,  569,
-      570,  571,  564,  572,  562,  573,  574,  575, 1238,  573,
-      579,  576,  572,  566,  578,  577,  579,  568,  581,  569,
-      576,  571,  570,  582,  574, 1238,  575,  577,  578,  580,
-      580,  583,  586,  587,  584,  589,  583,  582,  581,  584,
-      585,  588,  590,  590,  585,  587,  588,  591,  593,  594,
-
-      595,  586,  591,  587,  592,  595,  589,  592,  596,  597,
-      597,  598,  594,  599,  599,  600,  593,  601,  602,  603,
-      604,  601,  605,  607,  607,  609,  610,  608,  596,  598,
-      600,  608,  611,  612,  604,  616,  611,  602,  614,  616,
-      609,  613,  605,  603,  606,  615,  613,  606,  612,  606,
-      620,  610,  614,  606,  617,  606,  618,  619,  621,  615,
-      606,  618,  619,  622,  620,  606,  623,   52,  624,  617,
-      627,  618,  623,  624,  625,  625,  629,  622,  628,  621,
-      626,  626,  627,  628,  630,  633,  626,  634,  626,  632,
-      629,  631,  631,  633,  632,  635,  630,  636,  636,  626,
-
-      637,  634,  639,  641,  637,  640,  626,  639,  640,  645,
-      642,  643,  644,  647,  635,  646,  643,  644,  648,  649,
-      650,  651,  641,  642,  646,  650,  652,  648,  645,  647,
-      653,  655,  657,  654,  658,   51,  655,  663,  649,  659,
-      652,  651,  654,  660,  661,  668,  663,  666,  660,  661,
-      653,  657,  658,  662,  659,  664,  664,  665,  662,  669,
-      666,  668,  665,  669,  669,  670,  670,  671,  672,  670,
-      671,  673,  674,  675,  676,  677,  678,  676,  679,  680,
-      681,  682,  672,  679,  680,  686,  681,  674,  683,  684,
-      684,  673,  678,  675,  683,  685,  677,  682,  687,  688,
-
-      689,  687,  690,  686,  685,  691,  692,  693,  694,  696,
-      698,  692,  693,  694,  699,   46,  702,  688,  691,  689,
-      697,  698,  690,  697,  700,  701,  699,  696,  703,  700,
-      701,  702,  705,  703,  704,  704,  706,  707,  708,  709,
-      711,  712,  708,  710,  714,  718,  716,  717,  719,  707,
-      706,  705,  710,  719,  723,  727,  720,  709,  726,  711,
-      716,  720,  717,  714,  721,  718,  712,  722,  723,  721,
-      724,  725,  722,  726,  727,  728,  725,  729,  730,  731,
-      731,  732,  728,  733,  724,  734,  735,  736,  736,  737,
-      739,  734,  729,  738,  737,  732,  740,  730,  741,  740,
-
-      738,  733,  742,  743,  739,  744,  735,  745,  743,  746,
-      748,  742,  745,  749,  748,  750,  741,  751,  752,  753,
-      754,  755,  749,  756,  744,  757,  753,  759,  746,  758,
-      750,  760,  754,  752,  763,  758,  751,  761,  764,  763,
-      755,  765,  759,  757,  756,  766,  761,  768,  767,  765,
-      769,  760,  764,  767,  769,  769,  770,  771,  774,  768,
-      772,  772,  788,  773,  775,  766,  788,  774,  778,  775,
-      784,  771,  776,  776,  777,  770,  773,  778,  779,  777,
-      780,  780,  781,  779,  782,  783,   41,  785,  784,  782,
-      786,  781,  785,  787,  792,  786,  790,  790,  787,  783,
-
-      789,  791,  794,  791,  795,  792,  794,  796,  797,  789,
-      799,  800,  805,  801,  789,  802,  789,  797,  789,  795,
-      789,  801,  798,  803,  799,  796,  798,  798,  804,  802,
-      800,  811,  803,  806,  806,  807,  811,  805,  808,  808,
-      810,  812,  814,  810,  813,  813,  804,  815,  815,  816,
-      807,  817,  818,  818,  816,  819,  820,  821,  822,  824,
-      812,  820,  814,  822,  825,  821,  823,  823,  827,  826,
-      825,  834,  817,  829,  830,  819,  826,  824,  829,  830,
-      831,  827,  832,  833,  835,  831,  837,  832,  836,  836,
-      834,  838,  833,  839,  840,  835,  843,  842,  841,  840,
-
-      846,  844,  845,  845,  847,  848,  837,  851,  843,  849,
-      852,  838,  841,  854,  849,  852,  839,  842,  841,  844,
-      846,  850,  850,  848,  856,  858,  857,  858,  859,  847,
-      851,  855,  854,  856,  857,  855,  855,  861,  860,  862,
-      863,  861,  859,  860,  864,  865,  866,  867,  868,  869,
-      862,  866,  871,  869,  870,  872,  876,  877,  874,  863,
-      873,  875,  877,  865,  879,  867,  882,  872,  868,  879,
-      864,  871,  870,  874,  873,  876,  875,  878,  880,  881,
-      883,  882,  884,   14,  878,  885,  883,  886,  881,  887,
-      885,  892,  886,  893,  887,  892,  880,  888,  888,  889,
-
-      889,  891,  891,  884,  894,  895,  896,  899,  897,  894,
-      898,  893,  897,  897,  898,  898,  900,  901,  902,  895,
-      903,  905,  904,  906,  907,  896,  905,  899,  904,  908,
-      909,  910,  911,  913,  913,  900,  901,  912,  914,  903,
-       13,  914,  906,  907,  902,  910,  915,  924,  908,  909,
-      916,  916,  912,  911,  917,  919,  918,  920,  915,  917,
-      918,  921,  928,  922,  929,  922,  920,  924,  919,  922,
-      925,  925,  926,  930,  921,  927,  932,  926,  930,  927,
-      928,  934,  922,  941,  929,  936,  934,  935,  935,  945,
-      936,  938,  938,  946,  932,  940,  940,  943,  947,  941,
-
-      943,  944,  944,  948,  945,  949,  950,  950,  948,  951,
-      952,  954,  947,  951,  953,  953,  955,  956,  946,  957,
-      949,  956,  961,  958,  960,  960,  965,  955,  958,  962,
-      952,  963,  963,  954,  964,  966,  967,  968,  957,  964,
-      961,  972,  969,  962,  969,  967,  965,  970,  971,  973,
-      975,  977,  970,  971,  973,  966,  978,  968,  976,  976,
-      980,  972,  978,  982,  975,  981,  981,  983,  984,  989,
-      977,  984,  985,  986,  984,  982,  987,  985,  986,  990,
-      992,  992,  990,  988,  980,  987,  984,  983,  988,  993,
-      991,  994,  995,  996,  989,  991,  997,  998,  996,  999,
-
-     1000,  997,  998, 1001, 1001, 1000, 1002,  993, 1003, 1004,
-      994, 1002,  995, 1005, 1006, 1007, 1009, 1008, 1010, 1011,
-     1012, 1009,  999, 1013, 1015, 1015, 1003, 1007, 1006, 1004,
-     1008, 1016, 1017, 1005, 1012, 1018, 1016, 1019, 1010, 1011,
-     1020, 1024, 1018, 1022, 1013, 1026, 1019, 1017, 1026, 1019,
-     1025, 1025, 1027, 1028, 1030, 1029, 1020, 1027, 1022, 1031,
-     1033, 1032, 1035, 1022, 1029, 1033, 1024, 1036, 1031, 1028,
-     1032, 1031, 1037, 1030, 1034, 1034, 1039, 1038, 1042, 1043,
-     1036, 1040, 1035, 1044, 1044, 1045, 1046, 1048, 1048, 1047,
-     1037, 1038, 1039, 1040, 1047, 1046, 1049, 1043, 1050, 1052,
-
-     1053, 1045, 1048, 1042, 1052, 1049, 1054, 1055, 1049, 1056,
-     1057, 1054, 1055, 1059, 1058, 1056, 1050, 1063, 1053, 1058,
-     1060, 1065, 1066, 1060, 1064, 1067, 1059, 1069, 1068, 1060,
-     1057, 1070, 1064, 1068, 1065, 1073, 1063, 1072, 1072, 1079,
-     1066, 1074, 1075, 1069, 1067, 1074, 1076, 1075, 1077, 1070,
-     1078, 1076, 1081, 1077, 1083, 1073, 1082, 1082, 1084, 1078,
-     1085, 1086, 1079, 1087, 1088, 1084, 1089, 1081, 1083, 1088,
-     1090, 1091, 1085, 1086, 1092, 1092, 1093, 1091, 1089, 1093,
-     1094, 1094, 1087, 1097, 1096, 1098, 1098, 1099, 1090, 1096,
-     1100, 1101, 1097, 1102, 1103, 1100, 1104, 1105, 1106, 1099,
-
-     1101, 1104, 1107, 1108, 1108, 1102, 1105, 1109, 1110, 1103,
-     1116, 1111, 1109, 1112, 1113, 1113, 1114, 1107, 1106, 1105,
-     1115, 1115, 1117, 1117, 1118, 1123, 1125, 1119, 1118, 1110,
-     1111, 1116, 1119, 1112, 1120, 1122, 1114, 1120, 1130, 1124,
-     1122, 1126, 1126, 1123, 1124, 1127, 1127, 1128, 1129, 1131,
-     1132, 1125, 1128, 1133, 1135, 1132, 1136, 1138, 1130, 1140,
-     1129, 1129, 1129, 1137, 1137, 1139, 1139, 1129, 1135, 1131,
-     1141, 1142, 1142, 1133, 1143, 1143, 1145, 1136, 1147, 1140,
-     1146, 1146, 1148, 1138, 1150, 1145, 1149, 1151, 1151, 1148,
-     1152, 1153, 1141, 1147, 1155, 1149, 1156, 1157, 1158, 1155,
-
-     1164, 1156, 1165, 1159, 1160, 1158, 1163, 1153, 1159, 1160,
-     1150, 1161, 1161, 1162, 1166, 1163, 1152, 1157, 1162, 1167,
-     1164, 1165, 1167, 1168, 1169, 1171, 1166, 1170, 1170, 1172,
-     1173, 1174, 1175, 1176, 1180, 1174, 1177, 1177, 1175, 1181,
-     1171, 1168, 1176, 1178, 1182, 1173, 1179, 1179, 1172, 1187,
-     1169, 1183, 1194, 1181, 1178, 1180, 1183, 1184, 1184, 1178,
-     1188, 1185, 1186, 1189, 1182, 1185, 1185, 1186, 1189, 1191,
-     1192, 1193, 1188, 1195, 1192, 1187, 1196, 1194, 1195, 1197,
-     1198, 1191, 1200, 1193, 1197, 1200, 1201, 1201, 1202, 1202,
-     1203, 1203, 1198, 1204, 1205, 1208, 1206, 1207, 1196, 1213,
-
-     1205, 1206, 1210, 1207, 1208, 1212, 1215, 1210, 1212, 1216,
-     1216, 1213, 1217, 1204, 1218, 1219, 1220, 1221, 1215, 1222,
-     1223, 1221, 1224, 1218, 1222, 1223, 1226, 1226, 1227, 1233,
-     1228, 1229, 1217, 1219, 1235, 1220, 1224, 1236, 1226, 1228,
-     1229, 1231, 1231, 1237, 1244, 1233, 1227, 1247, 1237, 1235,
-     1251, 1236, 1239, 1239, 1240, 1243, 1240, 1241, 1241, 1245,
-     1245, 1246, 1243, 1248, 1244, 1249, 1250, 1252, 1247, 1253,
-     1246, 1254, 1258, 1266, 1256, 1248, 1251, 1249, 1250, 1256,
-     1259, 1257, 1252, 1257, 1264, 1259, 1260, 1262,    0, 1253,
-     1258, 1254, 1267, 1260, 1265, 1265, 1262, 1267, 1264, 1266,
-
-     1268, 1269, 1268, 1270, 1271, 1272, 1269, 1273, 1270, 1274,
-     1275, 1276, 1273, 1278, 1274, 1279, 1280, 1280, 1282, 1276,
-     1281, 1281, 1271, 1275, 1283, 1272, 1284, 1287, 1288, 1279,
-     1285, 1284, 1278, 1282, 1286, 1285, 1286, 1288, 1291, 1287,
-     1288, 1289, 1292, 1289, 1283, 1290, 1290, 1291, 1294, 1297,
-     1295, 1298, 1299, 1294, 1292, 1295, 1300, 1302, 1304, 1305,
-     1306, 1311, 1297, 1302, 1304, 1316, 1307, 1308, 1308, 1309,
-     1299, 1298, 1300, 1316, 1305, 1307, 1310, 1310, 1309, 1312,
-     1311, 1313, 1314, 1312, 1315, 1306, 1313, 1317, 1315, 1315,
-     1320, 1320, 1321, 1322, 1322, 1314, 1323, 1323, 1324, 1325,
-
-     1326, 1321, 1330, 1327, 1331, 1326, 1332, 1317, 1327, 1331,
-     1324, 1328, 1328, 1333, 1334, 1335, 1336, 1325, 1338, 1334,
-     1337, 1337, 1338, 1339, 1341, 1340, 1342, 1330, 1333, 1332,
-     1340, 1345, 1336, 1335, 1344, 1346, 1347, 1348, 1339, 1349,
-     1350, 1352, 1352, 1353, 1354, 1342, 1353, 1356, 1355, 1378,
-     1341, 1349, 1378, 1344, 1345, 1347, 1360, 1354, 1348, 1346,
-     1356, 1350, 1355, 1357, 1357, 1358, 1358, 1359, 1359, 1361,
-     1365, 1360, 1362, 1362, 1363, 1363, 1364, 1364, 1366, 1366,
-     1367, 1370, 1361, 1368, 1368, 1369, 1369, 1372, 1374, 1365,
-     1373, 1373, 1372, 1375, 1375, 1376, 1377, 1381, 1367, 1382,
-
-     1370, 1383, 1377, 1379, 1379, 1380, 1380, 1374, 1384, 1384,
-     1386, 1387, 1388, 1376, 1382, 1393, 1381, 1389, 1391, 1379,
-     1383, 1389, 1390, 1390, 1392, 1392, 1395, 1388, 1394, 1394,
-     1386, 1397, 1399, 1398, 1387, 1395, 1400, 1391, 1398, 1401,
-     1402, 1393, 1403, 1397, 1404, 1402, 1405, 1403, 1407, 1400,
-     1409, 1408, 1406, 1411, 1409, 1405, 1408, 1399, 1413, 1404,
-     1401, 1406, 1407, 1414, 1414, 1415, 1417, 1413, 1416, 1416,
-     1415, 1420, 1419, 1411, 1426,    0, 1424, 1416, 1422, 1424,
-     1420, 1427, 1428, 1428, 1425, 1431, 1417, 1419, 1417, 1425,
-     1422, 1430, 1430, 1427, 1426, 1432, 1432, 1433, 1434, 1431,
-
-     1435, 1436, 1436, 1438, 1442, 1439, 1443, 1438, 1439, 1433,
-     1440, 1440, 1434, 1441, 1444, 1446, 1445, 1447, 1441, 1435,
-     1445, 1449, 1447, 1451, 1442, 1448, 1443, 1449, 1444, 1452,
-     1448, 1453, 1454, 1458, 1452, 1446, 1453, 1459, 1459, 1451,
-     1454, 1455, 1465, 1455, 1463, 1463, 1468, 1458, 1469, 1469,
-     1473, 1468, 1471, 1471, 1475, 1473, 1474, 1474, 1476, 1477,
-     1465, 1480, 1479, 1483, 1477, 1481, 1481, 1485, 1486, 1484,
-     1475,    0, 1483, 1480, 1484, 1488, 1488, 1490, 1492, 1497,
-     1476, 1479, 1490, 1486, 1491, 1485, 1491, 1498, 1493, 1494,
-     1494, 1497, 1492, 1493, 1495, 1495, 1496, 1496, 1499, 1499,
-
-     1500, 1501, 1502, 1503, 1504, 1498, 1505, 1505, 1503, 1506,
-     1507, 1508, 1500, 1501, 1502, 1509, 1510, 1513, 1506, 1511,
-     1512, 1512, 1515, 1514, 1504, 1516, 1513, 1517, 1509, 1523,
-     1516, 1508, 1517, 1511, 1518, 1518, 1507, 1519, 1519, 1524,
-     1510, 1514, 1520, 1520, 1515, 1525, 1526, 1527, 1528, 1523,
-     1533, 1529, 1530, 1530, 1532, 1532, 1527, 1524, 1534, 1533,
-     1536, 1537, 1538, 1535, 1540, 1539, 1526, 1525, 1528, 1529,
-     1535, 1541, 1541, 1542, 1543, 1536, 1534, 1545, 1542, 1537,
-     1538, 1539, 1544, 1540, 1546, 1547, 1549, 1550, 1553, 1546,
-     1554,    0, 1543, 1554, 1556, 1549, 1545, 1544, 1555, 1555,
-
-     1557, 1558, 1558, 1559, 1561, 1547, 1550, 1559, 1553, 1556,
-     1562, 1563, 1563, 1564, 1562, 1566, 1566, 1567, 1557, 1561,
-     1568, 1568, 1569, 1569, 1573, 1573, 1564, 1574, 1575, 1576,
-     1577, 1579, 1578, 1582, 1580, 1577, 1567, 1578, 1576, 1583,
-     1584, 1575, 1580, 1585, 1583, 1584, 1586, 1586, 1582, 1574,
-     1579, 1587, 1587, 1588, 1589, 1596, 1590, 1591, 1585, 1589,
-     1588, 1590, 1591, 1592, 1592, 1593, 1593, 1597, 1596, 1598,
-     1599, 1600, 1597, 1598, 1601, 1599, 1602, 1603, 1604, 1608,
-     1600, 1609, 1603, 1606, 1602, 1615, 1606, 1607, 1616, 1601,
-     1604, 1610, 1607, 1611, 1609, 1612, 1612, 1608, 1613, 1617,
-
-     1610, 1619, 1611, 1620, 1615, 1618, 1618, 1613, 1616, 1621,
-     1622, 1622, 1620, 1621, 1623, 1626, 1624, 1627, 1617, 1629,
-     1619, 1624, 1623, 1629, 1626, 1630, 1631, 1633, 1633, 1638,
-     1627, 1635, 1635, 1639, 1639, 1640, 1640, 1641, 1645, 1630,
-     1641, 1631, 1642, 1642, 1643, 1643, 1644, 1644, 1646, 1638,
-     1647, 1648, 1648, 1649, 1652, 1647, 1645, 1649, 1652, 1652,
-     1653, 1654, 1646, 1655, 1658, 1662, 1660, 1654, 1655, 1658,
-     1659, 1660, 1661, 1664, 1664, 1663, 1665, 1667, 1666, 1668,
-     1668, 1669, 1669, 1653, 1671, 1662, 1666, 1659, 1659, 1663,
-     1661, 1670, 1670, 1672, 1673, 1665, 1667, 1674, 1672, 1675,
-
-     1671, 1676, 1677, 1679, 1679, 1681, 1680, 1683, 1675, 1680,
-     1681, 1684, 1684, 1685, 1673, 1686, 1687, 1685, 1690, 1695,
-     1692, 1676, 1677, 1674, 1686, 1683, 1689, 1690, 1688, 1692,
-     1693, 1687, 1688, 1688, 1701, 1699, 1700, 1700, 1708, 1689,
-     1699, 1703, 1693, 1701, 1695, 1707, 1703, 1704, 1704, 1706,
-     1706, 1704, 1709, 1710, 1707, 1711, 1713, 1709, 1708, 1712,
-     1711, 1713, 1714, 1715, 1715, 1717, 1718, 1719, 1719, 1720,
-     1722, 1721, 1723, 1724, 1710, 1721, 1727, 1712, 1725, 1722,
-     1726, 1718, 1720, 1737, 1717, 1726, 1725, 1714, 1723, 1728,
-     1728, 1729, 1724, 1731, 1731, 1732, 1732, 1736, 1733, 1735,
-
-     1735, 1738, 1727, 1733, 1740, 1740, 1737, 1741, 1742, 1745,
-     1729, 1743, 1743, 1744, 1744, 1746, 1747, 1736, 1748, 1748,
-     1738, 1741, 1749, 1750, 1750, 1749, 1752, 1746, 1745, 1753,
-     1742, 1754, 1755, 1756, 1754, 1757, 1747, 1755, 1752, 1758,
-     1757, 1759, 1759, 1761, 1761, 1762, 1764, 1764, 1765, 1753,
-     1767, 1766, 1756, 1765,    0, 1767, 1758, 1758, 1768, 1768,
-     1769, 1769, 1770, 1770, 1762, 1766, 1771, 1773, 1773, 1776,
-     1776, 1771, 1778, 1778, 1779, 1780, 1781, 1782, 1782, 1783,
-     1790, 1786, 1787, 1787, 1783, 1781, 1788, 1791, 1779, 1786,
-     1793, 1788, 1792, 1794, 1795, 1780, 1843, 1792, 1796, 1797,
-
-     1790, 1794, 1793, 1798, 1799, 1802, 1822, 1791, 1843, 1799,
-     1804, 1804, 1795, 1815, 1796, 1822, 1797, 1797, 1805, 1805,
-     1810, 1810, 1806, 1812, 1798, 1802, 1806, 1812, 1814, 1814,
-     1816, 1815, 1818, 1818, 1819, 1821, 1823, 1823, 1824, 1824,
-     1825, 1825, 1826, 1827, 1816, 1828, 1829, 1826,    0, 1819,
-     1830, 1831, 1832, 1821, 1850, 1830, 1831, 1833, 1833, 1850,
-     1828, 1836, 1836, 1838, 1838, 1840, 1845, 1829, 1827, 1841,
-     1841, 1832, 1844, 1844, 1840, 1846, 1846, 1849, 1851, 1852,
-     1849, 1845, 1853, 1855, 1852, 1854, 1859, 1861, 1862, 1859,
-     1863, 1861, 1851, 1866, 1865, 1867, 1869, 1868, 1870, 1855,
-
-     1872, 1853, 1871, 1854, 1863, 1865, 1866, 1874, 1862, 1873,
-     1873, 1879, 1869, 1880, 1867, 1868, 1874, 1871, 1875, 1875,
-     1872, 1876, 1876, 1870, 1877, 1878, 1881, 1882, 1880, 1877,
-     1878, 1881, 1883, 1883, 1885, 1888, 1879, 1889, 1890, 1891,
-     1893, 1882, 1889, 1890, 1892, 1896, 1895, 1899, 1897, 1885,
-     1898, 1900, 1902, 1891, 1888, 1907, 1900, 1892,    0, 1893,
-     1895, 1897, 1901, 1898, 1896, 1904, 1899, 1901, 1903, 1903,
-     1904, 1902, 1905, 1906, 1907, 1908, 1910, 1905, 1906, 1911,
-     1908, 1909, 1909, 1910, 1912, 1913, 1914, 1915, 1917, 1918,
-     1913, 1919, 1922, 1917, 1920, 1921, 1921, 1922, 1911, 1923,
-
-     1915, 1924, 1924, 1912, 1926, 1914, 1927, 1920, 1918, 1926,
-     1919, 1925, 1925, 1927, 1928, 1929, 1929, 1930, 1923, 1931,
-     1932, 1934, 1933, 1936, 1930, 1937, 1931, 1933, 1936, 1938,
-     1937, 1939, 1941, 1928, 1940, 1940, 1942, 1943, 1943, 1932,
-     1934, 1944, 1944, 1946, 1946, 1945, 1947, 1947, 1938, 1948,
-     1939, 1941, 1945, 1950, 1953, 1942, 1948, 1954, 1950, 1953,
-     1955, 1956, 1956, 1957, 1957,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0, 1954,    0,    0, 1955,
-     1961, 1961, 1961, 1961, 1961, 1961, 1961, 1962, 1962, 1962,
-     1962, 1962, 1962, 1962, 1963, 1963, 1963, 1963, 1963, 1963,
-
-     1963, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1965, 1965,
-     1965, 1965, 1965, 1965, 1965, 1967, 1967,    0, 1967, 1967,
-     1967, 1967, 1968, 1968,    0,    0,    0, 1968, 1968, 1969,
-     1969,    0,    0, 1969,    0, 1969, 1970,    0,    0,    0,
-        0,    0, 1970, 1971, 1971,    0,    0,    0, 1971, 1971,
-     1972,    0,    0,    0,    0,    0, 1972, 1973, 1973,    0,
-     1973, 1973, 1973, 1973, 1974, 1974,    0, 1974, 1974, 1974,
-     1974, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-
-     1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
-     1960
+      331,  330,  333,  334,  331,  335,  336,  333,  339,  332,
+      336,  338,  334,  337,  337,  343,  338,  335,  340,  340,
+      342,  342,  344,  345,  346,  347,  350,  349,  351,  339,
+
+      344,  353,  345,  352,  354,  355,  343,  347,  352,  354,
+      353,  358,  351,  355,  346,  349,  350,  349,  356,  357,
+      359,  360,  361,  356,  357,  360,  362,  363,  364,  368,
+      366,  362,  367,  358,  369,  370,  373,  361,  370,  369,
+      371,  359,  357,  363,  369,  368,  378,  364,  365,  365,
+      366,  367,  372,  372,  365,  375,  365,  374,  374,  376,
+      371,  373,  377,  379,  365,  378,  381,  365,  380,  382,
+      375,  376,  383,  380,  365,  381,  384,  377,  388,  386,
+      389,  387,  384,  386,  390,  379,  387,  383,  382,  393,
+      388,  391,  392,  392,  395,  394,  397,  390,  389,  391,
+
+      394,  393,  396,  398,  399,  396,  395,  399,  398,  400,
+      401,  397,  409,  402,  401,  401,  403,  403,  404,  404,
+      406,  406,  405,  407,  407,  400,  402,  405,  400,  408,
+      410,  411,  412,  409,  408,  410,  412,  413,  416,  414,
+      415,  417,  413,  414,  418,  415,  417,  419,  420,  418,
+      411,  420,  421,  422,  422,  423,  420,  424,  416,  426,
+      420,  419,  424,  425,  426,  427,  428,  429,  432,  428,
+      421,  429,  433,  423,  427,  430,  431,  425,  434,  435,
+      430,  431,  436,  434,  432,  433,  437,  442,  443,  439,
+      438,  437,  439,  429,  436,  435,  438,  440,  441,  444,
+
+      440,  445,  443,  441,  444,  442,  445,  446,  447,  448,
+      450,  447,  446,  449,  448,  451,  452,  449,  449,  454,
+      453,  452,  454,  450,  457,  455,  457,  456,  451,  453,
+      455,  456,  456,  458,  459,  460,  459,  454,  461,  462,
+      463,  464,  465,  467,  466,  464,  468,  469,  471,  470,
+      472,  465,  458,  460,  470,  478,  461,  475,  462,  466,
+      463,  467,  469,  473,  473,  468,  474,  471,  475,  472,
+      474,  476,  477,  479,  478,  480,  476,  482,  481,  485,
+      483,  487,  480,  481,  482,  483,  479,  484,  477,  486,
+      487,  488,  484,  489,  490,  491,  486,  485,  491,  490,
+
+      492,  493,  489,  495,  492,  488,  494,  494,  497,  498,
+      499,  500,  495,  497,  499,  494,  501,  503,  504,  502,
+      505,  511,  493,  500,  502,  503,  508,  515,  514,  498,
+      539,  516,  521,  515,  501,  516,  504,  514,  511,  517,
+      517,  508,  518,  520,  539,  505,  506,  518,  520,  522,
+      521,  506,  527,  523,  525,  506,  523,  129,  506,  524,
+      524,  525,  526,  526,  532,  506,  532,  527,  506,  519,
+      519,  519,  533,  519,  522,  529,  519,  528,  528,  530,
+      529,  519,  530,  534,  531,  535,  536,  519,  519,  531,
+      538,  533,  537,  537,  536,  540,  541,  542,  543,  543,
+
+       68,  544,  542,  534,  535,  538,  544,  545,  541,  547,
+      548,  546,  545,  540,  546,  547,  549,  550,  548,  552,
+      551,  553,  554,  554,  549,  551,  552,  555,  557,  556,
+      558,  563,  560,  557,  561,  550,  555,  556,  565,  562,
+      553,  560,  562,  561,  569,  563,  564,  564,  567,  558,
+      570,  567,  571,  565,  572,  570,  573,  574,  575,  567,
+      576,  577,  578,  579,  576,  569,  584,  575,  580,  581,
+      582,   62,  579,  571,  572,  585,  582,  574,  573,  577,
+      580,  578,  586,  581,  583,  583,  584,  586,  587,  585,
+      588,  589,  590,  587,  588,  591,  592,  593,  593,  595,
+
+      591,  594,  595,  596,  590,  597,  594,  599,  598,  603,
+      589,  601,  590,  598,  600,  600,  605,  592,  597,  602,
+      602,  596,  604,  606,  603,  607,  604,  599,  608,  601,
+      610,  610,  611,  614,  613,  605,  611,  614,  612,  607,
+      615,  616,  617,  618,   57,  622,  616,  606,  608,  609,
+      622,  624,  609,  612,  609,  615,  617,  618,  609,  613,
+      609,  620,  619,  621,  649,  609,  619,  623,  621,  625,
+      609,  626,  624,  649,  627,  631,  620,  626,  621,  627,
+      631,  623,  632,  625,  628,  628,  629,  629,  630,  633,
+      634,  634,  629,  635,  629,  636,  632,  637,  635,  638,
+
+      630,  633,  644,  636,  640,  629,  639,  639,  640,  642,
+      643,  637,  629,  643,  642,  645,  648,  646,  638,  647,
+      650,  644,  646,  651,  647,  652,  653,  654,  645,  655,
+      656,  653,  651,  657,  659,  648,  650,  658,  661,  659,
+      662,  663,  657,  655,  652,   52,  658,  654,  664,  665,
+      656,  672,  667,  664,  665,  666,  663,  661,  662,  669,
+      666,  667,  668,  668,  669,  670,  673,  672,  674,  674,
+      673,  673,  674,  675,  676,  677,  675,  678,  670,  679,
+      680,  681,  682,  680,  683,  684,  690,  685,  676,  683,
+      684,  686,  678,  685,  687,  677,  688,  688,  682,  679,
+
+      687,  689,  681,  691,  690,  692,  691,  686,  693,  694,
+      689,  695,  696,  697,  698,  700,  703,  696,  697,  698,
+      702,  704,  701,  692,  695,  701,  704,  693,  703,  694,
+      705,  702,  706,  700,  707,  705,  708,  708,  709,  707,
+      710,  711,  712,  713,  715,  716,  712,  706,  718,  714,
+      720,  721,  722,  711,  710,  723,  744,  709,  714,  744,
+      723,  713,  731,  715,  720,  727,  721,  718,  724,  725,
+      716,  726,  722,  724,  725,  728,  726,  729,  730,  727,
+      732,  731,  729,  733,  734,  735,  735,  732,  736,  728,
+      737,  738,  739,  730,  740,  740,  741,  738,  733,  742,
+
+      743,  741,  736,  734,  745,  747,  742,  746,  737,  748,
+      747,  750,  739,  749,  743,  752,  746,  753,  749,  752,
+      754,  755,  745,  756,  757,  758,  753,  759,  748,  760,
+      750,  757,  763,  761,  764,  754,  762,  758,  756,  765,
+      755,  768,  762,  770,  767,  769,  759,  763,  765,  767,
+      760,  761,  771,  769,  764,  768,  772,  771,  774,  775,
+      773,  776,  776,  770,  773,  773,  777,  778,  772,  779,
+      780,  780,  782,  775,  779,  781,  778,  774,  783,  777,
+      781,  782,  784,  783,  785,  785,  786,  784,  787,  788,
+      789,  790,  791,  787,  792,  786,  790,  791,  793,  792,
+
+      795,  795,  793,  788,  796,  797,  796,  799,  789,  794,
+      802,  799,  801,  800,  805,   51,  797,  803,  794,  802,
+      804,  803,  803,  794,  806,  794,  807,  794,  800,  794,
+      801,  809,  806,  805,  804,  808,  810,  811,  811,  812,
+      807,  813,  813,  815,  808,  816,  815,  817,  819,  809,
+      816,  818,  818,  821,  812,  820,  820,  822,  821,  823,
+      823,  810,  824,  826,  825,  827,  817,  829,  819,  825,
+      827,  826,  828,  828,  830,  832,  831,  839,  822,  834,
+      830,  835,  824,  831,  834,  829,  835,  836,  832,  837,
+      838,  840,  836,  842,  837,  843,  839,  841,  841,  838,
+
+      844,  845,  840,  849,  846,  847,  845,  848,  850,  850,
+      851,  852,  854,  842,  853,  843,  856,  854,  846,  848,
+      861,  849,  859,  844,  846,  847,  855,  855,  857,  861,
+      851,  868,  853,  857,  864,  865,  852,  862,  860,  856,
+      865,  859,  860,  860,  863,  862,  863,  866,  864,  867,
+      868,  866,  869,  870,  871,  872,  873,  874,  876,  871,
+      867,  874,  875,  877,  881,  878,  879,  880,  885,  882,
+       46,  870,  889,  872,  882,  877,  873,  876,  869,  878,
+      875,  879,  880,  881,  883,  884,  885,  886,  887,  888,
+      884,  883,  890,  889,  891,  888,  886,  890,  898,  891,
+
+      892,  893,  893,  887,  900,  892,  894,  894,  896,  896,
+      897,  901,  899,  904,  897,  902,  898,  899,  900,  902,
+      902,  903,  905,  906,  907,  903,  903,  908,  909,  910,
+      901,  911,  912,  904,  916,  910,  911,  913,  914,  915,
+      917,  905,  906,  907,  918,  919,  919,  909,  916,  920,
+      921,  912,  920,  908,  922,  922,  913,  914,  915,  918,
+      923,  917,  921,  924,  925,  923,  926,  924,  927,  934,
+      928,  930,  928,  931,  931,  926,  928,  925,  932,  935,
+      933,  927,  938,  932,  933,  936,  952,  934,  940,  928,
+      936,  930,  942,  940,  941,  941,  947,  942,  951,  935,
+
+      938,  944,  944,  946,  946,  949,  950,  950,  949,  953,
+      954,  952,  947,  951,  955,  954,  956,  956,  957,  958,
+      959,  959,  957,  953,  960,  961,  962,  964,  963,  955,
+      962,  967,  964,  966,  966,  971,  961,  968,  970,  958,
+      969,  969,  972,  970,  973,  974,  960,  963,  975,  967,
+      975,  968,  976,  973,  977,  971,  978,  976,  979,  977,
+      981,  983,  972,  979,  984,  974,  982,  982,  986,  988,
+      984,  987,  987,  989,  981,  995,  978,  993,  991,  990,
+      983,  988,  990,  991,  992,  990,  993,  999,  996,  992,
+      994,  996,  986,  989,  997,  994, 1000,  990, 1001,  997,
+
+      995,  998,  998, 1002, 1003,  999, 1004, 1005, 1002, 1003,
+     1009, 1004, 1006, 1007, 1007, 1000, 1008, 1006, 1001, 1010,
+     1011, 1008, 1012, 1013, 1014, 1016, 1015, 1017, 1009, 1018,
+     1005, 1015, 1019, 1021, 1021, 1013, 1012, 1014, 1026, 1010,
+     1011, 1022, 1023, 1018, 1024, 1016, 1022, 1017, 1028, 1025,
+     1030, 1024, 1037, 1019, 1026, 1031, 1031, 1023, 1025, 1032,
+     1032, 1025, 1033, 1028, 1034, 1033, 1035, 1036, 1028, 1034,
+     1039, 1037, 1038, 1040, 1042, 1030, 1036, 1043, 1040, 1039,
+     1044, 1038, 1035, 1045, 1038, 1041, 1041, 1046, 1047, 1049,
+     1043, 1050, 1051, 1051, 1042, 1052, 1053, 1045, 1044, 1054,
+
+     1047, 1055, 1055, 1046, 1054, 1053, 1056, 1057, 1059, 1050,
+     1060, 1052, 1061, 1059, 1049, 1056, 1055, 1061, 1056, 1062,
+     1063, 1064, 1065, 1066, 1062, 1057, 1063, 1065, 1060, 1067,
+     1070, 1071, 1067, 1072, 1073, 1074, 1066, 1075, 1067, 1071,
+     1076, 1064, 1075, 1077, 1079, 1079, 1072, 1080, 1082, 1070,
+     1085, 1081, 1073, 1082, 1074, 1081, 1076, 1083, 1084, 1085,
+     1086, 1077, 1083, 1084, 1088, 1089, 1089, 1080, 1090, 1091,
+     1094, 1156, 1092, 1093, 1096, 1095, 1091, 1097, 1156, 1088,
+     1095, 1098, 1090, 1086, 1092, 1093, 1096, 1098, 1106, 1094,
+     1099, 1099, 1104, 1100, 1103, 1097, 1100, 1101, 1101, 1103,
+
+     1106, 1104, 1105, 1105, 1107, 1108, 1109, 1110, 1111, 1107,
+     1112, 1113, 1114, 1111, 1108, 1115, 1115, 1117, 1109, 1112,
+     1116, 1118, 1110, 1119, 1121, 1116, 1123, 1114, 1120, 1120,
+     1130, 1113, 1112, 1122, 1122, 1124, 1124, 1125, 1117, 1127,
+     1118, 1125, 1127, 1119, 1121, 1126, 1129, 1123, 1130, 1131,
+     1126, 1129, 1132, 1136, 1131, 1133, 1133, 1134, 1134, 1135,
+     1137, 1138, 1140, 1139, 1135, 1136, 1136, 1136, 1139, 1142,
+     1143, 1145, 1136, 1144, 1144, 1146, 1146, 1132, 1147, 1148,
+     1137, 1138, 1140, 1142, 1149, 1149, 1150, 1150, 1154, 1154,
+     1153, 1143, 1155, 1157, 1158, 1159, 1159, 1145, 1147, 1153,
+
+     1160, 1148, 1157, 1161, 1163, 1164, 1166, 1155, 1165, 1163,
+     1164, 1167, 1168, 1166, 1169, 1169, 1167, 1168, 1170, 1161,
+     1158, 1171, 1172, 1170, 1173, 1174, 1160, 1176, 1165, 1175,
+     1171, 1177, 1175, 1178, 1178, 1179, 1180, 1174, 1181, 1184,
+     1182, 1183, 1172, 1173, 1182, 1176, 1188, 1183, 1184, 1186,
+     1179, 1185, 1185, 1181, 1189, 1180, 1190, 1177, 1187, 1187,
+     1186, 1191, 1192, 1192, 1195, 1186, 1191, 1188, 1189, 1193,
+     1194, 1196, 1197, 1193, 1193, 1194, 1190, 1197, 1200, 1199,
+     1201, 1202, 1200, 1196, 1203, 1204, 1206,   41, 1205, 1203,
+     1195, 1199, 1201, 1205, 1208, 1209, 1209, 1208, 1206, 1210,
+
+     1210, 1211, 1211, 1212, 1213, 1215, 1202, 1204, 1214, 1216,
+     1213, 1215, 1218, 1214, 1221, 1223, 1220, 1218, 1216, 1220,
+     1224, 1224, 1225, 1212, 1226, 1227, 1221, 1223, 1228,   14,
+     1229, 1230, 1231, 1226, 1229, 1232, 1230, 1231, 1234, 1234,
+     1235, 1241, 1225, 1227, 1236, 1237, 1243, 1228, 1244, 1232,
+     1234, 1239, 1239, 1236, 1237, 1245, 1246, 1241, 1235, 1251,
+     1245, 1243, 1244, 1247, 1247, 1248, 1251, 1248, 1249, 1249,
+     1252, 1253, 1253, 1246, 1254, 1255, 1256, 1257, 1259, 1258,
+     1260, 1261, 1262, 1254, 1265, 1266, 1265, 1264, 1256, 1257,
+     1252, 1258, 1264, 1267, 1272, 1260, 1255, 1274, 1267, 1268,
+
+     1270, 1261, 1262, 1266, 1259, 1280, 1268, 1275, 1272, 1270,
+     1273, 1273, 1275, 1276, 1277, 1276, 1278, 1279, 1283, 1277,
+     1284, 1278, 1281, 1274, 1282, 1280, 1286, 1281, 1284, 1282,
+     1287, 1283, 1288, 1288, 1290, 1279, 1289, 1289, 1291, 1295,
+       13, 1292, 1293, 1296, 1287, 1286, 1292, 1293, 1294, 1290,
+     1294, 1295, 1296, 1299, 1297, 1296, 1297, 1300, 1291, 1298,
+     1298, 1302, 1299, 1303, 1305, 1306, 1302, 1308, 1303, 1300,
+     1307, 1313, 1310, 1312, 1314, 1315, 1319, 1305, 1310, 1312,
+     1316, 1316, 1317, 1308, 1315, 1306, 1313, 1322, 1307, 1318,
+     1318, 1317, 1320, 1321, 1325, 1319, 1320, 1323, 1321, 1314,
+
+     1322, 1323, 1323, 1324, 1328, 1328, 1329, 1330, 1330, 1331,
+     1331, 1324, 1332, 1333, 1325, 1329, 1334, 1335, 1336, 1336,
+     1338, 1334, 1335, 1339, 1332, 1340, 1341, 1342, 1339, 1343,
+     1344, 1333, 1342, 1345, 1345, 1346, 1347, 1348, 1349, 1346,
+     1350, 1341, 1348, 1352, 1353, 1338, 1344, 1343, 1340, 1354,
+     1355, 1347, 1362, 1356, 1357, 1358, 1360, 1360, 1361, 1350,
+     1368, 1361, 1352, 1363, 1349, 1362, 1357, 1353, 1364, 1355,
+     1365, 1365, 1369, 1354, 1356, 1368, 1358, 1363, 1366, 1366,
+     1373, 1364, 1367, 1367, 1375, 1369, 1370, 1370, 1371, 1371,
+     1372, 1372, 1374, 1374, 1376, 1376, 1377, 1377, 1378, 1373,
+
+     1380, 1382, 1375, 1381, 1381, 1380, 1383, 1383, 1384, 1385,
+     1386, 1387, 1387, 1386, 1389, 1385, 1390, 1378, 1388, 1388,
+     1382, 1391, 1392, 1392, 1394, 1395, 1384, 1387, 1396, 1401,
+     1397, 1390, 1399, 1389, 1397, 1398, 1398, 1400, 1400, 1407,
+     1391, 1402, 1402, 1396, 1394, 1403, 1405, 1406, 1395, 1408,
+     1409, 1399, 1406, 1412, 1403, 1401, 1410, 1413, 1405, 1415,
+     1411, 1410, 1408, 1414, 1407, 1411, 1413, 1419, 1412, 1416,
+     1425, 1409, 1414, 1415, 1416, 1417, 1421, 1422, 1422, 1417,
+     1427, 1423, 1424, 1424, 1428, 1421, 1423, 1419, 1430, 1434,
+     1425, 1424, 1425, 1428, 1432, 1427, 1433, 1432, 1435, 1439,
+
+     1430, 1433, 1436, 1436, 1438, 1438, 1440, 1440, 1441, 1434,
+     1435, 1442, 1443, 1439, 1444, 1444, 1447, 1446, 1450, 1447,
+     1441, 1446, 1448, 1448, 1449, 1442, 1451, 1452, 1453, 1449,
+     1454, 1443, 1453, 1459, 1455, 1456, 1457, 1462, 1450, 1455,
+     1456, 1452, 1457, 1460, 1466, 1462, 1451, 1461, 1460, 1459,
+     1454, 1463, 1461, 1463, 1467, 1467, 1471, 1471, 1466, 1473,
+     1476, 1477, 1477, 1479, 1479, 1476, 1481, 1482, 1482, 1483,
+     1484, 1481, 1487, 1485, 1488, 1489, 1489, 1473, 1485, 1491,
+     1493, 1494, 1492, 1496, 1496, 1483, 1488, 1492, 1491, 1498,
+     1500, 1487, 1484, 1499, 1498, 1499, 1494, 1501, 1493, 1502,
+
+     1502, 1505, 1501, 1506, 1500, 1503, 1503, 1504, 1504, 1507,
+     1507, 1508, 1509, 1505, 1510, 1511, 1512, 1513, 1513, 1514,
+     1511, 1506, 1515, 1508, 1509, 1516, 1510, 1517, 1514, 1518,
+     1519, 1520, 1520, 1521, 1522, 1523, 1512,    0, 1524, 1533,
+     1517, 1525, 1521, 1524, 1519, 1516, 1525, 1531, 1515, 1526,
+     1526, 1532, 1522, 1518, 1527, 1527, 1534, 1523, 1528, 1528,
+     1536, 1533, 1535, 1537, 1538, 1538, 1541, 1531, 1542, 1532,
+     1543, 1535, 1540, 1540, 1544, 1541, 1534, 1543, 1545, 1546,
+     1536, 1537, 1547, 1548, 1549, 1549, 1542, 1550, 1551, 1544,
+     1552, 1553, 1550, 1555, 1554, 1557, 1545, 1546, 1547, 1554,
+
+     1558, 1561, 1548, 1564, 1557, 1552, 1551, 1565, 1562,    0,
+     1553, 1562, 1569, 1555, 1563, 1563, 1566, 1566, 1564, 1558,
+     1567, 1561, 1570, 1572, 1567, 1565, 1570, 1569, 1571, 1571,
+     1574, 1574, 1575, 1576, 1576, 1582, 1572, 1577, 1577, 1581,
+     1581, 1583, 1585, 1584, 1586, 1587, 1590, 1585, 1588, 1586,
+     1591, 1575, 1584, 1592, 1583, 1591, 1588, 1582, 1592, 1593,
+     1596, 1590, 1594, 1594, 1587, 1595, 1595, 1596, 1597, 1604,
+     1598, 1599,    0, 1597, 1593, 1598, 1599, 1600, 1600, 1601,
+     1601, 1605, 1604, 1606, 1607, 1608, 1605, 1606, 1609, 1607,
+     1610, 1611, 1612, 1616, 1608, 1617, 1611, 1614, 1610, 1623,
+
+     1614, 1615, 1624, 1609, 1612, 1618, 1615, 1619, 1617, 1620,
+     1620, 1616, 1621, 1625, 1618, 1627, 1619, 1628, 1623, 1626,
+     1626, 1621, 1624, 1629, 1630, 1630, 1628, 1629, 1631, 1634,
+     1632, 1635, 1625, 1637, 1627, 1632, 1631, 1637, 1634, 1638,
+     1639, 1641, 1641, 1646, 1635, 1643, 1643, 1647, 1647, 1648,
+     1648, 1649, 1653, 1638, 1649, 1639, 1650, 1650, 1651, 1651,
+     1652, 1652, 1654, 1646, 1655, 1656, 1656, 1657, 1660, 1655,
+     1653, 1657, 1660, 1660, 1661, 1662, 1654, 1663, 1666, 1670,
+     1668, 1662, 1663, 1666, 1667, 1668, 1669, 1672, 1672, 1671,
+     1673, 1675, 1674, 1676, 1676, 1677, 1677, 1661, 1679, 1670,
+
+     1674, 1667, 1667, 1671, 1669, 1678, 1678, 1680, 1681, 1673,
+     1675, 1682, 1680, 1683, 1679, 1684, 1685, 1687, 1687, 1689,
+     1688, 1691, 1683, 1688, 1689, 1692, 1692, 1693, 1681, 1694,
+     1695, 1693, 1698, 1703, 1700, 1684, 1685, 1682, 1694, 1691,
+     1697, 1698, 1696, 1700, 1701, 1695, 1696, 1696, 1709, 1707,
+     1708, 1708, 1716, 1697, 1707, 1711, 1701, 1709, 1703, 1715,
+     1711, 1712, 1712, 1714, 1714, 1712, 1717, 1718, 1715, 1719,
+     1721, 1717, 1716, 1720, 1719, 1721, 1722, 1723, 1723, 1725,
+     1726, 1727, 1727, 1728, 1730, 1729, 1731, 1732, 1718, 1729,
+     1735, 1720, 1733, 1730, 1734, 1726, 1728, 1745, 1725, 1734,
+
+     1733, 1722, 1731, 1736, 1736, 1737, 1732, 1739, 1739, 1740,
+     1740, 1744, 1741, 1743, 1743, 1746, 1735, 1741, 1748, 1748,
+     1745, 1749, 1750, 1753, 1737, 1751, 1751, 1752, 1752, 1754,
+     1755, 1744, 1756, 1756, 1746, 1749, 1757, 1758, 1758, 1757,
+     1760, 1754, 1753, 1761, 1750, 1762, 1763, 1764, 1762, 1765,
+     1755, 1763, 1760, 1766, 1765, 1767, 1767, 1769, 1769, 1770,
+     1772, 1772, 1773, 1761, 1775, 1774, 1764, 1773,    0, 1775,
+     1766, 1766, 1776, 1776, 1777, 1777, 1778, 1778, 1770, 1774,
+     1779, 1781, 1781, 1784, 1784, 1779, 1786, 1786, 1787, 1788,
+     1789, 1790, 1790, 1791, 1798, 1794, 1795, 1795, 1791, 1789,
+
+     1796, 1799, 1787, 1794, 1801, 1796, 1800, 1802, 1803, 1788,
+     1851, 1800, 1804, 1805, 1798, 1802, 1801, 1806, 1807, 1810,
+     1830, 1799, 1851, 1807, 1812, 1812, 1803, 1823, 1804, 1830,
+     1805, 1805, 1813, 1813, 1818, 1818, 1814, 1820, 1806, 1810,
+     1814, 1820, 1822, 1822, 1824, 1823, 1826, 1826, 1827, 1829,
+     1831, 1831, 1832, 1832, 1833, 1833, 1834, 1835, 1824, 1836,
+     1837, 1834,    0, 1827, 1838, 1839, 1840, 1829, 1858, 1838,
+     1839, 1841, 1841, 1858, 1836, 1844, 1844, 1846, 1846, 1848,
+     1853, 1837, 1835, 1849, 1849, 1840, 1852, 1852, 1848, 1854,
+     1854, 1857, 1859, 1860, 1857, 1853, 1861, 1863, 1860, 1862,
+
+     1867, 1869, 1870, 1867, 1871, 1869, 1859, 1874, 1873, 1875,
+     1877, 1876, 1878, 1863, 1880, 1861, 1879, 1862, 1871, 1873,
+     1874, 1882, 1870, 1881, 1881, 1887, 1877, 1888, 1875, 1876,
+     1882, 1879, 1883, 1883, 1880, 1884, 1884, 1878, 1885, 1886,
+     1889, 1890, 1888, 1885, 1886, 1889, 1891, 1891, 1893, 1896,
+     1887, 1897, 1898, 1899, 1901, 1890, 1897, 1898, 1900, 1904,
+     1903, 1907, 1905, 1893, 1906, 1908, 1910, 1899, 1896, 1915,
+     1908, 1900,    0, 1901, 1903, 1905, 1909, 1906, 1904, 1912,
+     1907, 1909, 1911, 1911, 1912, 1910, 1913, 1914, 1915, 1916,
+     1918, 1913, 1914, 1919, 1916, 1917, 1917, 1918, 1920, 1921,
+
+     1922, 1923, 1925, 1926, 1921, 1927, 1930, 1925, 1928, 1929,
+     1929, 1930, 1919, 1931, 1923, 1932, 1932, 1920, 1934, 1922,
+     1935, 1928, 1926, 1934, 1927, 1933, 1933, 1935, 1936, 1937,
+     1937, 1938, 1931, 1939, 1940, 1942, 1941, 1944, 1938, 1945,
+     1939, 1941, 1944, 1946, 1945, 1947, 1949, 1936, 1948, 1948,
+     1950, 1951, 1951, 1940, 1942, 1952, 1952, 1954, 1954, 1953,
+     1955, 1955, 1946, 1956, 1947, 1949, 1953, 1958, 1961, 1950,
+     1956, 1962, 1958, 1961, 1963, 1964, 1964, 1965, 1965,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1962,    0,    0, 1963, 1969, 1969, 1969, 1969, 1969, 1969,
+
+     1969, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1971, 1971,
+     1971, 1971, 1971, 1971, 1971, 1972, 1972, 1972, 1972, 1972,
+     1972, 1972, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1975,
+     1975,    0, 1975, 1975, 1975, 1975, 1976, 1976,    0,    0,
+        0, 1976, 1976, 1977, 1977,    0,    0, 1977,    0, 1977,
+     1978,    0,    0,    0,    0,    0, 1978, 1979, 1979,    0,
+        0,    0, 1979, 1979, 1980,    0,    0,    0,    0,    0,
+     1980, 1981, 1981,    0, 1981, 1981, 1981, 1981, 1982, 1982,
+        0, 1982, 1982, 1982, 1982, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
+     1968, 1968, 1968, 1968, 1968
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2166,7 +2171,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2168 "<stdout>"
+#line 2173 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2389,7 +2394,7 @@ YY_DECL
        {
 #line 207 "./util/configlexer.lex"
 
-#line 2391 "<stdout>"
+#line 2396 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2422,13 +2427,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 >= 1961 )
+                               if ( yy_current_state >= 1969 )
                                        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] != 3872 );
+               while ( yy_base[yy_current_state] != 3886 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3084,304 +3089,309 @@ YY_RULE_SETUP
 case 126:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 341 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 342 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 343 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 344 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 345 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 346 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 347 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 348 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 353 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 357 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 358 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 359 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 360 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 361 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 362 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 363 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 364 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 365 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 366 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 367 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 368 "./util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 369 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 370 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 371 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 372 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 373 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 374 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 375 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 376 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 378 "./util/configlexer.lex"
+#line 377 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 380 "./util/configlexer.lex"
+#line 379 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 382 "./util/configlexer.lex"
+#line 381 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 384 "./util/configlexer.lex"
+#line 383 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 386 "./util/configlexer.lex"
+#line 385 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 388 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 387 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 389 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 390 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 391 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 392 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 176:
 YY_RULE_SETUP
 #line 393 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 394 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 178:
-/* rule 178 can match eol */
 YY_RULE_SETUP
 #line 395 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+       YY_BREAK
+case 179:
+/* rule 179 can match eol */
+YY_RULE_SETUP
+#line 396 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 398 "./util/configlexer.lex"
+#line 399 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 399 "./util/configlexer.lex"
+#line 400 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 404 "./util/configlexer.lex"
+#line 405 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 181:
-/* rule 181 can match eol */
+case 182:
+/* rule 182 can match eol */
 YY_RULE_SETUP
-#line 405 "./util/configlexer.lex"
+#line 406 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 407 "./util/configlexer.lex"
+#line 408 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3394,34 +3404,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 419 "./util/configlexer.lex"
+#line 420 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 420 "./util/configlexer.lex"
+#line 421 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 425 "./util/configlexer.lex"
+#line 426 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 185:
-/* rule 185 can match eol */
+case 186:
+/* rule 186 can match eol */
 YY_RULE_SETUP
-#line 426 "./util/configlexer.lex"
+#line 427 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 428 "./util/configlexer.lex"
+#line 429 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3434,38 +3444,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 440 "./util/configlexer.lex"
+#line 441 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 442 "./util/configlexer.lex"
+#line 443 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 188:
-YY_RULE_SETUP
-#line 446 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 189:
-/* rule 189 can match eol */
 YY_RULE_SETUP
 #line 447 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 190:
+/* rule 190 can match eol */
 YY_RULE_SETUP
 #line 448 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 191:
 YY_RULE_SETUP
 #line 449 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 192:
+YY_RULE_SETUP
+#line 450 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3473,27 +3483,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 454 "./util/configlexer.lex"
+#line 455 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 192:
+case 193:
 YY_RULE_SETUP
-#line 458 "./util/configlexer.lex"
+#line 459 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 193:
-/* rule 193 can match eol */
+case 194:
+/* rule 194 can match eol */
 YY_RULE_SETUP
-#line 459 "./util/configlexer.lex"
+#line 460 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 461 "./util/configlexer.lex"
+#line 462 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3503,7 +3513,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 467 "./util/configlexer.lex"
+#line 468 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3515,33 +3525,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 478 "./util/configlexer.lex"
+#line 479 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 482 "./util/configlexer.lex"
+#line 483 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 486 "./util/configlexer.lex"
+#line 487 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 490 "./util/configlexer.lex"
+#line 491 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3543 "<stdout>"
+#line 3553 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3832,7 +3842,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 >= 1961 )
+                       if ( yy_current_state >= 1969 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3860,11 +3870,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 >= 1961 )
+               if ( yy_current_state >= 1969 )
                        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 == 1960);
+       yy_is_jam = (yy_current_state == 1968);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4503,7 +4513,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 490 "./util/configlexer.lex"
+#line 491 "./util/configlexer.lex"
 
 
 
index 7a0710aad8851001f8f8ef374db132a7cbfb1656..366f6089593ce95b4250fc127a54853928bbece1 100644 (file)
@@ -334,6 +334,7 @@ use-syslog{COLON}           { YDVAR(1, VAR_USE_SYSLOG) }
 log-identity{COLON}            { YDVAR(1, VAR_LOG_IDENTITY) }
 log-time-ascii{COLON}          { YDVAR(1, VAR_LOG_TIME_ASCII) }
 log-queries{COLON}             { YDVAR(1, VAR_LOG_QUERIES) }
+log-replies{COLON}             { YDVAR(1, VAR_LOG_REPLIES) }
 local-zone{COLON}              { YDVAR(2, VAR_LOCAL_ZONE) }
 local-data{COLON}              { YDVAR(1, VAR_LOCAL_DATA) }
 local-data-ptr{COLON}          { YDVAR(1, VAR_LOCAL_DATA_PTR) }
index dce728ba3a10a9cf5273829930d64f260b779bca..12e25ac14c19a095e516d918bc48b145d0d3f607 100644 (file)
@@ -247,65 +247,66 @@ extern int yydebug;
     VAR_HARDEN_BELOW_NXDOMAIN = 378,
     VAR_IGNORE_CD_FLAG = 379,
     VAR_LOG_QUERIES = 380,
-    VAR_TCP_UPSTREAM = 381,
-    VAR_SSL_UPSTREAM = 382,
-    VAR_SSL_SERVICE_KEY = 383,
-    VAR_SSL_SERVICE_PEM = 384,
-    VAR_SSL_PORT = 385,
-    VAR_FORWARD_FIRST = 386,
-    VAR_STUB_SSL_UPSTREAM = 387,
-    VAR_FORWARD_SSL_UPSTREAM = 388,
-    VAR_STUB_FIRST = 389,
-    VAR_MINIMAL_RESPONSES = 390,
-    VAR_RRSET_ROUNDROBIN = 391,
-    VAR_MAX_UDP_SIZE = 392,
-    VAR_DELAY_CLOSE = 393,
-    VAR_UNBLOCK_LAN_ZONES = 394,
-    VAR_INSECURE_LAN_ZONES = 395,
-    VAR_INFRA_CACHE_MIN_RTT = 396,
-    VAR_DNS64_PREFIX = 397,
-    VAR_DNS64_SYNTHALL = 398,
-    VAR_DNSTAP = 399,
-    VAR_DNSTAP_ENABLE = 400,
-    VAR_DNSTAP_SOCKET_PATH = 401,
-    VAR_DNSTAP_SEND_IDENTITY = 402,
-    VAR_DNSTAP_SEND_VERSION = 403,
-    VAR_DNSTAP_IDENTITY = 404,
-    VAR_DNSTAP_VERSION = 405,
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 406,
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 407,
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 408,
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 409,
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 410,
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 411,
-    VAR_HARDEN_ALGO_DOWNGRADE = 412,
-    VAR_IP_TRANSPARENT = 413,
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 414,
-    VAR_RATELIMIT = 415,
-    VAR_RATELIMIT_SLABS = 416,
-    VAR_RATELIMIT_SIZE = 417,
-    VAR_RATELIMIT_FOR_DOMAIN = 418,
-    VAR_RATELIMIT_BELOW_DOMAIN = 419,
-    VAR_RATELIMIT_FACTOR = 420,
-    VAR_CAPS_WHITELIST = 421,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 422,
-    VAR_PERMIT_SMALL_HOLDDOWN = 423,
-    VAR_QNAME_MINIMISATION = 424,
-    VAR_QNAME_MINIMISATION_STRICT = 425,
-    VAR_IP_FREEBIND = 426,
-    VAR_DEFINE_TAG = 427,
-    VAR_LOCAL_ZONE_TAG = 428,
-    VAR_ACCESS_CONTROL_TAG = 429,
-    VAR_LOCAL_ZONE_OVERRIDE = 430,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 431,
-    VAR_ACCESS_CONTROL_TAG_DATA = 432,
-    VAR_VIEW = 433,
-    VAR_ACCESS_CONTROL_VIEW = 434,
-    VAR_VIEW_FIRST = 435,
-    VAR_SERVE_EXPIRED = 436,
-    VAR_FAKE_DSA = 437,
-    VAR_LOG_IDENTITY = 438,
-    VAR_USE_SYSTEMD = 439
+    VAR_LOG_REPLIES = 381,
+    VAR_TCP_UPSTREAM = 382,
+    VAR_SSL_UPSTREAM = 383,
+    VAR_SSL_SERVICE_KEY = 384,
+    VAR_SSL_SERVICE_PEM = 385,
+    VAR_SSL_PORT = 386,
+    VAR_FORWARD_FIRST = 387,
+    VAR_STUB_SSL_UPSTREAM = 388,
+    VAR_FORWARD_SSL_UPSTREAM = 389,
+    VAR_STUB_FIRST = 390,
+    VAR_MINIMAL_RESPONSES = 391,
+    VAR_RRSET_ROUNDROBIN = 392,
+    VAR_MAX_UDP_SIZE = 393,
+    VAR_DELAY_CLOSE = 394,
+    VAR_UNBLOCK_LAN_ZONES = 395,
+    VAR_INSECURE_LAN_ZONES = 396,
+    VAR_INFRA_CACHE_MIN_RTT = 397,
+    VAR_DNS64_PREFIX = 398,
+    VAR_DNS64_SYNTHALL = 399,
+    VAR_DNSTAP = 400,
+    VAR_DNSTAP_ENABLE = 401,
+    VAR_DNSTAP_SOCKET_PATH = 402,
+    VAR_DNSTAP_SEND_IDENTITY = 403,
+    VAR_DNSTAP_SEND_VERSION = 404,
+    VAR_DNSTAP_IDENTITY = 405,
+    VAR_DNSTAP_VERSION = 406,
+    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 407,
+    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 408,
+    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 409,
+    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 410,
+    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 411,
+    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 412,
+    VAR_HARDEN_ALGO_DOWNGRADE = 413,
+    VAR_IP_TRANSPARENT = 414,
+    VAR_DISABLE_DNSSEC_LAME_CHECK = 415,
+    VAR_RATELIMIT = 416,
+    VAR_RATELIMIT_SLABS = 417,
+    VAR_RATELIMIT_SIZE = 418,
+    VAR_RATELIMIT_FOR_DOMAIN = 419,
+    VAR_RATELIMIT_BELOW_DOMAIN = 420,
+    VAR_RATELIMIT_FACTOR = 421,
+    VAR_CAPS_WHITELIST = 422,
+    VAR_CACHE_MAX_NEGATIVE_TTL = 423,
+    VAR_PERMIT_SMALL_HOLDDOWN = 424,
+    VAR_QNAME_MINIMISATION = 425,
+    VAR_QNAME_MINIMISATION_STRICT = 426,
+    VAR_IP_FREEBIND = 427,
+    VAR_DEFINE_TAG = 428,
+    VAR_LOCAL_ZONE_TAG = 429,
+    VAR_ACCESS_CONTROL_TAG = 430,
+    VAR_LOCAL_ZONE_OVERRIDE = 431,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 432,
+    VAR_ACCESS_CONTROL_TAG_DATA = 433,
+    VAR_VIEW = 434,
+    VAR_ACCESS_CONTROL_VIEW = 435,
+    VAR_VIEW_FIRST = 436,
+    VAR_SERVE_EXPIRED = 437,
+    VAR_FAKE_DSA = 438,
+    VAR_LOG_IDENTITY = 439,
+    VAR_USE_SYSTEMD = 440
   };
 #endif
 /* Tokens.  */
@@ -432,65 +433,66 @@ extern int yydebug;
 #define VAR_HARDEN_BELOW_NXDOMAIN 378
 #define VAR_IGNORE_CD_FLAG 379
 #define VAR_LOG_QUERIES 380
-#define VAR_TCP_UPSTREAM 381
-#define VAR_SSL_UPSTREAM 382
-#define VAR_SSL_SERVICE_KEY 383
-#define VAR_SSL_SERVICE_PEM 384
-#define VAR_SSL_PORT 385
-#define VAR_FORWARD_FIRST 386
-#define VAR_STUB_SSL_UPSTREAM 387
-#define VAR_FORWARD_SSL_UPSTREAM 388
-#define VAR_STUB_FIRST 389
-#define VAR_MINIMAL_RESPONSES 390
-#define VAR_RRSET_ROUNDROBIN 391
-#define VAR_MAX_UDP_SIZE 392
-#define VAR_DELAY_CLOSE 393
-#define VAR_UNBLOCK_LAN_ZONES 394
-#define VAR_INSECURE_LAN_ZONES 395
-#define VAR_INFRA_CACHE_MIN_RTT 396
-#define VAR_DNS64_PREFIX 397
-#define VAR_DNS64_SYNTHALL 398
-#define VAR_DNSTAP 399
-#define VAR_DNSTAP_ENABLE 400
-#define VAR_DNSTAP_SOCKET_PATH 401
-#define VAR_DNSTAP_SEND_IDENTITY 402
-#define VAR_DNSTAP_SEND_VERSION 403
-#define VAR_DNSTAP_IDENTITY 404
-#define VAR_DNSTAP_VERSION 405
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 406
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 407
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 408
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 409
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 410
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 411
-#define VAR_HARDEN_ALGO_DOWNGRADE 412
-#define VAR_IP_TRANSPARENT 413
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 414
-#define VAR_RATELIMIT 415
-#define VAR_RATELIMIT_SLABS 416
-#define VAR_RATELIMIT_SIZE 417
-#define VAR_RATELIMIT_FOR_DOMAIN 418
-#define VAR_RATELIMIT_BELOW_DOMAIN 419
-#define VAR_RATELIMIT_FACTOR 420
-#define VAR_CAPS_WHITELIST 421
-#define VAR_CACHE_MAX_NEGATIVE_TTL 422
-#define VAR_PERMIT_SMALL_HOLDDOWN 423
-#define VAR_QNAME_MINIMISATION 424
-#define VAR_QNAME_MINIMISATION_STRICT 425
-#define VAR_IP_FREEBIND 426
-#define VAR_DEFINE_TAG 427
-#define VAR_LOCAL_ZONE_TAG 428
-#define VAR_ACCESS_CONTROL_TAG 429
-#define VAR_LOCAL_ZONE_OVERRIDE 430
-#define VAR_ACCESS_CONTROL_TAG_ACTION 431
-#define VAR_ACCESS_CONTROL_TAG_DATA 432
-#define VAR_VIEW 433
-#define VAR_ACCESS_CONTROL_VIEW 434
-#define VAR_VIEW_FIRST 435
-#define VAR_SERVE_EXPIRED 436
-#define VAR_FAKE_DSA 437
-#define VAR_LOG_IDENTITY 438
-#define VAR_USE_SYSTEMD 439
+#define VAR_LOG_REPLIES 381
+#define VAR_TCP_UPSTREAM 382
+#define VAR_SSL_UPSTREAM 383
+#define VAR_SSL_SERVICE_KEY 384
+#define VAR_SSL_SERVICE_PEM 385
+#define VAR_SSL_PORT 386
+#define VAR_FORWARD_FIRST 387
+#define VAR_STUB_SSL_UPSTREAM 388
+#define VAR_FORWARD_SSL_UPSTREAM 389
+#define VAR_STUB_FIRST 390
+#define VAR_MINIMAL_RESPONSES 391
+#define VAR_RRSET_ROUNDROBIN 392
+#define VAR_MAX_UDP_SIZE 393
+#define VAR_DELAY_CLOSE 394
+#define VAR_UNBLOCK_LAN_ZONES 395
+#define VAR_INSECURE_LAN_ZONES 396
+#define VAR_INFRA_CACHE_MIN_RTT 397
+#define VAR_DNS64_PREFIX 398
+#define VAR_DNS64_SYNTHALL 399
+#define VAR_DNSTAP 400
+#define VAR_DNSTAP_ENABLE 401
+#define VAR_DNSTAP_SOCKET_PATH 402
+#define VAR_DNSTAP_SEND_IDENTITY 403
+#define VAR_DNSTAP_SEND_VERSION 404
+#define VAR_DNSTAP_IDENTITY 405
+#define VAR_DNSTAP_VERSION 406
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 407
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 408
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 409
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 410
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 411
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 412
+#define VAR_HARDEN_ALGO_DOWNGRADE 413
+#define VAR_IP_TRANSPARENT 414
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 415
+#define VAR_RATELIMIT 416
+#define VAR_RATELIMIT_SLABS 417
+#define VAR_RATELIMIT_SIZE 418
+#define VAR_RATELIMIT_FOR_DOMAIN 419
+#define VAR_RATELIMIT_BELOW_DOMAIN 420
+#define VAR_RATELIMIT_FACTOR 421
+#define VAR_CAPS_WHITELIST 422
+#define VAR_CACHE_MAX_NEGATIVE_TTL 423
+#define VAR_PERMIT_SMALL_HOLDDOWN 424
+#define VAR_QNAME_MINIMISATION 425
+#define VAR_QNAME_MINIMISATION_STRICT 426
+#define VAR_IP_FREEBIND 427
+#define VAR_DEFINE_TAG 428
+#define VAR_LOCAL_ZONE_TAG 429
+#define VAR_ACCESS_CONTROL_TAG 430
+#define VAR_LOCAL_ZONE_OVERRIDE 431
+#define VAR_ACCESS_CONTROL_TAG_ACTION 432
+#define VAR_ACCESS_CONTROL_TAG_DATA 433
+#define VAR_VIEW 434
+#define VAR_ACCESS_CONTROL_VIEW 435
+#define VAR_VIEW_FIRST 436
+#define VAR_SERVE_EXPIRED 437
+#define VAR_FAKE_DSA 438
+#define VAR_LOG_IDENTITY 439
+#define VAR_USE_SYSTEMD 440
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -501,7 +503,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 505 "util/configparser.c" /* yacc.c:355  */
+#line 507 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -518,7 +520,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 522 "util/configparser.c" /* yacc.c:358  */
+#line 524 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -760,21 +762,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   365
+#define YYLAST   367
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  185
+#define YYNTOKENS  186
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  195
+#define YYNNTS  196
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  373
+#define YYNRULES  375
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  559
+#define YYNSTATES  562
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   439
+#define YYMAXUTOK   440
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -826,51 +828,52 @@ static const yytype_uint8 yytranslate[] =
      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
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   138,   138,   138,   139,   139,   140,   140,   141,   141,
-     141,   146,   151,   152,   153,   153,   153,   154,   154,   155,
-     155,   156,   156,   157,   157,   158,   158,   158,   159,   159,
-     159,   160,   160,   161,   161,   162,   162,   163,   163,   164,
-     164,   165,   165,   166,   166,   167,   167,   168,   168,   168,
-     169,   169,   169,   170,   170,   170,   171,   171,   172,   172,
-     173,   173,   174,   174,   175,   175,   175,   176,   176,   177,
-     177,   178,   178,   178,   179,   179,   180,   180,   181,   181,
-     182,   182,   182,   183,   183,   184,   184,   185,   185,   186,
-     186,   187,   187,   188,   188,   188,   189,   189,   190,   190,
-     190,   191,   191,   191,   192,   192,   192,   193,   193,   193,
-     194,   194,   194,   195,   195,   195,   196,   196,   197,   197,
-     198,   198,   199,   199,   200,   200,   200,   201,   201,   202,
-     202,   203,   203,   204,   204,   205,   205,   205,   206,   206,
-     207,   207,   208,   208,   209,   209,   210,   210,   210,   212,
-     224,   225,   226,   226,   226,   226,   226,   227,   229,   241,
-     242,   243,   243,   243,   243,   244,   246,   260,   261,   262,
-     262,   262,   262,   264,   273,   282,   293,   302,   311,   320,
-     333,   348,   357,   366,   375,   384,   393,   402,   411,   420,
-     429,   438,   447,   456,   465,   474,   483,   490,   497,   506,
-     515,   524,   538,   547,   556,   563,   570,   596,   604,   611,
-     618,   625,   632,   640,   648,   656,   663,   670,   679,   688,
-     695,   702,   710,   718,   728,   738,   748,   761,   772,   780,
-     793,   802,   811,   820,   830,   840,   848,   861,   870,   878,
-     887,   895,   908,   917,   924,   934,   944,   954,   964,   974,
-     984,   994,  1004,  1011,  1018,  1025,  1034,  1043,  1052,  1059,
-    1069,  1086,  1093,  1111,  1124,  1137,  1146,  1155,  1164,  1173,
-    1183,  1193,  1202,  1211,  1224,  1233,  1240,  1249,  1258,  1267,
-    1276,  1284,  1297,  1305,  1333,  1340,  1355,  1365,  1375,  1382,
-    1389,  1398,  1412,  1431,  1450,  1462,  1474,  1486,  1497,  1506,
-    1514,  1527,  1540,  1553,  1562,  1572,  1582,  1592,  1599,  1606,
-    1615,  1625,  1635,  1645,  1652,  1659,  1668,  1678,  1688,  1717,
-    1726,  1735,  1740,  1741,  1742,  1742,  1742,  1743,  1743,  1743,
-    1744,  1744,  1746,  1756,  1765,  1772,  1782,  1789,  1796,  1803,
-    1810,  1815,  1816,  1817,  1817,  1818,  1818,  1819,  1819,  1820,
-    1821,  1822,  1823,  1824,  1825,  1827,  1835,  1842,  1850,  1858,
-    1865,  1872,  1881,  1890,  1899,  1908,  1917,  1926,  1931,  1932,
-    1933,  1935,  1941,  1951
+       0,   139,   139,   139,   140,   140,   141,   141,   142,   142,
+     142,   147,   152,   153,   154,   154,   154,   155,   155,   156,
+     156,   157,   157,   158,   158,   159,   159,   159,   160,   160,
+     160,   161,   161,   162,   162,   163,   163,   164,   164,   165,
+     165,   166,   166,   167,   167,   168,   168,   169,   169,   169,
+     170,   170,   170,   171,   171,   171,   172,   172,   173,   173,
+     174,   174,   175,   175,   176,   176,   176,   177,   177,   178,
+     178,   179,   179,   179,   180,   180,   181,   181,   182,   182,
+     183,   183,   183,   184,   184,   185,   185,   186,   186,   187,
+     187,   188,   188,   189,   189,   189,   190,   190,   191,   191,
+     191,   192,   192,   192,   193,   193,   193,   194,   194,   194,
+     194,   195,   195,   195,   196,   196,   196,   197,   197,   198,
+     198,   199,   199,   200,   200,   201,   201,   201,   202,   202,
+     203,   203,   204,   204,   205,   205,   206,   206,   206,   207,
+     207,   208,   208,   209,   209,   210,   210,   211,   211,   211,
+     213,   225,   226,   227,   227,   227,   227,   227,   228,   230,
+     242,   243,   244,   244,   244,   244,   245,   247,   261,   262,
+     263,   263,   263,   263,   265,   274,   283,   294,   303,   312,
+     321,   334,   349,   358,   367,   376,   385,   394,   403,   412,
+     421,   430,   439,   448,   457,   466,   475,   484,   491,   498,
+     507,   516,   525,   539,   548,   557,   566,   573,   580,   606,
+     614,   621,   628,   635,   642,   650,   658,   666,   673,   680,
+     689,   698,   705,   712,   720,   728,   738,   748,   758,   771,
+     782,   790,   803,   812,   821,   830,   840,   850,   858,   871,
+     880,   888,   897,   905,   918,   927,   934,   944,   954,   964,
+     974,   984,   994,  1004,  1014,  1021,  1028,  1035,  1044,  1053,
+    1062,  1069,  1079,  1096,  1103,  1121,  1134,  1147,  1156,  1165,
+    1174,  1183,  1193,  1203,  1212,  1221,  1234,  1243,  1250,  1259,
+    1268,  1277,  1286,  1294,  1307,  1315,  1343,  1350,  1365,  1375,
+    1385,  1392,  1399,  1408,  1422,  1441,  1460,  1472,  1484,  1496,
+    1507,  1516,  1524,  1537,  1550,  1563,  1572,  1582,  1592,  1602,
+    1609,  1616,  1625,  1635,  1645,  1655,  1662,  1669,  1678,  1688,
+    1698,  1727,  1736,  1745,  1750,  1751,  1752,  1752,  1752,  1753,
+    1753,  1753,  1754,  1754,  1756,  1766,  1775,  1782,  1792,  1799,
+    1806,  1813,  1820,  1825,  1826,  1827,  1827,  1828,  1828,  1829,
+    1829,  1830,  1831,  1832,  1833,  1834,  1835,  1837,  1845,  1852,
+    1860,  1868,  1875,  1882,  1891,  1900,  1909,  1918,  1927,  1936,
+    1941,  1942,  1943,  1945,  1951,  1961
 };
 #endif
 
@@ -918,15 +921,15 @@ static const char *const yytname[] =
   "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
   "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
   "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
-  "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY",
-  "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
-  "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", "VAR_STUB_FIRST",
-  "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE",
-  "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
-  "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
-  "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH",
-  "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION",
-  "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
+  "VAR_LOG_REPLIES", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM",
+  "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT",
+  "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
+  "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN",
+  "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES",
+  "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX",
+  "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE",
+  "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY",
+  "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
   "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
   "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
@@ -959,8 +962,8 @@ static const char *const yytname[] =
   "server_outgoing_tcp_mss", "server_tcp_upstream", "server_ssl_upstream",
   "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port",
   "server_use_systemd", "server_do_daemonize", "server_use_syslog",
-  "server_log_time_ascii", "server_log_queries", "server_chroot",
-  "server_username", "server_directory", "server_logfile",
+  "server_log_time_ascii", "server_log_queries", "server_log_replies",
+  "server_chroot", "server_username", "server_directory", "server_logfile",
   "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
   "server_dlv_anchor", "server_auto_trust_anchor_file",
   "server_trust_anchor_file", "server_trusted_keys_file",
@@ -1049,14 +1052,14 @@ static const yytype_uint16 yytoknum[] =
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,   437,   438,   439
+     435,   436,   437,   438,   439,   440
 };
 # endif
 
-#define YYPACT_NINF -130
+#define YYPACT_NINF -131
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-130)))
+  (!!((Yystate) == (-131)))
 
 #define YYTABLE_NINF -1
 
@@ -1067,62 +1070,63 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -130,     0,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,   135,   -38,
-     -34,   -39,   -64,  -129,  -105,    -3,    -2,    -1,     2,     3,
+    -131,     0,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,   136,   -38,
+     -34,   -39,   -64,  -130,  -105,    -3,    -2,    -1,     2,     3,
       26,    29,    30,    32,    33,    34,    35,    36,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    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,
-      82,    83,    85,    88,    90,    91,    92,    93,    94,    95,
+      82,    83,    84,    86,    89,    91,    92,    93,    94,    95,
       96,    98,    99,   100,   101,   102,   103,   104,   105,   106,
      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   132,   133,   136,   165,   166,   167,
-     172,   173,   174,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   228,   232,   233,   256,   257,   258,   259,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,   280,   281,   303,   305,
-     310,   311,  -130,  -130,  -130,  -130,  -130,  -130,  -130,   312,
-     313,   314,   315,   316,  -130,  -130,  -130,  -130,  -130,  -130,
-     317,   318,   319,   320,  -130,  -130,  -130,  -130,  -130,   321,
-     322,   323,   324,   325,   326,   327,   328,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,   329,   330,   331,   332,
-     333,   334,   335,   336,   337,   338,   339,   340,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,   341,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-     342,   343,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,   344,
-     345,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,   346,
-     347,   348,   349,   350,   351,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,   352,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,   353,   354,   355,  -130,  -130,  -130,  -130,  -130
+     127,   128,   129,   130,   131,   133,   134,   137,   166,   167,
+     168,   173,   174,   175,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   229,   233,   234,   258,   259,   260,   261,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,   282,   283,
+     305,   307,   312,   313,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,   314,   315,   316,   317,   318,  -131,  -131,  -131,  -131,
+    -131,  -131,   319,   320,   321,   322,  -131,  -131,  -131,  -131,
+    -131,   323,   324,   325,   326,   327,   328,   329,   330,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,   331,   332,
+     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,   343,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,   344,   345,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,   346,   347,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,   348,   349,   350,   351,   352,   353,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,   354,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,   355,   356,   357,  -131,  -131,  -131,
+    -131,  -131
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1130,8 +1134,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    11,   149,   158,   321,   367,   340,   166,
-       3,    13,   151,   160,   168,   323,   342,   369,     4,     5,
+       2,     0,     1,    11,   150,   159,   323,   369,   342,   167,
+       3,    13,   152,   161,   169,   325,   344,   371,     4,     5,
        6,    10,     8,     9,     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,
@@ -1146,96 +1150,97 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      12,    14,    15,    74,    77,    86,    16,    25,    65,    17,
-      78,    79,    36,    58,    73,    18,    19,    21,    22,    20,
-      23,    24,   108,   109,   110,   111,   112,   148,    75,    64,
-      90,   107,    26,    27,    28,    29,    30,    66,    80,    81,
-      96,    52,    62,    53,    91,    46,    47,    48,    49,   100,
-     104,   116,   124,   135,   101,    59,    31,    32,    33,    88,
-     117,   118,   119,    34,    35,    37,    38,    40,    41,    39,
-     122,    42,    43,    44,    50,    69,   105,    83,   123,    76,
-     131,    84,    85,   102,   103,    89,    45,    67,    70,    51,
-      54,    92,    93,    68,   132,    94,    55,    56,    57,   106,
-     145,   146,    95,    63,    97,    98,    99,   133,    60,    61,
-      82,    71,    72,    87,   113,   114,   115,   120,   121,   136,
-     137,   139,   141,   142,   140,   143,   125,   127,   126,   128,
-     129,   130,   134,   144,   138,   147,     0,     0,     0,     0,
-       0,     0,   150,   152,   153,   154,   156,   157,   155,     0,
-       0,     0,     0,     0,   159,   161,   162,   163,   164,   165,
-       0,     0,     0,     0,   167,   169,   170,   171,   172,     0,
-       0,     0,     0,     0,     0,     0,     0,   322,   324,   326,
-     325,   331,   327,   328,   329,   330,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   341,   343,
-     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
-     354,     0,   368,   370,   174,   173,   178,   181,   179,   187,
-     188,   191,   189,   190,   192,   193,   204,   205,   206,   207,
-     208,   228,   229,   230,   235,   236,   184,   237,   238,   241,
-     239,   240,   243,   244,   245,   258,   217,   218,   219,   220,
-     246,   261,   213,   215,   262,   268,   269,   270,   185,   227,
-     280,   281,   214,   275,   201,   180,   209,   259,   265,   247,
-       0,     0,   284,   186,   175,   200,   251,   176,   182,   183,
-     210,   211,   282,   249,   253,   254,   177,   285,   231,   257,
-     202,   216,   263,   264,   267,   274,   212,   278,   276,   277,
-     221,   226,   255,   256,   222,   223,   248,   271,   203,   194,
-     195,   196,   197,   198,   286,   287,   288,   232,   233,   234,
-     242,   289,   290,   250,   224,   372,   298,   300,   299,     0,
-       0,   303,   252,   266,   279,   304,   305,   225,   291,     0,
-       0,     0,     0,     0,     0,   272,   273,   373,   199,   306,
-     307,   308,   311,   310,   309,   312,   313,   314,   315,   316,
-     317,     0,   319,   320,   332,   334,   333,   336,   337,   338,
-     339,   335,   355,   356,   357,   358,   359,   360,   361,   362,
-     363,   364,   365,   366,   371,   260,   283,   301,   302,   292,
-     293,     0,     0,     0,   297,   318,   296,   294,   295
+       0,    12,    14,    15,    74,    77,    86,    16,    25,    65,
+      17,    78,    79,    36,    58,    73,    18,    19,    21,    22,
+      20,    23,    24,   109,   110,   111,   112,   113,   149,    75,
+      64,    90,   107,   108,    26,    27,    28,    29,    30,    66,
+      80,    81,    96,    52,    62,    53,    91,    46,    47,    48,
+      49,   100,   104,   117,   125,   136,   101,    59,    31,    32,
+      33,    88,   118,   119,   120,    34,    35,    37,    38,    40,
+      41,    39,   123,    42,    43,    44,    50,    69,   105,    83,
+     124,    76,   132,    84,    85,   102,   103,    89,    45,    67,
+      70,    51,    54,    92,    93,    68,   133,    94,    55,    56,
+      57,   106,   146,   147,    95,    63,    97,    98,    99,   134,
+      60,    61,    82,    71,    72,    87,   114,   115,   116,   121,
+     122,   137,   138,   140,   142,   143,   141,   144,   126,   128,
+     127,   129,   130,   131,   135,   145,   139,   148,     0,     0,
+       0,     0,     0,     0,   151,   153,   154,   155,   157,   158,
+     156,     0,     0,     0,     0,     0,   160,   162,   163,   164,
+     165,   166,     0,     0,     0,     0,   168,   170,   171,   172,
+     173,     0,     0,     0,     0,     0,     0,     0,     0,   324,
+     326,   328,   327,   333,   329,   330,   331,   332,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     343,   345,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   355,   356,     0,   370,   372,   175,   174,   179,   182,
+     180,   188,   189,   192,   190,   191,   193,   194,   206,   207,
+     208,   209,   210,   230,   231,   232,   237,   238,   185,   239,
+     240,   243,   241,   242,   245,   246,   247,   260,   219,   220,
+     221,   222,   248,   263,   215,   217,   264,   270,   271,   272,
+     186,   229,   282,   283,   216,   277,   202,   181,   211,   261,
+     267,   249,     0,     0,   286,   187,   176,   201,   253,   177,
+     183,   184,   212,   213,   284,   251,   255,   256,   178,   287,
+     233,   259,   203,   218,   265,   266,   269,   276,   214,   280,
+     278,   279,   223,   228,   257,   258,   224,   225,   250,   273,
+     204,   205,   195,   196,   197,   198,   199,   288,   289,   290,
+     234,   235,   236,   244,   291,   292,   252,   226,   374,   300,
+     302,   301,     0,     0,   305,   254,   268,   281,   306,   307,
+     227,   293,     0,     0,     0,     0,     0,     0,   274,   275,
+     375,   200,   308,   309,   310,   313,   312,   311,   314,   315,
+     316,   317,   318,   319,     0,   321,   322,   334,   336,   335,
+     338,   339,   340,   341,   337,   357,   358,   359,   360,   361,
+     362,   363,   364,   365,   366,   367,   368,   373,   262,   285,
+     303,   304,   294,   295,     0,     0,     0,   299,   320,   298,
+     296,   297
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
-    -130,  -130,  -130,  -130,  -130
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
+    -131,  -131,  -131,  -131,  -131,  -131
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    10,    11,    18,   160,    12,    19,   302,    13,
-      20,   314,    14,    21,   324,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   303,   304,
-     305,   306,   307,   308,   315,   316,   317,   318,   319,   325,
-     326,   327,   328,    15,    22,   337,   338,   339,   340,   341,
-     342,   343,   344,   345,    16,    23,   358,   359,   360,   361,
-     362,   363,   364,   365,   366,   367,   368,   369,   370,    17,
-      24,   372,   373,   294,   295
+      -1,     1,    10,    11,    18,   161,    12,    19,   304,    13,
+      20,   316,    14,    21,   326,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   305,
+     306,   307,   308,   309,   310,   317,   318,   319,   320,   321,
+     327,   328,   329,   330,    15,    22,   339,   340,   341,   342,
+     343,   344,   345,   346,   347,    16,    23,   360,   361,   362,
+     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
+      17,    24,   374,   375,   296,   297
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1243,93 +1248,93 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-       2,   320,   296,   371,   297,   298,   309,   374,   375,   376,
-       0,     3,   377,   378,   310,   311,   346,   347,   348,   349,
-     350,   351,   352,   353,   354,   355,   356,   357,   329,   330,
-     331,   332,   333,   334,   335,   336,   379,   321,   322,   380,
-     381,     4,   382,   383,   384,   385,   386,     5,   387,   388,
-     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
-     399,   400,   401,   402,   403,   299,   404,   405,   406,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
-     428,     6,   429,   430,   300,   431,   301,   312,   432,   313,
-     433,   434,   435,   436,   437,   438,   439,     7,   440,   441,
-     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
-     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
-     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
-     472,   323,   473,   474,     8,     0,   475,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,   476,   477,   478,     9,    53,
-      54,    55,   479,   480,   481,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,   482,   483,   484,   485,
-     486,   487,   488,   489,   490,    97,    98,    99,   491,   100,
-     101,   102,   492,   493,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   494,   495,   496,   497,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   498,
-     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
-     509,   510,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   511,   155,   512,   156,   157,   158,   159,
-     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
-     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
-     533,   534,   535,   536,   537,   538,   539,   540,   541,   542,
-     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
-     553,   554,   555,   556,   557,   558
+       2,   322,   298,   373,   299,   300,   311,   376,   377,   378,
+       0,     3,   379,   380,   312,   313,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   331,   332,
+     333,   334,   335,   336,   337,   338,   381,   323,   324,   382,
+     383,     4,   384,   385,   386,   387,   388,     5,   389,   390,
+     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
+     401,   402,   403,   404,   405,   301,   406,   407,   408,   409,
+     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
+     430,     6,   431,   432,   433,   302,   434,   303,   314,   435,
+     315,   436,   437,   438,   439,   440,   441,     7,   442,   443,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
+     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   325,   476,   477,     8,     0,   478,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,   479,   480,   481,     9,
+      53,    54,    55,   482,   483,   484,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,   485,   486,   487,
+     488,   489,   490,   491,   492,   493,    97,    98,    99,   494,
+     100,   101,   102,   495,   496,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   497,   498,
+     499,   500,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   501,   502,   503,   504,   505,   506,   507,   508,   509,
+     510,   511,   512,   513,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   514,   156,   515,   157,   158,
+     159,   160,   516,   517,   518,   519,   520,   521,   522,   523,
+     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
+     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
+     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
+     554,   555,   556,   557,   558,   559,   560,   561
 };
 
 static const yytype_int16 yycheck[] =
 {
        0,    40,    40,   108,    42,    43,    40,    10,    10,    10,
-      -1,    11,    10,    10,    48,    49,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,    92,    93,
+      -1,    11,    10,    10,    48,    49,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,    92,    93,
       94,    95,    96,    97,    98,    99,    10,    76,    77,    10,
       10,    41,    10,    10,    10,    10,    10,    47,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,   103,    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,    91,    10,    10,   132,    10,   134,   131,    10,   133,
-      10,    10,    10,    10,    10,    10,    10,   107,    10,    10,
+      10,    91,    10,    10,    10,   133,    10,   135,   132,    10,
+     134,    10,    10,    10,    10,    10,    10,   107,    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,   180,    10,    10,   144,    -1,    10,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    10,    10,    10,   178,    44,
-      45,    46,    10,    10,    10,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,   100,   101,   102,    10,   104,
-     105,   106,    10,    10,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,    10,    10,    10,    10,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,    10,   179,    10,   181,   182,   183,   184,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,   181,    10,    10,   145,    -1,    10,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    10,    10,    10,   179,
+      44,    45,    46,    10,    10,    10,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,   100,   101,   102,    10,
+     104,   105,   106,    10,    10,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,    10,    10,
+      10,    10,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,    10,   180,    10,   182,   183,
+     184,   185,    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
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   186,     0,    11,    41,    47,    91,   107,   144,   178,
-     187,   188,   191,   194,   197,   348,   359,   374,   189,   192,
-     195,   198,   349,   360,   375,    12,    13,    14,    15,    16,
+       0,   187,     0,    11,    41,    47,    91,   107,   145,   179,
+     188,   189,   192,   195,   198,   350,   361,   376,   190,   193,
+     196,   199,   351,   362,   377,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    44,    45,    46,    50,    51,    52,    53,
@@ -1339,11 +1344,11 @@ static const yytype_uint16 yystos[] =
       84,    85,    86,    87,    88,    89,    90,   100,   101,   102,
      104,   105,   106,   109,   110,   111,   112,   113,   114,   115,
      116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   157,   158,   159,   160,   161,   162,
+     126,   127,   128,   129,   130,   131,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   158,   159,   160,   161,   162,
      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   179,   181,   182,   183,   184,
-     190,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     173,   174,   175,   176,   177,   178,   180,   182,   183,   184,
+     185,   191,   201,   202,   203,   204,   205,   206,   207,   208,
      209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
      219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
@@ -1356,15 +1361,16 @@ static const yytype_uint16 yystos[] =
      299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
      319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   378,   379,    40,    42,    43,   103,
-     132,   134,   193,   333,   334,   335,   336,   337,   338,    40,
-      48,    49,   131,   133,   196,   339,   340,   341,   342,   343,
-      40,    76,    77,   180,   199,   344,   345,   346,   347,    92,
-      93,    94,    95,    96,    97,    98,    99,   350,   351,   352,
-     353,   354,   355,   356,   357,   358,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   361,   362,
+     329,   330,   331,   332,   333,   334,   380,   381,    40,    42,
+      43,   103,   133,   135,   194,   335,   336,   337,   338,   339,
+     340,    40,    48,    49,   132,   134,   197,   341,   342,   343,
+     344,   345,    40,    76,    77,   181,   200,   346,   347,   348,
+     349,    92,    93,    94,    95,    96,    97,    98,    99,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
      363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
-     373,   108,   376,   377,    10,    10,    10,    10,    10,    10,
+     373,   374,   375,   108,   378,   379,    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,
@@ -1382,30 +1388,30 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10
+      10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   185,   186,   186,   187,   187,   187,   187,   187,   187,
-     187,   188,   189,   189,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   191,
-     192,   192,   193,   193,   193,   193,   193,   193,   194,   195,
-     195,   196,   196,   196,   196,   196,   197,   198,   198,   199,
-     199,   199,   199,   200,   201,   202,   203,   204,   205,   206,
+       0,   186,   187,   187,   188,   188,   188,   188,   188,   188,
+     188,   189,   190,   190,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
+     192,   193,   193,   194,   194,   194,   194,   194,   194,   195,
+     196,   196,   197,   197,   197,   197,   197,   198,   199,   199,
+     200,   200,   200,   200,   201,   202,   203,   204,   205,   206,
      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
      217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
      227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
@@ -1420,12 +1426,12 @@ static const yytype_uint16 yyr1[] =
      317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
      327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
      337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
-     347,   348,   349,   349,   350,   350,   350,   350,   350,   350,
-     350,   350,   351,   352,   353,   354,   355,   356,   357,   358,
-     359,   360,   360,   361,   361,   361,   361,   361,   361,   361,
-     361,   361,   361,   361,   361,   362,   363,   364,   365,   366,
-     367,   368,   369,   370,   371,   372,   373,   374,   375,   375,
-     376,   377,   378,   379
+     347,   348,   349,   350,   351,   351,   352,   352,   352,   352,
+     352,   352,   352,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   362,   363,   363,   363,   363,   363,
+     363,   363,   363,   363,   363,   363,   363,   364,   365,   366,
+     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
+     377,   377,   378,   379,   380,   381
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1446,9 +1452,9 @@ 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,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1457,18 +1463,18 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     3,     4,     4,     4,     3,     2,     2,
-       2,     3,     3,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-       2,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
-       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
-       1,     2,     2,     2
+       2,     2,     2,     2,     2,     3,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     3,     4,     4,     4,     3,
+       2,     2,     2,     3,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       3,     2,     2,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     2,     2,     2
 };
 
 
@@ -2145,15 +2151,15 @@ yyreduce:
   switch (yyn)
     {
         case 11:
-#line 147 "./util/configparser.y" /* yacc.c:1646  */
+#line 148 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2153 "util/configparser.c" /* yacc.c:1646  */
+#line 2159 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 213 "./util/configparser.y" /* yacc.c:1646  */
+  case 150:
+#line 214 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2164,11 +2170,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2168 "util/configparser.c" /* yacc.c:1646  */
+#line 2174 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 230 "./util/configparser.y" /* yacc.c:1646  */
+  case 159:
+#line 231 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2179,11 +2185,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2183 "util/configparser.c" /* yacc.c:1646  */
+#line 2189 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 247 "./util/configparser.y" /* yacc.c:1646  */
+  case 167:
+#line 248 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2196,11 +2202,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2200 "util/configparser.c" /* yacc.c:1646  */
+#line 2206 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 265 "./util/configparser.y" /* yacc.c:1646  */
+  case 174:
+#line 266 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2208,11 +2214,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2212 "util/configparser.c" /* yacc.c:1646  */
+#line 2218 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 274 "./util/configparser.y" /* yacc.c:1646  */
+  case 175:
+#line 275 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2220,11 +2226,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2224 "util/configparser.c" /* yacc.c:1646  */
+#line 2230 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 283 "./util/configparser.y" /* yacc.c:1646  */
+  case 176:
+#line 284 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2234,11 +2240,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2238 "util/configparser.c" /* yacc.c:1646  */
+#line 2244 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 294 "./util/configparser.y" /* yacc.c:1646  */
+  case 177:
+#line 295 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2246,11 +2252,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2250 "util/configparser.c" /* yacc.c:1646  */
+#line 2256 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 303 "./util/configparser.y" /* yacc.c:1646  */
+  case 178:
+#line 304 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2258,11 +2264,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2262 "util/configparser.c" /* yacc.c:1646  */
+#line 2268 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 312 "./util/configparser.y" /* yacc.c:1646  */
+  case 179:
+#line 313 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2270,11 +2276,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2274 "util/configparser.c" /* yacc.c:1646  */
+#line 2280 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 321 "./util/configparser.y" /* yacc.c:1646  */
+  case 180:
+#line 322 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2286,11 +2292,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2290 "util/configparser.c" /* yacc.c:1646  */
+#line 2296 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 334 "./util/configparser.y" /* yacc.c:1646  */
+  case 181:
+#line 335 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2304,11 +2310,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2308 "util/configparser.c" /* yacc.c:1646  */
+#line 2314 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 349 "./util/configparser.y" /* yacc.c:1646  */
+  case 182:
+#line 350 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2316,11 +2322,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2320 "util/configparser.c" /* yacc.c:1646  */
+#line 2326 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 358 "./util/configparser.y" /* yacc.c:1646  */
+  case 183:
+#line 359 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2328,11 +2334,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2332 "util/configparser.c" /* yacc.c:1646  */
+#line 2338 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 367 "./util/configparser.y" /* yacc.c:1646  */
+  case 184:
+#line 368 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2340,11 +2346,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2344 "util/configparser.c" /* yacc.c:1646  */
+#line 2350 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 376 "./util/configparser.y" /* yacc.c:1646  */
+  case 185:
+#line 377 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2352,11 +2358,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2356 "util/configparser.c" /* yacc.c:1646  */
+#line 2362 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 385 "./util/configparser.y" /* yacc.c:1646  */
+  case 186:
+#line 386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2364,11 +2370,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2368 "util/configparser.c" /* yacc.c:1646  */
+#line 2374 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 394 "./util/configparser.y" /* yacc.c:1646  */
+  case 187:
+#line 395 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2376,11 +2382,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2380 "util/configparser.c" /* yacc.c:1646  */
+#line 2386 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 403 "./util/configparser.y" /* yacc.c:1646  */
+  case 188:
+#line 404 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2388,11 +2394,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2392 "util/configparser.c" /* yacc.c:1646  */
+#line 2398 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 412 "./util/configparser.y" /* yacc.c:1646  */
+  case 189:
+#line 413 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2400,11 +2406,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2404 "util/configparser.c" /* yacc.c:1646  */
+#line 2410 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 421 "./util/configparser.y" /* yacc.c:1646  */
+  case 190:
+#line 422 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2412,11 +2418,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2416 "util/configparser.c" /* yacc.c:1646  */
+#line 2422 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 430 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 431 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2424,11 +2430,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2428 "util/configparser.c" /* yacc.c:1646  */
+#line 2434 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 439 "./util/configparser.y" /* yacc.c:1646  */
+  case 192:
+#line 440 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2436,11 +2442,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2440 "util/configparser.c" /* yacc.c:1646  */
+#line 2446 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 448 "./util/configparser.y" /* yacc.c:1646  */
+  case 193:
+#line 449 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2448,11 +2454,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2452 "util/configparser.c" /* yacc.c:1646  */
+#line 2458 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 457 "./util/configparser.y" /* yacc.c:1646  */
+  case 194:
+#line 458 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2460,11 +2466,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2464 "util/configparser.c" /* yacc.c:1646  */
+#line 2470 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 466 "./util/configparser.y" /* yacc.c:1646  */
+  case 195:
+#line 467 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2472,11 +2478,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2476 "util/configparser.c" /* yacc.c:1646  */
+#line 2482 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 475 "./util/configparser.y" /* yacc.c:1646  */
+  case 196:
+#line 476 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2484,31 +2490,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2488 "util/configparser.c" /* yacc.c:1646  */
+#line 2494 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 484 "./util/configparser.y" /* yacc.c:1646  */
+  case 197:
+#line 485 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 2498 "util/configparser.c" /* yacc.c:1646  */
+#line 2504 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 491 "./util/configparser.y" /* yacc.c:1646  */
+  case 198:
+#line 492 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 2508 "util/configparser.c" /* yacc.c:1646  */
+#line 2514 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 498 "./util/configparser.y" /* yacc.c:1646  */
+  case 199:
+#line 499 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2516,11 +2522,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2520 "util/configparser.c" /* yacc.c:1646  */
+#line 2526 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 507 "./util/configparser.y" /* yacc.c:1646  */
+  case 200:
+#line 508 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2528,11 +2534,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2532 "util/configparser.c" /* yacc.c:1646  */
+#line 2538 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 516 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 517 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2540,11 +2546,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2544 "util/configparser.c" /* yacc.c:1646  */
+#line 2550 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 525 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 526 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2557,11 +2563,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2561 "util/configparser.c" /* yacc.c:1646  */
+#line 2567 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 539 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 540 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2569,11 +2575,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2573 "util/configparser.c" /* yacc.c:1646  */
+#line 2579 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 548 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 549 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2581,31 +2587,43 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2585 "util/configparser.c" /* yacc.c:1646  */
+#line 2591 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 557 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 558 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
+       if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               yyerror("expected yes or no.");
+       else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
+       free((yyvsp[0].str));
+  }
+#line 2603 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 206:
+#line 567 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2595 "util/configparser.c" /* yacc.c:1646  */
+#line 2613 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 564 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 574 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2605 "util/configparser.c" /* yacc.c:1646  */
+#line 2623 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 571 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 581 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -2630,115 +2648,115 @@ yyreduce:
                        }
                }
        }
-#line 2634 "util/configparser.c" /* yacc.c:1646  */
+#line 2652 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 597 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 607 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 2645 "util/configparser.c" /* yacc.c:1646  */
+#line 2663 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 605 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 615 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2655 "util/configparser.c" /* yacc.c:1646  */
+#line 2673 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 612 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 622 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2665 "util/configparser.c" /* yacc.c:1646  */
+#line 2683 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 619 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 629 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2675 "util/configparser.c" /* yacc.c:1646  */
+#line 2693 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 626 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 636 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2685 "util/configparser.c" /* yacc.c:1646  */
+#line 2703 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 633 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 643 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2696 "util/configparser.c" /* yacc.c:1646  */
+#line 2714 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 641 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 651 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2707 "util/configparser.c" /* yacc.c:1646  */
+#line 2725 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 649 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 659 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2718 "util/configparser.c" /* yacc.c:1646  */
+#line 2736 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 657 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 667 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2728 "util/configparser.c" /* yacc.c:1646  */
+#line 2746 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 664 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 674 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2738 "util/configparser.c" /* yacc.c:1646  */
+#line 2756 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 671 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 681 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2746,11 +2764,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2750 "util/configparser.c" /* yacc.c:1646  */
+#line 2768 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 680 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 690 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2758,53 +2776,53 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2762 "util/configparser.c" /* yacc.c:1646  */
+#line 2780 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 689 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 699 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 2772 "util/configparser.c" /* yacc.c:1646  */
+#line 2790 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 696 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 706 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 2782 "util/configparser.c" /* yacc.c:1646  */
+#line 2800 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 703 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 713 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2793 "util/configparser.c" /* yacc.c:1646  */
+#line 2811 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 711 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 721 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2804 "util/configparser.c" /* yacc.c:1646  */
+#line 2822 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 719 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 729 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2813,11 +2831,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2817 "util/configparser.c" /* yacc.c:1646  */
+#line 2835 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 729 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 739 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2826,11 +2844,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2830 "util/configparser.c" /* yacc.c:1646  */
+#line 2848 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 739 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 749 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2839,11 +2857,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2843 "util/configparser.c" /* yacc.c:1646  */
+#line 2861 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 749 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 759 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2855,11 +2873,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2859 "util/configparser.c" /* yacc.c:1646  */
+#line 2877 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 762 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 772 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2869,22 +2887,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2873 "util/configparser.c" /* yacc.c:1646  */
+#line 2891 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 773 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 783 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2884 "util/configparser.c" /* yacc.c:1646  */
+#line 2902 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 781 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 791 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2896,11 +2914,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2900 "util/configparser.c" /* yacc.c:1646  */
+#line 2918 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 794 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 804 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2908,11 +2926,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2912 "util/configparser.c" /* yacc.c:1646  */
+#line 2930 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 803 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 813 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2920,11 +2938,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2924 "util/configparser.c" /* yacc.c:1646  */
+#line 2942 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 812 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 822 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2932,11 +2950,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2936 "util/configparser.c" /* yacc.c:1646  */
+#line 2954 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 821 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 831 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2945,11 +2963,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2949 "util/configparser.c" /* yacc.c:1646  */
+#line 2967 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 831 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 841 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2958,22 +2976,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2962 "util/configparser.c" /* yacc.c:1646  */
+#line 2980 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 841 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 851 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2973 "util/configparser.c" /* yacc.c:1646  */
+#line 2991 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 849 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 859 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2985,11 +3003,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2989 "util/configparser.c" /* yacc.c:1646  */
+#line 3007 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 862 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 872 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2997,22 +3015,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3001 "util/configparser.c" /* yacc.c:1646  */
+#line 3019 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 871 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 881 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3012 "util/configparser.c" /* yacc.c:1646  */
+#line 3030 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 879 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 889 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3020,22 +3038,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3024 "util/configparser.c" /* yacc.c:1646  */
+#line 3042 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 888 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 898 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3035 "util/configparser.c" /* yacc.c:1646  */
+#line 3053 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 896 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 906 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3047,11 +3065,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3051 "util/configparser.c" /* yacc.c:1646  */
+#line 3069 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 909 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 919 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3059,21 +3077,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3063 "util/configparser.c" /* yacc.c:1646  */
+#line 3081 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 918 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 928 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 3073 "util/configparser.c" /* yacc.c:1646  */
+#line 3091 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 925 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 935 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3082,11 +3100,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3086 "util/configparser.c" /* yacc.c:1646  */
+#line 3104 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 935 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 945 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3095,11 +3113,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3099 "util/configparser.c" /* yacc.c:1646  */
+#line 3117 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 945 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 955 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3108,11 +3126,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3112 "util/configparser.c" /* yacc.c:1646  */
+#line 3130 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 955 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 965 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3121,11 +3139,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3125 "util/configparser.c" /* yacc.c:1646  */
+#line 3143 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 965 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 975 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3134,11 +3152,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3138 "util/configparser.c" /* yacc.c:1646  */
+#line 3156 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 975 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 985 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3147,11 +3165,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3151 "util/configparser.c" /* yacc.c:1646  */
+#line 3169 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 985 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 995 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3160,11 +3178,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3164 "util/configparser.c" /* yacc.c:1646  */
+#line 3182 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 995 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 1005 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3173,41 +3191,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3177 "util/configparser.c" /* yacc.c:1646  */
+#line 3195 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1005 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 1015 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3187 "util/configparser.c" /* yacc.c:1646  */
+#line 3205 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1012 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 1022 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3197 "util/configparser.c" /* yacc.c:1646  */
+#line 3215 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1019 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 1029 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3207 "util/configparser.c" /* yacc.c:1646  */
+#line 3225 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1026 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 1036 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3215,11 +3233,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3219 "util/configparser.c" /* yacc.c:1646  */
+#line 3237 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1035 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 1045 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3227,11 +3245,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3231 "util/configparser.c" /* yacc.c:1646  */
+#line 3249 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1044 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 1054 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3239,21 +3257,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3243 "util/configparser.c" /* yacc.c:1646  */
+#line 3261 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1053 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 1063 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3253 "util/configparser.c" /* yacc.c:1646  */
+#line 3271 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1060 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 1070 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3262,11 +3280,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3266 "util/configparser.c" /* yacc.c:1646  */
+#line 3284 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1070 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 1080 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -3282,21 +3300,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3286 "util/configparser.c" /* yacc.c:1646  */
+#line 3304 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1087 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 1097 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 3296 "util/configparser.c" /* yacc.c:1646  */
+#line 3314 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1094 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 1104 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3313,11 +3331,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3317 "util/configparser.c" /* yacc.c:1646  */
+#line 3335 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1112 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 1122 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3329,11 +3347,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3333 "util/configparser.c" /* yacc.c:1646  */
+#line 3351 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1125 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 1135 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3345,11 +3363,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3349 "util/configparser.c" /* yacc.c:1646  */
+#line 3367 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1138 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 1148 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3357,11 +3375,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3361 "util/configparser.c" /* yacc.c:1646  */
+#line 3379 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1147 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 1157 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3369,11 +3387,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3373 "util/configparser.c" /* yacc.c:1646  */
+#line 3391 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1156 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 1166 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3381,11 +3399,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3385 "util/configparser.c" /* yacc.c:1646  */
+#line 3403 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1165 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 1175 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3393,11 +3411,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3397 "util/configparser.c" /* yacc.c:1646  */
+#line 3415 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1174 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 1184 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3406,11 +3424,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3410 "util/configparser.c" /* yacc.c:1646  */
+#line 3428 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1184 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 1194 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3419,11 +3437,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3423 "util/configparser.c" /* yacc.c:1646  */
+#line 3441 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1194 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 1204 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3431,11 +3449,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3435 "util/configparser.c" /* yacc.c:1646  */
+#line 3453 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1203 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 1213 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3443,11 +3461,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3447 "util/configparser.c" /* yacc.c:1646  */
+#line 3465 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1212 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1222 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3459,11 +3477,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3463 "util/configparser.c" /* yacc.c:1646  */
+#line 3481 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1225 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1235 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3471,21 +3489,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3475 "util/configparser.c" /* yacc.c:1646  */
+#line 3493 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1234 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1244 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 3485 "util/configparser.c" /* yacc.c:1646  */
+#line 3503 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1241 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1251 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3493,11 +3511,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3497 "util/configparser.c" /* yacc.c:1646  */
+#line 3515 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1250 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1260 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3505,11 +3523,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3509 "util/configparser.c" /* yacc.c:1646  */
+#line 3527 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1259 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1269 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3517,11 +3535,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3521 "util/configparser.c" /* yacc.c:1646  */
+#line 3539 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1268 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1278 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3530,22 +3548,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3534 "util/configparser.c" /* yacc.c:1646  */
+#line 3552 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1277 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1287 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3545 "util/configparser.c" /* yacc.c:1646  */
+#line 3563 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1285 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1295 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3557,22 +3575,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3561 "util/configparser.c" /* yacc.c:1646  */
+#line 3579 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1298 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1308 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3572 "util/configparser.c" /* yacc.c:1646  */
+#line 3590 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1306 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1316 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3599,21 +3617,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3603 "util/configparser.c" /* yacc.c:1646  */
+#line 3621 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1334 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1344 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 3613 "util/configparser.c" /* yacc.c:1646  */
+#line 3631 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1341 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1351 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3627,11 +3645,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3631 "util/configparser.c" /* yacc.c:1646  */
+#line 3649 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1356 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1366 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3640,11 +3658,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3644 "util/configparser.c" /* yacc.c:1646  */
+#line 3662 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1366 "./util/configparser.y" /* yacc.c:1646  */
+  case 289:
+#line 1376 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3653,31 +3671,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3657 "util/configparser.c" /* yacc.c:1646  */
+#line 3675 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1376 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3667 "util/configparser.c" /* yacc.c:1646  */
+#line 3685 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1383 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1393 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3677 "util/configparser.c" /* yacc.c:1646  */
+#line 3695 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1390 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1400 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3685,11 +3703,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3689 "util/configparser.c" /* yacc.c:1646  */
+#line 3707 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1399 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1409 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -3702,11 +3720,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3706 "util/configparser.c" /* yacc.c:1646  */
+#line 3724 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1413 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1423 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3724,11 +3742,11 @@ yyreduce:
                        }
                }
        }
-#line 3728 "util/configparser.c" /* yacc.c:1646  */
+#line 3746 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1432 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1442 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3746,11 +3764,11 @@ yyreduce:
                        }
                }
        }
-#line 3750 "util/configparser.c" /* yacc.c:1646  */
+#line 3768 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1451 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1461 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -3761,11 +3779,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3765 "util/configparser.c" /* yacc.c:1646  */
+#line 3783 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1463 "./util/configparser.y" /* yacc.c:1646  */
+  case 297:
+#line 1473 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -3776,11 +3794,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3780 "util/configparser.c" /* yacc.c:1646  */
+#line 3798 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1475 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1485 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -3791,11 +3809,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3795 "util/configparser.c" /* yacc.c:1646  */
+#line 3813 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1487 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1497 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -3805,11 +3823,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3809 "util/configparser.c" /* yacc.c:1646  */
+#line 3827 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1498 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1508 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3817,22 +3835,22 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3821 "util/configparser.c" /* yacc.c:1646  */
+#line 3839 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1507 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1517 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3832 "util/configparser.c" /* yacc.c:1646  */
+#line 3850 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1515 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1525 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3844,11 +3862,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3848 "util/configparser.c" /* yacc.c:1646  */
+#line 3866 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1528 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1538 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3860,11 +3878,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 3864 "util/configparser.c" /* yacc.c:1646  */
+#line 3882 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1541 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1551 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3876,11 +3894,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 3880 "util/configparser.c" /* yacc.c:1646  */
+#line 3898 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1554 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1564 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3888,11 +3906,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3892 "util/configparser.c" /* yacc.c:1646  */
+#line 3910 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1563 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1573 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3901,11 +3919,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3905 "util/configparser.c" /* yacc.c:1646  */
+#line 3923 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1573 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1583 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3914,11 +3932,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3918 "util/configparser.c" /* yacc.c:1646  */
+#line 3936 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1583 "./util/configparser.y" /* yacc.c:1646  */
+  case 308:
+#line 1593 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3927,31 +3945,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 3931 "util/configparser.c" /* yacc.c:1646  */
+#line 3949 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1593 "./util/configparser.y" /* yacc.c:1646  */
+  case 309:
+#line 1603 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3941 "util/configparser.c" /* yacc.c:1646  */
+#line 3959 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1600 "./util/configparser.y" /* yacc.c:1646  */
+  case 310:
+#line 1610 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3951 "util/configparser.c" /* yacc.c:1646  */
+#line 3969 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 1607 "./util/configparser.y" /* yacc.c:1646  */
+  case 311:
+#line 1617 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3959,11 +3977,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3963 "util/configparser.c" /* yacc.c:1646  */
+#line 3981 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 1616 "./util/configparser.y" /* yacc.c:1646  */
+  case 312:
+#line 1626 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3972,11 +3990,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3976 "util/configparser.c" /* yacc.c:1646  */
+#line 3994 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1626 "./util/configparser.y" /* yacc.c:1646  */
+  case 313:
+#line 1636 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3985,11 +4003,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3989 "util/configparser.c" /* yacc.c:1646  */
+#line 4007 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1636 "./util/configparser.y" /* yacc.c:1646  */
+  case 314:
+#line 1646 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3998,31 +4016,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 4002 "util/configparser.c" /* yacc.c:1646  */
+#line 4020 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 1646 "./util/configparser.y" /* yacc.c:1646  */
+  case 315:
+#line 1656 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4012 "util/configparser.c" /* yacc.c:1646  */
+#line 4030 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 1653 "./util/configparser.y" /* yacc.c:1646  */
+  case 316:
+#line 1663 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4022 "util/configparser.c" /* yacc.c:1646  */
+#line 4040 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 1660 "./util/configparser.y" /* yacc.c:1646  */
+  case 317:
+#line 1670 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4030,11 +4048,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4034 "util/configparser.c" /* yacc.c:1646  */
+#line 4052 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 1669 "./util/configparser.y" /* yacc.c:1646  */
+  case 318:
+#line 1679 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4043,11 +4061,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4047 "util/configparser.c" /* yacc.c:1646  */
+#line 4065 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 1679 "./util/configparser.y" /* yacc.c:1646  */
+  case 319:
+#line 1689 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -4056,11 +4074,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 4060 "util/configparser.c" /* yacc.c:1646  */
+#line 4078 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 1689 "./util/configparser.y" /* yacc.c:1646  */
+  case 320:
+#line 1699 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -4088,11 +4106,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4092 "util/configparser.c" /* yacc.c:1646  */
+#line 4110 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1718 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1728 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
@@ -4100,11 +4118,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4104 "util/configparser.c" /* yacc.c:1646  */
+#line 4122 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1727 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1737 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4112,19 +4130,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4116 "util/configparser.c" /* yacc.c:1646  */
+#line 4134 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1736 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1746 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 4124 "util/configparser.c" /* yacc.c:1646  */
+#line 4142 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 1747 "./util/configparser.y" /* yacc.c:1646  */
+  case 334:
+#line 1757 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4133,11 +4151,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4137 "util/configparser.c" /* yacc.c:1646  */
+#line 4155 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 333:
-#line 1757 "./util/configparser.y" /* yacc.c:1646  */
+  case 335:
+#line 1767 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4145,21 +4163,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4149 "util/configparser.c" /* yacc.c:1646  */
+#line 4167 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 334:
-#line 1766 "./util/configparser.y" /* yacc.c:1646  */
+  case 336:
+#line 1776 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4159 "util/configparser.c" /* yacc.c:1646  */
+#line 4177 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 335:
-#line 1773 "./util/configparser.y" /* yacc.c:1646  */
+  case 337:
+#line 1783 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4168,122 +4186,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4172 "util/configparser.c" /* yacc.c:1646  */
+#line 4190 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 1783 "./util/configparser.y" /* yacc.c:1646  */
+  case 338:
+#line 1793 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 4182 "util/configparser.c" /* yacc.c:1646  */
+#line 4200 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 1790 "./util/configparser.y" /* yacc.c:1646  */
+  case 339:
+#line 1800 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 4192 "util/configparser.c" /* yacc.c:1646  */
+#line 4210 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 338:
-#line 1797 "./util/configparser.y" /* yacc.c:1646  */
+  case 340:
+#line 1807 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 4202 "util/configparser.c" /* yacc.c:1646  */
+#line 4220 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 339:
-#line 1804 "./util/configparser.y" /* yacc.c:1646  */
+  case 341:
+#line 1814 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 4212 "util/configparser.c" /* yacc.c:1646  */
+#line 4230 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 1811 "./util/configparser.y" /* yacc.c:1646  */
+  case 342:
+#line 1821 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 4220 "util/configparser.c" /* yacc.c:1646  */
+#line 4238 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 355:
-#line 1828 "./util/configparser.y" /* yacc.c:1646  */
+  case 357:
+#line 1838 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4231 "util/configparser.c" /* yacc.c:1646  */
+#line 4249 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 356:
-#line 1836 "./util/configparser.y" /* yacc.c:1646  */
+  case 358:
+#line 1846 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 4241 "util/configparser.c" /* yacc.c:1646  */
+#line 4259 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 357:
-#line 1843 "./util/configparser.y" /* yacc.c:1646  */
+  case 359:
+#line 1853 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4252 "util/configparser.c" /* yacc.c:1646  */
+#line 4270 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 1851 "./util/configparser.y" /* yacc.c:1646  */
+  case 360:
+#line 1861 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4263 "util/configparser.c" /* yacc.c:1646  */
+#line 4281 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 1859 "./util/configparser.y" /* yacc.c:1646  */
+  case 361:
+#line 1869 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 4273 "util/configparser.c" /* yacc.c:1646  */
+#line 4291 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 1866 "./util/configparser.y" /* yacc.c:1646  */
+  case 362:
+#line 1876 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 4283 "util/configparser.c" /* yacc.c:1646  */
+#line 4301 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 1873 "./util/configparser.y" /* yacc.c:1646  */
+  case 363:
+#line 1883 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4291,11 +4309,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4295 "util/configparser.c" /* yacc.c:1646  */
+#line 4313 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 1882 "./util/configparser.y" /* yacc.c:1646  */
+  case 364:
+#line 1892 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4303,11 +4321,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4307 "util/configparser.c" /* yacc.c:1646  */
+#line 4325 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 363:
-#line 1891 "./util/configparser.y" /* yacc.c:1646  */
+  case 365:
+#line 1901 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4315,11 +4333,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4319 "util/configparser.c" /* yacc.c:1646  */
+#line 4337 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 364:
-#line 1900 "./util/configparser.y" /* yacc.c:1646  */
+  case 366:
+#line 1910 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4327,11 +4345,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4331 "util/configparser.c" /* yacc.c:1646  */
+#line 4349 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 365:
-#line 1909 "./util/configparser.y" /* yacc.c:1646  */
+  case 367:
+#line 1919 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4339,11 +4357,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4343 "util/configparser.c" /* yacc.c:1646  */
+#line 4361 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 366:
-#line 1918 "./util/configparser.y" /* yacc.c:1646  */
+  case 368:
+#line 1928 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4351,29 +4369,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4355 "util/configparser.c" /* yacc.c:1646  */
+#line 4373 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 367:
-#line 1927 "./util/configparser.y" /* yacc.c:1646  */
+  case 369:
+#line 1937 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4363 "util/configparser.c" /* yacc.c:1646  */
+#line 4381 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 371:
-#line 1936 "./util/configparser.y" /* yacc.c:1646  */
+  case 373:
+#line 1946 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4373 "util/configparser.c" /* yacc.c:1646  */
+#line 4391 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 372:
-#line 1942 "./util/configparser.y" /* yacc.c:1646  */
+  case 374:
+#line 1952 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4382,21 +4400,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4386 "util/configparser.c" /* yacc.c:1646  */
+#line 4404 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 373:
-#line 1952 "./util/configparser.y" /* yacc.c:1646  */
+  case 375:
+#line 1962 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 4396 "util/configparser.c" /* yacc.c:1646  */
+#line 4414 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 4400 "util/configparser.c" /* yacc.c:1646  */
+#line 4418 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4624,7 +4642,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1958 "./util/configparser.y" /* yacc.c:1906  */
+#line 1968 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index d8e85a48c5a860a05dc8b1c4f7718fe4078380fe..4659f6797a8ed6ebbebd45c748e6672b5a1f7b03 100644 (file)
@@ -168,65 +168,66 @@ extern int yydebug;
     VAR_HARDEN_BELOW_NXDOMAIN = 378,
     VAR_IGNORE_CD_FLAG = 379,
     VAR_LOG_QUERIES = 380,
-    VAR_TCP_UPSTREAM = 381,
-    VAR_SSL_UPSTREAM = 382,
-    VAR_SSL_SERVICE_KEY = 383,
-    VAR_SSL_SERVICE_PEM = 384,
-    VAR_SSL_PORT = 385,
-    VAR_FORWARD_FIRST = 386,
-    VAR_STUB_SSL_UPSTREAM = 387,
-    VAR_FORWARD_SSL_UPSTREAM = 388,
-    VAR_STUB_FIRST = 389,
-    VAR_MINIMAL_RESPONSES = 390,
-    VAR_RRSET_ROUNDROBIN = 391,
-    VAR_MAX_UDP_SIZE = 392,
-    VAR_DELAY_CLOSE = 393,
-    VAR_UNBLOCK_LAN_ZONES = 394,
-    VAR_INSECURE_LAN_ZONES = 395,
-    VAR_INFRA_CACHE_MIN_RTT = 396,
-    VAR_DNS64_PREFIX = 397,
-    VAR_DNS64_SYNTHALL = 398,
-    VAR_DNSTAP = 399,
-    VAR_DNSTAP_ENABLE = 400,
-    VAR_DNSTAP_SOCKET_PATH = 401,
-    VAR_DNSTAP_SEND_IDENTITY = 402,
-    VAR_DNSTAP_SEND_VERSION = 403,
-    VAR_DNSTAP_IDENTITY = 404,
-    VAR_DNSTAP_VERSION = 405,
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 406,
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 407,
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 408,
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 409,
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 410,
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 411,
-    VAR_HARDEN_ALGO_DOWNGRADE = 412,
-    VAR_IP_TRANSPARENT = 413,
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 414,
-    VAR_RATELIMIT = 415,
-    VAR_RATELIMIT_SLABS = 416,
-    VAR_RATELIMIT_SIZE = 417,
-    VAR_RATELIMIT_FOR_DOMAIN = 418,
-    VAR_RATELIMIT_BELOW_DOMAIN = 419,
-    VAR_RATELIMIT_FACTOR = 420,
-    VAR_CAPS_WHITELIST = 421,
-    VAR_CACHE_MAX_NEGATIVE_TTL = 422,
-    VAR_PERMIT_SMALL_HOLDDOWN = 423,
-    VAR_QNAME_MINIMISATION = 424,
-    VAR_QNAME_MINIMISATION_STRICT = 425,
-    VAR_IP_FREEBIND = 426,
-    VAR_DEFINE_TAG = 427,
-    VAR_LOCAL_ZONE_TAG = 428,
-    VAR_ACCESS_CONTROL_TAG = 429,
-    VAR_LOCAL_ZONE_OVERRIDE = 430,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 431,
-    VAR_ACCESS_CONTROL_TAG_DATA = 432,
-    VAR_VIEW = 433,
-    VAR_ACCESS_CONTROL_VIEW = 434,
-    VAR_VIEW_FIRST = 435,
-    VAR_SERVE_EXPIRED = 436,
-    VAR_FAKE_DSA = 437,
-    VAR_LOG_IDENTITY = 438,
-    VAR_USE_SYSTEMD = 439
+    VAR_LOG_REPLIES = 381,
+    VAR_TCP_UPSTREAM = 382,
+    VAR_SSL_UPSTREAM = 383,
+    VAR_SSL_SERVICE_KEY = 384,
+    VAR_SSL_SERVICE_PEM = 385,
+    VAR_SSL_PORT = 386,
+    VAR_FORWARD_FIRST = 387,
+    VAR_STUB_SSL_UPSTREAM = 388,
+    VAR_FORWARD_SSL_UPSTREAM = 389,
+    VAR_STUB_FIRST = 390,
+    VAR_MINIMAL_RESPONSES = 391,
+    VAR_RRSET_ROUNDROBIN = 392,
+    VAR_MAX_UDP_SIZE = 393,
+    VAR_DELAY_CLOSE = 394,
+    VAR_UNBLOCK_LAN_ZONES = 395,
+    VAR_INSECURE_LAN_ZONES = 396,
+    VAR_INFRA_CACHE_MIN_RTT = 397,
+    VAR_DNS64_PREFIX = 398,
+    VAR_DNS64_SYNTHALL = 399,
+    VAR_DNSTAP = 400,
+    VAR_DNSTAP_ENABLE = 401,
+    VAR_DNSTAP_SOCKET_PATH = 402,
+    VAR_DNSTAP_SEND_IDENTITY = 403,
+    VAR_DNSTAP_SEND_VERSION = 404,
+    VAR_DNSTAP_IDENTITY = 405,
+    VAR_DNSTAP_VERSION = 406,
+    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 407,
+    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 408,
+    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 409,
+    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 410,
+    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 411,
+    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 412,
+    VAR_HARDEN_ALGO_DOWNGRADE = 413,
+    VAR_IP_TRANSPARENT = 414,
+    VAR_DISABLE_DNSSEC_LAME_CHECK = 415,
+    VAR_RATELIMIT = 416,
+    VAR_RATELIMIT_SLABS = 417,
+    VAR_RATELIMIT_SIZE = 418,
+    VAR_RATELIMIT_FOR_DOMAIN = 419,
+    VAR_RATELIMIT_BELOW_DOMAIN = 420,
+    VAR_RATELIMIT_FACTOR = 421,
+    VAR_CAPS_WHITELIST = 422,
+    VAR_CACHE_MAX_NEGATIVE_TTL = 423,
+    VAR_PERMIT_SMALL_HOLDDOWN = 424,
+    VAR_QNAME_MINIMISATION = 425,
+    VAR_QNAME_MINIMISATION_STRICT = 426,
+    VAR_IP_FREEBIND = 427,
+    VAR_DEFINE_TAG = 428,
+    VAR_LOCAL_ZONE_TAG = 429,
+    VAR_ACCESS_CONTROL_TAG = 430,
+    VAR_LOCAL_ZONE_OVERRIDE = 431,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 432,
+    VAR_ACCESS_CONTROL_TAG_DATA = 433,
+    VAR_VIEW = 434,
+    VAR_ACCESS_CONTROL_VIEW = 435,
+    VAR_VIEW_FIRST = 436,
+    VAR_SERVE_EXPIRED = 437,
+    VAR_FAKE_DSA = 438,
+    VAR_LOG_IDENTITY = 439,
+    VAR_USE_SYSTEMD = 440
   };
 #endif
 /* Tokens.  */
@@ -353,65 +354,66 @@ extern int yydebug;
 #define VAR_HARDEN_BELOW_NXDOMAIN 378
 #define VAR_IGNORE_CD_FLAG 379
 #define VAR_LOG_QUERIES 380
-#define VAR_TCP_UPSTREAM 381
-#define VAR_SSL_UPSTREAM 382
-#define VAR_SSL_SERVICE_KEY 383
-#define VAR_SSL_SERVICE_PEM 384
-#define VAR_SSL_PORT 385
-#define VAR_FORWARD_FIRST 386
-#define VAR_STUB_SSL_UPSTREAM 387
-#define VAR_FORWARD_SSL_UPSTREAM 388
-#define VAR_STUB_FIRST 389
-#define VAR_MINIMAL_RESPONSES 390
-#define VAR_RRSET_ROUNDROBIN 391
-#define VAR_MAX_UDP_SIZE 392
-#define VAR_DELAY_CLOSE 393
-#define VAR_UNBLOCK_LAN_ZONES 394
-#define VAR_INSECURE_LAN_ZONES 395
-#define VAR_INFRA_CACHE_MIN_RTT 396
-#define VAR_DNS64_PREFIX 397
-#define VAR_DNS64_SYNTHALL 398
-#define VAR_DNSTAP 399
-#define VAR_DNSTAP_ENABLE 400
-#define VAR_DNSTAP_SOCKET_PATH 401
-#define VAR_DNSTAP_SEND_IDENTITY 402
-#define VAR_DNSTAP_SEND_VERSION 403
-#define VAR_DNSTAP_IDENTITY 404
-#define VAR_DNSTAP_VERSION 405
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 406
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 407
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 408
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 409
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 410
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 411
-#define VAR_HARDEN_ALGO_DOWNGRADE 412
-#define VAR_IP_TRANSPARENT 413
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 414
-#define VAR_RATELIMIT 415
-#define VAR_RATELIMIT_SLABS 416
-#define VAR_RATELIMIT_SIZE 417
-#define VAR_RATELIMIT_FOR_DOMAIN 418
-#define VAR_RATELIMIT_BELOW_DOMAIN 419
-#define VAR_RATELIMIT_FACTOR 420
-#define VAR_CAPS_WHITELIST 421
-#define VAR_CACHE_MAX_NEGATIVE_TTL 422
-#define VAR_PERMIT_SMALL_HOLDDOWN 423
-#define VAR_QNAME_MINIMISATION 424
-#define VAR_QNAME_MINIMISATION_STRICT 425
-#define VAR_IP_FREEBIND 426
-#define VAR_DEFINE_TAG 427
-#define VAR_LOCAL_ZONE_TAG 428
-#define VAR_ACCESS_CONTROL_TAG 429
-#define VAR_LOCAL_ZONE_OVERRIDE 430
-#define VAR_ACCESS_CONTROL_TAG_ACTION 431
-#define VAR_ACCESS_CONTROL_TAG_DATA 432
-#define VAR_VIEW 433
-#define VAR_ACCESS_CONTROL_VIEW 434
-#define VAR_VIEW_FIRST 435
-#define VAR_SERVE_EXPIRED 436
-#define VAR_FAKE_DSA 437
-#define VAR_LOG_IDENTITY 438
-#define VAR_USE_SYSTEMD 439
+#define VAR_LOG_REPLIES 381
+#define VAR_TCP_UPSTREAM 382
+#define VAR_SSL_UPSTREAM 383
+#define VAR_SSL_SERVICE_KEY 384
+#define VAR_SSL_SERVICE_PEM 385
+#define VAR_SSL_PORT 386
+#define VAR_FORWARD_FIRST 387
+#define VAR_STUB_SSL_UPSTREAM 388
+#define VAR_FORWARD_SSL_UPSTREAM 389
+#define VAR_STUB_FIRST 390
+#define VAR_MINIMAL_RESPONSES 391
+#define VAR_RRSET_ROUNDROBIN 392
+#define VAR_MAX_UDP_SIZE 393
+#define VAR_DELAY_CLOSE 394
+#define VAR_UNBLOCK_LAN_ZONES 395
+#define VAR_INSECURE_LAN_ZONES 396
+#define VAR_INFRA_CACHE_MIN_RTT 397
+#define VAR_DNS64_PREFIX 398
+#define VAR_DNS64_SYNTHALL 399
+#define VAR_DNSTAP 400
+#define VAR_DNSTAP_ENABLE 401
+#define VAR_DNSTAP_SOCKET_PATH 402
+#define VAR_DNSTAP_SEND_IDENTITY 403
+#define VAR_DNSTAP_SEND_VERSION 404
+#define VAR_DNSTAP_IDENTITY 405
+#define VAR_DNSTAP_VERSION 406
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 407
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 408
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 409
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 410
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 411
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 412
+#define VAR_HARDEN_ALGO_DOWNGRADE 413
+#define VAR_IP_TRANSPARENT 414
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 415
+#define VAR_RATELIMIT 416
+#define VAR_RATELIMIT_SLABS 417
+#define VAR_RATELIMIT_SIZE 418
+#define VAR_RATELIMIT_FOR_DOMAIN 419
+#define VAR_RATELIMIT_BELOW_DOMAIN 420
+#define VAR_RATELIMIT_FACTOR 421
+#define VAR_CAPS_WHITELIST 422
+#define VAR_CACHE_MAX_NEGATIVE_TTL 423
+#define VAR_PERMIT_SMALL_HOLDDOWN 424
+#define VAR_QNAME_MINIMISATION 425
+#define VAR_QNAME_MINIMISATION_STRICT 426
+#define VAR_IP_FREEBIND 427
+#define VAR_DEFINE_TAG 428
+#define VAR_LOCAL_ZONE_TAG 429
+#define VAR_ACCESS_CONTROL_TAG 430
+#define VAR_LOCAL_ZONE_OVERRIDE 431
+#define VAR_ACCESS_CONTROL_TAG_ACTION 432
+#define VAR_ACCESS_CONTROL_TAG_DATA 433
+#define VAR_VIEW 434
+#define VAR_ACCESS_CONTROL_VIEW 435
+#define VAR_VIEW_FIRST 436
+#define VAR_SERVE_EXPIRED 437
+#define VAR_FAKE_DSA 438
+#define VAR_LOG_IDENTITY 439
+#define VAR_USE_SYSTEMD 440
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -422,7 +424,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 426 "util/configparser.h" /* yacc.c:1909  */
+#line 428 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index bdf3d0009ade2853af7d5332f2b1c1b3b5b13be2..6c3c74da871efd3fcdfed5d03e9e89b7f19e1486 100644 (file)
@@ -104,7 +104,8 @@ extern struct config_parser_state* cfg_parser;
 %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 VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN
-%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM
+%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES
+%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM
 %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST
 %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM
 %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN
@@ -190,7 +191,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_del_holddown | server_keep_missing | server_so_rcvbuf |
        server_edns_buffer_size | server_prefetch | server_prefetch_key |
        server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag |
-       server_log_queries | server_tcp_upstream | server_ssl_upstream |
+       server_log_queries | server_log_replies | server_tcp_upstream | server_ssl_upstream |
        server_ssl_service_key | server_ssl_service_pem | server_ssl_port |
        server_minimal_responses | server_rrset_roundrobin | server_max_udp_size |
        server_so_reuseport | server_delay_close |
@@ -553,6 +554,15 @@ server_log_queries: VAR_LOG_QUERIES STRING_ARG
                free($2);
        }
        ;
+server_log_replies: VAR_LOG_REPLIES STRING_ARG
+  {
+       OUTYY(("P(server_log_replies:%s)\n", $2));
+       if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+               yyerror("expected yes or no.");
+       else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0);
+       free($2);
+  }
+  ;
 server_chroot: VAR_CHROOT STRING_ARG
        {
                OUTYY(("P(server_chroot:%s)\n", $2));
index 2caee7789fde317937f4d2ff59f13304e2381082..c4d0748fc6e69ae0d4a00d28de96dc648af94d4e 100644 (file)
@@ -819,7 +819,39 @@ log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* rep)
        regional_destroy(region);
 }
 
-void 
+void
+log_reply_info(enum verbosity_value v, struct query_info *qinf,
+       struct sockaddr_storage *addr, socklen_t addrlen, struct timeval dur,
+       int cached, struct sldns_buffer *rmsg)
+{
+       char qname_buf[LDNS_MAX_DOMAINLEN+1];
+       char clientip_buf[128];
+       char rcode_buf[16];
+       char type_buf[16];
+       char class_buf[16];
+       size_t pktlen;
+       uint16_t rcode = FLAGS_GET_RCODE(sldns_buffer_read_u16_at(rmsg, 2));
+
+       if(verbosity < v)
+         return;
+
+       sldns_wire2str_rcode_buf(rcode, rcode_buf, sizeof(rcode_buf));
+       addr_to_str(addr, addrlen, clientip_buf, sizeof(clientip_buf));
+       if(rcode == LDNS_RCODE_FORMERR)
+       {
+               log_info("%s - - - %s - - - ", clientip_buf, rcode_buf);
+       } else {
+               dname_str(qinf->qname, qname_buf);
+               pktlen = sldns_buffer_limit(rmsg);
+               sldns_wire2str_type_buf(qinf->qtype, type_buf, sizeof(type_buf));
+               sldns_wire2str_class_buf(qinf->qclass, class_buf, sizeof(class_buf));
+               log_info("%s %s %s %s %s " ARG_LL "d.%6.6d %d %d",
+                       clientip_buf, qname_buf, type_buf, class_buf,
+                       rcode_buf, (long long)dur.tv_sec, (int)dur.tv_usec, cached, (int)pktlen);
+       }
+}
+
+void
 log_query_info(enum verbosity_value v, const char* str, 
        struct query_info* qinf)
 {
index cc02161333778d50a42dd12fc96cd6ba11ac750e..407f0111484b4671b944f8ab1358691c32faae1e 100644 (file)
@@ -448,9 +448,26 @@ struct ub_packed_rrset_key* reply_find_rrset(struct reply_info* rep,
  * @param qinfo: query section.
  * @param rep: rest of message.
  */
-void log_dns_msg(const char* str, struct query_info* qinfo, 
+void log_dns_msg(const char* str, struct query_info* qinfo,
        struct reply_info* rep);
 
+/**
+ * Print string with neat domain name, type, class,
+ * status code from, and size of a query response.
+ *
+ * @param v: at what verbosity level to print this.
+ * @param qinfo: query section.
+ * @param addr: address of the client.
+ * @param addrlen: length of the client address.
+ * @param dur: how long it took to complete the query.
+ * @param cached: whether or not the reply is coming from
+ *                    the cache, or an outside network.
+ * @param rmsg: sldns buffer packet.
+ */
+void log_reply_info(enum verbosity_value v, struct query_info *qinf,
+       struct sockaddr_storage *addr, socklen_t addrlen, struct timeval dur,
+       int cached, struct sldns_buffer *rmsg);
+
 /**
  * Print string with neat domain name, type, class from query info.
  * @param v: at what verbosity level to print this.